Php 如何在WordPress菜单中添加边栏

Php 如何在WordPress菜单中添加边栏,php,wordpress,function,Php,Wordpress,Function,我需要在菜单中添加一个小部件,我正在尝试: add_filter('wp_nav_menu_items', 'add_widget_to_menu', 10, 2); function add_widget_to_menu($items, $args) { if ($args->theme_location == 'mobile_menu') return $items . '<div id="newsletter-mobile"

我需要在菜单中添加一个小部件,我正在尝试:

add_filter('wp_nav_menu_items', 'add_widget_to_menu', 10, 2);
function add_widget_to_menu($items, $args) {
    if ($args->theme_location == 'mobile_menu')
        return $items .
               '<div id="newsletter-mobile">' .
               dynamic_sidebar('sidebar-mobile'        ) .
               '</div>';

    return $items;
}
add_filter('wp_导航_菜单_项','add_小部件_到_菜单',10,2);
函数将小部件添加到菜单($items,$args){
如果($args->theme\u location=='mobile\u menu')
返回$items。
'' .
动态侧栏(“侧栏-移动”)。
'';
退回$items;
}

怎么了?

您可以使用以下命令创建侧栏

register_sidebar(array(
    'name'=>'Widget_Name',
    'id'=>'widget_id',
    'before_widget' =>'<div class="">',
    'after_widget' =>'</div>'
));

有关更多详细信息,请参阅。

此挂钩用于在WordPress中添加边栏菜单:

add_action("admin_menu", "sidebar_menu_for_registration");
用于注册的侧栏菜单是一个函数

这是创建侧栏菜单的语法:

add_menu_page(string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', string $icon_url = '', int $position = null)

您将得到1作为输出,将小部件区域添加到这样的菜单中。原因是wp_nav_菜单回显了这些项目。要使其工作,您应该将小部件区域的内容转换为字符串。我设法用缓冲解决了这个问题。下面是一个适用于我的小代码示例:

function add_extra_item_to_nav_menu( $items, $args ) {
    ob_start();
        dynamic_sidebar( 'header-widget-area' );
    $menu_widget_area = ob_get_clean();
    $items .= $menu_widget_area;
    return $items;
}
add_filter( 'wp_nav_menu_items', 'add_extra_item_to_nav_menu', 10, 2 );

示例代码中似乎缺少一些内容。
function add_extra_item_to_nav_menu( $items, $args ) {
    ob_start();
        dynamic_sidebar( 'header-widget-area' );
    $menu_widget_area = ob_get_clean();
    $items .= $menu_widget_area;
    return $items;
}
add_filter( 'wp_nav_menu_items', 'add_extra_item_to_nav_menu', 10, 2 );