上周有人帮助完成了这段代码,它将输入自定义字段(高级自定义字段)的关键字拉到URL的中间,然后重定向它们。
自定义单个模板中的代码:
<?php $url = get_site_url(); $id = get_the_ID(); echo "<a href=\'{$url}/goto/amazon/{$id}/\'>More info Test dynamic Amazon</a>"; ?>
函数中的代码。php
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;
}
});
也在函数中重写。php:
add_action( \'init\', function(){
add_rewrite_tag(\'%gotoamazon%\',\'([^&]+)\');
add_rewrite_rule(\'^goto/amazon/(.*)/?\',\'index.php?gotoamazon=$matches[1]\',\'top\');
});
但是我现在想做的是使用相同的代码来提取wp\\u标题如果关键字字段为空,我有条件设置,然后我复制了上面的代码,将其更改为标题(或我认为可行的内容),但它不会将标题插入所需的位置。
add_action( \'template_redirect\', function(){
global $wp_query;
if ($goto = get_query_var( \'gotoamazon\' )) {
$keytitle = urlencode(wp_title(\', \'),true,intval($goto));
$link = "http://www.amazon.co.uk/s/?_encoding=UTF8&camp=1634&creative=19450&field-keywords={$keytitle}&linkCode=ur2&tag=AFFID";
wp_redirect($link);
exit;
}
});
SO网友:Andrew
你把太多的论点传给了urlencode
.
WordPress为这些情况提供了一些有用的函数。add_query_arg
是使用查询参数构建URL的助手,并且esc_url
提供与URL编码相关的卫生和验证。
而且wp_title
将显示或返回页面/帖子标题和分隔符的组合,这似乎不是您所需要的。我假设您想要页面/帖子标题,所以我使用了get_the_title
函数并将其传递给Global $post
变量
add_action( \'template_redirect\', function(){
if ( ! is_singular( \'post_type_key\' ) ) {
return;
}
Global $post;
$default = get_the_title($post);
$keytitle = get_query_var( \'gotoamazon\', $default );
$args = array(
\'_encoding\' => \'UTF8\',
\'camp\' => \'1634\',
\'creative\' => \'19450\',
\'field-keywords\' => $keytitle,
\'linkCode\' => \'ur2\',
\'tag\' => \'AFFID\'
);
$link = add_query_arg($args, \'http://www.amazon.co.uk/s/\' );
wp_redirect( esc_url( $link ) );
exit;
});