好的,所以我一直试图解决这个问题。我不是一个PHP开发人员,但通常可以看出示例和Wordpress文档。但是,我正在挣扎。
我试图添加"简单" Wordpress模板文件的一些代码,但它不起作用。基本上我想在某些页面上显示内容,在其他页面上显示不同的内容。这就是我到目前为止所做的:
<?php if(is_page('123')): ?>
This text
<?php endif; ?>
<?php if(!is_page('123')): ?>
That text
<?php endif; ?>
任何帮助都会非常感激。
答案 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';