#php #mysql #sql #database #wordpress
#php #mysql #sql #База данных #wordpress
Вопрос:
Я удалил все комментарии со своего сайта WordPress с помощью команд SQL, оба wp_comments amp; wp_commentmeta пусты.
Это удалило все комментарии, но проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что он по-прежнему отображает старый номер комментария, используя: <?php comments_number('0 Comments','1 Comment','% Comments'); ?>
Например, в сообщении все равно будет отображаться: «4 комментария», даже если эти комментарии не существуют.
Есть мысли о том, что сделать, чтобы разобраться в этом?
Приветствуется любая помощь.
С уважением.
Ответ №1:
Вам также необходимо сбросить значение поля comment_count в wp_posts на ‘0’ — оно сохраняет его в этой таблице, поэтому ему не нужно каждый раз выполнять подсчеты из таблиц комментариев….
РЕДАКТИРОВАТЬ (на основе комментария):
Вы можете запустить очень простой запрос:
UPDATE wp_posts
set comment_count = 0
Будьте осторожны 🙂 здесь нет предложения where (фильтра), поэтому после того, как вы это сделаете, возврата назад не будет. Он обновит все ваши сообщения, чтобы количество комментариев было равно ‘0’. Если вы можете сделать резервную копию своей базы данных, это было бы хорошо.
Кроме того, в зависимости от того, какой инструмент вы используете для выполнения запроса, вам может потребоваться указать имя базы данных:
UPDATE yourdbname.wp_posts
set comment_count = 0
Комментарии:
1. Спасибо за быстрый ответ, не думаю, что вы знакомы с SQL? Было бы здорово, если бы вы знали, как массово это сделать.
Ответ №2:
Я не советую удалять напрямую из базы данных. Поскольку данные могут иметь зависимости, в конечном итоге могут появиться бесхозные записи. Возможно, это был ваш случай.
В следующий раз, если кто-то намеревается удалить комментарий из записи с идентификатором записи (добавьте его в ADDPOSTID
), сохраните приведенный ниже скрипт и добавьте PHP-файл в корень вашего веб-сайта WordPress, войдите в систему как администратор и вызовите файл непосредственно в вашем браузере:
<?php
require('./wp-load.php');
if ( current_user_can( 'manage_options' ) ) {
if ( $comments = get_comments( array( 'post_id' => ADDPOSTID ) ) ) {
foreach ( $comments as $comment ) {
echo '<p>Deleting comment '.$comment->comment_ID.'</p>';
wp_delete_comment( $comment->comment_ID, true );
}
} else {
echo '<p>No comments found</p>';
}
} else {
echo '<p>Not allowed</p>';
}
Это также может помочь решить текущую проблему.