WordPress

błędy – is_embed i is_search wywoływane niepoprawnie przez filtr wp_robots

  • 19 czerwca, 2024
  • 3 min read
błędy – is_embed i is_search wywoływane niepoprawnie przez filtr wp_robots


Od dłuższego czasu otrzymuję poniższe błędy, ale nie udało mi się znaleźć przyczyny.

Notice: Function is_embed was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.0.) in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 6077

Notice: Function is_search was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.0.) in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 6077

Wiem, że oba wynikają z tego, że $wp_query nie zostało ustawione przed wywołaniem funkcji. Jednak nie mogę wyśledzić, co je wywołuje.

Błąd is_embed jest wywoływany przez _doing_it_wrong funkcja w query.php Jeśli umieściłem debug_print_backtrace() do query.php tuż wcześniej _doing_it_wrong nazywa się, otrzymuję następujący komunikat:

#0 C:\xampp\htdocs\wordpress\wp-includes\robots-template.php(93): is_embed()
#1 C:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(324): wp_robots_noindex_embeds(Array) 
#2 C:\xampp\htdocs\wordpress\wp-includes\plugin.php(205): WP_Hook->apply_filters(Array, Array) 
#3 C:\xampp\htdocs\wordpress\wp-includes\robots-template.php(32): apply_filters('wp_robots', Array) 
#4 C:\xampp\htdocs\wordpress\wp-includes\functions.php(3863): wp_robots() 
#5 C:\xampp\htdocs\wordpress\wp-includes\functions.php(3785): _default_wp_die_handler(...)

I podobnie dla is_search:

#0 C:\xampp\htdocs\wordpress\wp-includes\robots-template.php(119): is_search() 
#1 C:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(324): wp_robots_noindex_search(Array) 
#2 C:\xampp\htdocs\wordpress\wp-includes\plugin.php(205): WP_Hook->apply_filters(Array, Array) 
#3 C:\xampp\htdocs\wordpress\wp-includes\robots-template.php(32): apply_filters('wp_robots', Array) 
#4 C:\xampp\htdocs\wordpress\wp-includes\functions.php(3863): wp_robots() 
#5 C:\xampp\htdocs\wordpress\wp-includes\functions.php(3785): _default_wp_die_handler(...)

Znika, gdy skomentuję następujące wiersze default-filters.php:

add_filter( 'wp_robots', 'wp_robots_noindex_embeds' );
add_filter( 'wp_robots', 'wp_robots_noindex_search' );

Co dziwne, ten błąd występuje nawet niezależnie od tego, które wtyczki są aktywne, ale udało mi się go odtworzyć tylko wtedy, gdy wtyczka najpierw rzuciła wyjątek (np. throw new \Exception('test'); do „Hello Dolly” (jest to jedyna aktywna wtyczka).

Warto przeczytać!  Bezpieczeństwo motywu WordPress WooCommerce dla Twojego sklepu internetowego

Czy to błąd w WordPress Core?

Aktualizacja: Dzieje się tak również niezależnie od tego, który motyw jest aktywny. Nie udało mi się tego odtworzyć, uruchamiając wyjątek przez motyw, tylko wtyczkę.

Powiązane posty: Pojawianie się błędu PHP is_embed (nierozwiązany)


Źródło