web-dev-qa-db-ja.com

Get_the_category_listにインラインスタイルを追加

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テンプレートですべてのカテゴリが異なる色になるようにする必要があります。

1
Madeirense

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 );
    }
}

2016年3月8日編集

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 を読んでそれに貢献することができます、そして、私たちが次のメジャーリリースにこれを入れることができるように変更を提案してください。

4
Pieter Goosen