WP:按名称标识页面和父页面(如果声明)

时间:2012-10-25 10:15:31

标签: wordpress if-statement parent-child

我正在尝试根据当前的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。

2 个答案:

答案 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 {}