我正在尝试根据当前的Wordpress页面或子页面显示内容,使用页面标题而不是ID。
我拥有的是:
<?php if ( is_page( array( 'About', 'Chi Siamo' ) ) || ( get_the_title( $post->post_parent ) == ( array( 'About', 'Chi Siamo' ) ) ) ) { ?>
<p>Hello Joe</p>
<?php } else {} ?>
不确定原因,但它正在确定页面名称,而不是该页面的子页面。
谁能看到我做错了什么?语法错误?
由于
PS。我也试过
<?php if (get_the_title() || get_the_title( $post->post_parent ) == array( 'About', 'Chi Siamo' ) ) { ?>
但是对于所有页面都会返回true。
答案 0 :(得分:0)
答案 1 :(得分:0)
我会从条件的第二部分( get_the_title( $post->post_parent ) == ( array( 'About', 'Chi Siamo' ) ) )
中删除外部括号,并确保$post
实际上是您认为的。
尝试var_dump($post)
并查看post_parent
是否确实存在。
按标题检查页面是很难看的(slug或id会更好),特别是在找到他们的祖先时。 PHP的优点在于它是动态的,您不需要在每个主题安装时手动更改ID。为什么不获取当前页面的ID,然后将其传递给get_ancestors?
将该数组存储在变量中,可能是$ancestors
,然后$ancestors[0]
将是父页面的ID。该ID的get_the_title
,然后检查是否为“关于”或“Chi Siamo”。
<强>更新强>
这是我以前的可复制代码形式的答案:
$ancestors = get_ancestors($post->ID);
$parent_id = $ancestors[0]
$parent_title = get_the_title($parent_id);
然后是你的条件
if ( is_page(array('About', 'Chi Siamo' )) || $parent_title == 'About' || $parent_title == 'Chi Siamo') {
echo '<p>Howdy</p>';
} else {}