Bất cứ ai cũng biết một cách để hủy đăng ký các loại bài tùy chỉnh?
Có tương đương với register_post_type()?
unregister_post_type. Xem Hủy đăng ký loại bài đăng bằng cách sử dụng unregister_post_type
Bất cứ ai cũng biết một cách để hủy đăng ký các loại bài tùy chỉnh?
Có tương đương với register_post_type()?
unregister_post_type. Xem Hủy đăng ký loại bài đăng bằng cách sử dụng unregister_post_type
Câu trả lời:
Hiện tại không có chức năng hủy đăng ký loại bài đăng, tuy nhiên quá trình này khá đơn giản.
Andrew Nacin đã cung cấp một số mã trên trac, được tìm thấy ở đây và được đăng dưới đây.
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;
Không đăng ký loại bài đăng tích hợp sẽ có tác dụng không xác định trên WordPress, vì vậy hãy tự chịu rủi ro. Việc hủy đăng ký loại bài đăng tùy chỉnh sẽ hoàn toàn an toàn, nhưng đương nhiên sẽ không dọn dẹp cài đặt của bạn (nghĩa là không đăng ký loại bài đăng không đồng nghĩa với việc xóa dữ liệu khỏi cơ sở dữ liệu).
Tôi có thể tưởng tượng một vài tình huống có thể cần điều này, nhưng cách tiếp cận hợp lý hơn (nếu có thể), chỉ đơn giản là không đăng ký loại bài đăng ở vị trí đầu tiên nếu không muốn.
register_post_type()trên mỗi lần tải trang ( init) có lẽ là cấu trúc permalink (làm mới nó và nó sẽ biến mất) và các bài đăng trong cơ sở dữ liệu mà bạn có thể xóa bằng cách thực hiện DELETE FROM wp_posts WHERE post_type = '[your custom post type]'.
Kể từ WordPress 4.5 có chức năng để làm điều đó , unregister_post_type. Thí dụ:-
function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
unregister_post_type()không xóa bất cứ thứ gì khỏi cơ sở dữ liệu. Nó chỉ ngăn loại bài đăng được đăng ký.
Điều này làm việc cho tôi, như Rarst đã nói bằng cách sử dụng remove_action () nếu có thể.
add_action( 'after_setup_theme','remove_foundation_options', 100 );
function remove_foundation_options() {
remove_action( 'init', 'Orbit');
}
Như t31os đã lưu ý, thật dễ dàng để loại bỏ bài đăng khỏi biến toàn cục.
Nhưng nếu bạn có nghĩa là loại bài viết không cốt lõi thì tốt hơn là bạn nên tra cứu mã đăng ký và không sử dụng remove_action()(nếu đó là mã tốt, nó nên được nối thay vì chạy trực tiếp).
register_post_type()không phải là một chức năng cho vay độc đáo để móc. Cách thông thường để đăng ký loại bài đăng là chạy hàm trực tiếp trong hàm được nối trên init. Loại bỏ hành động đó có thể có tác dụng không mong muốn, vì thường sẽ có chức năng khác bị loại bỏ với chức năng đó.
Trong phiên bản WordPress 4.5 trở lên, họ cung cấp chức năng xóa loại bài đăng (unregister_post_type). Thí dụ
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
Nó sẽ hoạt động dứt khoát.