最近我在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是一种直接的方法吗?
最合适的回答,由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。。。
我希望这能让你开始。