web-dev-qa-db-fra.com

Limiter la fonction à une catégorie de poste spécifique

J'ai une fonction qui enveloppe les images dans un div personnalisé.

Il est placé dans functions.php et modifie tous les articles. J'aimerais savoir s'il existe un moyen uniquement de l'appliquer à des publications d'une certaine catégorie.

Voici la fonction:

function my_image_tag($html, $id , $alt, $title) {
    $html = "<div class='my-class'>" . $html . "</div>";
    return $html;
}

add_filter('get_image_tag','my_image_tag',10,4);

Mettre à jour:

La méthode de Robert Hue ne fonctionnait pas avec cette fonction, mais avec la fonction suivante, qui me semble meilleure (du moins pour mon utilisation):

function wrapImagesInDiv($content) {
    if ( in_category( 'prosjekter' ) ) {
        $pattern = '/(<img[^>]*class=\"([^>]*?)\"[^>]*>)/i';
        $replacement = '<div class="image-container $2">$1</div>';
        $content = preg_replace($pattern, $replacement, $content);
    }
    return $content;
}
add_filter('the_content', 'wrapImagesInDiv');
2
Garland Briggs

Vous devriez vérifier les publications de la catégorie pour modifier le contenu. Spécifiez l'ID de la catégorie (entier), le nom ou le slug (chaîne), ou un tableau de ceux-ci dans la vérification in_category.

function my_image_tag( $html, $id , $alt, $title ) {
    if ( in_category( '1' ) ) {
        $html = "<div class='my-class'>" . $html . "</div>";
    }
    return $html;
}

add_filter( 'get_image_tag', 'my_image_tag', 10 ,4 );

Pour la catégorie slug blog-post, vous pouvez utiliser in_category( 'blog-post' )

Si vous voulez utiliser plus d'une catégorie, vous pouvez faire quelque chose comme.

in_category( array( '15', 'Tropical Birds', 'small-mammals' ) )

C'est une combinaison d'identifiant, de nom et de slug. SO c'est à vous de choisir comment vous en servir.

EDIT

Si vous utilisez cette boucle extérieure, essayez ceci.

function my_image_tag( $html, $id , $alt, $title ) {
    global $post;
    if ( in_category( '1' ) ) {
        $html = "<div class='my-class'>" . $html . "</div>";
    }
    return $html;
}
add_filter( 'get_image_tag', 'my_image_tag', 10 ,4 );
2
Robert hue