Redirecționări bazate pe dată pentru postări care nu mai există

31 ian. 2011, 19:37:14
Vizualizări: 337
Voturi: 0

Doresc o modalitate mai elegantă de a exprima următoarea redirecționare:

RewriteCond %{REQUEST_URI} ^/blog/2008/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/01/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/02/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/03/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/04/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/05/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/06(.*) [NC]
RewriteRule . http://example.com/blog/? [R=301,L]

În mod ideal, aș dori să folosesc wp_safe_redirect sau wp_redirect. Problema este că acele pagini au fost deja șterse din WordPress.

Este posibil să fac acest lucru intern, dacă postările au fost șterse complet din baza de date?

0
Toate răspunsurile la întrebare 1
1

Nu este o problemă că postările au dispărut deja, vom interveni înainte ca WordPress să interogheze baza de date. Mai întâi, stabilim regulile noastre de rescriere, care vor seta o variabilă specială de interogare (pe care trebuie să o declarăm publică), apoi, în acțiunea parse_request, verificăm acea variabilă și redirecționăm dacă este setată.

add_action( 'init', 'wpse8236_init' );
function wpse8236_init()
{
    // Aceasta este sensibilă la majuscule, nu putem seta flag-uri regex
    // Înlocuiește `blog` cu `[Bb][Ll][Oo][Gg]` pentru a o face insensibilă la majuscule
    add_rewrite_rule( 'blog/2008/', 'index.php?wpse8236_redirect=true', 'top' );
    add_rewrite_rule( 'blog/2009/0[1-6]/', 'index.php?wpse8236_redirect=true', 'top' );
}

add_action( 'query_vars', 'wpse8236_query_vars' );
function wpse8236_query_vars( $query_vars )
{
    $query_vars[] = 'wpse8236_redirect';
    return $query_vars;
}

add_action( 'parse_request', 'wpse8236_parse_request' );
function wpse8236_parse_request( &$wp )
{
    if ( array_key_exists( 'wpse8236_redirect', $wp->query_vars ) ) {
        wp_redirect( '/blog/' );
        exit();
    }
9 feb. 2011 14:17:30
Comentarii

Super! Nu m-am gândit să fac așa. Foarte tare!

Dan Gayle Dan Gayle
10 feb. 2011 21:38:21