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