使用WP标题而不是自定义字段来调用

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

上周有人帮助完成了这段代码,它将输入自定义字段(高级自定义字段)的关键字拉到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;
    }
});

1 个回复
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;
});

结束

相关推荐