Я ищу безопасный и быстрый способ удаления всех сообщений одного типа сообщений. Использование get_posts()
и wp_delete_post()
для каждого возвращенного поста не работает; это недостаточно быстро из-за большого количества запросов к базе данных (ошибка тайм-аута).
Предпочтительно, я ищу один запрос к базе данных, чтобы удалить все сообщения, которые имеют пользовательский тип сообщения. Какие-нибудь мысли?
custom-post-types
database
performance
Маркус Маклин
источник
источник
wpdb
класс тогда. Предпочтительный метод и «путь WP» для работы напрямую с БД. Дайте нам знать, если вам нужна помощь с этим запросом. Я могу опубликовать полный ответ позже, если необходимо codex.wordpress.org/Class_Reference/wpdb'fields' => 'ids',
вget_posts
получить только идентификатор поста. Это все, что вам нужно, и это значительно ускорит ваш запросwp_cron()
Ответы:
Вы можете удалить все сообщения через
$wpdb
или используйте этот запрос, замените его {{ваш CPT}} на ваш пользовательский тип сообщения
источник
wp_term_taxonomy
. Похоже, что функция, которую вы ищете для обновления счетчика, определенаwp_update_term_count($terms, $taxonomy, false)
илиwp_update_term_count_now($terms, $taxonomy)
определена вwp-includes/taxonomy.php
.Вы можете удалить все сообщения пользовательского типа сообщения различными способами, но здесь я покажу вам, как это сделать без использования SQL-запроса. Вот, например, наш тип сообщения является продуктом
Смотрите полный учебник Ссылка здесь
источник
get_posts()
иwp_delete_post()
для каждого возвращенного сообщения не работает; оно недостаточно быстрое из-за большого количества запросов к базе данных (ошибка тайм-аута)». Вы используете две функции, которые он не хочет использовать.