URL-ul paginii de arhivă pentru tipul de postare personalizat să indice către permalink-ul Paginii
Doresc ca 'pagina mea de arhivă pentru tipul de postare personalizat' să indice către Pagină.
Situația este următoarea:
Am o Pagină
în WordPress cu permalink-ul http://myurl.com/galleries
. Această pagină afișează o listă de postări cu tipul de postare personalizat = vmgallery
. Am o logică personalizată pentru această pagină care funcționează bine.
Din altă perspectivă, această pagină funcționează ca o "pagină de arhivă pentru tipul de postare personalizat", deoarece afișează toate postările pentru tipul de postare personalizat vmgallery. În prezent, dacă utilizatorul accesează http://myurl.com/vmgallery/, WordPress încarcă pagina de arhivă (archive.php), în schimb, doresc să fie încărcată pagina http://myurl.com/galleries
.
Cum pot realiza acest lucru?
Aveți mai multe opțiuni aici.
1. Definiți slug-ul arhivei tipului de postare în timpul înregistrării tipului de postare
Prin setarea 'has_archive' => 'galleries'
puteți defini un slug personalizat pentru arhiva tipului de postare.
Consultați documentația.
Apoi puteți șterge pagina "galleries" și adăugați/modificați archive-post_type.php
2. Dezactivați arhiva implicită pentru tipul de postare
Dezactivați arhiva setând 'has_archive' => false
apoi păstrați pagina pentru arhiva tipului de postare.
3. Redirecționați cererile de arhivă către pagina dvs.
Puteți redirecționa permanent cererile de arhivă implicită către pagina dvs.
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' );
Aș spune că prima metodă este cea mai bună!

Poți să-mi sugerezi care opțiune ar fi mai bună dacă am și "taxonomie personalizată pentru acest tip de postare personalizată" (numele taxonomiei personalizate este 'gallery_categories', exemplu de categorie de galerie este "auto"). Și doresc ca http://myurl.com/galleries/auto să funcționeze la fel ca http://myurl.com/galleries. Doresc să aibă aproape același cod (codul ar verifica dacă este 'galleries' sau 'galleries'/xxx și să acționeze în același mod cu diferențe minore)?

Arhiva tipului de postare personalizată și arhiva taxonomiei personalizate sunt diferite. Prima opțiune este întotdeauna bună, dar nu va funcționa ca http://myurl.com/galleries/auto
Nu poți extrage rezultate din termenul auto
. Pentru asta vei avea nevoie de un șablon de pagină personalizat și rescriere URL pentru a analiza cererea ca http://example.com/page-name/?mytax=auto

Excelent. Pentru mine a funcționat doar a treia opțiune pentru că situația mea presupunea redirecționarea cererii de arhivă către un anumit post din acest tip de post. Așadar, am adăugat home_url( '/galleries/some-post-slug' ) în interiorul metodei wp_redirect() și astfel a funcționat. Mulțumesc

Mai jos este codul pentru a elimina linkul către pagina de arhivă fără a afecta URL-ul postărilor individuale. De asemenea, poți crea o pagină cu un slug specific pentru arhivă.
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 );

Acest cod a rezolvat problema mea.
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' );
În tipul tău de postare personalizată din functions.php
trebuie să actualizezi 'has_archive' => true
.
