get_the_category_list()
タグにスタイルを付ける必要がありますが、方法を見つけることができないようです。
これは私のコードです:
echo '<ul class="list-inline meta-list">';
// Get the categories
$terms = get_the_terms( get_the_ID(), 'category');
if( !empty($terms) ) {
$term = array_pop($terms);
$category_color = get_field('category_color', $term );
}
$category_list = get_the_category_list( ' ' );
if ( $category_list ) {
echo '<li class="meta-categories">' . __( 'In ', 'my_theme' ) . $category_list . ' </li>';
}
echo '</ul>';
今度はstyle="color:$category_color;"
をget_the_category_list()
に追加して、single.php
テンプレートですべてのカテゴリが異なる色になるようにする必要があります。
get_the_category_list()
には、あなたが望むものを実現するためのフィルタは実際にはありません。アンカータグを変更するには、現在preg_replace()
のようなPHPが必要になります。大きな問題は、現在のリンクの目的語を取得することです。私の考えでは、それは非常に面倒な手続きになります。
しかし、あなたは同じことを達成するためにあなた自身の関数を書くことができます
function wpse_219554_term_list()
{
$post = get_post();
$separator = ' ';
$output = [];
$post_categories = get_the_category( $post->ID );
if ( $post_categories ) {
foreach( $post_categories as $post_category ) {
$category_color = get_field( 'category_color', $post_category );
$output[] = '<li class="meta-category">
<a style="color:' . $category_color . ';" href="' . esc_url( get_category_link( $post_category ) ) . '" alt="' . esc_attr( sprintf( __( 'View all posts in %s', 'mytheme' ), $post_category->name ) ) . '">
' . esc_html( $post_category->name ) . '
</a>
</li>';
}
if ( $output )
echo implode( $separator, $output );
}
}
get_the_category_link()
のソースコードはかなり面倒で繰り返しが多いので、私は可能なクリーンアップとコードのミクロな最適化のためのtracチケットを提出しました。
また、カテゴリに応じてカテゴリリンクを個別にフィルタ処理するために使用できる新しいフィルタthe_category_list_links
を提案しました。これがコアに受け入れられた場合、OPのニーズに従ってリンクをフィルタリングするためにフィルタを使用することができます。
add_filter( 'the_category_list_links', function ( $the_link_list, $category, $cat_parents )
{
$category_color = get_field( 'category_color', $category );
if ( !$category_color )
return $the_link_list;
$the_link_list = str_replace( '<a', '<a style="color:' . $category_color . '"', $the_link_list );
return $the_link_list;
}, 10, 3 );
あなたは現在の tracチケット#36171 を読んでそれに貢献することができます、そして、私たちが次のメジャーリリースにこれを入れることができるように変更を提案してください。