在wp菜单列表项中插入元素

时间:2012-03-15 作者:daniel.tosaba

我不确定从标题上是否清楚我想在这里实现什么,所以让我试着澄清一下。

我想利用Wordpress的菜单系统,并需要根据我的需要进行调整,这意味着我需要它from here:

<ul>
<li>item1</li>
<li>item2</li>
etc.
</ul>
to here:

<ul>
<li><div>1(dynamic-content)</div>item1</li>
<li><div>2(dynamic-content)</div>item2</li>
etc.
</ul>
实现这一目标的最佳方式是什么??只需要一些快速的指示就可以去那里,自己动手,而不会浪费太多时间找到合适的解决方案。

是不是wp_nav_menu()wp_get_nav_menu_items() 我应该研究的?如果要求不太多,也请提供短样品。还有一件事。。如果您能告诉我如何在插入的内容中生成数字,我将不胜感激div 这表示菜单项的顺序外观:1、2、3等等。有没有办法从Wordpress的核心中提取这一点?

非常感谢你。感谢您的帮助。

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

你可以使用custom walker 或者只是filter the menu title. 这取决于你需要额外内容的位置:它应该出现在链接之前还是内部?

walker更新示例:实际上,这不起作用:父函数创建<li, 因此,您必须复制和调整整个父函数

wp_nav_menu(
    array (
        \'walker\' => new WPSE_45647_Walker
    )
);

class WPSE_45647_Walker extends Walker_Nav_Menu
{
    public function start_el( &$output, $item, $depth, $args )
    {
        $output .= $this->custom_content( $item );
        parent::start_el( &$output, $item, $depth, $args );
    }

    /**
     * Create your extra content here.
     * @return string
     */
    protected function custom_content( $item )
    {
        // inspect the item and return your 
        // custom content as a string
    }
}
过滤器示例更为粗糙,但可能更容易理解:抓住<li> 和替换<a 具有$custom <a

add_filter( \'walker_nav_menu_start_el\', \'wpse_45647_add_custom_content\', 10, 2 ); 
function wpse_45647_add_custom_content( $item_output, $item )
{
    static $counter = 0; 
    // You may inspect $item and do something more creative here.
    $custom = ++$counter . \' Hello World!\'; 
    return str_replace( \'<a \', $custom . \'<a \', $item_output );
}

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph