2

在我的第一个 Wordpress 网站上工作,所以我确信这是一个非常基本的问题。我正在努力编写一个条件 php 语句,该语句在页面是父页面的子页面时执行特定操作。

例如,不只是指定一个页面,如下所示,我想指定所有以“关于我们”页面为父页面的页面:

<?php if (is_page('About Us')) echo 'Hello World!'; ?>

我已经尝试过“child_of”函数,但它并不像我希望的那样简单。

当我使用以下内容时,出现语法错误 - 可能只是我不知道如何使用该函数:

<?php if (child_of('About Us')) echo 'Hello World!'; ?>

有什么建议么?

4

5 回答 5

5

将以下函数添加到您的functions.php主题文件中:

function is_tree($pid) {      // $pid = The ID of the page we're looking for pages underneath
    global $post;         // load details about this page
    $anc = get_post_ancestors( $post->ID );
    foreach($anc as $ancestor) {
        if(is_page() && $ancestor == $pid) {
            return true;
        }
    }
    if(is_page()&&(is_page($pid))) 
               return true;   // we're at the page or at a sub page
    else 
               return false;  // we're elsewhere
};

然后,您可以使用以下内容:

if(is_tree('2')){ // 2 being the parent page id
   // Do something if the parent page of the current page has the id of two
}

参考:http ://codex.wordpress.org/Conditional_Tags

于 2010-06-06T12:26:54.927 回答
3

您收到错误是因为child_of()WordPress 中没有函数之类的东西。

child_of()是一种使用 get_pages() 函数进行搜索的方法。

$pages = get_pages('child_of=##');

其中## 是“关于我们”页面的数字 ID(不是名称)。

于 2009-05-21T03:24:26.317 回答
1

您想从子页面链接到父页面的简单解决方案;$post->post_parent 保存页面父级的 ID(如果有 1),如果没有,则为 0:

<?php
if($post->post_parent !== 0){               
    print '<a href="'.get_permalink($post->post_parent).'">&larr; Back</a>';    
}
?>

因此对于这种情况,您需要更改 if() 以检查 $post->post_parent == $id_of_about_page。

于 2013-12-11T08:21:44.140 回答
0

这段代码为我解决了这个问题,以防有人想知道一个替代方案:

<?php
    global $post;
    if ($post->post_parent == 9) {

        echo 'blah blah';

}; ?>

“9”是父页面的id。

于 2013-02-07T09:18:06.640 回答
0

这是对我有用的最终代码 - 不确定这是否是做我想做的事情的正确方法,但会为了任何有我同样问题的人的利益而发布。

我有一组右侧列,每个列都特定于网站的一部分(每个父页面代表网站的一部分)。

我希望父页面和该父页面的所有子页面都拉出相同的特定右侧列。

这是我所做的:

<?php 

if (is_page('Page Name 1') || $post->post_parent == '##') {
include (TEMPLATEPATH . '/right-1.php');

} elseif (is_page('Page Name 2') || $post->post_parent == '##') {
include (TEMPLATEPATH . '/right-2.php');

} elseif (is_page('Page Name 3') || $post->post_parent == '##') {
include (TEMPLATEPATH . '/right-3.php');

} elseif (is_page('Page Name 4') || $post->post_parent == '##')
include (TEMPLATEPATH . '/right-4.php');

?>

其中 ## 代表页面的 ID #。

于 2009-05-21T04:34:07.297 回答