SETIAP ORANG LAIN MENCARI INI. Ketika Anda mendaftarkan jenis posting kustom tidak ada yang disimpan ke database. Tabel posting di wp db tidak terstruktur. Hanya mendaftar dengan internal skrip wp yang dapat Anda buat entri ke dalam tabel posting dengan jenis apa yang pernah Anda buat dengan posting register. Semoga itu bisa membantu orang lain.
Membatalkan registrasi tipe posting bawaan akan memiliki efek yang tidak diketahui pada WordPress, jadi silakan lakukan dengan risiko Anda sendiri. Membatalkan registrasi jenis posting kustom harus benar-benar aman, tetapi tentu saja tidak melakukan pembersihan pada instalasi Anda (mis. Membatalkan registrasi jenis posting tidak sama dengan penghapusan data dari database).
Saya bisa membayangkan beberapa skenario di mana ini bisa diperlukan, tetapi pendekatan yang lebih masuk akal (jika memungkinkan), adalah dengan tidak mendaftarkan jenis posting di tempat pertama jika tidak diinginkan.
Sama-sama .. :) Jika Anda menambahkan jenis posting Anda sendiri dalam bentuk kode, solusi yang lebih mudah adalah dengan menghapus fungsi / kode yang Anda jalankan yang menambahkannya. Perhatikan juga, menghapus tipe posting tidak menghilangkannya dari tabel posting Anda, jadi Anda mungkin memiliki entri redundansi di tabel itu.
t31os
2
@ anu: Satu-satunya hal yang tetap "permanen" jika Anda tidak mengeksekusi register_post_type()pada setiap halaman memuat ( init) mungkin struktur permalink (refresh dan akan hilang), dan posting di database, yang dapat Anda hapus dengan melakukan DELETE FROM wp_posts WHERE post_type = '[your custom post type]'.
Jan Fabry
Menariknya, saya memang menghapus kode register_post_type untuk custom_post_type itu, dan saya belum menambahkan posting apa pun ke cpt itu, tetapi tidak menghapus UI admin.
anu
Atau tentu saja, sekarang saya coba ini lagi, itu berfungsi seperti yang Anda gambarkan - yaitu UI admin untuk cpt baru telah hilang. Mungkin saya menjadi muppet :) Info berguna, jadi terima kasih.
anu
3
Pembaruan pada Februari 2016 - fungsi ini digabungkan dalam inti untuk WP 4.5.0 (akan diluncurkan pada bulan April).
Ricardo BRGWeb
37
Pada WordPress 4.5 ada fungsi untuk melakukan itu unregister_post_type,. Contoh:-
function delete_post_type(){
unregister_post_type('blocks');}
add_action('init','delete_post_type');
ini harus pada prioritas yang lebih tinggi daripada yang digunakan untuk mendaftarkan jenis posting jika tidak maka tidak akan berhasil
Mark Kaplun
@Dhinju Divakaran itu tidak menghapus tipe posting lama dari db yang tidak saya gunakan sekarang.
Faiyaz Alam
berfungsi, pastikan Anda memberikan prioritas tinggi untuk tindakan ini dibandingkan dengan tindakan yang digunakan untuk mendaftarkan jenis posting.
Ajith R Nair
1
Perlu disebutkan bahwa unregister_post_type()tidak menghapus apa pun dari database. Itu hanya mencegah jenis posting dari didaftarkan.
Dave Romsey
Ini berfungsi baik untuk saya, tetapi perlu diingat bahwa Anda harus memberi tahu WordPress tentang perubahan dengan menyimpan kembali struktur Permalink Anda di Pengaturan -> halaman admin Permalinks. Jika tidak, halaman dengan permalink yang bertentangan tidak berfungsi dengan benar.
MarkPraschan
7
Ini bekerja untuk saya, seperti yang dikatakan Rarst menggunakan remove_action () jika memungkinkan.
Seperti yang dicatat t31os, mudah untuk menghapus tipe posting dari variabel global.
Tetapi jika Anda maksud jenis posting non-inti maka akan lebih baik untuk mencari kode yang mendaftarkannya dan melepaskan kaitannya remove_action()(jika kode yang layak itu harus dikaitkan daripada dijalankan secara langsung).
register_post_type()bukan fungsi yang cocok untuk hooking. Cara normal untuk mendaftarkan tipe posting adalah dengan menjalankan fungsi secara langsung dalam fungsi yang terhubung dengan init. Menghapus tindakan itu mungkin memiliki efek yang tidak diinginkan, karena sering kali ada fungsionalitas lain yang dihapus dengan fungsi itu.
John P Bloch
@ John P Bloch ya, saya tahu itu. Kadang-kadang Anda akhirnya membangun kembali semua init untuk memperbaikinya, pada akhirnya itu tergantung pada kode spesifik dan kualitas / kewarasannya
Rarst
1
Di WordPress versi 4.5 dan lebih tinggi, mereka menyediakan fungsi untuk menghapus tipe posting (unregister_post_type).
Contoh
function delete_post_type(){
unregister_post_type('jobs');}
add_action('init','delete_post_type');
unregister_post_type
. Lihat Membatalkan registrasi jenis posting menggunakan unregister_post_typeJawaban:
Saat ini tidak ada fungsi untuk membatalkan registrasi tipe posting, namun prosesnya cukup sederhana.
Andrew Nacin memberikan beberapa kode pada trac, ditemukan di sini dan diposting di bawah ini.
Membatalkan registrasi tipe posting bawaan akan memiliki efek yang tidak diketahui pada WordPress, jadi silakan lakukan dengan risiko Anda sendiri. Membatalkan registrasi jenis posting kustom harus benar-benar aman, tetapi tentu saja tidak melakukan pembersihan pada instalasi Anda (mis. Membatalkan registrasi jenis posting tidak sama dengan penghapusan data dari database).
Saya bisa membayangkan beberapa skenario di mana ini bisa diperlukan, tetapi pendekatan yang lebih masuk akal (jika memungkinkan), adalah dengan tidak mendaftarkan jenis posting di tempat pertama jika tidak diinginkan.
sumber
register_post_type()
pada setiap halaman memuat (init
) mungkin struktur permalink (refresh dan akan hilang), dan posting di database, yang dapat Anda hapus dengan melakukanDELETE FROM wp_posts WHERE post_type = '[your custom post type]'
.Pada WordPress 4.5 ada fungsi untuk melakukan itu
unregister_post_type
,. Contoh:-sumber
unregister_post_type()
tidak menghapus apa pun dari database. Itu hanya mencegah jenis posting dari didaftarkan.Ini bekerja untuk saya, seperti yang dikatakan Rarst menggunakan remove_action () jika memungkinkan.
sumber
Seperti yang dicatat t31os, mudah untuk menghapus tipe posting dari variabel global.
Tetapi jika Anda maksud jenis posting non-inti maka akan lebih baik untuk mencari kode yang mendaftarkannya dan melepaskan kaitannya
remove_action()
(jika kode yang layak itu harus dikaitkan daripada dijalankan secara langsung).sumber
register_post_type()
bukan fungsi yang cocok untuk hooking. Cara normal untuk mendaftarkan tipe posting adalah dengan menjalankan fungsi secara langsung dalam fungsi yang terhubung dengan init. Menghapus tindakan itu mungkin memiliki efek yang tidak diinginkan, karena sering kali ada fungsionalitas lain yang dihapus dengan fungsi itu.Di WordPress versi 4.5 dan lebih tinggi, mereka menyediakan fungsi untuk menghapus tipe posting (unregister_post_type). Contoh
Ini akan bekerja dengan pasti.
sumber