web-dev-qa-db-ja.com

特定の投稿カテゴリに機能を制限する

カスタムdivに画像をラップする機能があります。

それはfunctions.phpに置かれ、すべての投稿を修正します。特定のカテゴリの投稿にのみを適用する方法があるかどうかを知りたいのですが。

これが関数です:

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

更新:

Robert Hueの方法はこの関数ではうまくいきませんでしたが、次の関数でうまくいきました。

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

コンテンツを変更するには、カテゴリの投稿を確認してください。 in_categoryチェックでは、カテゴリID(整数)、名前、スラッグ(文字列)、またはこれらの配列を指定します。

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

カテゴリスラッグblog-postにはin_category( 'blog-post' )を使用できます。

1つ以上のカテゴリを使いたい場合は、次のようにします。

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

それはID、名前、そしてスラッグの組み合わせです。 SOあなたがそれを使うことができる方法はあなた次第です。

EDIT

あなたがこの外側のループを使っているなら、これを試してください。

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