web-dev-qa-db-ja.com

カテゴリに基づいて画像にクラスを追加する方法

1.)カテゴリをイメージに割り当て、2.)割り当てられたカテゴリに対応するすべてのイメージにクラスを追加します。

私は次のように画像にカテゴリを追加することができました:

function ug_add_categories_to_attachments() {
    register_taxonomy_for_object_type( 'category', 'attachment' );
}
add_action( 'init' , 'ug_add_categories_to_attachments' );

そして私はそのように画像にクラスを追加する関数を見つけました:

function add_image_class($class){
    $class .= ' additional-class';
    return $class;
}
add_filter('get_image_tag_class','add_image_class');

しかし、私はphpでそれをさらに進めるには不十分です。私はこれを試しました

function ug_add_image_class($class){
    foreach(get_the_category() as $cat) { $class .= ' category-'.$cat->slug; };
    return $class;
}
add_filter('get_image_tag_class','ug_add_image_class');

しかし、愛はありません...

助けて?アイデア?お願いします?そしてハッピーフライデー!

4
heytricia

うまくいけば、これでうまくいくはずです。

/**
 * Append the image categories to the current image class.
 *
 * @see http://wordpress.stackexchange.com/a/156576/26350
 */

add_filter( 'get_image_tag_class', 
    function( $class, $id, $align, $size )
    {
        foreach( (array) get_the_category( $id ) as $cat ) 
        { 
            $class .= ' category-' . $cat->slug; 
        }
        return $class;
    }
, 10, 4 );

テスト(WP 3.9.1):

画像カテゴリを(たとえば)に設定したとします。

rolling-stones, steel-wheels-tour, wembley

スクリーンショット:

image categories

それから投稿に画像を挿入すると、期待通りに追加のクラスが得られます。

category-rolling-stones category-steel-wheels-tour category-wembley

スクリーンショット:

html

4
birgire