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).
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)