is_page()无效

时间:2018-06-13 19:24:03

标签: php wordpress

好的,所以我一直试图解决这个问题。我不是一个PHP开发人员,但通常可以看出示例和Wordpress文档。但是,我正在挣扎。

我试图添加"简单" Wordpress模板文件的一些代码,但它不起作用。基本上我想在某些页面上显示内容,在其他页面上显示不同的内容。这就是我到目前为止所做的:

<?php if(is_page('123')): ?>
    This text
<?php endif; ?>
<?php if(!is_page('123')): ?>
    That text
<?php endif; ?>

任何帮助都会非常感激。

4 个答案:

答案 0 :(得分:1)

你在WP Loop中使用它吗?如果是,请注意:

  

由于在循环期间某些全局变量被覆盖,   is_page()将无法正常工作。为了在The Loop之后调用它,你必须   首先调用wp_reset_query()。

(来自:https://developer.wordpress.org/reference/functions/is_page/

此外,您不应将页面ID放在引号中 - 它是一个整数。

答案 1 :(得分:0)

你可以试试这个:

global $post;

<?php if( $post->ID == 346) { ?>

      <!-- do your stuff here -->

<?php } ?>

<?php
if (is_page( 'Page Title' ) ):
  # Do your stuff
endif;
?>

答案 2 :(得分:0)

您应该提供更多背景信息。提供的代码是什么回声?它总是说&#34;那个文字&#34;虽然你认为它应该说&#34;这个文字&#34;?

也许太明显但是&#39; 123&#39;这个帖子的名字?

如果你想检查带有ID的帖子,你应该试试这个:

<?php if(is_page(123)): ?>
    This text
<?php endif; ?>
<?php if(!is_page(123)): ?>
    That text
<?php endif; ?>

使用&#39; 123&#39;使它成为一个字符串,并搜索带有该字符串的标题或slug的帖子。

答案 3 :(得分:0)

你不应该需要Logical&#34; Not&#34;两个语句之间的运算符。一个简单的if/else就足够了。那说:

如果当前查询未针对网站上的现有页面设置,则is_page()函数将返回false。

可能的条件:

全局查询已被修改/覆盖。如果您在此代码之前使用query_posts() - 请停止!使用WP_Query()wp_reset_postdata()

名称为'123'的记录实际上并不是一个页面。 is_page专门检查page帖子类型。考虑姐妹函数is_single()is_singular()

同样,您是否在寻找 ID:123 ?如果是,请删除引号。 ID应以整数形式传递:123

您在&#34; The Loop&#34;中使用此功能,可能会发生意外的互动。您反而希望使用其他限定语句,例如if( get_the_ID() == 123 ) ){if( $post->ID == 123 ){

此代码过早地挂钩到动作挂钩,例如plugins_loaded,其中可能尚未设置全局查询和发布对象。

检查以确定是否适用任何条件,然后您可以修改您的代码以使其更简洁:

if( is_page( 123 ) ){
    echo 'This is page ID 123';
} else {
    echo 'This is NOT page ID 123';
}

或者更进一步使用Ternary Operator

echo is_page( 123 ) ? 'This is Page ID 123' : 'This is Not page ID 123';