WordPress允许菜单描述中的HTML

din*_*o_d 0 wordpress menu filter

我查看了如何在菜单描述中允许带有链接或其他标签的HTML,但我能找到的是如何使用标签去除标签

// Allow HTML descriptions in WordPress Menu
remove_filter( 'nav_menu_description', 'strip_tags' );
Run Code Online (Sandbox Code Playgroud)

我找到了这个函数,它应该允许在菜单描述中编写链接和其他HTML元素

add_filter( 'wp_setup_nav_menu_item', 'cus_wp_setup_nav_menu_item' );
function cus_wp_setup_nav_menu_item( $menu_item ) {
     $menu_item->description = (isset($menu_item->post_content)) ? apply_filters( 'nav_menu_description', $menu_item->post_content ) : '';
     return $menu_item;
}
Run Code Online (Sandbox Code Playgroud)

但是这将在菜单描述中输出页面内容:

还有其他方法吗?

cdo*_*dog 8

我认为你的代码应该是这样的:

remove_filter( 'nav_menu_description', 'strip_tags' );

function my_plugin_wp_setup_nav_menu_item( $menu_item ) {
    if ( isset( $menu_item->post_type ) ) {
        if ( 'nav_menu_item' == $menu_item->post_type ) {
            $menu_item->description = apply_filters( 'nav_menu_description', $menu_item->post_content );
        }
    }

    return $menu_item;
}

add_filter( 'wp_setup_nav_menu_item', 'my_plugin_wp_setup_nav_menu_item' );
Run Code Online (Sandbox Code Playgroud)

你的步行者课程怎么样?my_plugin_wp_setup_nav_menu_item如果使用$item->post_contentinsted 的值,则可能不需要过滤器$item->description.还要确保打印菜单项描述的原始值而不使用esc_html或转义它esc_attr.