web-dev-qa-db-ja.com

ページIDごとに条件付きでフィルタを追加する

ボディにクラスを追加する関数を作成しましたが、単一のページIDにのみ適用されるべきです。これは通常問題にならないでしょうが、他のページのレイアウトを壊しています。

フィルタ機能

add_filter('body_class','add_blog_to_body_class');

function add_blog_to_body_class($classes) {
    $classes[] = 'blog';
        return $classes;
}

私の状態(それはうまくいきません)

function add_blog_to_body_class($classes) {
    $classes[] = 'blog';
    if ( is_page('ID') ) {
        return $classes;
    }
}

私は、関数全体、宣言、add_filterフック、およびすべてのものを運なしでラップしました。

この機能を単一のページIDに対してどのように機能させることができますか?

2
Jarmerson

フィルタコールバックでは 常に値を返す が重要です。それ以外の場合は__return_null()コールバックを追加するのと同じです。

これは、ID 40のページにのみblogクラスを追加する例です。

add_filter( 'body_class', 'add_blog_to_body_class' );

function add_blog_to_body_class( $classes )
{
    if ( is_page( 40 ) )
        $classes[] = 'blog';

    return $classes;
}
3
birgire