cap->edit_posts ) ) { return true; } } return false; } /** * @param \WP_Query $query */ public function exclude_from_feeds_and_search( $query ) { if ( is_admin() || ! $query->is_main_query() || ! ( $query->is_feed() || $query->is_search() ) ) { return; } $private = self::get_post_types(); $requested = $query->get( 'post_type' ); if ( $query->is_feed() && $requested && array_intersect( (array) $requested, $private ) ) { // e.g. /feed/?post_type=academy_lessons — never list these. $query->set( 'post__in', array( 0 ) ); return; } if ( $query->is_search() ) { if ( empty( $requested ) || 'any' === $requested ) { $requested = get_post_types( array( 'exclude_from_search' => false ) ); } $allowed = array_values( array_diff( (array) $requested, $private ) ); $query->set( 'post_type', $allowed ? $allowed : array( 'post' ) ); } } public function block_direct_single() { if ( get_query_var( 'curriculum_type' ) ) { return; // Course curriculum URL: gated by the curriculum template. } $private = self::get_post_types(); if ( ! is_singular( $private ) ) { return; } if ( $this->user_can_edit_any( array( get_post_type() ) ) ) { return; } global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } }