Почему мой шорткод появляется за пределами родительского div? - PullRequest
0 голосов
/ 23 сентября 2019

Помещение шорткода в виджеты

# 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,
            )
        );
    }
}

1 Ответ

0 голосов
/ 23 сентября 2019

Вы должны вернуть разметку из шорткода, а не выводить ее.Вот правильный код, который будет вести себя как положено.

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;
}
...