возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено: 2024-02-03 в теме: Сниппеты, хаки, функции
Запросто с WordPress создание и продвижение сайтов ATs media

Полезные SQL запросы для WordPress, о которых следует знать каждому админу

В общем-то, тема SQL запросов весьма полезна и о ней следует знать, как ни крути, любому админу сайта. Однако, как говорит моя практика, админы чаще предпочитают пользоваться услугами профессионалов в подобных вопросах – работа с Базой данных считаться в их среде весьма опасной: можно легко сломать сайт и пр. Думаю, это предубеждения… главное, как мне кажется, требуется уделить время и изучить вопрос.

 

Предположим, ваш сайт построен на WordPress. Функциональная его часть, скажем так, серверная, это сама cms – файловое ядро. А вот вся информационная часть храниться в Базе Данных: тексты статей, записей, несущие настройки тех же виджетов, шаблона сайта, мета данные и пр. словом, все то, что вы сохраняете через настройки админки.

У вас на сайте много статей, вы их форматировали в редакторе, добавляли в тело статьи ту или иную инфу, к примеру, шорткоды рекламы и пр такое… и однажды приходит время, когда вам необходимо “дозарезу” изменить часть информации во всех этих (или выборочных) статьях, либо изменить какие-то настройки этих статьях, например, у всех у них удалить ненужное произвольное поле… и, так как статей много, сия работа представляется психически муторным делом!

 

В подобных случаях как раз замечательно и запросто могут выручить sql запросы к базе. По статье ниже будет дана значительная часть полезных SQL запросов для WordPress, которые сэкономят значительную массу времени админа:

 


 

Разделы статьи:

 

 

SQL запросы WordPress

 

 

Ниже картинка – интерфейс БД: здесь и следует совершать sql-запросы…

 

 

SQL запросы WordPress

 

 

Для того, чтобы выполнить запрос, можно не заходить напрямую в Базу Данных (PhpMyAdmin = на хостинге), а попробовать выполнить SQL запрос прямо из ядра (или в ядре) сайта, или из админки (подробности ниже).

 

 

файл functions.php

 

 

Ниже дан небольшая сборка кода, которая поможет решить вопрос запроса)

 

 

global $wpdb;

$wpdb->query( "полный_код_запроса: примеры ниже" );

 

 

Отработать этот код возможно в файлах темы: в functions.php и пр. Можно для подобных целей создать плагин (по этой теме)… в общем, где угодно вашей душе, главное этот запрос выполнить.

 

 

Приучите себя перед всякой работой делать не просто всегда, а ВСЕГДА дампы (бэкапы) Базы Данных, чтобы однажды не залиться слезами…

 

 

Если вы обратили внимание, то в данной статье я буду работать с примерами префикаса wp_ – если у вас префикс таблиц в БД отличен – измените его в примерах на свой!!

 

 

когда требуется добавить ту или иную информацию к уже активному шорткоду

 

 

ниже даны несколько sql запросов

 

 

Представленные ниже варианты sql запросов расположим по своеобразному, на мой взгляд, порядку… Скажем так, по важности потребности того или иного варианта. А в финале поста будет запрос, который призван оптимизировать таблицы Базы Данных. Ведь оптимизацией как правило завершаются любые правки БД, завершу этим и эту статью.

 

 

Итак, частенько начинающие разработчики забывают пароль входа в административную панель сайта. А если уже успели установить какие-то опции защиты на сайте – после нескольких попыток входа, доступ блокируется… что делать?

 

…советую изучить соответствующий sql запрос.

 

как сбросить пароль пользователя sql

 

 

Если нет доступа к админке, а пароль восстановить (или сбросить, изменить) необходимо, поступаем так:

 

SQL запрос:

 

 

UPDATE wp_users SET user_pass = MD5('newpass') WHERE user_login = 'admin'

 

 

В цитировании newpass задаем новый пароль, а в admin указываем логин пользователя, у которого нужно изменить pass – пароль.

 

 

В случае когда и логин запамятовали, однако уверены, что вы, как админ, первый юзер сайта, а в этом случае всегда ID равен 1.

 

Идентифицировать себя (или любого юзера) возможно, указав требуемый ID – WHERE ID=1 как показано ниже:

 

 

UPDATE wp_users SET user_pass = MD5('newpass') WHERE ID=1;

 

 

MD5, это 128-битный алгоритм хеширования. Иными словами, возможно, кому-то будет понятнее – шифрование, засекречивание…

 

Примерно так выглядит:

 

 

MD5('newpass') = e6053eb8d35e02ae40beeeacef203c1a

 

 

…добавлю некоторую ремарку: я, например, меняю пароль прямо в админке PhpMyAdmin. Захожу в БД, перехожу к требуемому пользователю, тюкаю “изменить” и в редакторе в разделе pass указываю новый пароль (он автоматом будет хеширован)…

 

 

