需要进行哪些更改才能使此条件代码在更深层次上工作?

时间:2016-11-18 作者:glvr

我使用条件代码将css突出显示应用于当前正在查看的页面的菜单项。

<li<?php if ( is_page(\'channels\') || \'2704\' == $post->post_parent ) { echo " class=\\"current\\""; } // the page is \'channels\', or the parent of the page is \'channels\'?>><a href="/programs/channels/">Channels</a></li>

我还需要将其应用于该父级以下的所有页面。

2 个回复
SO网友:rudtek

看来你很接近了。你能试着扭转你的后家长声明吗?

\'2704\' == $post->post_parent 
应该是

 ($post->post_parent == \'2704\')
注意,我也把它放在了括号里。

因此,您的代码是:

    <li<?php if ( is_page(\'channels\') || ($post->post_parent == \'2704\') ) { 
    echo " class=\\"current\\""; } // the page is \'channels\', or the parent of the page is \'channels\'?>>
<a href="/programs/channels/">Channels</a>
</li>

SO网友:glvr

回答我自己的问题。。。

使用is\\u树似乎很有效。

将此添加到函数:

function is_tree($pid)
{
global $post;
$ancestors = get_post_ancestors($post->$pid);
$root = count($ancestors) - 1;
$parent = $ancestors[$root];
if(is_page() && (is_page($pid) || $post->post_parent == $pid || in_array($pid, $ancestors)))
{
return true;
}
else
{
return false;
}
};
用法是:

if (is_tree(POST ID HERE)) {
// \'POST ID HERE\' is the post ID.
// do stuff
}
我见过is\\U树的各种变体,但我不够聪明,不知道其中一个是否比其他更好。

相关推荐