【问题标题】:WP: Identify both page and a page parent by name (if statement)WP:按名称识别页面和页面父级(if 语句)
【发布时间】:2012-10-25 10:15:30
【问题描述】:

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

不知道为什么,但它正在识别页面名称,而不是该页面的子页面。

谁能看到我做错了什么?语法错误?

谢谢

附言。我也试过了

<?php if (get_the_title() || get_the_title( $post->post_parent ) == array( 'About', 'Chi Siamo' ) ) { ?>

但这对所有页面都返回 true。

【问题讨论】:

  • 你的第一个条件似乎有点小括号快乐
  • True :) 我无法通过父页面名称识别子页面,因为没有内置函数可以做到这一点 - 你能推荐什么吗?

标签: wordpress if-statement parent-child


【解决方案1】:

我会从你的条件句的第二部分删除外括号:( get_the_title( $post-&gt;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 {}

【讨论】:

  • 对不起,你让我有点迷失了。一个功能会很棒,这样的东西会起作用吗? 'function parent_title() { $parent_title = get_the_title($post->post_parent);返回 $parent_title; }
  • 可以!你为什么不试试呢?另外,您是否var_dump($post) 看看它是否对post_parent 键有任何价值?
  • 非常感谢,我已将此标记为已回答,这周将尝试一下。
【解决方案2】:

有点困惑你为什么要使用帖子标题来做到这一点,因为帖子标题不是唯一的,两个页面可以有相同的标题。如果其中一个有子页面而另一个不是输出不会是想要一个

【讨论】:

  • 感谢 suvajit,这是一件有趣的事情 - 我的主题将在多个特许经营网站上推出。无需每次安装时更改页面 ID,我尝试使用不同语言的页面名称数组。对于上述内容,它是英语和意大利语的“关于我们”页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多