Reindirizzare l'archivio dei custom post type all'URL della pagina personalizzata

1 mar 2016, 13:43:01
Visualizzazioni: 21.3K
Voti: 4

Desidero che la 'pagina archivio del custom post type' punti a una Pagina specifica.

La situazione è la seguente:

Ho una Pagina in WordPress con permalink http://myurl.com/galleries. Questa pagina mostra un elenco di post con custom post type = vmgallery. Ho una logica personalizzata per questa pagina che funziona correttamente.

Da un altro punto di vista, questa pagina funziona come una "pagina archivio del custom post type", poiché visualizza tutti i post per il custom post type vmgallery specifico. Attualmente, se l'utente va su http://myurl.com/vmgallery/ WordPress carica la pagina archivio (archive.php), invece vorrei che venga caricata la pagina http://myurl.com/galleries.

Come posso ottenerlo?

0
Tutte le risposte alla domanda 3
4
12

Hai diverse opzioni qui.

1. Definire lo slug dell'archivio del post type durante la registrazione

Impostando 'has_archive' => 'galleries' puoi definire uno slug personalizzato per l'archivio del post type. Consulta la documentazione. Poi puoi eliminare la tua pagina "galleries" e aggiungere & personalizzare il file archive-post_type.php

2. Disabilitare l'archivio predefinito per il post type

Disabilita l'archivio impostando 'has_archive' => false e mantieni la pagina per l'archivio del post type.

3. Reindirizzare le richieste dell'archivio alla tua pagina

Puoi reindirizzare permanentemente le richieste dell'archivio predefinito alla tua pagina.

function archive_to_custom_archive() {
    if( is_post_type_archive( 'post_slug' ) ) {
        wp_redirect( home_url( '/galleries/' ), 301 );
        exit();
    }
}
add_action( 'template_redirect', 'archive_to_custom_archive' );

Direi che il primo metodo è ottimo!

1 mar 2016 13:58:16
Commenti

Puoi suggerirmi quale opzione sarebbe migliore se ho anche "una tassonomia personalizzata per questo tipo di post personalizzato" (il nome della tassonomia personalizzata è 'gallery_categories', un esempio di categoria della galleria è "auto"). E vorrei che http://myurl.com/galleries/auto funzionasse allo stesso modo di http://myurl.com/galleries. Vorrei che avesse quasi lo stesso codice (il codice verificherebbe se si tratta di 'galleries' o 'galleries'/xxx e agirebbe nello stesso modo con minime differenze)?

renathy renathy
1 mar 2016 14:08:32

L'archivio del tipo di post personalizzato e l'archivio della tassonomia personalizzata sono diversi. La prima opzione è sempre buona ma non funzionerà come http://myurl.com/galleries/auto Non puoi estrarre risultati dal termine auto. Per questo avrai bisogno di un template di pagina personalizzato e una riscrittura dell'URL per analizzare la richiesta come http://example.com/page-name/?mytax=auto

Sumit Sumit
1 mar 2016 14:15:07

E se volessi tradurre "galleries" :))

trainoasis trainoasis
18 lug 2018 18:23:32

Perfetto. Nel mio caso ha funzionato solo la terza opzione perché dovevo reindirizzare la richiesta dell'archivio a un determinato post di questo post type. Quindi ho inserito home_url( '/galleries/some-post-slug' ) all'interno del metodo wp_redirect() e così ha funzionato. Grazie

Adriana Hernández Adriana Hernández
22 feb 2019 23:01:26
0

Di seguito il codice per rimuovere il link della pagina archivio senza influenzare l'URL del singolo post. Puoi anche creare una pagina con lo slug dell'archivio.

function dg_custom_post_type_args( $args, $post_type ) {
if ( $post_type === "custom post type" ) {
    $args['rewrite'] = array(
    'with_front' => false,
    'slug' => 'slug here'
  );
}

return $args;
}
add_filter( 'register_post_type_args', 'dg_custom_post_type_args', 20, 2 );
19 gen 2019 19:18:10
0

Questo codice ha risolto il mio problema.

function redirect_cpt_archive() {
    if( is_post_type_archive( 'galleries' ) ) {
        wp_redirect( home_url( '/galleries/post-url/' ), 301 );
        exit();
    }
}
add_action( 'template_redirect', 'redirect_cpt_archive' );

Nel tuo custom post type in functions.php devi aggiornare 'has_archive' => true.

28 ott 2024 20:28:01