如何在WordPress帖子URL中读取特殊字符(如“&”)?

时间:2018-09-09 09:10:19

标签: php wordpress url

我正在尝试使用自定义网址加载单个帖子。但是由于有“&”字符,它正在重定向到默认URL。没有&字符,它工作正常。但是,如何在URL中读取此“&”?我的代码如下,

function mutually_add_query_vars($vars) {
    return array('L') + $vars;
}
add_filter('query_vars', 'mutually_add_query_vars');

并加载单个模板

function mutually_template4($template) {

  global $wp;

  if ($wp->query_vars['L']=='6'.html_entity_decode('&').'au=2') {
    return dirname( __FILE__ ) . '/single-ad.php';
  }
  else {
    return $template;
  }
}
add_filter('single_template', 'mutually_template4');

我尝试使用html_entity_decode,但是没有用。

3 个答案:

答案 0 :(得分:0)

您需要编码
所以&将是%26

答案 1 :(得分:0)

您需要做的是URL编码而不是HTML编码(两者不同)。因此,您可以将&替换为%26。 Click here查看对URL编码的引用。

您还可以使用urlencode(string $ str)PHP函数对具有URL友好值的字符串进行编码。

答案 2 :(得分:0)

URL中的

GET参数对以?开头。然后用&符号分隔,键/值用=分隔,因此myurl.com?L=6&au=2将被解析为两个单独的$wp_query_vars元素,一个元素分配给L,另一个到au的情况下,如果出于某些原因您的键/值包含&,则需要手动解析&符号,而其他答案也建议将其编码为%26:)

function mutually_template4($template) {

  global $wp;

  if ($wp->query_vars['L']=='6' && $wp->query_vars['au']=='2') {
    return dirname( __FILE__ ) . '/single-ad.php';
  }
  else {
    return $template;
  }
}
add_filter('single_template', 'mutually_template4');