Intereting Posts

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

Я пытаюсь предотвратить удаление блогов в 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 удаления блога не удалит блог. Если вам нужно что-то вроде «очереди для удаления», вам просто нужно написать свою собственную функцию и заменить соответствующие ссылки удаления в админе со ссылками на вашу операцию.