web-dev-qa-db-fra.com

Meilleur moyen de rediriger une catégorie vers une page et de masquer une catégorie

J'ai une page d'archives de catégories sur: http://mysite.com/news

Il affiche une archive d'articles de la catégorie 'news-article'

Je souhaite rediriger les demandes de http://mysite.com/category/news-article vers http://mysite.com/news (afin que la première ne soit jamais directement accessible) .

Y a-t-il une meilleure pratique? Devrais-je mettre une redirection 301 dans mon fichier .htaccess (ou utiliser un plugin pour faire la même chose)?

Ou devrais-je utiliser wp_safe_redirect? Si oui, quel crochet d'action devrais-je utiliser? Un péché:

add_action( 'WHICH_ACTION_HOOK??', 'adam_redirect_news' );
function adam_redirect_news () {
    if ( is_category( 'news-article' ) ) {

        wp_safe_redirect( 'http://mysite.com/news' );
        exit;
    }
}
5
Pat Gilmour

Je ne sais pas pour une raison quelconque, le add_filter a provoqué une erreur. J'ai utilisé le suivant:

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' );
4
Zhang Buzz

Merci à @Layka ci-dessus, j'ai légèrement modifié le code et cela fait ce dont j'avais besoin.

Ce pourrait être n'importe quel filtre appelé à peu près au même moment - pas sûr.

/**
 * Redirect 'category/news-articles' category to 'News page' ( at http://www.example.com/news' )
 *
 */
add_filter('template_redirect', 'template_redirect_filter', 10, 3);
function template_redirect_filter( $url, $term, $taxonomy ) {

    if ( is_category( 'news-articles' ) ) {

        $url = site_url( '/news' );

        wp_safe_redirect( $url, 301 );

        exit;

    }

    return $url;

}
3
Pat Gilmour
function template_category_template_redirect()
{
    if( is_category())
    {
        wp_redirect( site_url() );
        die;
    }
}
add_action( 'template_redirect','template_category_template_redirect' );
0
priyank vadhvana