¨Þ°ìU@Pað+ ]yµÞ°ìUð+@a, ]³ÞÞ°ìU,` ¹þÆÞ°ìUap tËÞ°ìU, <‹£Þ°ìUp,C íÞ°ìUpà +¤ãÞ°ìU.Ù° `  pþÆÞ°ìU `P t=ñÞ°ìU d?§Þ°ìUpp`0,!  ^³ÞÞ°ìU0,` ¹ËÌÞ°ìUE <ƒ¢Þ°ìUp ™*êÞ°ìU@ùÿÿ *åÚÞ°ìUà* ¯Þ°ìU˜˜ ËÀ_P,8  [²¼Þ°ìUP,°_`,Q  ”¾Þ°ìU`,p, Þ½Þ°ìUp, p, /¯Þ°ìU˜˜ Ë`_€,h  [²¼Þ°ìU€,P_,  ”¾Þ°ìU, , ƽްìU ,p, 4Þ½Þ°ìUp,€p, /c®Þ°ìUÐãÔ°à^°,™  ”¾Þ°ìU°,À, ƽްìUÀ,p, 4†òÞ°ìUp,  +o§Þ°ìUPp^Ð,°  R¿ÆÞ°ìU â¼Þ°ìUÐ,@^à, 5Ç£Þ°ìUðà,P [¦Þ°ìU`^-$ s¾Þ°ìU--$ ê½Þ°ìU-€-$ .4¨Þ°ìU`À] -$ QN½Þ°ìU -°]0-$ ƽްìU0--$ 4†òÞ°ìU-À$ +ÉÞ°ìUpp]È % =ÉÞ°ìU``]Ð % =4¨Þ°ìU`P]P-% Q¼ÚÞ°ìUP-P% ALêÞ°ìU`-% ÂÞ°ìU]`-p-% ¼ÚÞ°ìUp-P% AËÞ°ìU€-% <ߦްìU``\U% ´³°ìU€-% ‰ÉÞ°ìU`p\Ø & =ÉÞ°ìUp`\à & =åÇÞ°ìUP\P& AÉÞ°ìUp@\è & =åÇÞ°ìU0\P& A4¨Þ°ìU` \-& Q¼ÚÞ°ìU-`& ALêÞ°ìU -& ¶Þ°ìU -`& uLêÞ°ìU°-& ¶Þ°ìU°-P& uLêÞ°ìUÀ-& ‹£Þ°ìU€À-^& T©Þ°ìU€àà-' M!¶Þ°ìUà-À' NmìÞ°ìUðZð-( †òÞ°ìUð-`( +ÍÆÞ°ìUÀZ.( *êÞ°ìU@( *ÍÆÞ°ìUZ.( Ç£Þ°ìU .b( ÉÞ°ìU``Zð ) =´©Þ°ìUP) uLêÞ°ìU@.) ¡Þ°ìU`  .) T ²Þ°ìU .x?Êd) ´³°ìU@.) ‰*êÞ°ìU`þÿÿ' *åÚÞ°ìUà-' ÉÞ°ìUp€Yø + =åÇÞ°ìUpYP+ A´©Þ°ìU€`+ uLêÞ°ìU`.+ ߦްìU`ðXf+ ´³°ìU`.+ ‰[¦Þ°ìU`àXp.. s¾Þ°ìUp.€.. †òÞ°ìU€.à. +ÉÞ°ìUpX / =åÇÞ°ìU€XP/ AÉÞ°ìUppX / =åÇÞ°ìU`XP/ AÉÞ°ìU`PX / =4¨Þ°ìU`@X./ Qõ¹Þ°ìU. ./ 3¼ÚÞ°ìU .P/ ALêÞ°ìU°./ ¶Þ°ìU°.`/ uLêÞ°ìUÀ./ ¶Þ°ìUÀ.`/ uLêÞ°ìUÐ./ ‹£Þ°ìU°Ð.o/ «®Þ°ìU@W/0 6o§Þ°ìUPWð. 0 R¹Þ°ìU/ð./0 7q¹Þ°ìU/ðV/0 7]¸Þ°ìU/°/0 7e¹Þ°ìU/ÀV/0 8w¥Þ°ìU°/u0 *êÞ°ìU 0 *[¦Þ°ìU`pVP/1 s¾Þ°ìUP/`/1 †òÞ°ìU`/À1 +ÉÞ°ìUp V0 2 =åÇÞ°ìUVP2 AÉÞ°ìUpV8 2 =åÇÞ°ìUðUP2 AÉÞ°ìU`àU@ 2 =4¨Þ°ìU`ÐUp/2 Qõ¹Þ°ìUp/€/2 3¼ÚÞ°ìU€/P2 ALêÞ°ìU/2 ¶Þ°ìU/`2 uLêÞ°ìU /2 ¶Þ°ìU /`2 uLêÞ°ìU°/2 ‹£Þ°ìUÀ°/}2 «®Þ°ìUÐTð/3 6static function alter_search_query_in( $wp_query ) { // Don't exclude pages in wp-admin. if ( $wp_query->is_search ) { // Only interact with an actual Search Query. if ( ! isset( $wp_query->query['s'] ) ) return; if ( static::is_query_adjustment_blocked( $wp_query ) ) return; $excluded = Exclusion::get_excluded_ids_from_cache()['search']; if ( ! $excluded ) return; $post__not_in = $wp_query->get( 'post__not_in' ); if ( ! empty( $post__not_in ) ) { $excluded = array_unique( array_merge( (array) $post__not_in, $excluded ) ); } $wp_query->set( 'post__not_in', $excluded ); } } /** * Determines whether the archive query adjustment is blocked. * * We do NOT treat this feature with security: If a post still slips through * a query, then so be it. The post may be accessed anyway, otherwise, * if not redirected. This last part is of concern, however, because one * might think the contents of a post is hidden thanks to the redirect, for it * to be exposable via other means. Nevertheless, we never (and won't ever) * redirect REST queries, which may access post content regardless of user settings. * * Perhaps, we should add a disclaimer: Even IF you redirect the post, noindex it, * exclude it from search and archive queries, the post content may still be readable * to the public. * * @since 2.9.4 * @since 3.1.0 Now checks for the post type. * @since 4.1.4 1. Renamed from `is_archive_query_adjustment_blocked()` * 2. Added taxonomy-supported lookups. * 3. Added WP Rest checks for the Block Editor. * @since 4.2.0 Improved supported taxonomy loop. * @since 4.2.6 Added check for `did_action( 'wp_loaded' )` early, before queries are tested and cached. * @since 4.2.7 No longer affects the sitemap query. * @since 5.0.0 Moved from `\The_SEO_Framework\Load`. * * @param \WP_Query $wp_query WP_Query object. * @return bool */ private static function is_query_adjustment_blocked( $wp_query ) { static $has_filter; $has_filter ??= \has_filter( 'the_seo_framework_do_adjust_archive_query' ); /** * This filter affects both 'search-"archives"' and terms/taxonomies. * * @since 2.9.4 * @param bool $do True is unblocked (do adjustment), false is blocked (don't do adjustment). * @param \WP_Query $wp_query The current query. */ if ( $has_filter && ! \apply_filters( 'the_seo_framework_do_adjust_archive_query', true, $wp_query ) ) return true; if ( ! \did_action( 'wp_loaded' ) ) return true; // TODO WP 6.5+ https://core.trac.wordpress.org/ticket/42061: wp_is_serving_rest_request() if ( \defined( 'REST_REQUEST' ) && \REST_REQUEST ) { $referer = \wp_get_referer(); if ( str_contains( $referer, 'post.php' ) || str_contains( $referer, 'post-new.php' ) ) { /** * WordPress should've authenthicated the user at * WP_REST_Server::check_authentication() -> rest_cookie_check_errors() -> wp_nonce etc. * before executing the query. For REST_REQUEST can not be true otherwise. Ergo, * \current_user_can() should work. If it returns true, we can trust it's a safe request. * If it returns false, the user may still be logged in, but the request isn't sent via * WordPress's API with the proper nonces supplied. This is as perfect as it can be. */ if ( \current_user_can( 'edit_posts' ) ) return true; } } // If doing sitemap, don't adjust query via query settings. if ( Helper\Query::is_sitemap() ) return true; // This should primarily affect 'terms'. Test if TSF is blocked from supporting said terms. if ( ! empty( $wp_query->tax_query->queries ) ) { $supported = true; foreach ( $wp_query->tax_query->queries as $_query ) { if ( isset( $_query['taxonomy'] ) ) { $supported = Helper\Taxonomy::is_supported( $_query['taxonomy'] ); // If just one tax is supported for this query, greenlight it: all must be blocking. if ( $supported ) break; } } if ( ! $supported ) return true; } return false; } }