Na forum i grupach WP często pojawia się pytanie o to, jak sprawić, aby wpisy z wybranej kategorii nie pojawiały się na stronie głównej. Jak to zrobić poprawnie? Wbrew pozorom nie jest to wcale takie trudne – realizuje to poniższy fragment kodu:

function prefiks_exclude_category_from_homepage( $query ) {
    if ( !is_admin() && $query->is_main_query() && is_home() ) {
        $category_not_in = $query->get( 'category__not_in', array() );

        if ( is_scalar($category_not_in) ) {
            $category_not_in = array( $category_not_in );
        } elseif ( !is_array($category_not_in) ) {
            $category_not_in = array();
        }

        $category_not_in[] = 3;  // < - zmień 3 na ID kategorii, którą chcesz ukryć

        $query->set( 'category__not_in', $category_not_in );
    }
}
add_filter( 'pre_get_posts', 'prefiks_exclude_category_from_homepage' );

(więcej…)