我不在您的场景中,请找出您可以使用代码获得适当味道的方法。
问题是,当您将实际URL附加到当前URL时,这将是一个混乱。让我们换一种方式:
让我们创建一个哈希附属链接,并将其存储在数据库中,以便下次验证。
<?php
function wpse325608_create_affiliate_link($url, $code) {
$link = $url .\'?affiliate=\'. $code;
$affiliate_hashed_link = hash_hmac(\'md5\', $link, \'unique_key\');
return array(
\'url\' => $link,
\'hashed\' => $affiliate_hashed_link,
);
}
/**
* Create Affiliate Redirection Link.
*
* This function will append hashed affiliate link to the site URL.
* example: https://example.com/?redirect=308a316686b55314f21429ba75d84dd3
*
* @see wpse325608_create_affiliate_link() for generating your encoded affiliate link.
* ...
*/
function wpse325608_create_affiliate_redirection_link($url, $code) {
$affiliate_link = wpse325608_create_affiliate_link($url, $code);
$redirect_link = add_query_arg(\'redirect\', $affiliate_link[\'hashed\'], site_url());
return $redirect_link;
}
创建每个附属链接并将其存储在
options
如果您想要临时附属链接,请将表作为临时链接。对于瞬态,您可以为每个链接设置最大有效时间。
如果您想要一个不易损坏的链接,只需使用add_option()
.
对于每个链接,在创建时,按如下方式保存。找出你可以做到这一点的方法:
<?php
$affiliation_link = wpse325608_create_affiliate_redirection_link(\'https://amazon.com\', \'my_code\');
// store for further use.
add_option($affiliation_link[\'hashed\'], $affiliation_link[\'url\']);
将以下代码放入您要放置附属链接的位置,即您要链接到外部链接的位置:
<a href="<?php echo esc_url( wpse325608_create_affiliate_redirection_link(\'https://amazon.com\', \'my_code\') ); ?>" class="btn-affiliate" target="_blank" rel="noopener">
Click to Affiliate
</a>
它将生成如下链接:
<a href="https://example.com/?redirect=308a316686b55314f21429ba75d84dd3" class="btn-affiliate" target="_blank" rel="noopener">
Click to Affiliate
</a>
现在,输入以下代码
functions.php
(或在插件文件中):
<?php
/**
* Make Redirection if the URL consists \'redirect\'.
* ...
*/
function wpse325608_redirect() {
$_redirect = filter_input( INPUT_GET, \'redirect\', FILTER_SANITIZE_URL );
if( ! $_redirect ) return;
$actual_link = get_option($_redirect);
wp_redirect( esc_url($actual_link) );
exit();
}
add_action(\'template_redirect\', \'wpse325608_redirect\');
我们的插件分享了整个想法
"Download via Email" (available on Github), 可能不完全符合您的工作范围。但你可以用不同的方式思考。
set_transient()
- WordPress Functionget_transient()
- WordPress Functionadd_option()
- WordPress Functionget_option()
- WordPress FunctionDownload via Email - WordPress plugin by nanodesigns