我为wordpress插件shortcode
制作了以下内容,return
工作正常,但echo/print
似乎不起作用。文件中的任何其他位置都没有echo/print
,所以我猜它是禁用的,或者其他东西,如果可能的话。
因此,如果不使用echo/print
,我如何使用if
而不是return
将以下内容压缩为一个echo/print
语句。数组$subjecttitle
中有20个主题,因此更优雅的解决方案会更好。
function subjecttitle_func( $atts ){
$subjecttitle = get_field('gcse_subjects');
if (!empty($subjecttitle[0])) {
echo '<h2>' . $subjecttitle[0] .'</h2>'.'<hr></hr>';
} else {
return "";
}
if (!empty($subjecttitle[1])) {
echo '<h2>' . $subjecttitle[1] .'</h2>'.'<hr></hr>';
} else {
return "";
}
}
add_shortcode( 'subjecttitle', 'subjecttitle_func' );
答案 0 :(得分:0)
如何使用implode
例如
echo '<h2>' . implode(' - ',$subjecttitle) .'</h2><hr></hr>';
这将导致单个h2-tag一次显示所有主题标题(以 - 分隔) 或
echo '<h2>' . implode('</h2><hr></hr><h2>',$subjecttitle) .'</h2><hr></hr>';
如果你想为每个sibjecttitle提供一个自己的h2标签
答案 1 :(得分:0)
据我所知,在运行the_content()之前处理短代码(通常是你的短代码通过cms放置的地方),所以如果你从那里回复它们可能会出现在奇怪的地方。如果您在浏览器中搜索源代码以查找回显的内容,那么它可能会在某处。
返回输出是正确的方法,你可能想做类似的事情:
/**
* Create and return the subject title string
*/
function subjecttitle_func( $atts ){
$subjecttitle = get_field('gcse_subjects');
$output = '';
foreach ($subjecttitle as $title) {
if ( strlen($title) > 0 ) {
$output .= '<h2>' . $title .'</h2>'.'<hr />';
}
}
return $output;
}
/**
* Add the subject title shortcode
*/
add_shortcode( 'subjecttitle', 'subjecttitle_func' );