我试图在创建类别和作者时将其自动添加到自定义菜单中(避免为每个类别和作者手动添加)。
我修改了Alex Mill\'s code 然后在菜单上显示元素列表和类别,但问题是元素列表outside the ul of the menu 就其本身而言。你可以理解我的意思here.
下面是我的代码版本:
// Front end only, don\'t hack on the settings page
if ( ! is_admin() ) {
// Hook in early to modify the menu
// This is before the CSS "selected" classes are calculated
add_filter( \'wp_get_nav_menu_items\', \'replace_placeholder_nav_menu_item_with_latest_post\', 10, 3 );
}
// Replaces a custom URL placeholder with the URL to the latest post
function replace_placeholder_nav_menu_item_with_latest_post( $items, $menu, $args ) {
// Loop through the menu items looking for placeholder(s)
foreach ( $items as $item ) {
// Is this the placeholder we\'re looking for?
if ( \'#latestpost\' != $item->url )
continue;
// Get the categories
$latestpost = wp_list_categories( array(
\'orderby\' => name,
\'show_count\' => 0,
\'exclude\' => 3,
\'title_li\' => "",
) );
if ( empty( $latestpost ) )
continue;
// Replace the placeholder with the real URL
$item->url = get_permalink( $latestpost[0]->ID );
}
// Return the modified (or maybe unmodified) menu items array
return $items;
}
您知道如何将生成的元素列表放置在适当的下拉列表中(在本例中为TEST)吗?
谢谢埃里克
SO网友:birgire
但问题是元素列表本身不在菜单的ul范围内。
我想部分问题可能是wp_list_categories()
默认情况下处于回声模式,因此$latestpost
始终为空。
请使用以下参数进行尝试:
// Get the categories
$latestpost = wp_list_categories( array(
\'orderby\' => name,
\'show_count\' => 0,
\'exclude\' => 3,
\'title_li\' => "",
\'echo\' => 0,
) );
您可以看到的默认参数
wp_list_categories()
here 在法典中。
代码示例的问题还在于wp_list_categories()
是HTML字符串,而不是数组。所以这部分:$latestpost[0]->ID
没有意义$latestpost
是一个(空)字符串。