Wordpress功能不输出所有列表项

时间:2017-02-17 19:20:50

标签: wordpress

我将此功能连接到一个短代码,该代码应该返回所有存储的社交个人资料。现在它只输出第一个社交档案,即使它还有两个。 我认为此代码返回输出的方式有问题 ,我只是不知道如何解决它。

function ichi_social_profiles() {

  if( $social_profiles = Youxi()->option->get( 'social_profiles' ) ):

    ?><div class="site-social-profiles">

      <ul class="plain-list"><?php

        foreach( $social_profiles as $profile ):

          $profile = wp_parse_args( $profile, array(
            'title'   => '', 
            'url'     => '#', 
            'icon'    => 'socicon socicon-500px', 
            'new_tab' => 0
          ) );

          $output = '<li>';

            $output .= '<a href="' . esc_url( $profile['url'] ) . '" title="' . esc_attr( $profile['title'] ) . '"' . ( wp_validate_boolean( $profile['new_tab'] ) ? ' target="_blank"' : '' ) . '>';

              $output .= '<span class="' . esc_attr( $profile['icon'] ) . '"></span>';

            $output .= '</a>';

          $output .= '</li>';


          return $output;

        endforeach;

      ?></ul>

    </div><?php endif;

}
add_shortcode('some-ikon', 'ichi_social_profiles');

2 个答案:

答案 0 :(得分:1)

return语句在foreach循环内部太早,并且只返回$ output的内容。此外,div标记,ul标记和HTML的其余部分正在页面上回显,而不是由函数返回。

我会在$output = ''语句之前的函数开头设置if,并在你去的时候将HTML附加到它,然后在{{1}之后返回结尾的$ output }。

WordPress Codex有一些例子也可能有所帮助,尽管有些例子要复杂得多: https://codex.wordpress.org/Shortcode_API

答案 1 :(得分:0)

<强>解

我在任何回音调用之前将ob_start()添加到函数的开头。

在我添加的功能结束时:

$response = ob_get_contents();
ob_end_clean();
return $response;