0

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

4

2 回答 2

0

有点困惑为什么要使用帖子标题来执行此操作,因为帖子标题不是唯一的,因此两个页面可以具有相同的标题。如果其中一个具有子页面而另一个则不是所需的输出

于 2012-10-25T10:42:30.267 回答
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。get_the_title那个ID,然后检查那是“关于”还是“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 {}
于 2012-10-26T15:00:06.440 回答