Czy ktoś zna sposób na wyrejestrowanie niestandardowych typów postów?
Czy istnieje odpowiednik register_post_type()
?
unregister_post_type
. Zobacz Wyrejestruj typ wpisu za pomocą unregister_post_type
Czy ktoś zna sposób na wyrejestrowanie niestandardowych typów postów?
Czy istnieje odpowiednik register_post_type()
?
unregister_post_type
. Zobacz Wyrejestruj typ wpisu za pomocą unregister_post_type
Odpowiedzi:
Obecnie nie ma funkcji wyrejestrowywania typu postu, proces ten jest jednak dość prosty.
Andrew Nacin podał trochę kodu na trac, znaleziony tutaj i opublikowany poniżej.
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;
Wyrejestrowanie wbudowanego typu posta będzie miało nieznany wpływ na WordPress, więc zrób to na własne ryzyko. Wyrejestrowanie niestandardowego typu postu powinno być całkowicie bezpieczne, ale oczywiście nie spowoduje oczyszczenia instalacji (tzn. Wyrejestrowanie typu postu nie oznacza usunięcia danych z bazy danych).
Mogę sobie wyobrazić kilka scenariuszy, w których może to być wymagane, ale bardziej rozsądnym podejściem (tam, gdzie to możliwe) byłoby po prostu nie rejestrowanie typu postu, jeśli nie jest to pożądane.
register_post_type()
load na każdej stronie ( init
), jest prawdopodobnie struktura permalink (odśwież ją i zniknie) oraz posty w bazie danych, które możesz usunąć robiąc DELETE FROM wp_posts WHERE post_type = '[your custom post type]'
.
Jak WordPress 4.5 jest funkcja tego robić, unregister_post_type
. Przykład:-
function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
unregister_post_type()
niczego nie usuwa z bazy danych. Zapobiega tylko rejestracji typu postu.
Jak zauważył t31os, łatwo jest usunąć typ postu ze zmiennej globalnej.
Ale jeśli masz na myśli nie-rdzeniowy typ postu, lepiej byłoby wyszukać kod, który go rejestruje i odczepić remove_action()
(jeśli jest to porządny kod, należy go zaczepić, a nie uruchamiać bezpośrednio).
register_post_type()
nie jest funkcją, która dobrze nadaje się do zaczepiania. Normalnym sposobem rejestrowania typu postu jest uruchomienie funkcji bezpośrednio w funkcji zaczepionej na init. Usunięcie tej akcji może mieć niepożądane skutki, ponieważ z tą funkcją często będą usuwane inne funkcje.
W WordPress w wersji 4.5 i nowszych zapewniają one funkcję usuwania typu postu (unregister_post_type). Przykład
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
To zadziała zdecydowanie.