get_template_part()的位置

问题描述 投票:0回答:1

我创建了一个简码以在我正在使用的主题内显示社交图标(Divi)。社交图标包含在名为“ social_icons.php”的PHP模板中。

这是我正在使用的功能:

  function social_icons_shortcode() {
    $social_icons = get_template_part( 'includes/social_icons' );
      echo $social_icons; 
}
add_shortcode('social-icons', 'social_icons_shortcode');

这里是social_icons.php模板:

<div id="custom-social-icons">
    <?php if( get_field('facebook', 'option') ): ?>
        <a class="icon facebook" href="<?php echo get_field( 'facebook', 'option' ) ?>" title="Follow us on Facebook"></a>
    <?php endif; ?>
    <?php if( get_field('twitter', 'option') ): ?>
    <a class="icon twitter" href="<?php echo get_field( 'twitter', 'option' ) ?>" title="Follow us on Twitter"></a>
    <?php endif; ?>
    <?php if( get_field('instagram', 'option') ): ?>
    <a class="icon instagram" href="<?php echo get_field( 'instagram', 'option' ) ?>" title="Follow us on Instagram"></a>
    <?php endif; ?>
    <?php if( get_field('youtube', 'option') ): ?>
    <a class="icon youtube" href="<?php echo get_field( 'youtube', 'option' ) ?>" title="Follow us on YouTube"></a>
    <?php endif; ?>
    <?php if( get_field('linkedin', 'option') ): ?>
    <a class="icon linkedin" href="<?php echo get_field( 'linkedin', 'option' ) ?>" title="Find us on Linkedin"></a>
    <?php endif; ?>
</div>

当我想在主题的页脚中显示社交图标时,简码工作正常,但是当我尝试将其放入正文中时(例如:联系人页面),它们在页面的左上角显示为绝对。参见屏幕截图:https://share.getcloudapp.com/8LuJkODx

我不知道为什么会这样-get_template_part()我在做错什么吗?

php wordpress shortcode
1个回答
1
投票

啊..我明白了问题所在。您需要return值,而不是echo

function social_icons_shortcode() {
    $social_icons = get_template_part( 'includes/social_icons' );
    return $social_icons; 
}
add_shortcode('social-icons', 'social_icons_shortcode');

由于get_template_part()的工作方式可能会发生的另一件事,您可能需要使用ob_buffer

function social_icons_shortcode() {
      ob_start();
      get_template_part( 'includes/social_icons' );
      return ob_get_clean(); 
}
add_shortcode('social-icons', 'social_icons_shortcode');
© www.soinside.com 2019 - 2024. All rights reserved.