обязательно указываем MD5:

 

 

как сбросить пароль пользователя

 

 

как изменить логин пользователя

 

 

Ядро WordPress, при создании сайта, создает указанный логин пользователя, который потом из админки невозможно изменить. Однако, для уверенных админов ничего нет невозможного! логин легко меняется через Базу данных напрямую, либо же таким SQL запросом:

 

 

UPDATE wp_users SET user_login = 'news' WHERE user_login = 'admin'

 

 

Замените на нужное в цитировании: новый логин news, – старый логин admin который заменяем.

 

 

sql запросы по теме комментарии

 

 

Управляем настройками правил комментирования на сайте.

 

SQL запросы могут быть такими:

 

закрываем комментирование во всех записях:

 

 

UPDATE wp_posts SET comment_status = 'closed'

 

 

меняем данные в строке:

 

  • закрываем: closed
  • открываем: open
  • разрешаем комментировать только зарегистрированным пользователям: registered_only

 

 

спам комментариев

 

Если в разделе СПАМ набралось много комментов – можно, конечно, очистить весе это богатство через админку, однако, зачем тогда умные люди изобрели SQL запрос)

 

 

DELETE FROM wp_comments WHERE comment_approved = 'spam'

 

 

  • удаляем неодобренные комментарии – укажем вместо spam 0 (ноль)

 

 

А если необходимо удалить URL у всех комментаторов разом на всем сайте, поступим так:

 

 

UPDATE wp_comments SET comment_author_url=''

 

 

закрываем комментирование в старых постах – укажем дату

 

…возможность оставлять комментарии на давно написанные статьи закрываем таким SQL запросом:

 

 

UPDATE wp_posts SET comment_status = 'closed'
WHERE post_date < '2020-01-01' AND post_status = 'publish'

 

 

  • дата после которой комменты закрыты: 2020-01-01

 

 

удалим комментарии с вредными url

 

Обычно подобные урлы удаляют что называется по маске… к примеру, удалим ссылки, в которых в сочетании доменного имени есть igra:

 

DELETE a,b
FROM wp_comments a
LEFT JOIN wp_commentmeta b ON ( a.comment_ID = b.comment_id )
WHERE
a.comment_author_url LIKE '%igra%'

 

если нужно изменить сайт комментатора:

 

В случае, когда требуется изменить ссылку на сайт одного из комментаторов (притом, что коммов много) используем такой запрос:

 

 

UPDATE wp_comments SET comment_author_url = 'http://example.com'
WHERE comment_author = 'User'
AND comment_author_email = 'user@gmail.com'

 

 

  • укажем новый url для комментатора: example.com
  • ник комментатора: User
  • эл/п: user@gmail.com

 

 

Более глобально возможно поступить так запросом:

 

 

UPDATE wp_comments
SET comment_author_url = REPLACE( comment_author_url, 'old-example.com', 'new-example.com' )

 

 

Все совпадения с old-example.com будут заменены на: new-example.com

 

 

получаем E-mail комментаторов

 

Если необходимо получить все эмейлы комментаторов (уникальные) выполняем такой SQL-запрос:

 

 

SELECT DISTINCT comment_author_email FROM wp_comments

 

 

Останется только скопировать данные email…

 

 

смена домена запросом sql

 

…изменим домен в опциях таблицы wp_options

 

При смене доменного имени обязательно потребуется заменить старые данные на новые в БД. Работаем таким запросом:

 

 

UPDATE wp_options SET option_value = 'http://example.com/'
WHERE option_name = 'home' OR option_name = 'siteurl'

 

 

Внимание! данный запрос сменит значения полей home и siteurl – меняем example.com на НОВЫЙ домен…

 

 

смена домена запросом sql

 

 

Однако, после манипуляции описанной выше, необходимо сменить домен во всех ссылках в записях сайта! Как это сделать – следующий раздел:

 

 

исправляем домен в записях

 

работаем таким запросом:

 

 

UPDATE wp_posts
SET post_content = REPLACE (post_content, 'http://old-example.com', 'http://new-example.com')

 

 

old-example.com и new-example.com старый и новый домены…

 

 

подобным образом можно изменить любое словосочетание встречающееся в записях: к примеру, “запросто с Вордпресс” на “запросто с WordPress”, об этом следующая глава и, более того, можно указать ссылку с анкором:

 

 

любителям “легких путей” возможно воспользоваться одним из плагинов для подобных целей смены текста в Б.Д…

 

 

заменим текстовую фразу или изменим атрибуты (это тоже текст) ссылок в записях

 

 

Добавим атрибут target="blank" (чтобы ссылка открывалась в новом окне) к ссылкам с атрибутом rel="nofollow" – с nofollow обычно ссылки на сторонние ресурсы:

 

 

UPDATE wp_posts SET post_content = REPLACE (post_content, 'rel="nofollow"', 'target="blank" rel="nofollow"')

 

 

