在保存帖子之前,如何将字符串与我的某个自定义字段值连接起来?

时间:2019-01-15 作者:Akash

我的网站是一个每日交易和优惠网站。我推广了许多带有附属链接的在线商店。

我创建了一个php脚本来检测任何商家的链接(亚马逊除外),并将其转换为我的关联链接。

Example - (脚本名称:redirect.php)

如果你去-https://example.com/redirect.php?link=https%3A%2F%2Fwww.amazon.com%2F

它将把你带到亚马逊网站,我的会员id附在url上。

My Requirement:-

我有一个单独的自定义字段,名为“rehub_offer_product_url“在这里,我将正常链接放在了商户(1个字段,每个帖子1个链接)。

现在我想要的代码可以自动编码这个字段的url,并添加这个部分—https://example.com/redirect.php?link=“在保存(或起草或发布)帖子时,在编码url之前,这样我就可以完全自动创建到我的附属链接的正常链接。

如果下次我去编辑帖子时看到转换后的url也没关系,它只需要在我创建、保存或发布帖子时第一次工作,这样我就不需要手动操作了。

P.S. Don\'t forget to mention where I need to add the code!

请帮我做到这一点BLESSED. :) :)

1 个回复
SO网友:Mayeenul Islam

我不在您的场景中,请找出您可以使用代码获得适当味道的方法。

问题是,当您将实际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), 可能不完全符合您的工作范围。但你可以用不同的方式思考。

进一步阅读hash_hmac() - PHP Function
  • set_transient() - WordPress Function
  • get_transient() - WordPress Function
  • add_option() - WordPress Function
  • get_option() - WordPress Function
  • Download via Email - WordPress plugin by nanodesigns
  • 相关推荐

    PAGINATE_LINKS不会在分类过滤的自定义帖子类型归档上创建正确的链接

    经过几个小时的测试和混乱。。。我面对墙,厌倦了搜索(主要是因为我的谷歌答案已经全部点击了!)I\'m trying to display paginate_link with a filters taxonomy form (AGAIN ????? ;).通过这里的所有解决方案,我发现了如何在表单的结果中获得正确编号的分页first page 的结果。主要问题,是在分页链接中,他们使用了错误的$第paged页;和我的筛选器从查询中删除(通过tax\\u query=>;…)第/2页,以及下面的其他内容