ЛЮБОЙ ЕЩЕ ПОИСК ЭТОГО. Когда вы регистрируете пользовательский тип записи, в базу данных ничего не сохраняется. Таблица posts в wp db неструктурирована. Он регистрируется только с внутренними элементами сценария wp, и вы можете создать запись в таблице записей с типом того, что вы когда-либо создавали с помощью записей в реестре. Надеюсь, это поможет кому-то еще.
Отмена регистрации встроенного типа записи будет иметь неизвестные последствия для WordPress, поэтому, пожалуйста, делайте это на свой страх и риск. Отмена регистрации пользовательского типа записей должна быть абсолютно безопасной, но, естественно, не приведет к очистке вашей установки (т. Е. Отмена регистрации типа записей не означает удаление данных из базы данных).
Я могу представить несколько сценариев, где это могло бы потребоваться, но более разумный подход (где это возможно) состоял бы в том, чтобы просто не регистрировать тип сообщения, если он не нужен.
Не за что .. :) Если вы добавляете свои собственные типы записей в виде кода, более простым решением будет просто удалить выполняемую вами функцию / код, который их добавляет. Также обратите внимание, что удаление типов записей не приводит к их удалению из таблицы сообщений, поэтому в этой таблице могут быть избыточные записи.
t31os
2
@anu: Единственное, что остается «постоянным», если вы не выполняете register_post_type()загрузку на каждой странице ( init), это, вероятно, структура постоянной ссылки (обновите ее, и она исчезнет), и записи в базе данных, которые вы можете удалить делая DELETE FROM wp_posts WHERE post_type = '[your custom post type]'.
Ян Фабри
Интересно, что я удалил код register_post_type для этого custom_post_type, и я не добавил никаких сообщений в этот cpt, но он не удалил пользовательский интерфейс администратора.
ана
Или, конечно, теперь, когда я попробую это снова, это работает, как вы, ребята, описали - то есть пользовательский интерфейс администратора для нового cpt пропал. Возможно, я просто маппет :) Полезная информация в любом случае, так что спасибо.
ана
3
Обновление в феврале 2016 года - эта функция была объединена в ядре для WP 4.5.0 (будет запущена в апреле).
это должно иметь более высокий приоритет, чем тот, который использовался для регистрации типа сообщения, иначе он не будет работать
Марк Каплун,
@Dhinju Divakaran это не удаляет старый тип записи из БД, который я не использую сейчас.
Фаяз Алам
его работа, убедитесь, что вы даете высокий приоритет этому действию по сравнению с действием, используемым для регистрации типа сообщения.
Аджит Р Наир
1
Стоит отметить, что unregister_post_type()ничего не удаляет из базы данных. Это только предотвращает регистрацию типа сообщения.
Дейв Ромси
Это отлично сработало для меня, но имейте в виду, что вам нужно будет сообщить WordPress об изменениях, повторно сохранив структуру постоянных ссылок на странице «Настройки» -> «Постоянные ссылки». В противном случае страницы с конфликтующими постоянными ссылками не будут работать правильно.
MarkPraschan
7
Это сработало для меня, как сказал Rarst, используя, по возможности, remove_action () .
Как заметил t31os, легко удалить тип записи из глобальной переменной.
Но если вы имеете в виду неосновной тип записи, то было бы лучше найти код, который его регистрирует и отсоединяет remove_action()(если это нормальный код, его нужно подключать, а не запускать напрямую).
register_post_type()это не функция, которая хорошо подходит для подключения. Обычный способ зарегистрировать тип записи - это запустить функцию непосредственно в функции, подключенной к init. Удаление этого действия может иметь нежелательные последствия, так как часто с этой функцией будут удалены другие функции.
Джон П Блох
@ Джон П Блох, да, я знаю об этом. Иногда вы перестраиваете все init, чтобы получить его правильно, в конце концов, это зависит от конкретного кода и его качества /
работоспособности
1
В WordPress версии 4.5 и выше они предоставляют функцию для удаления типа записи (unregister_post_type).
пример
function delete_post_type(){
unregister_post_type('jobs');}
add_action('init','delete_post_type');
unregister_post_type
. См. Отмена регистрации типа записи с использованиемОтветы:
В настоящее время нет функции для отмены регистрации типа записи, однако процесс довольно прост.
Эндрю Нацин предоставил некоторый код на trac, найденный здесь и размещенный ниже.
Отмена регистрации встроенного типа записи будет иметь неизвестные последствия для WordPress, поэтому, пожалуйста, делайте это на свой страх и риск. Отмена регистрации пользовательского типа записей должна быть абсолютно безопасной, но, естественно, не приведет к очистке вашей установки (т. Е. Отмена регистрации типа записей не означает удаление данных из базы данных).
Я могу представить несколько сценариев, где это могло бы потребоваться, но более разумный подход (где это возможно) состоял бы в том, чтобы просто не регистрировать тип сообщения, если он не нужен.
источник
register_post_type()
загрузку на каждой странице (init
), это, вероятно, структура постоянной ссылки (обновите ее, и она исчезнет), и записи в базе данных, которые вы можете удалить делаяDELETE FROM wp_posts WHERE post_type = '[your custom post type]'
.Начиная с WordPress 4.5 для этого есть функция
unregister_post_type
. Пример:-источник
unregister_post_type()
ничего не удаляет из базы данных. Это только предотвращает регистрацию типа сообщения.Это сработало для меня, как сказал Rarst, используя, по возможности, remove_action () .
источник
Как заметил t31os, легко удалить тип записи из глобальной переменной.
Но если вы имеете в виду неосновной тип записи, то было бы лучше найти код, который его регистрирует и отсоединяет
remove_action()
(если это нормальный код, его нужно подключать, а не запускать напрямую).источник
register_post_type()
это не функция, которая хорошо подходит для подключения. Обычный способ зарегистрировать тип записи - это запустить функцию непосредственно в функции, подключенной к init. Удаление этого действия может иметь нежелательные последствия, так как часто с этой функцией будут удалены другие функции.В WordPress версии 4.5 и выше они предоставляют функцию для удаления типа записи (unregister_post_type). пример
Это будет работать определенно.
источник