首页 > 解决方案 > 为什么我的简码出现在其父 div 之外?

问题描述

将简码放在小部件上

#menu-social-media-links 应该在 .textwidget div 内

这是我的简码:

add_shortcode( 'social-media', 'social_media_icons' );
function social_media_icons( $atts ) {
    if (has_nav_menu( 'social' )) {
        wp_nav_menu(
            array(
                'container'      => false,
                'theme_location' => 'social',
                'menu_class'     => 'social-links-menu',
                'link_before'    => '<span class="screen-reader-text">',
                'link_after'     => '</span>' . twentynineteen_get_icon_svg( 'link' ),
                'depth'          => 1,
            )
        );
    }
}

标签: wordpresswidgetshortcode

解决方案


您应该从简码返回标记,而不是输出它。这是正确的代码,将按预期运行。

add_shortcode( 'social-media', 'social_media_icons' );
function social_media_icons( $atts ) {
    $markup = '';
    if (has_nav_menu( 'social' )) {
        $markup = wp_nav_menu(
            array(
                'container'      => false,
                'echo'      => false,
                'theme_location' => 'social',
                'menu_class'     => 'social-links-menu',
                'link_before'    => '<span class="screen-reader-text">',
                'link_after'     => '</span>' . twentynineteen_get_icon_svg( 'link' ),
                'depth'          => 1,
            )
        );
    }
    return $markup;
}

推荐阅读