Prevenirea erorii 404 pe arhivele de date goale

2 iul. 2013, 14:36:56
Vizualizări: 2.71K
Voturi: 4

Pe o pagină de arhivă după dată, atunci când nu există postări (pentru acea dată), WordPress redirecționează către pagina 404.

Există o modalitate de a face WordPress să continue să utilizeze arhiva originală în loc de pagina 404? În acest fel pot folosi condiția if ( have_posts() ) pentru a afișa un mesaj "Nu s-au găsit postări".

0
Toate răspunsurile la întrebare 2
0

Puteți muta codul din răspunsul OP într-un filtru de șablon 404 și forța WP să încarce fișierul date.php în loc de 404.php. Va trimite în continuare antetul 404, dar va rand pagina cu un șablon diferit.

function wpd_date_404_template( $template = '' ){
    global $wp_query;
    if( isset($wp_query->query['year'])
        || isset($wp_query->query['monthnum'])
        || isset($wp_query->query['day']) ){
            $template = locate_template( 'date.php', false );
    }
    return $template;
}
add_filter( '404_template', 'wpd_date_404_template' );
23 apr. 2014 09:08:29
0

Bine, la o reconsiderare, nu sunt sigur dacă cer prea mult de la WordPress. Din punct de vedere SEO, chiar vreau ca paginile goale să returneze 404, cu siguranță nu vreau să fie indexate.

Am decis în schimb să folosesc șablonul 404 pentru a afișa mesajul "Nu s-au găsit articole", dar pentru că funcțiile is_date(), is_day() (etc.) nu vor funcționa pe pagina 404, am adăugat acest cod pentru a detecta dacă eroarea 404 a fost destinată să fie o arhivă dată.

Lipiți următoarele în 404.php pentru a detecta URL-ul:

global $wp_query;

$is_date_archive = ( isset($wp_query->query['year']) || isset($wp_query->query['monthnum']) || isset($wp_query->query['day']) );

Apoi pot folosi variabila $is_date_archive pentru a modifica șablonul 404 în consecință.

Exemplu (404.php)

global $wp_query;

$is_date_archive = ( isset($wp_query->query['year']) || isset($wp_query->query['monthnum']) || isset($wp_query->query['day']) );

if( $is_date_archive ){ echo 'Nu s-au găsit articole'; } else { echo 'pagină 404 generală'; }
2 iul. 2013 15:24:12