web-dev-qa-db-fra.com

Comment ajouter un attribut contenant leurs catégories?

J'ai ajouté des catégories aux images afin de pouvoir les utiliser pour filtrer les images d'une page de portefeuille. Maintenant, je pense avoir besoin d'ajouter l'attribut rel à chaque image contenant les catégories qui lui sont attribuées. Est-ce la bonne approche? Si oui, comment puis-je ajouter add rel avec les catégories applicables?

1
heytricia

Cela devrait fonctionner pour l'attribut 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 );

où nous utilisons le filtre get_image_tag pour modifier l’image HTML insérée.

Ps : Je viens de le tester avec succès sur mon installation WordPress 3.9.2, où j'ai utilisé le fragment de code suivant:

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

activer les catégories pour les pièces jointes .

2
birgire

J'ai fini par modifier légèrement pour utiliser data-filter au lieu de rel. Fonctionne parfaitement et est conforme aux normes.

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