以下の PHP コードを使用して、WordPress 投稿に適用されたカスタム分類法に基づいて CSS クラスを表示しています。私の分類法は CC と呼ばれ、その 3 つのオプションは x、y、z です。3 つすべてを含む投稿の場合:
$cc_terms = get_the_terms($post->ID,'cc');
foreach ($cc_terms as $term) {
echo ' '.$term->slug.'-active';
}
出力: x アクティブ y アクティブ z アクティブ
私はそれをWordPressショートコード関数に変換しようとしています(echo
私が知る限り機能しません)。基本的にcc_class()
、1つの変数(配列ではなく)としてキャプチャする方法を理解する必要があります。その上。
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>
3 つすべてではなく、最初の項のみを使用しているため、ループでどのよう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>';
}