Хтось знає про спосіб скасування реєстрації користувацьких типів публікацій?
Чи є еквівалент register_post_type()
?
unregister_post_type
. Див. Скасувати реєстрацію типу публікації, використовуючи
Хтось знає про спосіб скасування реєстрації користувацьких типів публікацій?
Чи є еквівалент register_post_type()
?
unregister_post_type
. Див. Скасувати реєстрацію типу публікації, використовуючи
Відповіді:
В даний час не існує функції для реєстрації типу публікації, проте процес є досить простим.
Ендрю Начін надав код на 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
), - це, мабуть, постійна посилання (оновіть її і вона пропаде), а також повідомлення в базі даних, які ви можете видалити роблячи 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()
нічого не видаляє з бази даних. Це лише запобігає реєстрації типу публікації.
Це працювало для мене, як сказав Рарст, використовуючи функцію видалення (), якщо можливо.
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 і вище вони надають функцію для видалення типу публікації (undegister_post_type). Приклад
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
Це працюватиме визначено.