wake-up-neo.com

Leitet die Archivseite der ersten Kategorie auf die normale Seite um

Ich suche nach einer Möglichkeit, nur die erste Kategoriearchivseite auf eine normale Seite umzuleiten, die ich erstellt habe.

Ich verwende diesen Code, der jedoch alle Seiten des Kategoriearchivs umleitet. Ich möchte nur, dass die erste Seite des Kategoriearchivs umgeleitet wird.

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

Wenn Sie möchten, dass paginierte Seiten nicht umgeleitet werden, können Sie den is_paged() boolean überprüfen. Es wird true zurückgegeben, wenn Sie sich auf einer Archivseite befinden, die größer ist als Seite 1 (die erste Seite des Archivs). Wenn also false zurückgegeben wird, befinden wir uns auf der Seite, die umgeleitet werden soll.

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' );

Alternativ können Sie den aktuellen ausgelagerten Wert mit get_query_var() überprüfen. Dies würde folgendermaßen aussehen:

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' );

Wenn Ihre gewünschte URL für jede Kategorie unterschiedlich ist und Sie die URL nicht aus dem Kategorienamen abrufen können, funktioniert so etwas möglicherweise für Ihre Anforderungen, ohne dass zu viel Aufwand entsteht:

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