WordPress – wymuszanie strony bez 404
Czasem bywa tak, że potrzebna jest w WordPressie mała zmiana w działaniu komunikatu o braku strony. Domyślnie WordPress po wykonaniu głównego zapytania odsyła nagłówek z kodem 404 i pokazuje szablon 404.php, ale można to ominąć i wymusić pokazanie jakiejś podstrony pomimo tego, że według WordPressa jest jakiś problem. Tak jest np. w przypadku niepowiązanego bbpressa i tagów z tematów. Nie wszystkie tagi będą miały odpowiedniki w postach, a przenoszenie powiązań i słów może być dość kłopotliwe.
Potrzebna będzie dodatkowa funkcja wpięta w functions.php:
add_filter('template_redirect', 'my_404_override' ); function my_404_override() { }
Wewnątrz tej funkcji dodajemy warunek jaki musi być spełniony do obejścia domyślnego błędu 404. W przypadku tagów będzie to:
if( !empty($wp_query->query_vars['tag']) && ($wp_query->is_404 == true) ) {
a następnie zaczynamy czarować:
status_header( 200 ); // nie ma błędu, wszystko jest ok $klasa = new StdClass() ; [...] $klasa->term_taxonomy = "post_tag" ; $wp_query->is_404=false; // nie było 404 $wp_query->is_tag=true; // jest tag w zapytaniu $wp_query->queried_object = $klasa ; // obiekt używany do opisania danych, na których ma działać WordPress
W $klasa może być potrzebne ustawienie term_id, name, slug, term_taxonomy_id i count.
Po tych zmianach WordPress powinien zacząć pokazywać stronę tagu bez większych problemów.
Dodaj komentarz