Intereting Posts
Как я могу загружать сообщения, начиная с текущего сообщения и включая его? Интеграция с корзиной покупок – опыт использования популярных решений для электронной коммерции Всплывающее окно JW Player с s2member & amazon s3 / cloudfront Признание функций WP в обработчике представления формы Запросить пользователей по логину, мета и роли Свяжите два разных сообщения, используя post_id в post meta Программно изменяющаяся постоянная ссылка, когда публикуется одинаковый тип публикации Содержание с коротким кодом Помощь с Post Meta Создать страницу из прикрепленных файлов Что приводит к ухудшению качества изображения? Как мы можем знать, что мы не на странице редактирования Как добавить новые параметры редактирования в редактор изображений? Добавить поле пользователя по умолчанию для проверки WooCommerce Список сообщений, основанных на первом письме сообщений

Как удалить пользовательские правила таксономии, связанные с плагинами, когда плагин удален?

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

То, что я написал в основном, работает, но функция get_terms возвращает ошибку 'invalid_taxonomy'. Заглянув в нее дальше, я обнаружил, что глобальные $ wp_taxonomies не распознают пользовательские таксономии, созданные плагином во время процесса uninstall.php.

Поэтому мой вопрос: как удалить пользовательские термины таксономии при удалении плагина?

Вот мой код: http://pastebin.com/geH1wzRC

Бонусные баллы, если вы можете сказать мне, как избежать загрузки этого класса дважды, если два плагина содержат его. Я попробовал просто обернуть класс в if( !class_exists( 'WP_Plugin_Janitor' ) ) { ... } но тогда класс никогда не загружался.

EDIT Мне удалось предотвратить загрузку класса несколько раз, помещая класс в отдельный файл и завершая оператор include_once в if( !class_exists( statement.

Заранее спасибо!

Вы должны использовать register_deactivation_hook и / или register_uninstall_hooks . Возможно, поэтому некоторые функции не работают. Я должен был бы сделать некоторое тестирование, чтобы убедиться, но загружаю ваш метод напрямую, как WP_Plugin_Janitor::cleanup( $opt, $cpt, $tax ); кажется довольно хорошим способом пропустить некоторые из последовательности загрузки WordPress или запустить работу не по порядку.

Что касается загрузки класса дважды, у меня есть ответ, но это другой вопрос, а не специфический для WordPress. 🙂