web-dev-qa-db-ja.com

カテゴリを含む画像にrel属性を追加する方法

カテゴリを画像に追加したので、それらを使用してポートフォリオページ内の画像をフィルタ処理できます。割り当てられたカテゴリを含む各画像にrel属性を追加する必要があると思います。これは正しいアプローチですか?もしそうなら、どのように私は適切なカテゴリーでadd relを追加しますか?

1
heytricia

これはrel属性に有効です。

/**
 * Create a rel attribute from the image categories
 *
 * @see http://wordpress.stackexchange.com/a/158024/26350
 */

add_filter( 'get_image_tag', 
    function( $html, $id )
    {
        $rel = array();

        foreach( (array) get_the_category( $id ) as $cat ) 
        { 
            $rel[] = $cat->slug; 
        }

        return str_ireplace( 
            '<img ', 
            sprintf( '<img rel="%s" ', join( ' ', $rel ) ),
            $html
        );
    }
, 10, 2 );

挿入された画像のHTMLを変更するためにget_image_tagフィルタを使用します。

Ps:私はこれをWordPress 3.9.2のインストールで正常にテストしました。次のコードスニペットを使用しました。

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

添付ファイルに対してカテゴリを有効にします。

2
birgire

私はrelの代わりにdata-filterを使うように少し修正しました。完璧に動作し、標準に準拠しています。

add_filter( 'get_image_tag', 
    function( $html, $id )
    {
        $dataFilter = array();

        foreach( (array) get_the_category( $id ) as $cat ) 
        { 
            $dataFilter[] = $cat->slug; 
        }

        return str_ireplace( 
            '<img ', 
            sprintf( '<img data-filter="%s" ', join( ' ', $dataFilter ) ),
            $html
        );
    }
, 10, 2 );
1
heytricia