URL-ul paginii de arhivă pentru tipul de postare personalizat să indice către permalink-ul Paginii

1 mar. 2016, 13:43:01
Vizualizări: 21.3K
Voturi: 4

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?

0
Toate răspunsurile la întrebare 3
4
12

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ă!

1 mar. 2016 13:58:16
Comentarii

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)?

renathy renathy
1 mar. 2016 14:08:32

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

Sumit Sumit
1 mar. 2016 14:15:07

Și dacă vrei să traduci "galleries" :))

trainoasis trainoasis
18 iul. 2018 18:23:32

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

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

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 );
19 ian. 2019 19:18:10
0

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.

28 oct. 2024 20:28:01