Saya membuat jenis posting khusus:
register_post_type('sample_post_type',array(
'labels' => array(
'name' => _x('Sample Posts', 'post type general name'),
'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'show_in_nav_menus' => false,
'exclude_from_search' => true
));
Bagaimana saya bisa menonaktifkan tampilan posting tunggal untuk jenis posting khusus ini? Menampilkan 404 sederhana tidak masalah, atau mengalihkan ke beranda. Ini ada di dalam plugin, jadi saya tidak bisa membuat file sample_post_type.php tunggal untuk menyiapkan halaman kosong.
sumber
get_current_user_id()
evaluasi ke 0.is_singular('post-type-slug')
dalamif()
kondisi bukan 2 kondisi?Hanya mengatur argumen
ketika Anda memanggil register_post_type ()
sumber
Cara yang lebih sederhana untuk melakukannya adalah dengan menggunakan argumen berikut saat mendaftarkan Jenis Posting Kustom
sumber
publically_querable
benar agar Arsip Jenis Tulisan berfungsi.Satu. Dari file fungsi Anda.
Dua. Dari file single.cpt.php Anda:
sumber
single-cpt_name.php
file khusus, Anda tidak bisa melakukannya. Jika Anda meletakkan fungsi dalam file plugin sederhana, Anda bisa mengaktifkan / menonaktifkan tanpa mengedit file apa pun.Bekerja dari jawaban Sven yang sangat bagus, saya menulis ulang fungsinya untuk membuatnya lebih mudah untuk menambahkan beberapa jenis posting menggunakan
in_array()
dalam pernyataan if dan kemudian mengarahkan kembali ke halaman arsip daripada halaman rumah.(Omong-omong, saya pikir pengaturan
query_var
dan / ataupublically_queryable
salah akan menonaktifkan tidak hanya tampilan tunggal, tetapi juga tampilan arsip asli, menimpa'has_archive' => true
. Dalam hal ini Anda masih dapat mengatur WP_query khusus dan membuat halaman arsip Anda sendiri, di sebuah templat, tetapi kueri utama tidak akan melakukannya lagi, kan?)sumber
Menguji semua yang disebutkan di atas dan solusi sebenarnya lebih sederhana daripada arahan ulang yang disarankan.
Agar arsip dapat diakses dan daftar item, dan satu posting tidak dapat diakses dan otomatis diarahkan ke 404 ditetapkan
saat mendaftarkan CPT Anda. Jika Anda menetapkan
publicly_queryable
false arsip Anda akan diarahkan ke rumah, kombo apa pun tidak akan berfungsi. Setelquery_var
ke false dan hanya itu.Berikut ini CPT lengkap https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a
lihat baris 50 https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a#file-thz_cpt_items_single_view_redirect-php-L50
seperti yang dinyatakan di sini
https://codex.wordpress.org/Function_Reference/register_post_type
sumber
Jika Anda ingin sepenuhnya menonaktifkan tampilan tunggal jenis posting kustom di frontend tetapi dapat menampilkan hal-hal halaman arsip semakin rumit.
Pengaturan
publicly_queryable
kefalse
ataurewrite
kefalse
akan mencegah untuk menampilkan tampilan tunggal dan arsip. Tidak ada flag dalamregister_post_type
argumen fungsi untuk mencegah pembuatan hanya aturan penulisan ulang tampilan tunggal.https://github.com/WordPress/WordPress/blob/5.2.3/wp-includes/class-wp-post-type.php#L540
Namun Anda dapat menghapus tag penulisan ulang setelah mendaftarkan jenis posting Anda dan ini akan membuat aturan penulisan ulang tampilan arsip tidak tersentuh tetapi hanya menghapus aturan penulisan ulang tampilan tunggal.
Bonus lain adalah bahwa mulai sekarang Anda dapat membuat halaman WordPress sederhana menggunakan struktur permalink jenis posting (
event/simple-page
) yang dapat membantu di situs web yang kompleks.Ingatlah untuk menyiram aturan penulisan ulang setelah modifikasi kode.
sumber