在我的第一个Wordpress网站上工作,所以我确信这是一个非常基本的问题。我正在努力编写一个条件php语句,当页面是父页面的子页面时执行某个操作。
例如,我不想只指定一个页面,而是指定将“关于我们”页面作为父页面的所有页面:
<?php if (is_page('About Us')) echo 'Hello World!'; ?>
我尝试过“child_of”功能,但并不像我希望的那样简单。
当我使用下面的内容时,我收到语法错误 - 可能只是我不知道如何使用该函数:
<?php if (child_of('About Us')) echo 'Hello World!'; ?>
有什么建议吗?
答案 0 :(得分:3)
您收到错误,因为WordPress中没有child_of()
函数。
child_of()
是一种使用get_pages()函数进行搜索的方法。
$pages = get_pages('child_of=##');
其中##是“关于我们”页面的数字ID(不是名称)。
答案 1 :(得分:2)
将以下功能添加到 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
}
答案 2 :(得分:1)
您希望从子页面链接到父页面的简单解决方案; $ post-&gt; post_parent保存页面父级的ID(如果有),如果没有,则为0:
<?php
if($post->post_parent !== 0){
print '<a href="'.get_permalink($post->post_parent).'">← Back</a>';
}
?>
因此,对于这种情况,您需要更改if()以检查$ post-&gt; post_parent == $ id_of_about_page。
答案 3 :(得分: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#。
答案 4 :(得分:0)
这个代码为我们解决了这个问题,因为任何一个人都想知道这个问题:
<?php
global $post;
if ($post->post_parent == 9) {
echo 'blah blah';
}; ?>
“9”是父页面的id。