将生成的列表放入自定义菜单的下拉列表中

时间:2014-01-08 作者:Eric Mitjans

我试图在创建类别和作者时将其自动添加到自定义菜单中(避免为每个类别和作者手动添加)。

我修改了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)吗?

谢谢埃里克

1 个回复
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 是一个(空)字符串。

结束