Get category ID from nav menu

时间:2014-01-27 作者:Cwkin7

最近我在wordpress上工作,但我陷入了导航菜单项的问题。我想要的结果是这样一个下拉标题:http://www.masterhands.com.tw/index.aspx

导航菜单上的每个类别列表作为一个项目。我默认的方式是:函数。php寄存器。

我对下拉区域的代码很满意,它依赖于在WP\\U查询中输入类别ID来显示最近的3篇帖子。我将其作为另一个php进行分离。

但问题是:

如何获取cat ID而不是菜单项ID

这是我在一个名为caption的php中从category(使用偏移量拾取category)调用post的方式。php

<div class="content"> 
<?php $cat_id = 2; //the certain category ID
     $latest_cat_post = new WP_Query( array(\'offset\' => 0, \'posts_per_page\' => 1, \'category__in\' => array($cat_id)));
     if( $latest_cat_post->have_posts() ) : while( $latest_cat_post->have_posts() ) : $latest_cat_post->the_post();  ?>
// Where I post thing...
</div>
我试着一部分一部分地剖析它

标题。php目前包含在所有php中()

  • 悬停在“menu li a”触发器下拉菜单上(内容是容器所在的位置)
    •  $(document).ready(function(){
      $("#menu-menu-1 a").mouseover(function(){ 
             $(".content").slideDown(100);
         });         
      });
      
      wordpress的默认菜单如下所示:

      <div class="menu-menu-container">
      <ul id="menu-menu-1" class="menu">
      <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-19">
      <a href="http://localhost/wordpress/category/cat2/">cat2</a>
      </li>
      </ul>
      </div>
      
      所以我认为,在悬停“$cat_id”时,仅仅从URL获取猫id是一种直接的方法吗?

    1 个回复
    最合适的回答,由SO网友:tfrommen 整理而成

    这相当复杂(问题和实现要求的方式)。

    你必须建立一个新的Walker. 事实上,您只需要自定义start_el 函数,您可以在其中检查是否需要/想要构建下拉区域。

    你可以这样做$item->object_id. 获取帖子,并检查你喜欢的任何内容(特定的帖子类型,获取类别并据此采取行动,特定的日期等)。

    然后将要运行的自定义查询的输出添加到输出中(或$item_output 在最后一行之前,如果要对其进行过滤,或$output 在最后一行之后,如果你don\'t 要对输出/查询进行筛选)。

    下面是我刚才描述的蓝图(不完整的代码!):

    class MyMenuWalker extends Walker_Nav_Menu {
    
        function start_el(&$output, $item, $depth, $args) {
            // ...
    
            // currently second last line
            $item_output .= $args->after;
    
            // THIS is where the pull down action is
            $current_post = get_post($item->object_id);
            if (... $current_post ...) {
                $pull_down_query = new WP_Query(array(...args...));
                // add (i.e., concatenate) query output to item output
            }
    
            // currently last line
            $output .= apply_filters(\'walker_nav_menu_start_el\', $item_output, $item, $depth, $args);
        } // function start_el
    
    } // class MyMenuWalker
    
    那么,你打电话的地方wp_nav_menu, 添加助行器:

    wp_nav_menu(array(
        // other args
        \'walker\' => new MyMenuWalker(),
    ));
    
    剩下的是CSS。。。

    我希望这能让你开始。

    结束

    相关推荐

    How to add taxonomy in menus?

    书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。