我有菜单:
Activities
Projects
About Us
News
(不计算子菜单项)。现在“活动”没有子菜单。
我创建了自定义内容类型“project”。
我的老板想在“活动”菜单中自动填写所有项目的列表。
是否可以在不重新编写所有WP菜单输出代码的情况下完成?
我有菜单:
Activities
Projects
About Us
News
(不计算子菜单项)。现在“活动”没有子菜单。
我创建了自定义内容类型“project”。
我的老板想在“活动”菜单中自动填写所有项目的列表。
是否可以在不重新编写所有WP菜单输出代码的情况下完成?
对是的,它可以,您需要挂到助行器使用的过滤器上,例如:
add_filter( \'walker_nav_menu_start_el\', \'menu_show_project_post\', 10, 4 );
function menu_show_project_post( $item_output = \'\', $item = \'\', $depth = \'\', $args = \'\' ) {
global $post;
if ( is_array( $item->classes ) ) {
$query = false;
foreach( $item->classes as $class ) {
if ( $class == \'project_posts\') {
$query = true;
break;
}
}
if ( $query ) {
$the_posts = get_posts( array(
\'post_type\' => \'project\',
\'numberposts\' => 5
) );
if ( ! empty( $the_posts ) ) {
$new_html[] = \'<ul class="sub-menu">\';
foreach( ( array ) $the_posts as $post ) {
setup_postdata( $post );
$new_html[] = \'<li class="menu-item">\';
$new_html[] = \'<a href="\' . get_permalink( ) . \'" class="depth-\' . ( $depth ? $depth + 1 : 2 ) . \'">\';
$new_html[] = the_title(\'\',\'\',false );
$new_html[] = \'</a>\';
$new_html[] = \'</li>\';
}
wp_reset_postdata();
$new_html[] = \'</ul>\';
$item_output .= implode( "\\n", $new_html );
}
}
}
return $item_output;
}
在函数中使用此代码。php中,任何包含“project\\u posts”类的菜单项都会给出一个子菜单,其中包含5个project类型的posts。根据需要修改代码,以显示任意数量的帖子或帖子类型
我想您可以编写一个自定义菜单漫游器来绕过它,它可以拦截您的活动页面,并插入项目类型的帖子。
看见http://codex.wordpress.org/Function_Reference/wp_nav_menu, walker选项。
对于您的定制助行器,您可以轻松扩展Walker_Nav_Menu
, 位于wp includes/nav菜单模板中。php。方法start_el
应该适合您的需要。
我会这样做的。
我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph