Wordpress PHP if语句检测URL和服务器特定的header.php页面

时间:2011-06-29 14:45:44

标签: php wordpress post

在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。

谢谢!

4 个答案:

答案 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 pagestrpos 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)

  1. 比较字符串支持的长度不是5个字符长,因此if语句始终为false。

  2. URI通常以位置0处的 / 开头,因此请将其包含在字符串中以进行比较或从位置1开始比较。

  3. 我会用:

    if (substr($_SERVER['REQUEST_URI'], 0, 9) !== '/support/') {