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;
}
}
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' );
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;
}
function template_category_template_redirect()
{
if( is_category())
{
wp_redirect( site_url() );
die;
}
}
add_action( 'template_redirect','template_category_template_redirect' );