Adakah yang tahu cara membatalkan registrasi jenis posting khusus?
Apakah ada yang setara dengan register_post_type()
?
unregister_post_type
. Lihat Membatalkan registrasi jenis posting menggunakan unregister_post_type
Adakah yang tahu cara membatalkan registrasi jenis posting khusus?
Apakah ada yang setara dengan register_post_type()
?
unregister_post_type
. Lihat Membatalkan registrasi jenis posting menggunakan unregister_post_type
Jawaban:
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.
if ( ! function_exists( 'unregister_post_type' ) ) :
function unregister_post_type( $post_type ) {
global $wp_post_types;
if ( isset( $wp_post_types[ $post_type ] ) ) {
unset( $wp_post_types[ $post_type ] );
return true;
}
return false;
}
endif;
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.
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]'
.
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');
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.
add_action( 'after_setup_theme','remove_foundation_options', 100 );
function remove_foundation_options() {
remove_action( 'init', 'Orbit');
}
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.
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');
Ini akan bekerja dengan pasti.