web-dev-qa-db-ja.com

カスタム投稿タイプとbody_class: "blog"クラスを削除

私はbody_class();を使ってワードプレスサイトのさまざまなセクションをそのボディクラスでスタイルしています。ページスタイルは.page-templateから派生し、ブログスタイルは.single-postおよび/または.blogなどから派生します。

私はサイトの商品セクションのためにカスタム投稿タイプ "Products"を作成し、そのボディクラスを使用してこのセクションを特別にスタイルしたいのですが、残念ながらbody_class();はカスタム投稿タイプの単一ページにクラス.blogを与えます。ブログスタイルの多くを商品スタイルよりも優先させることは、非常にイライラすることです。

私のカスタム投稿タイプの単一ページ用に "blog"クラスを削除する方法はありますか?

ありがとうございます。

1
j-man86

body_classフィルタを使用して、あなたがあなたのカスタム投稿タイプに属しているかどうかをチェックすることができます。そうであれば、このようにblogクラスを削除するだけです。

 function remove_blog_from_cpt_classes($classes, $class){
    global $post;
    if ($post->post_type != "products"){
        return $classes;
    }else{
        foreach($classes as &$str){
            if(strpos($str, "blog") > -1){
                $str = "";
            }
        }
    }
    return $classes;
}
add_filter("body_class", "remove_blog_from_cpt_classes", 10, 2);

お役に立てれば

3
Bainternet