Özel gönderi türlerinin kaydını silmenin bir yolunu bilen var mı?
Eşdeğeri var mı register_post_type()
?
unregister_post_type
. Bkz kaydını iptal sonrası tipi kullanılarak unregister_post_type
Özel gönderi türlerinin kaydını silmenin bir yolunu bilen var mı?
Eşdeğeri var mı register_post_type()
?
unregister_post_type
. Bkz kaydını iptal sonrası tipi kullanılarak unregister_post_type
Yanıtlar:
Şu anda bir yazı türünün kaydını silmek için bir işlev yoktur, ancak işlem oldukça basittir.
Andrew Nacin bazı kodlar trac üzerinde verdi, burada bulundu ve aşağıda kaydedildi.
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;
Yerleşik bir yazı tipinin kaydını silmek, WordPress üzerinde bilinmeyen etkilere sahip olacaktır, bu nedenle lütfen kendi sorumluluğunuzdadır. Özel bir gönderi türünün kaydını silmek tamamen güvenli olmalıdır, ancak doğal olarak kurulumunuzda hiçbir temizlik yapmaz (örneğin, bir gönderi türünün kaydını silmek, veritabanındaki verilerin kaldırılmasıyla aynı değildir).
Bunun gerekli olabileceği birkaç senaryo hayal edebiliyorum, ancak daha mantıklı olan yaklaşım (mümkün olduğunda), istemiyorsa post tipini ilk etapta kaydetmemek olacaktır.
register_post_type()
Her sayfa yüklemesinde çalışmazsanız "kalıcı" kalan tek şey (init
) muhtemelen permalink yapısıdır (yenileyin ve kaybolur) ve veritabanında bulunan ve kaldırabileceğiniz mesajlardır. yaparak DELETE FROM wp_posts WHERE post_type = '[your custom post type]'
.
WordPress 4.5'ten itibaren, bunun için işlev yoktur unregister_post_type
. Örnek:-
function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
unregister_post_type()
Veritabanından hiçbir şey silmediğinden bahsetmeye değer . Yalnızca posta türünün kaydedilmesini önler.
Bu benim için çalıştı, Rarst'ın mümkünse remove_action () kullandığını söylediği gibi .
add_action( 'after_setup_theme','remove_foundation_options', 100 );
function remove_foundation_options() {
remove_action( 'init', 'Orbit');
}
T31os'un işaret ettiği gibi post tipini global değişkenden çıkarmak kolaydır.
Fakat eğer çekirdek olmayan yazı tipini kastediyorsanız, onu kaydeden ve çözen kodun aranması daha iyi olacaktır remove_action()
(eğer uygun kod ise doğrudan çalıştırılmak yerine bağlanması gerekir).
register_post_type()
kancaya güzelce kendini veren bir işlev değildir. Bir yazı tipini kaydetmenin normal yolu, işlevi doğrudan init'e bağlı bir işlevde çalıştırmaktır. Bu işlemin kaldırılması istenmeyen etkilere neden olabilir, çünkü bu işlevle kaldırılan başka işlevler de sık sık olacaktır.
WordPress sürüm 4.5 ve daha üst sürümlerinde, post tipini (unregister_post_type) kaldırmak için bir işlev sağlarlar. Örnek
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
Kesinlikle çalışacak.