web-dev-qa-db-fra.com

Rediriger les archives de première catégorie vers les pages normales

Je cherche un moyen de rediriger uniquement la page d'archive de première catégorie vers une page normale que j'ai créée.

J'utilise ce code mais cela redirige toutes les pages de l'archive des catégories. Je veux seulement que la première page de l'archive des catégories soit redirigée.

function my_page_template_redirect()
{
    if ( is_category( 'news-articles' ) ) {
        $url = site_url( '/news' );
        wp_safe_redirect( $url, 301 );
        exit();
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );
1
Joanna Mikalai

Si vous souhaitez que les pages paginées ne soient pas redirigées, vous pouvez vérifier la fonction is_paged() boolean. Il retournera true si vous êtes sur une page d'archive supérieure à la page 1 (la première page de l'archive). Donc, si elle renvoie false, cela signifie que nous sommes sur la page à rediriger.

function my_page_template_redirect(){
    $category_array = array(
        'news-articles',
        'category-2',
        'category-3',
           //...
        'category-8'
    );

    if( is_category( $category_array ) && !is_paged() ){
        $url = site_url( '/news' );
        wp_safe_redirect( $url, 301 );
        exit();
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );

Vous pouvez également vérifier la valeur de pagination actuelle avec get_query_var() , qui ressemblerait à ceci:

function my_page_template_redirect(){
    if( is_category( 'news-articles' ) && get_query_var( 'paged' ) == 0 ){
        $url = site_url( '/news' );
        wp_safe_redirect( $url, 301 );
        exit();
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );

Si l'URL de votre choix est différente pour chaque catégorie et que vous ne pouvez pas obtenir l'URL du nom de la catégorie, il se peut que quelque chose comme ce qui suit fonctionne pour vous sans trop de charge:

function my_page_template_redirect(){
    $category_array = array(
        'news-articles'  => '/news',
        'category-2'     => '/cat-2',
        'third-category' => '/third_category',
          //...
        'NumberEight'    => '/Eight'
    );

    foreach( $category_array as $category => $url ){
        if( is_category( $category ) && !is_paged() ){
            $url = site_url( $url );

            wp_safe_redirect( $url, 301 );
            exit();
        }
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );
1
Xhynk