如何在 wordpress 中创建特定于浏览器的下载链接
How to create browser-specific download links in wordpress
这里有 Wordpress 新手问题总数。我想在我网站的着陆页上添加一个按钮,该按钮有一个 link 到我的应用程序的最新版本,适用于用户正在访问的浏览器平台——类似于 Firefox 在其网站上的内容:https://www.mozilla.org/en-US/firefox/new/
所以 URL 看起来像这样:
http://www.example.com/downloads/osx
,但我希望它重定向到更具体的内容,例如 http//www.example.com/myapp_1.6.3.dmg
(这样我就不必在每次发布新版本时都更新我的函数)。
这通常是如何完成的?看起来我可以写一个简码来做浏览器嗅探的东西,然后使用 [bracket syntax]
从页面调用简码。但是然后呢?重定向在哪里定义的?我只是需要有人帮我把这些点连接起来。
为试图解决这个问题的其他人更新。这是我所做的。
Functions.php
在我的子主题的functions.php中,我添加了一个函数来根据浏览器报告的OS生成URL,并在init事件中注册了该函数:
add_action('init', 'register_my_shortcodes');
function register_my_shortcodes() {
add_shortcode( 'download_os_button', 'download_os_button_shortcode' );
}
function download_os_button_shortcode() {
// Set the URL to whatever OS the browser is telling us (this can be spoofed)
if ( stristr( $_SERVER['HTTP_USER_AGENT'],"mac") ) {
$url = 'downloads/osx';
$text = 'Free Download - Mac';
} elseif ( stristr( $_SERVER['HTTP_USER_AGENT'],"windows") ) {
$url = 'downloads/windows';
$text = 'Free Download - Windows';
} else {
// Linux or mobile -- just point them to the general downloads page
$url = 'download/';
$text = 'Downloads';
}
// Return this as a hyperlink
return '<a class=download-btn href=' . $url . '>' . $text . '</a>';
}
WordPress 页面简码
现在短代码 [download_os_button]
可以放在 WordPress 页面中,并会发出以下内容之一,具体取决于 OS:
<a class="download-btn" href="http://www.example.com/downloads/windows">Free Download - Windows</a>
<a class="download-btn" href="http://www.example.com/downloads/osx">Free Download - Mac</a>
<a class="download-btn" href="http://www.example.com/download/">Downloads</a>
请注意,download-btn
样式也必须在您的 .css 文件中定义,才能使其看起来像一个按钮。
其余的重定向内容可以通过几种方式处理。根据我们服务器管理员的建议,我最终使用了两个 .php 文件——每个平台一个——来重定向; .../httpdocs/downloads/osx/index.php
和 .../httpdocs/downloads/windows/index.php
分别。 osx 目录中的那个看起来像这样:
<?php
header('Location: http://www.example.com/myapp_1.6.3.dmg');
?>
它要求在每次发布产品时更新这两个文件中的重定向。
此外,对于那些注意到 Linux / mobile hyperlink 的 URL 拼写的人,我有一个单独的 WordPress 页面,其中包含完整的下载列表。如果您执行单独的 .php 路线,请确保您有不同的拼写,否则 .php 文件结构将接管并且您将看不到您的 WordPress 页面。
1) .htaccess 文件中的短代码和重定向
您可以创建一个具有 2 个属性的自关闭 wordpress 短代码。 text
和 url
:
// Copy this Shortcode to the function.php file located in your active child theme or theme.
if( !function_exists('download_dmg_shortcode') ) {
function download_dmg_shortcode( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'url' => '',
'text' => '',
), $atts )
);
// Code
return '<a class="button-dmg" href="' . $url . '">' . $text . '</a>';
}
add_shortcode( 'dload_dmg', 'download_dmg_shortcode' );
}
您将这样使用它:
[dload_dmg url="http://www.example.com/downloads/osx" text="Download my App" /]
您可以在代码中更改 class 名称并添加更多 html 标签,以满足您的需要。
您可以通过不同的方式进行重定向,但您可以在 .htaccess
文件中进行重定向,例如:
<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch permanent /downloads/osx http//www.example.com/myapp_1.6.3.dmg
# You can add this to force download for .dmg files:
AddType application/octet-stream .dmg
</IfModule>
2) 在点击事件中包含 javascript 的简码 (最佳解决方案)
这个自动关闭的 wordpress 短代码也有 2 个参数,text
和 url
。但是这次 url
是重定向 link:
// Copy this Shortcode to the function.php file located in your active child theme or theme.
if( !function_exists('download_dmg_shortcode') ) {
function download_dmg_shortcode( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'url' => '',
'text' => '',
), $atts )
);
// Code
return '<a class="button-dmg" href="http://www.example.com/downloads/osx" onclick="event.preventDefault(); window.location.href = \''.$url.'\';">' . $text . '</a>';
}
add_shortcode( 'dload_dmg', 'download_dmg_shortcode' );
}
您将这样使用它:
[dload_dmg url="../myapp_1.6.3.dmg" text="Download my App" /]
您需要微调 url
参数添加或删除 ../
的路径,具体取决于激活短代码的页面路径。它不能与域名正常工作…
这里有 Wordpress 新手问题总数。我想在我网站的着陆页上添加一个按钮,该按钮有一个 link 到我的应用程序的最新版本,适用于用户正在访问的浏览器平台——类似于 Firefox 在其网站上的内容:https://www.mozilla.org/en-US/firefox/new/
所以 URL 看起来像这样:
http://www.example.com/downloads/osx
,但我希望它重定向到更具体的内容,例如 http//www.example.com/myapp_1.6.3.dmg
(这样我就不必在每次发布新版本时都更新我的函数)。
这通常是如何完成的?看起来我可以写一个简码来做浏览器嗅探的东西,然后使用 [bracket syntax]
从页面调用简码。但是然后呢?重定向在哪里定义的?我只是需要有人帮我把这些点连接起来。
为试图解决这个问题的其他人更新。这是我所做的。
Functions.php
在我的子主题的functions.php中,我添加了一个函数来根据浏览器报告的OS生成URL,并在init事件中注册了该函数:
add_action('init', 'register_my_shortcodes');
function register_my_shortcodes() {
add_shortcode( 'download_os_button', 'download_os_button_shortcode' );
}
function download_os_button_shortcode() {
// Set the URL to whatever OS the browser is telling us (this can be spoofed)
if ( stristr( $_SERVER['HTTP_USER_AGENT'],"mac") ) {
$url = 'downloads/osx';
$text = 'Free Download - Mac';
} elseif ( stristr( $_SERVER['HTTP_USER_AGENT'],"windows") ) {
$url = 'downloads/windows';
$text = 'Free Download - Windows';
} else {
// Linux or mobile -- just point them to the general downloads page
$url = 'download/';
$text = 'Downloads';
}
// Return this as a hyperlink
return '<a class=download-btn href=' . $url . '>' . $text . '</a>';
}
WordPress 页面简码
现在短代码 [download_os_button]
可以放在 WordPress 页面中,并会发出以下内容之一,具体取决于 OS:
<a class="download-btn" href="http://www.example.com/downloads/windows">Free Download - Windows</a>
<a class="download-btn" href="http://www.example.com/downloads/osx">Free Download - Mac</a>
<a class="download-btn" href="http://www.example.com/download/">Downloads</a>
请注意,download-btn
样式也必须在您的 .css 文件中定义,才能使其看起来像一个按钮。
其余的重定向内容可以通过几种方式处理。根据我们服务器管理员的建议,我最终使用了两个 .php 文件——每个平台一个——来重定向; .../httpdocs/downloads/osx/index.php
和 .../httpdocs/downloads/windows/index.php
分别。 osx 目录中的那个看起来像这样:
<?php
header('Location: http://www.example.com/myapp_1.6.3.dmg');
?>
它要求在每次发布产品时更新这两个文件中的重定向。
此外,对于那些注意到 Linux / mobile hyperlink 的 URL 拼写的人,我有一个单独的 WordPress 页面,其中包含完整的下载列表。如果您执行单独的 .php 路线,请确保您有不同的拼写,否则 .php 文件结构将接管并且您将看不到您的 WordPress 页面。
1) .htaccess 文件中的短代码和重定向
您可以创建一个具有 2 个属性的自关闭 wordpress 短代码。 text
和 url
:
// Copy this Shortcode to the function.php file located in your active child theme or theme.
if( !function_exists('download_dmg_shortcode') ) {
function download_dmg_shortcode( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'url' => '',
'text' => '',
), $atts )
);
// Code
return '<a class="button-dmg" href="' . $url . '">' . $text . '</a>';
}
add_shortcode( 'dload_dmg', 'download_dmg_shortcode' );
}
您将这样使用它:
[dload_dmg url="http://www.example.com/downloads/osx" text="Download my App" /]
您可以在代码中更改 class 名称并添加更多 html 标签,以满足您的需要。
您可以通过不同的方式进行重定向,但您可以在 .htaccess
文件中进行重定向,例如:
<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch permanent /downloads/osx http//www.example.com/myapp_1.6.3.dmg
# You can add this to force download for .dmg files:
AddType application/octet-stream .dmg
</IfModule>
2) 在点击事件中包含 javascript 的简码 (最佳解决方案)
这个自动关闭的 wordpress 短代码也有 2 个参数,text
和 url
。但是这次 url
是重定向 link:
// Copy this Shortcode to the function.php file located in your active child theme or theme.
if( !function_exists('download_dmg_shortcode') ) {
function download_dmg_shortcode( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'url' => '',
'text' => '',
), $atts )
);
// Code
return '<a class="button-dmg" href="http://www.example.com/downloads/osx" onclick="event.preventDefault(); window.location.href = \''.$url.'\';">' . $text . '</a>';
}
add_shortcode( 'dload_dmg', 'download_dmg_shortcode' );
}
您将这样使用它:
[dload_dmg url="../myapp_1.6.3.dmg" text="Download my App" /]
您需要微调 url
参数添加或删除 ../
的路径,具体取决于激活短代码的页面路径。它不能与域名正常工作…