Pagina individuală de tip postare personalizată returnează eroare 404
Am un tip de postare personalizată numit slide. Acesta are conținut și câteva câmpuri personalizate. Vreau ca WP să afișeze șablonul single.php sau single-slide.php când utilizatorul face click pe link-ul către pagina individuală a slide-ului. Problema pe care o am este că WP aruncă eroare 404 când vreau să văd pagina individuală a slide-ului.
Iată codul meu din functions.php:
function create_slide_post_type() {
$labels = array(
'name' => _x( 'Slide-uri', 'i2sa' ),
'singular_name' => _x( 'Slide', 'i2sa' ),
'menu_name' => _x( 'Slide-uri', 'i2sa' ),
'name_admin_bar' => _x( 'Slide', 'i2sa' ),
'add_new' => _x( 'Adaugă', 'i2sa' ),
'add_new_item' => __( 'Adaugă slide nou', 'i2sa' ),
'new_item' => __( 'Slide nou', 'i2sa' ),
'edit_item' => __( 'Editează slide', 'i2sa' ),
'view_item' => __( 'Vezi slide', 'i2sa' ),
'all_items' => __( 'Toate slide-urile', 'i2sa' ),
'search_items' => __( 'Caută slide-uri', 'i2sa' ),
'parent_item_colon' => __( 'Slide-uri părinte:', 'i2sa' ),
'not_found' => __( 'Nu s-au găsit slide-uri.', 'i2sa' ),
'not_found_in_trash' => __( 'Nu s-au găsit slide-uri în coșul de gunoi.', 'i2sa' )
);
$args = array(
'labels' => $labels,
'description' => "Slide-urile companiei i2sa",
'public' => true,
'exclude_from_search'=> true,
'publicly_queryable' => false,
'show_in_nav_menus' => false,
'menu_icon' => 'dashicons-images-alt2',
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'slide' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
);
register_post_type( 'slide', $args );
flush_rewrite_rules();
}
add_action( 'init', 'create_slide_post_type' );
Ar trebui să setezi argumentul publicly_queryable la true atunci când înregistrezi tipul tău personalizat de postare.
ATENȚIE: Adaugă flush_rewrite_rules(), reîmprospătează pagina o dată sau de două ori și ELIMINĂ-O IMEDIAT. NU TREBUIE să păstrezi flush_rewrite_rules() decât în condițiile precizate în codex.
aceasta este o operațiune costisitoare, deci ar trebui utilizată doar atunci când este absolut necesar
Ștergeți regulile de rescriere din panoul de control -> Setări -> Pagina de legături permanente. Faceți clic pe butonul de salvare și apoi verificați pagina cu detaliile diapozitivului. Acum ar trebui să funcționeze. Alternativ, puteți scrie acest cod flush_rewrite_rules() în funcția dvs. create_slide_post_type(). Consultați Codex
Apăsarea butonului de salvare în Permalinks a funcționat pentru mine. După ce am mutat site-ul pe un server de producție, toate legăturile tipurilor personalizate de postări nu funcționau. Această soluție a rezolvat problema. Mulțumesc!
cbloss793
Salvarea permalink-urilor funcționează. Dar vă rugăm să nu adăugați flush_rewrite_rules() după apelurile register_post_type() în codul de producție (adică în interiorul funcției create_slide_post_type). Folosiți hook-ul de activare a plugin-ului sau o valoare de opțiune pentru a determina că ați adăugat un nou tip de postare.
Philipp