ใครรู้วิธียกเลิกการลงทะเบียนประเภทโพสต์ที่กำหนดเอง?
มีให้เทียบเท่าregister_post_type()
?
unregister_post_type
มีฟังก์ชั่นที่จะทำ ดูยกเลิกการลงทะเบียนประเภทโพสต์โดยใช้ unregister_post_type
ใครรู้วิธียกเลิกการลงทะเบียนประเภทโพสต์ที่กำหนดเอง?
มีให้เทียบเท่าregister_post_type()
?
unregister_post_type
มีฟังก์ชั่นที่จะทำ ดูยกเลิกการลงทะเบียนประเภทโพสต์โดยใช้ unregister_post_type
คำตอบ:
ขณะนี้ไม่มีฟังก์ชั่นสำหรับยกเลิกการลงทะเบียนประเภทโพสต์กระบวนการนี้ค่อนข้างง่าย
Andrew Nacin ได้ให้รหัสบางส่วนบน trac พบได้ที่นี่และโพสต์ด้านล่าง
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;
การยกเลิกการลงทะเบียนประเภทโพสต์ในตัวจะมีผลกระทบที่ไม่รู้จักกับ WordPress ดังนั้นโปรดรับความเสี่ยงด้วยตนเอง การยกเลิกการลงทะเบียนประเภทโพสต์ที่กำหนดเองควรจะปลอดภัยอย่างสมบูรณ์แบบ แต่โดยปกติแล้วจะไม่มีการล้างข้อมูลบนการติดตั้งของคุณ (เช่นการที่ไม่ได้ลงทะเบียนประเภทโพสต์จะไม่เท่ากับการลบข้อมูลออกจากฐานข้อมูล)
ฉันสามารถจินตนาการถึงสถานการณ์บางอย่างที่อาจจำเป็นต้องใช้ แต่วิธีที่เหมาะสมกว่านี้ (หากเป็นไปได้) คือการไม่ลงทะเบียนประเภทโพสต์ในที่แรกหากไม่ต้องการ
register_post_type()
ในแต่ละหน้าโหลด ( init
) อาจเป็นโครงสร้าง permalink (รีเฟรชมันและมันจะหายไป) และโพสต์ในฐานข้อมูลซึ่งคุณสามารถลบ DELETE FROM wp_posts WHERE post_type = '[your custom post type]'
โดยการทำ
ในฐานะของ WordPress 4.5 มีฟังก์ชั่นการทำเช่นนั้น, unregister_post_type
. ตัวอย่าง:-
function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
unregister_post_type()
ไม่ลบอะไรจากฐานข้อมูล แต่จะป้องกันไม่ให้โพสต์ประเภทลงทะเบียน
สิ่งนี้ใช้งานได้สำหรับฉันเช่น Rarst กล่าวว่าใช้remove_action ()ถ้าเป็นไปได้
add_action( 'after_setup_theme','remove_foundation_options', 100 );
function remove_foundation_options() {
remove_action( 'init', 'Orbit');
}
ในฐานะที่เป็น t31os สังเกตว่ามันง่ายที่จะลบโพสต์ประเภทจากตัวแปรทั่วโลก
แต่ถ้าคุณหมายถึงประเภทโพสต์ที่ไม่ใช่คอร์มันจะดีกว่าถ้าค้นหาโค้ดที่ลงทะเบียนและปลดล็อกด้วยremove_action()
(ถ้าเป็นโค้ดที่ดีมันควรจะติดตะขอแทนที่จะเรียกใช้โดยตรง)
register_post_type()
ไม่ใช่ฟังก์ชั่นที่ให้ยืมตัวเองอย่างดีต่อการเชื่อมต่อ วิธีปกติในการลงทะเบียนประเภทโพสต์คือการเรียกใช้ฟังก์ชั่นโดยตรงในฟังก์ชั่นที่เกี่ยวกับ init การลบการกระทำนั้นอาจมีผลกระทบที่ไม่พึงประสงค์เนื่องจากมักจะมีฟังก์ชั่นอื่น ๆ ที่ถูกลบออกจากฟังก์ชั่นนั้น
ใน WordPress เวอร์ชั่น 4.5 ขึ้นไปมีฟังก์ชันในการลบประเภทโพสต์ (unregister_post_type) ตัวอย่าง
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
มันจะทำงานได้อย่างแน่นอน