Miglior Modo per Reindirizzare una Categoria a una Pagina e Nascondere la Categoria

9 set 2014, 04:45:28
Visualizzazioni: 33.6K
Voti: 7

Ho una pagina archivio categoria su: http://mysite.com/news

Mostra un archivio di elementi dalla categoria 'news-article'

Vorrei reindirizzare qualsiasi richiesta da http://mysite.com/category/news-article a http://mysite.com/news (in modo che il primo non sia mai direttamente accessibile).

Esiste una best practice? Dovrei inserire un Reindirizzamento 301 nel mio file .htaccess (o usare un plugin per fare lo stesso)?

Oppure dovrei usare wp_safe_redirect? Se sì, quale action hook dovrei usare? Come in:

add_action( 'WHICH_ACTION_HOOK??', 'adam_redirect_news' );
function adam_redirect_news () {
    // Se siamo nella categoria 'news-article'
    if ( is_category( 'news-article' ) ) {
        // Reindirizza alla pagina news
        wp_safe_redirect( 'http://mysite.com/news' );
        exit;
    }
}
0
Tutte le risposte alla domanda 4
0

Non so per qualche motivo, l'add_filter ha causato un errore. Ho usato il seguente:

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' );
17 mag 2017 08:43:07
2

Grazie a @Layka sopra, ho modificato leggermente il codice e questo fa esattamente quello di cui avevo bisogno.

Potrebbe essere qualsiasi filtro chiamato nello stesso momento - non sono sicuro.

/**
 * Reindirizza la categoria 'category/news-articles' alla 'Pagina News' ( su 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;

}
10 set 2014 03:23:11
Commenti

Penso che template_redirect sia il miglior hook in questo caso. Vedo situazioni in cui la tua soluzione potrebbe portare a un comportamento strano del sito... L'hook term_link non dovrebbe assolutamente essere usato per attivare reindirizzamenti URL.

Marek Marek
18 ago 2015 15:12:46

template_redirect è (IMO) il miglior hook per gestire un reindirizzamento. Di solito è l'ultimo hook prima che qualsiasi cosa venga inviata al browser, dopo il quale non potresti reindirizzare senza errore. Se agganci prima, potresti non avere accesso a tutte le informazioni necessarie per la logica (come il controllo delle categorie). Inoltre, è meglio attenersi alle azioni per il reindirizzamento, non ai filtri. I filtri sono pensati per restituire un valore al processo corrente. Le azioni sono per fare qualcosa (come un reindirizzamento).

butlerblog butlerblog
18 mar 2019 15:21:44
1
// Funzione per reindirizzare le richieste alle pagine di categoria alla home page
function template_category_template_redirect()
{
    // Verifica se la pagina corrente è una pagina di categoria
    if( is_category())
    {
        // Effettua il reindirizzamento alla home page del sito
        wp_redirect( site_url() );
        // Termina l'esecuzione dello script
        die;
    }
}
// Aggiunge l'azione al hook 'template_redirect' di WordPress
add_action( 'template_redirect','template_category_template_redirect' );
18 mar 2019 13:55:55
Commenti

Anche se posso vedere che questa è una risposta alla domanda, è utile (e spesso auspicabile) includere una spiegazione sul perché sia la risposta giusta/migliore.

butlerblog butlerblog
18 mar 2019 15:15:10
0

Un altro modo possibile è avere un template personalizzato nel tuo Child-Theme. Secondo la gerarchia dei template di WordPress il file deve essere chiamato category-news-article.php.

In questo file potresti fare un reindirizzamento con wp_safe_redirect. Ad esempio:

<?php
wp_safe_redirect('/news', 301, '');

Con questo approccio solo la categoria news-article verrà reindirizzata. Tutte le altre categorie continueranno a funzionare come prima. Questo potrebbe tornare utile se vuoi puntare ogni categoria a un URL diverso. Funziona anche con i custom post type se hai nominato il template secondo la gerarchia di WordPress (vedi link sopra).

9 mag 2022 13:38:53