帮助wordpress导航

时间:2011-08-05 14:47:29

标签: php jquery css wordpress navigation

我目前正在我的wordpress主题

中执行以下操作
    <?php

$pagelist = wp_list_pages( array( 
    'include' => '154, 136', 
    'title_li' => '', 
    'sort_column' => 'ID', 
    'sort_order' => 'DESC', 
    'depth' => '0',
    'echo' => false
));

if($post->post_type == "casestudy") {
    $args = array( 'post_type' => 'casestudy');
    $case_studies = new WP_Query( $args );
    $casestudylist = "";
    foreach ($case_studies->posts as $k => $v) {
        $active = ""; 
        if($v->post_status == "publish") {
            if($v->ID == $post->ID)
            {
                $active = "current_page";
            }
            $casestudylist .= "<li class='subnav ".$active."'><a href=".$v->guid.">". substr($v->post_title, 0, strpos($v->post_title, ':')) ."</a></li>";
        }
    }
}


$testimonials = wp_list_pages( array( 
    'include' => '318', 
    'title_li' => '', 
    'sort_column' => 'ID', 
    'sort_order' => 'DESC', 
    'depth' => '1',
    'echo' => false
));
//die(print_r($casestudylist));

$concatenatedlist = $pagelist . $casestudylist . $testimonials;

?>



<aside class="secondary">
    <nav>
        <ul>
            <?php echo $concatenatedlist; ?>
        </ul>
    </nav>
</aside>

这会构建导航,并给人一种页面包含一些使用自定义帖子类型构建的子项的印象。问题是,如果我正在查看来自$casestudylist的帖子,我还需要以某种方式将活动类添加到来自$pagelist的第一个链接上,即使这两个链接不相关。我不介意它是否是一个jQuery解决方案。基本上,如果casestudylist中的元素处于活动状态,我需要将案例研究链接标记为有效。

这是PHP创建的HTML。

    <aside class="secondary">
    <nav>
        <ul>
                <li class="page_item page-item-154">
                      <a href="/clients">Clients</a>
                    </li>
                    <li class="page_item page-item-136">
                        <a href="/case-study">Case Study</a
                    </li>
                    <li class="subnav current_page">
                        <a href="/?post_type=casestudy&amp;p=161">Brenntag</a>
                    </li>
                    <li class="subnav ">
                         <a href="/?post_type=casestudy&amp;p=104"></a>
                    </li>
                    <li class="subnav ">
                         <a href="?post_type=casestudy&amp;p=65"></a>
                    </li>
                    <li class="page_item page-item-318">
                        <a href="/testimonials">Testimonials</a>
                    </li>
        </ul>
    </nav>
</aside>

2 个答案:

答案 0 :(得分:0)

观察:

  1. 为清洁起见,$casestudylist应设置为if之前的“”。
  2. 没有迹象表明您进入if($post->post_type == "casestudy")部分。
  3. 如果你是,你可能希望将$casestudylist包裹在<ul>中以便嵌套它。

答案 1 :(得分:0)

要在jQuery中执行此操作,您可以说:

if($('li.subnav.current_page').length>0) {
    $('li.page-item-136').addClass('current_page');
}

但是对帖子ID进行硬编码并不是非常强大,也不依赖于jQuery来应用WP应该服务的样式。

有一些想法here值得研究,但我的直觉反应是做以下其中一项:

  • 用页面和自定义帖子的父子关系替换页面
  • 创建自定义分类以包围所涉及的所有页面,并更改主题以显示它。