在WordPress中,如果URL包含特定字符串(在本例中为/ support /也包含/ support / forums /),我想显示自定义header.php。我环顾四周,尝试了很多不同的组合,但似乎无法让它发挥作用。以下是我的代码,非常感谢任何帮助!!!
if (substr($_SERVER['REQUEST_URI'], 0, 5) !== 'support') {
get_header('XXXXXX');
} else {
get_header();
}
仅供参考...我需要它以这种方式工作(我认为),因为我使用自定义帖子类型,因此不能使用标准的WordPress调用,因为它只是一个slug而不是Post / Category / .etc。
谢谢!
答案 0 :(得分:1)
另一种非常相似的方式是:
<?php $uri_segments = explode( '/', $_SERVER['REQUEST_URI'] );
if ( in_array('support', $uri_segments) ) { get_header('xxxx'); }else{ get_header(); }
?>
答案 1 :(得分:0)
你忘了你的代码吗?什么都没有出现。
无论如何$_SERVER['QUERY_STRING']
是你所追求的价值,你可以使用PHP的字符串操作函数,如explode()
或更好strpos()
来查找和回应你所追求的任何东西,找到更多关于函数explode PHP Manual page和strpos PHP Manual page以及约the _SERVER reserved variable
答案 2 :(得分:0)
假设你的URI总是在那个位置(第一个)有'support'字符串,你的代码看起来很好,我看不到任何错误。但请记住,get_header()函数的参数是必须附加到文件名的后缀。所以,如果你有:
get_header('test');
您的标头文件应命名为:header-test.php
另外,为了确保你总是找到字符串,即使它改变了URI中的位置,你也可以这样做:
$params= explode('/',$_SERVER['REQUEST_URI'] );
if(in_array('support', $params)) {
get_header('support');
} else {
get_header();
}
答案 3 :(得分:0)
比较字符串支持的长度不是5个字符长,因此if语句始终为false。
URI通常以位置0处的 / 开头,因此请将其包含在字符串中以进行比较或从位置1开始比较。
我会用:
if (substr($_SERVER['REQUEST_URI'], 0, 9) !== '/support/') {