エントリ ヘッダーで Genesis ショートコード [post_categories] を使用するときに、条件付き div クラスを個々のカテゴリに追加する解決策を必死に見つけようとしています。
ホームページの記事や個々の投稿のエントリーヘッダーのカテゴリータイトルに独自の色を付けたいです。www.mic.com にはこの影響があります。「World」カテゴリの記事はカテゴリ テキストの色が 1 色であるのに対し、「News」カテゴリの記事はカテゴリ テキストが別の色で表示されていることがわかります。
たとえば、カテゴリが「インフラストラクチャ」の場合、既存のエントリ カテゴリ クラスをラップするクラスが必要です。
私はそれを次のようにしたい:
<div class="infrastructure section"><span class="entry-categories"></span></div>
カテゴリが「選挙」の場合、次のように表示します。
<div class="elections section"><span class="entry-categories"></span></div>
この効果を得るために編集する必要があるコードを以下に示します。
add_shortcode( 'post_categories', 'genesis_post_categories_shortcode' );
/**
* Produces the category links list.
*
* Supported shortcode attributes are:
* after (output after link, default is empty string),
* before (output before link, default is 'Tagged With: '),
* sep (separator string between tags, default is ', ').
*
* Output passes through 'genesis_post_categories_shortcode' filter before returning.
*
* @since 1.1.0
*
* @param array|string $atts Shortcode attributes. Empty string if no attributes.
* @return string Shortcode output
*/
function genesis_post_categories_shortcode( $atts ) {
$defaults = array(
'sep' => ', ',
'before' => __( 'Filed Under: ', 'genesis' ),
'after' => '',
);
$atts = shortcode_atts( $defaults, $atts, 'post_categories' );
$cats = get_the_category_list( trim( $atts['sep'] ) . ' ' );
if ( genesis_html5() )
$output = sprintf( '<span %s>', genesis_attr( 'entry-categories' ) ) . $atts['before'] . $cats . $atts['after'] . '</span>';
else
$output = '<span class="categories">' . $atts['before'] . $cats . $atts['after'] . '</span>';
return apply_filters( 'genesis_post_categories_shortcode', $output, $atts );
}
get_the_category_list 関数を使用して条件付きでクラス名を作成しようとしましたが、コマンドがアクションを完了していません。firebug でサイトを表示すると、新しいクラスでコマンドがテキストとして表示されます。
$cats = get_the_category_list( trim( $atts['sep'] ) . ' ' );
if ( genesis_html5() )
$output = sprintf( '<div class="<?php echo $cats[0]->cat_name; ?> section"><span %s>', genesis_attr( 'entry-categories' ) ) . $atts['before'] . $cats . $atts['after'] . '</span></div>';
この効果を達成する方法についてのアイデアはありますか?
本当にありがとう!