我正在使用下面的PHP代码根据应用于我的WordPress帖子的自定义分类法显示CSS类。我的分类法称为CC,它的三个选项是x,y和z。对于包含所有三个的帖子:
$cc_terms = get_the_terms($post->ID,'cc');
foreach ($cc_terms as $term) {
echo ' '.$term->slug.'-active';
}
输出:x-active y-active z-active
我正在尝试将其转换为WordPress短代码函数(其中echo
在我知道的情况下不起作用)并且基本上我需要弄清楚如何将cc_class()
捕获为一个变量(不是一个数组)所以它给我与上面相同的输出。
function cc_meta($atts, $content = null) {
global $post;
extract(shortcode_atts(array('class' => 'default'), $atts));
function cc_class() {
$cc_terms = get_the_terms($post->ID, 'cc');
foreach($cc_terms as $term) {
return ' '.$term->slug.'-active';
}
}
return '<div class="' . esc_attr($class) . cc_class() . '">...</div>';
}
输出:<div class="default x-active">...</div>
这只是第一个而不是全部三个,这让我想知道return
在foreach
循环中是如何工作的。知道我怎么能让这个工作吗?
所需的输出:<div class="default x-active y-active z-active">...</div>
更新1 :我按照建议尝试了.=
,我收到一个空白错误:
function cc_meta( $atts, $content = null ) {
global $post;
extract(shortcode_atts(array('class' => 'default'), $atts));
$cc_terms = get_the_terms($post->ID, 'cc');
foreach ($cc_terms as $term) {
$return .= ' '.$term->slug.'-active';
}
return '<div class="' . esc_attr($class) . $return . '">...</div>';
}
更新2 :我删除了global $post
行,它很有用!谢谢大家=)
function cc_meta($atts, $content = null) {
extract(shortcode_atts(array('class' => 'default'), $atts));
$cc_terms = get_the_terms($post->ID, 'cc');
foreach($cc_terms as $term) {
$return .= ' '.$term->slug.'-active';
}
return '<div class="' . esc_attr($class) . $return . '">...</div>';
}
答案 0 :(得分:5)
不要在功能中间返回,只在最后使用return。
而不是return
使用此:
$return .=
并在结束}
之前执行return $return;