Pagina individuală de tip postare personalizată returnează eroare 404

6 aug. 2014, 15:02:01
Vizualizări: 57.7K
Voturi: 28

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' );
0
Toate răspunsurile la întrebare 4
5
60

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

6 aug. 2014 16:20:46
Comentarii

Oh, uau, a funcționat și aici. Nu era deloc evident. Mulțumesc!

Toby Deshane Toby Deshane
28 ian. 2019 21:02:46

A funcționat și la mine! Mulțumesc!

JamesHoux JamesHoux
10 iun. 2019 21:58:55

Da! În sfârșit, după ce am făcut ambele, a funcționat.

Eric Eric
24 iul. 2019 16:42:51

flush_rewrite_rules() a funcționat pentru mine - bună soluție!

Cush Cush
2 nov. 2020 17:13:55

Poți încerca pur și simplu să mergi la Setări > Legături permanente și să dai click pe salvare fără a schimba nimic. Dacă nu dorești să editezi codul și cauți o soluție rapidă (sperăm)

BonisTech BonisTech
2 dec. 2020 12:11:18
3
25

Ș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

6 aug. 2014 15:33:28
Comentarii

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 cbloss793
11 oct. 2017 20:29:02

+1 Doar salvarea în Permalinks a funcționat și pentru mine.

Kalnode Kalnode
12 aug. 2018 03:52:19

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 Philipp
14 iun. 2019 10:31:17
1
11

Reîmprospătează permaliile tale. Mergi la Admin->Setări->Permaliuri și apasă pe Salvare. Această acțiune va reîmprospăta permaliile tale și ar trebui să ajute, mai ales dacă modifici rewrite ( 'rewrite' => array( 'slug' => 'slide' ),)

29 mar. 2017 15:00:59
Comentarii

a funcționat pentru mine - mulțumesc

cljk cljk
27 apr. 2020 12:48:15
1

Ar trebui să setați următoarele în virtualhost-ul Apache:

    <Directory /var/www/html/wordpress>
            AllowOverride All
    </Directory>

Apoi, actualizați structura linkurilor permanente: wp-admin->setări->linkuri permanente. Asta a funcționat pentru mine.

13 nov. 2019 18:10:18
Comentarii

Mulțumesc pentru acest răspuns. Acum măcar știu că problema este în configurația mea Apache și nu în cod.

Sharpey Sharpey
14 nov. 2021 00:33:17