2017-04-04 38 views
0

我正在尝试为复杂的WordPress菜单创建自定义代码。 让我们假设我有菜单WordPress的菜单结构是这样 - Granchild是最后一个节点,也没有更多的孩子节点:自定义层次结构WordPress菜单 - 只显示子页面或当前活动页面

Parent1 
-Child1 
    --Grandchild11 
    --Grandchild12 
-Child2 
    --Grandchild21 
    --Grandchild22 
Parent2 

我的任务是创造这样的:当用户在主页上,只有Parent1 和Parent2显示为菜单列表项目。 当用户点击前。到Parent1,进入该页面,他能看到这样的菜单结构(静态,因为列表项的内联) - 仅子页面点击页面的,而且只有第一级别的项目:

|---------Parent1---------|--------Parent2-----------| 
    |---Child1---||---Child2---|-----ChildN----| 

然后让我们假设用户点击Child1在新创建的功能区中。 当该页面加载用户必须看到一个结构:

|---------Parent1---------|--------Parent2-----------| 
     |---Child1---||---Child2---|-----ChildN----| 
      |---Grandchild11---||---Grandchild12---| 

现在,用户可以单击从列表中的任何孙子元素,而当负载该页面,其中有没有自己的孩子时,就需要显示相同的菜单页面结构如上图所示。

我想通过这个代码来实现它(做简码语句是在标题菜单后):

function wpb_list_child_pages() { 
global $post; 
if (is_page() && $post->post_parent)  
    {$childpages = wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0&depth=1');} 
else 
    $childpages = wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=1'); 
if ($childpages) { 
    $string = '<ul class="menidva"><center>' . $childpages . '</center></ul><br>'; 
} 

return $string; 
} 

但需要它不工作。 我保持wordpress菜单只是为了让大家可以在下拉式样中看到真实的结构。

这里是一个网站的链接进行测试:LINK

可有人请帮助我?

+0

您是否尝试过使用CSS?如果你使用: > 'body_class();'函数将大量类添加到body标签中,然后您可以将其用作CSS选择器,不确定是否有足够的类可以实现您正在寻找的内容,但可以提供帮助。 当你说“但它不按要求工作”时,我不太清楚你在这里做什么。 – Paul

+0

你见过我连接的链接吗?它没有按照我写的规范工作,并绘制...不显示第三级 – Lanchushki

+0

是的,我看到了链接,但你的功能不明确。你是说在这个页面http://development.leadwebtech.com/photography/lenses/内联导航应该有Lens2 |镜头1 – Paul

回答

0

对不起,只是想澄清,因为它不是一个简单的事情来解决。我不得不对你的代码进行一些修改,以便我可以在本地进行测试,并且我可能不会完全实现你想要的功能,但下面的答案可以帮助你解决问题,因为我相信if语句或多或少是你所需要的。

<?php 

function wpb_list_child_pages() { 
global $post; 

$ancestors = get_post_ancestors($post->ID); 
$root_parent_page = end($ancestors); 
    echo $root_parent_page; 

if(is_page() && (count($ancestors) >= 2)){ 
    echo 'YOU ARE ON A GRAND CHILD PAGE'; 
    echo '<ul>'; 
     wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $root_parent_page . '&echo=1&depth=1'); 
    echo '</ul>'; 
    echo '<ul>'; 
     wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=1&depth=1'); 
    echo '</ul>'; 
} 
elseif (is_page() && $post->post_parent){ 
    echo 'YOU ARE ON A CHILD PAGE'; 
    echo '<ul>'; 
     wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=1&depth=1'); 
    echo '</ul>'; 
} 
else{ 
    echo 'YOU ARE ON A PARENT PAGE'; 
    echo '<ul class="menidva">'; 
     wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=1&depth=1'); 
    echo '</ul>'; 
} 


} 

wpb_list_child_pages(); 

?> 
+0

这太好了!现在请检查我的网站的链接。当你点击摄影作品很棒时,会显示镜头和相机。然后,当我点击镜头时,它会输入镜头1和镜头2,这是完美的,但它没有显示父母菜单(相机和镜头)。例如,当你点击lense1来打开孙子时,它显示就像它需要显示的一样。你可以请检查我的那部分代码吗?非常感谢你的帮助! – Lanchushki

+0

这似乎现在工作得很好,你是否会自己修复它,或者我没有正确理解你? – Paul

相关问题