Satu halaman jenis kiriman khusus menghasilkan 404 kesalahan


17

Saya memiliki jenis posting khusus yang disebut slide. Ini memiliki konten dan beberapa bidang khusus. Saya ingin WP menampilkan single.phptema atau single-slide.phptema ketika pengguna mengklik tautan satu halaman slide. masalah yang saya miliki adalah bahwa WP melempar kesalahan 404, ketika saya ingin melihat halaman slide tunggal.

ini kode saya di functions.php:

function create_slide_post_type() {
    $labels = array(
        'name'               => _x( 'اسلایدها', 'i2sa' ),
        'singular_name'      => _x( 'اسلاید', 'i2sa' ),
        'menu_name'          => _x( 'اسلایدها', 'i2sa' ),
        'name_admin_bar'     => _x( 'اسلاید', 'i2sa' ),
        'add_new'            => _x( 'افزودن', 'i2sa' ),
        'add_new_item'       => __( 'افزودن اسلاید جدید', 'i2sa' ),
        'new_item'           => __( 'اسلاید جدید', 'i2sa' ),
        'edit_item'          => __( 'ویرایش اسلاید', 'i2sa' ),
        'view_item'          => __( 'نمایش اسلاید', 'i2sa' ),
        'all_items'          => __( 'همه اسلایدها', 'i2sa' ),
        'search_items'       => __( 'جستجوی اسلایدها', 'i2sa' ),
        'parent_item_colon'  => __( 'اسلایدهای مادر:', 'i2sa' ),
        'not_found'          => __( 'اسلایدی پیدا نشد.', 'i2sa' ),
        'not_found_in_trash' => __( 'اسلایدی در زباله دان پیدا نشد.', 'i2sa' )
    );

    $args = array(
        'labels'             => $labels,
        'description'        => "اسلایدهای شرکت 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' );

Jawaban:


41

Anda harus mengatur publicly_queryableargumen Anda trueketika mendaftarkan jenis posting kustom Anda.

TAKE CATATAN : Tambahkan flush_rewrite_rules(), segarkan halaman satu atau dua kali dan HAPUS SEGERA. Anda TIDAK harus menyimpan flush_rewrite_rules()kecuali di bawah ketentuan seperti dalam kodeks.

ini adalah operasi yang mahal sehingga hanya digunakan jika benar-benar diperlukan


1
Oh wow, itu berhasil juga di sini. Itu sama sekali tidak jelas. Terima kasih!
Toby Deshane

Bekerja untukku! Terima kasih!
JamesHoux

Iya! Akhirnya setelah melakukan keduanya itu berhasil.
Eric

16

Siram aturan penulisan ulang dari dasbor -> Pengaturan-> halaman Permalink. Klik pada tombol simpan dan kemudian periksa halaman detail slide Anda. Ini akan berfungsi sekarang. Kalau tidak, Anda dapat menulis kode ini flush_rewrite_rules()di create_slide_post_type()fungsi Anda . Lihat Codex


2
Mengklik tombol simpan di Permlinks berhasil untuk saya. Setelah saya memindahkan situs ke server produksi, semua tautan jenis pos kustom rusak. Ini memperbaikinya. Terima kasih!
cbloss793

+1 Cukup mengklik simpan di Permalinks juga berhasil untuk saya.
MarsAndBack

Menyimpan permalink berfungsi. Tapi tolong jangan tambahkan flush_rewrite_rules()setelah register_post_type()panggilan dalam kode produksi (yaitu di dalam create_slide_post_type). Gunakan kait pengaktifan plugin atau nilai opsi untuk menentukan bahwa Anda menambahkan jenis posting baru
Philipp

6

Segarkan permalink Anda. Pergi ke Admin-> Pengaturan-> Permalinks dan tekan Simpan. Ini menyegarkan permalink Anda dan akan membantu, terutama jika Anda mengubah penulisan ulang ('rewrite' => array ('slug' => 'slide'),)


1

Anda harus mengatur yang berikut ini di apache virtualhost Anda:

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

Kemudian, segarkan permalink Anda: wp-admin-> setting-> permalinks. Itu berhasil untuk saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.