Reindirizzamenti basati sulla data per post non più esistenti

31 gen 2011, 19:37:14
Visualizzazioni: 337
Voti: 0

Vorrei un modo più elegante per esprimere il seguente reindirizzamento:

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]

Idealmente, vorrei usare wp_safe_redirect o wp_redirect. Il problema però è che quelle pagine sono già state eliminate da WordPress.

È possibile farlo internamente, se i post sono stati completamente rimossi dal database?

0
Tutte le risposte alla domanda 1
1

Non è un problema che i post siano già stati rimossi, interverremo in WordPress prima che esegua la query sul database. Prima impostiamo le nostre regole di riscrittura, che definiranno una variabile di query speciale (che dobbiamo dichiarare pubblica), e poi, nell'azione parse_request, controlliamo quella variabile e reindirizziamo se è impostata.

add_action( 'init', 'wpse8236_init' );
function wpse8236_init()
{
    // Questo è sensibile alle maiuscole, non possiamo impostare flag regex
    // Sostituisci `blog` con `[Bb][Ll][Oo][Gg]` per renderlo insensibile alle maiuscole
    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
Commenti

Fantastico! Non avevo pensato di farlo in quel modo. Molto interessante!

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