Intereting Posts
Отображение условий, основанных на сообщениях цикла? Почему эта функция не работает для установки базы данных при активации плагина Если я удалю базу категорий из своих URL-адресов, насколько сложно будет откат? Показать только сообщения автора в панели инструментов панели всех сообщений Запрос сообщения, включающего две таксономии с использованием API JSON Rest CPT с целевой страницей вместо архива – Url Rewrite? Настройка URL-адресов страниц входа в систему WordPress и регистрации? URL-адрес на лицевой стороне для восстановления сообщения / страницы Удаление ассоциированных медиа на странице / Удаление сообщения Таксономия переписывает разбиение на страницы 404 WordPress WooCommerce: как разрешить только определенным клиентам оплатить чек? Предупреждение: call_user_func_array () Плагин для приложения / входной формы Как проверить, активен ли плагин (WooCommerce)? Есть ли способ запланировать изменения на странице?

Предотвращение удаления блогов

Я пытаюсь предотвратить удаление блогов в WordPress Multisite. Уже есть плагин, который делает это, но использует wp_die() как решение, которое по моему сценарию не работает.

При выборе нескольких блогов для удаления в wp-admin / network я хочу, чтобы WordPress продолжал работать и не умирал, пытаясь удалить первый в цикле.

Я пробовал разрешить это как mu-plugin:

 if(!$argv[1]) { add_action( 'delete_blog', 'prevent_blog_delete_wpse', 1, 2 ); function prevent_blog_delete_wpse($blog_id, $drop = FALSE) { global $wpdb; $wpdb->query("update wp_blogs set deleted = 1 where blog_id = '".$blog_id."'"); return FALSE; } } 

Поэтому, если удаление, вызванное через браузер, а не CLI, оно просто пометит блог как удаленный. К сожалению, это не сработает. Я также попытался изменить приоритет от 1 до 99, он все еще не работает.

Причина этого решения в том, что у меня есть отдельный cronjob, который делает фактическое удаление, но сначала делает tarball таблиц sql и файлов blogs.dir в случае, если мне нужно восстановить.

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

Solutions Collecting From Web of "Предотвращение удаления блогов"

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

Если вы думаете об этом из более отдаленного логического восприятия, не имеет никакого смысла, что API удаления блога не удалит блог. Если вам нужно что-то вроде «очереди для удаления», вам просто нужно написать свою собственную функцию и заменить соответствующие ссылки удаления в админе со ссылками на вашу операцию.