Редактирование пользовательских типов сообщений

Кто-нибудь знает способ отмены регистрации пользовательских типов сообщений?

Есть ли эквивалент register_post_type () ?

38 голосов | спросил anu 9 22010vEurope/Moscow11bEurope/MoscowTue, 09 Nov 2010 16:33:18 +0300 2010, 16:33:18

5 ответов


34

В настоящее время нет функции для отмены регистрации типа сообщения, однако процесс довольно прост.

Эндрю Насин предоставил код на trac, найден здесь и опубликован ниже.

  if (! function_exists ('unregister_post_type')):
function unregister_post_type ($ post_type) {
    глобальные $ wp_post_types;
    if (isset ($ wp_post_types [$ post_type])) {
        unset ($ wp_post_types [$ post_type]);
        return true;
    }
    return false;
}
ENDIF;
 

Отмена регистрации встроенного типа сообщений будет иметь неизвестные последствия для WordPress, поэтому, пожалуйста, сделайте это на свой страх и риск. Отмена регистрации настраиваемого типа сообщения должна быть абсолютно безопасной, но, естественно, не будет очищать вашу установку (т. Е. Отменить регистрацию типа сообщения не означает удаление данных из базы данных).

Я могу представить несколько сценариев, где это может потребоваться, но более разумный подход (где это возможно) заключается в том, чтобы просто не регистрировать тип сообщения в первую очередь, если он не нужен.

ответил t31os 9 22010vEurope/Moscow11bEurope/MoscowTue, 09 Nov 2010 16:51:12 +0300 2010, 16:51:12
24

Как и в WordPress 4.5, есть функция для этого, unregister_post_type . Пример: -

  function delete_post_type () {
    unregister_post_type ('blocks');
}
add_action ( 'инициализации', 'delete_post_type');
 
ответил Dhinju Divakaran 12 J000000Tuesday16 2016, 07:57:28
6

Это сработало для меня, как сказал Рарст, используя remove_action () , если это возможно.

  add_action ('after_setup_theme', 'remove_foundation_options', 100);

function remove_foundation_options () {
    remove_action ('init', 'Orbit');
}
 
ответил Vayu 19 Jpm1000000pmThu, 19 Jan 2012 19:09:08 +040012 2012, 19:09:08
5

Как отмечалось в t31os, легко удалить тип публикации из глобальной переменной.

Но если вы имеете в виду неосновный тип сообщения, тогда было бы лучше искать код, который регистрирует его и отцепляться с помощью remove_action () (если это приличный код, он должен быть подключен, а не запускаться напрямую ).

ответил Rarst 9 22010vEurope/Moscow11bEurope/MoscowTue, 09 Nov 2010 16:55:35 +0300 2010, 16:55:35
2

В WordPress версии 4.5 и выше они предоставляют функцию для удаления типа сообщения (unregister_post_type). <Сильный> Пример

  function delete_post_type () {
unregister_post_type ('jobs');
}
add_action ( 'инициализации', 'delete_post_type');
 

Он будет работать определенно.

ответил Nipun Tyagi 18 J000000Tuesday17 2017, 07:41:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132