Intereting Posts
Есть ли фильтр для редактирования html user-edit.php Невозможно переопределить правила css по умолчанию для плагина Создание различных элементов галереи галереи границ Ограничить доступ к сообщению после того, как он помечен как данный статус Какие разрешения требуется wp-content / uploads? Перечислите дочерние термины, если родитель, но ничего не показывайте детям wp_email не отправляет почту в субдомену из нескольких доменов Изменение порядка виджетов панели инструментов Заменить css с использованием отрицательных условных тегов Утверждение нового пользователя Как переопределить часть основного цикла в моей дочерней теме? require_once не работает Перенаправить пользователей на определенную страницу? Отключить oEmbed для одного короткого кода или, по крайней мере, всех внутренних ссылок Как сортировать любимые плагины по алфавиту?

Как очистить пользовательский стол WordPress Таблица базы данных

У меня около 2000 пользовательских сообщений. И 7 регулярных страниц wp. Я хочу удалить все эти пользовательские сообщения без создания страниц. Я думал, что самый простой способ – очистить таблицу пользовательских сообщений, но я не знаю, как это сделать. Я знаком с операциями с БД, но я не знаю схемы сообщений wp, поэтому понятия не имею, где находятся эти пользовательские сообщения. Я не против использовать плагин для этого.

Inshort: – Просто хочу удалить все пользовательские сообщения и их данные.

Я использовал собственный шаблон страницы, чтобы удалить все сообщения из базы данных wordpress. Каждый раз, когда я заходил на эту страницу, он удалял бы 300 сообщений. Код для шаблона страницы:

<?php // Get 300 custom post types pages, set the number higher if is not slow. $mycustomposts = get_posts( array( 'post_type' => 'movies', 'numberposts' => 300)); echo '<pre>'; print_r($mycustomposts); echo '</pre>'; foreach( $mycustomposts as $mypost ) { // Delete's each post. wp_delete_post( $mypost->ID, true); // Set to False if you want to send them to Trash. } echo '<h1 style=:"color:red;"> DELETED! DELETED! DELETED! DELETED! </h1>'; // 300 custom post types are being deleted everytime you refresh the page.?> 

Я знаю, что это старый вопрос, но, учитывая, что он появился первым, когда Googling этот вопрос, я решил, что он должен иметь решение прилагается.

Чтобы удалить все сообщения определенного типа, зайдите в базу данных своего сайта, используя phpMyAdmin, командную строку или все, что вы предпочитаете. Затем выполните следующие команды:

 DELETE FROM wp_posts WHERE post_type='post_type'; DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts); DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT id FROM wp_posts); 

Первая строка удаляет все сообщения с этим post_type из wp_posts .

Второй затем удаляет любые метаданные сообщения из wp_postmeta которые больше не привязаны к сообщению.

Третья строка удаляет и теги или категории из wp_term_relationships которые были привязаны к типу post. Эта строка должна быть опущена, если вы намереваетесь в будущем создавать больше записей данного post_type .

Сообщения, страницы и пользовательские типы сообщений хранятся в одной и той же таблице (обычно wp_posts если вы не настроили собственный префикс).

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

Да, это займет некоторое время. Но помните, что сообщения (и страницы и пользовательские сообщения) также хранят данные в таблице wp_postmeta . Если вы удалите их через пользовательский интерфейс администратора, WordPress также очистит мета-таблицу. Вы сэкономите массу неприятностей, если просто делаете что-то через интерфейс, а не пытаетесь сделать это вручную через БД.

Это удалит сообщение, метаданные сообщения и любые термины, используемые в сообщении. Он не будет удалять сами термины. Сценарий PHP похож на этот, но медленнее.

Замените {{ваш CPT}} идентификатором для своего настраиваемого типа сообщения и поместите его в свою базу данных на phpmyadmin или mysql.

 DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = '{{your CPT}}'; 

К сожалению, он не удалит связанные записи мультимедиа. Было бы опасно делать это с использованием sql или даже php, так как вы могли бы удалить записи мультимедиа, связанные с несколькими сообщениями.

Всего наилучшего.