А запросом показанным ниже как раз и заменим текст в постах, к примеру, с “WordPress” на “запросто с WordPress” ЛИБО сделаем текст ССЫЛКОЙ:

 

 

UPDATE wp_posts SET post_content = REPLACE (post_content, ' запросто с WordPress ', '<a href="http://example.com/хорошая-статья">запросто с WordPress</a> ')

 

 

заменяем доменное имя в произвольных полях

 

Ниже запрос по таблице wp_postmeta в которой хранятся данные по произвольным полям (по таблице постмета есть и еще главы ниже):

 

 

UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, 'http://old-example.com','http://new-example.com')

 

 

по смене домена аналогичный запрос показан ниже:

 

 

редактируем GUID – заменяем имя домена

 

 

Заменяем данные у всех записей в поле guid таблица wp_posts.

 

 

UPDATE wp_posts
SET guid = REPLACE (guid, 'http://www.oldblog.ru', 'http://www.newblog.ru')

 

 

получим все произвольные поля, если значения пустые

 

 

Создать произвольное поле, не задав ему никакого значения, из админки не получится!..

 

При всем при том такие пустые поля запросто могут оставить многие плагины (кои не имеют привычки подчищать все за собой!)… А потому весьма нелишне справиться в Б.Д. а нет ли осиротелых полей!? SQL запрос таков:

 

 

SELECT *
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

 

 

Запрос определит и выведет все пустые произвольные поля. А вам останется решить, что с этим богатством делать…

 

 

произвольные поля в wp_postmeta

 

 

Если требуется удалить произвольные поля (ПУСТЫЕ /осиротелые/ произвольные поля). Обычно это требуется после удаления некоторых плагинов, надобности в которых больше не стало:

 

Абсолютно все произвольные поля с именем “meta_name” возможно удалить SQL запросом так:

 

 

DELETE pm FROM wp_postmeta pm WHERE pm.meta_key = 'meta_name'

 

 

Если название meta_name на кириллице, – кодировка файла, из которого отработает SQL запрос, должна соответствовать кодировке документации (страниц/записей) на сайте – как правило, это UTF-8 без BOM.

 

 

работа с авторами сайта меняем имена и пр

 

 

Чтобы поменять имя АВТОРА статьи (новый автор должен быть зарегистрирован на сайте) выполним тую SQL команду:

 

 

UPDATE wp_posts SET post_author=nickname1 WHERE post_author=nickname2

 

 

Соответственно:

 

  • nickname1 – ID нового пользователя
  • nickname2 – ID старого

 

об ID пользователей можно справиться в той же админке…

 

 

удаляем ревизии (редакции) записей sql

 

 

WordPress по умолчанию создает ревизии записей (шаги редактирования статей /попросту черновики/ – их может быть бесконечно много): все это засоряет базу данных! А проку от этих ревизий мало!..

 

Если у вас на сайте ревизии включены, то я рекомендую их отключить, а еще лучше – ограничить число создания ревизий, например на 2 ревизии…

 

 

к слову, вариант:

 

 

define('AUTOSAVE_INTERVAL', 120 ); // для wp-config.php - увеличиваем интервал автосохранения копий записей

 

 

выявляем и удаляем ревизии записей таким ловким запросом в phpMyAdmin

 

чистим таксономии (связь ревизии с таксономией (если есть):

 

 

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision');

 

 

чистим метаполя (ревизии связанные с метаПолями, если есть):

 

 

DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision');

 

 

удалим все ревизии напрочь:

 

 

DELETE FROM wp_posts WHERE post_type = 'revision';

 

 

…запросом махом удалим все редакции записей (автосохранения).

 

 

деактивация всех плагинов

 

 

Черт побери !! но бывают случаи, когда на сайте требуется деактивировать разом все плагины (случаев много…)..!

 

…а SQL запрос один такой:

 

 

UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins'

 

 

Ну и в заключение данного моего поста весьма важное действо!

 

 

оптимизируем таблицы Базы Данных

 

 

Веря от времени желательно оптимизировать таблицы БД – все это полезно для ускорения работы сайта. К тому же желательно оптимизировать таблицы и после наших работ по sql запросам, если вы что-то меняли по примерам из статьи…

 

 

  • очистить неиспользуемые индексы
  • дефрагментировать файлы данных…

 

 

выполним такой запрос:

 

 

OPTIMIZE TABLE `wp_terms` , `wp_term_taxonomy` , `wp_term_relationships`;

 

 

 


На этом занавес представления опускается…
…на рампы пыль печальная ложится…

 

 

 

Создание… продвижение сайтов; помощь по сайту, настройки, сопровождение и пр. – студия ATs media запросто с WordPress

 

 

 



...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !



Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...





Нажатия на кнопочки определяют Ваше высокое гражданское сознание

Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©