通过重定向和定制字段传递PHP

时间:2018-01-05 作者:Randomer11

我正在尝试构建一个易于使用的附属网站,每种帖子类型都有一个自定义字段,每个帖子都可以输入关键字。(使用高级自定义字段插件)

然后在模板中,我将该字段调用到URL中,如下所示:

<?php if( get_field(\'amazon_keywords\') ): ?>
            <a href="http://www.amazon.co.uk/s/?_encoding=UTF8&camp=1634&creative=19450&field-keywords=<?php the_field(\'amazon_keywords\'); ?>&linkCode=ur2&tag=AFFID"> More info Test dynamic Amazon</a>
    <?php else : ?>
            Something else
    <?php endif; ?>
这将工作并显示带有输入关键字的链接。

PROBLEM

因为它是一个附属链接,最好的做法是屏蔽它。因此,与其显示关联链接id,不如显示如下内容:

website.com/goto/amazon 
通常这很好,因为我可以直接重定向,但在关键字的URL中添加php是我遇到的问题。

有人有什么想法吗?

1 个回复
最合适的回答,由SO网友:David Sword 整理而成

不接触rewrites - 你可能会这样做

website.com/?goto-amazon=<?php echo get_the_ID() ?>
Which\'ed输出

website.com/?goto-amazon=42
在哪里42 是包含amazon_keywords.

在您的站点中,您可以收听goto-amazon 查询并随后重定向

add_action( \'init\', function(){
    if (isset($_GET[\'goto-amazon\'])) {
        $keywds = get_field(\'amazon_keywords\',intval($_GET[\'goto-amazon\']));
        $link = "http://www.amazon.co.uk/s/?_encoding=UTF8&camp=1634&creative=19450&field-keywords={$keywds}&linkCode=ur2&tag=AFFID";
        wp_redirect($link);
        exit;
    }
});
更新要进行重写,您可以这样做。在你的岗位上

$url = get_site_url();
$id = get_the_ID();
echo "<a href=\'{$url}/goto/amazon/{$id}/\'>go to Amazon</a>";
这样的链接

website.com/goto/amazon/42/
然后在你的功能中

add_action( \'init\', function(){

    // uncomment reload once or twice, or hit SAVE in wp-admin > Settings > Permalinks
    //flush_rewrite_rules();

    add_rewrite_tag(\'%gotoamazon%\',\'([^&]+)\');
    add_rewrite_rule(\'^goto/amazon/(.*)/?\',\'index.php?gotoamazon=$matches[1]\',\'top\');
});


add_action( \'template_redirect\', function(){
    global $wp_query;
    if ($goto = get_query_var( \'gotoamazon\' )) {
        $keywds = urlencode(get_field(\'amazon_keywords\',intval($goto)));
        $link = "http://www.amazon.co.uk/s/?_encoding=UTF8&camp=1634&creative=19450&field-keywords={$keywds}&linkCode=ur2&tag=AFFID";
        wp_redirect($link);
        exit;
    }
});
处理重写时,请确保重置重写规则,即上面注释代码中的说明。

我不知道amazon对关键字的期望是什么,但它们应该是urlencode()\'教育部

结束

相关推荐

WordPress中Single-{post-type}.php的固定链接结构

我尝试了多种方法将我的自定义帖子类型显示为single-{post-type} 最后,我用过之后,效果很好:\'rewrite\'=> false, 在那之前,我用\'rewrite\' => array( \'slug\' => \'custom-post-type\' ) 但对我来说从来都不管用。不知道我哪里出错了。现在我应该感到很高兴,因为它的工作没有任何错误。但permalink有一点困惑,因为它的显示:localhost/myblog/?news=break