Вордпресс и некоторые полезные правки для удобной работы c CMS
Иконка для сайта Чтобы вставить кусок кода в качестве примера Закрыть от индексации внешние ссылки Стрелка вверх на странице сайта Подключаем bootstrap к wordpress Массовое создание страниц в Вордпресс Дополнительные кнопки в редактор Вордпресс Удаление ревизий без плагина Очистка WordPress от ревизий Массовое редактирование контента Удаление хвостов плагина WP e-Commerce Поиск пустых страниц Фон в виде картинки Почему сайт не в топе Изменение размера текста на странице Редирект 301 при изменении url страницы Поскольку Вордпресс убирает форматирование Стили для кнопки вызова всплывающей формы обратной связи на сайте Отключение редактирования тем и плагинов Размер шрифта на сайте Как скрыть содержимое под спойлер используя HTML5 Код ID в админке
(Полезные плагины
1. Force Regenerate Thumbnails Удалить и принудительно пересоздать миниатюры если в архиве есть картинки но в медиабибилиотеке не отображаются.
2. Media Sync плагин для сканирования каталога загрузок и переноса файлов в медиатеку.)
Чтобы вставить кусок кода в качестве примера
в статью можно использовать плагин SyntaxHighlighter.
Популярный плагин с возможностью нумерации строк и подсветки частей кода. Результат выводится в виде окна с прокруткой
Пример:
$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_i
Закрыть от индексации внешние ссылки
на сайте в том числе и счетчики
a rel=‘nofollow’ target=‘_blank’ href=’ssilka’
Стрелка вверх на странице сайта
Добавить в конец файла «functions.php» код, загрузить на сайт нужную картинку и прописать ее адрес в коде
/*Стрелка вверх*/
add_action( 'wp_footer', 'back_to_top' );
function back_to_top() {
echo '<img id="totop" src="/wp-content/uploads/2021/03/strelka-50.png" alt="back to top" />';
}
add_action( 'wp_head', 'back_to_top_style' );
function back_to_top_style() {
echo '<style type="text/css">
#totop {
cursor:pointer;
position: fixed;
right: 30px;
bottom: 100px;
margin-bottom: 100px;
display: none;
outline: none;
}
</style>';
}
add_action( 'wp_footer', 'back_to_top_script' );
function back_to_top_script() {
echo '<script type="text/javascript">
jQuery(document).ready(function($){
$(window).scroll(function () {
if ( $(this).scrollTop() > 600 )
$("#totop").fadeIn();
else
$("#totop").fadeOut();
});
$("#totop").click(function () {
$("body,html").animate({ scrollTop: 0 }, 800 );
return false;
});
});
</script>';
}
Подключаем bootstrap к wordpress
— Подключение jQuery в HTML
перед закрывающим тегом head необходимо разместить такую строку:
<script src="https://code.jquery.com/jquery-3.0.1.min.js"></script>
Можно включить в работу jQuery с CDN Google. Вместо вышеприведённой строчки внести запись:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.1/jquery.min.js"></script>
(взято с сайта https://hoboweb.ru/kak-podkljuchit-biblioteku-jquery/
- Скачиваем библиотеку bootstrap на локальный компьютер с официального сайта
- Распаковываем содержимое архива в свою тему «/wp-content/themes/ваша_тема/bootstrap/
- Подключаем bootstrap в header.php перед
-
<!--?php wp_head(); ?-->
<link href="/wp-content/themes/НАЗВАНИЕ_ТЕМЫ/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <script src="/wp-content/themes/НАЗВАНИЕ_ТЕМЫ/bootstrap/js/bootstrap.min.js"></script>
Материал с сайта https://allwordpress.ru/kak-podklyuchit-bootstrap-k-wordpress-prosto/
Массовое создание страниц в Вордпресс
Делается с помощью плагинов. Один из таких плагинов Bulk Page Creator. Есть возможность создание одной или нескольких страниц, указать родительскую категорию, запись или страницу. Если необходимо создать несколько страниц в диалоговое окошко необходимо внести запись заголовков страниц через запятую без пропусков.
Дополнительные кнопки в редактор Вордпресс
//дополнительные кнопки в текстовом редакторе
add_action('admin_footer', 'eg_quicktags');
function eg_quicktags() {
?>
<script>
jQuery(document).ready(function(){
if(typeof(QTags) !== 'undefined') {
QTags.addButton( 'H1', 'H1', '<h1>', '</h1>');
QTags.addButton( 'H2', 'H2', '<h2>', '</h2>');
QTags.addButton( 'H3', 'H3', '<h3>', '</h3>');
QTags.addButton( 'H4', 'H4', '<h4>', '</h4>');
QTags.addButton( 'H5', 'H5', '<h5>', '</h5>');
QTags.addButton( 'Info', 'Инфа', '<div class="info">', '</div>');
QTags.addButton( 'Success', 'Успех', '<div class="success">', '</div>');
QTags.addButton( 'Warning', 'Внимание', '<div class="warning">', '</div>');
QTags.addButton( 'div class="edalink" style="text-align: left;"', 'div class="edalink" style="text-align: left;"', '<div class="edalink" style="text-align: left;">', '</div>');
QTags.addButton( ' target="_blank" rel="noopener', ' target="_blank" rel="noopener', ' target="_blank" rel="noopener>', '');
QTags.addButton( 'div', 'div', '<div>', '</div>');
QTags.addButton( 'zoom-effect', 'zoom-effect', 'zoom-effect', '');
QTags.addButton( 'hidelink', 'hidelink', '', '' );
QTags.addButton( '<a href="#">', '<a href="#">', '<a href="#">', '' );
QTags.addButton( '</a>', '</a>', '</a>', '' );
QTags.addButton( '<a id=""></a>', '<a id=""></a>', '<a id=""></a>', '' );
QTags.addButton( 'id=""', 'id=""', 'id=""', '' );
QTags.addButton( 'Marker', 'Маркер', '<mark>', '</mark>');
QTags.addButton( 'php', 'php', '[php]', '[/php]');}
});
</script>
<?php
}
//еще дополнительные кнопки в текстовом редакторе
function add_more_buttons($buttons) {
$buttons[] = 'fontselect'; // Семейство шрифтов
$buttons[] = 'fontsizeselect'; // Размеры шрифтов
$buttons[] = 'styleselect'; // Форматы (заголовки, строки, блоки, выравнивание)
$buttons[] = 'backcolor'; // Цвет фона
$buttons[] = 'newdocument'; // Новый документ
$buttons[] = 'cut'; // Вырезать
$buttons[] = 'copy'; // Копировать
$buttons[] = 'paste'; // Вставить
$buttons[] = 'removeformat'; // Очистить форматирование
return $buttons;
}
add_filter("mce_buttons_3", "add_more_buttons");
Удаление ревизий без плагина
В панели администрирования хостинга есть утилита phpMyAdmin для работы с базой данных.
Открываем phpMyAdmin переходим на вкладку SQL и вписываем следующие строки
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%'); DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%'); DELETE FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%';
Нажимаем вперед
Очистка WordPress от ревизий
В панели администрирования хостинга есть утилита phpMyAdmin для работы с базой данных.
Открываем phpMyAdmin переходим на вкладку SQL и вписываем следующую строку
DELETE FROM 'wp_posts' WHERE post_type='revision';
Массовое редактирование контента на страницах WordPress
В панели администрирования хостинга есть утилита phpMyAdmin для работы с базой данных.
Открываем phpMyAdmin переходим на вкладку SQL и вписываем следующую строку для редактирования содержимого страницы
UPDATE wp_posts SET post_content = REPLACE (post_content, 'Старый текст', 'Новый текст');
Нажимаем вперед
Редактирование названий страниц
UPDATE wp_posts SET post_title = REPLACE(post_title, 'старое название', 'новое название');
Замена домена в ссылках
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://старый-сайт.ru', 'http://новый-сайт.ru'); UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://старый-сайт.ru', 'http://новый-сайт.ru'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://старый-сайт.ru', 'http://новый-сайт.ru');
Замена протокола с HTTP на HTTPS
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://', 'https://'); UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://', 'https://'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://', 'https://');
Изменение URL страниц делаем в два этапа
1. Сначала изменить URL (slug) страниц целиком или часть:
UPDATE wp_posts SET post_name = REPLACE(post_name, '-старый', '-новый');
2. Затем обновляем ссылки в контенте
UPDATE wp_posts SET post_content = REPLACE(post_content, '-старая/', '-новая/');
3. Дополнительно обновить ссылки в метаполях, если нужно
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '-старая/', '-новая/');
Изменение формата записи вверху страницы
Для MySQL 5.7 и ниже (без REGEXP_REPLACE):
1. Простое заменяющее обновление (если формат строго одинаковый)
UPDATE wp_posts
SET post_content = REPLACE(
post_content,
'<span style="font-size: 14pt;"><strong>',
'<p class="standard-title" style="font-weight:bold;font-size:14pt;margin-bottom:20px;">'
)
WHERE
post_type = 'page'
AND post_content LIKE '%<span style="font-size: 14pt;"><strong>%';
UPDATE wp_posts
SET post_content = REPLACE(
post_content,
'</strong></span>',
'</p>'
)
WHERE
post_type = 'page'
AND post_content LIKE '%</strong></span>%';
Добавление копий заголовков на страницы где их нет
Добавление заголовков на страницы, где их нет
Запрос, чтобы добавить стандартные заголовки на страницы без ручных или автоматических заголовков:
UPDATE wp_posts
SET post_content = CONCAT(
'<p class="standard-title" style="font-weight:bold;font-size:14pt;margin-bottom:20px;">',
post_title,
'</p>',
post_content
)
WHERE
post_type = 'page'
AND post_status = 'publish'
AND post_content NOT LIKE '%<p class="standard-title"%>%'
AND post_content NOT LIKE '%<span style="font-size: 14pt;"><strong>%'
AND post_content NOT LIKE CONCAT('%', post_title, '%')
Этот запрос ищет слово в заголовках и основном содержимом страниц. Запросы совместимы с MySQL 5.7 и ниже.
SELECT ID, post_title, post_name
FROM wp_posts
WHERE post_type = 'page'
AND post_status = 'publish'
AND LOCATE('primer', post_content) > 0;
Основной UPDATE запрос для удаления найденных слов
UPDATE wp_posts
SET post_content = REPLACE(post_content, '[geografiya]', '')
WHERE
post_type = 'page'
AND post_status = 'publish'
AND LOCATE('primer', post_content) > 0;
Открепить картинки от страницы вложения (как вариант, чтобы избежать дублей заголовков и описаний)
Сначало проверяем количество: SELECT COUNT(*) FROM wp_posts AS a JOIN wp_posts AS p ON a.post_parent = p.ID WHERE a.post_type = 'attachment' AND p.post_type = 'page';
Или
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'attachment' AND post_parent IN (SELECT ID FROM wp_posts WHERE post_type = 'page');
Если работаете с записями то page меняем на post
Затем выполняем SQL-запрос для открепления изображений от страниц:
UPDATE wp_posts AS a JOIN wp_posts AS p ON a.post_parent = p.ID SET a.post_parent = 0 WHERE a.post_type = 'attachment' AND p.post_type = 'page';
SQL-запросы для заполнения пустых описаний изображений:
1. Заполнить основное описание (post_content): UPDATE wp_posts SET post_content = 'Старая почтовая открытка с изображением' WHERE post_type = 'attachment' AND (post_content = '' OR post_content IS NULL); 2. Заполнить краткое описание (подпись)(post_excerpt): UPDATE wp_posts SET post_excerpt = 'Старая почтовая открытка' WHERE post_type = 'attachment' AND (post_excerpt = '' OR post_excerpt IS NULL); 3. Проверить результат: SELECT ID, post_title, post_content, post_excerpt FROM wp_posts WHERE post_type = 'attachment' AND (post_content LIKE '%открыт%' OR post_excerpt LIKE '%открыт%') LIMIT 10;
Чтобы заполнить пустые alt атрибуты для изображений, нужно
1. Проверим, есть ли записи с _wp_attachment_image_alt: SELECT COUNT(*) as total_alt_records FROM wp_postmeta WHERE meta_key = '_wp_attachment_image_alt'; 2. Найдем все вложения (открытки), у которых нет alt текста: SELECT p.ID, p.post_title FROM wp_posts p LEFT JOIN wp_postmeta pm ON (p.ID = pm.post_id AND pm.meta_key = '_wp_attachment_image_alt') WHERE p.post_type = 'attachment' AND pm.meta_id IS NULL LIMIT 10; 3. Создадим alt тексты для всех открыток: INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT p.ID, '_wp_attachment_image_alt', 'Винтажная почтовая открытка' FROM wp_posts p LEFT JOIN wp_postmeta pm ON (p.ID = pm.post_id AND pm.meta_key = '_wp_attachment_image_alt') WHERE p.post_type = 'attachment' AND pm.meta_id IS NULL; 4. Проверим результат: Сколько всего alt записей теперь SELECT COUNT(*) as total_with_alt FROM wp_postmeta WHERE meta_key = '_wp_attachment_image_alt'; Посмотрим примеры созданных alt SELECT pm.post_id, p.post_title, pm.meta_value as alt_text FROM wp_postmeta pm INNER JOIN wp_posts p ON pm.post_id = p.ID WHERE pm.meta_key = '_wp_attachment_image_alt' LIMIT 10;
После удаления плагина WP e-Commerce (wpsc-product) убраем и зачищаем «хвосты» в несколько шагов
1. Удаляем мета-данные товаров
DELETE pm FROM wp_postmeta pm INNER JOIN wp_posts p ON pm.post_id = p.ID WHERE p.post_type = 'wpsc-product';
2. Удаляем связи с таксономиями
DELETE tr FROM wp_term_relationships tr INNER JOIN wp_posts p ON tr.object_id = p.ID WHERE p.post_type = 'wpsc-product';
3. Удаляем сами товары
DELETE FROM wp_posts WHERE post_type = 'wpsc-product';
4. Удаляем опции плагина
DELETE FROM wp_options WHERE option_name LIKE '%wpsc%'; DELETE FROM wp_options WHERE option_name LIKE '%wpec%'; DELETE FROM wp_options WHERE option_name LIKE '%wp_ecommerce%';
5. Удаляем таксономии плагина
DELETE FROM wp_term_taxonomy WHERE taxonomy LIKE '%wpsc%';
6. Очищаем транзиенты
DELETE FROM wp_options WHERE option_name LIKE '%_transient%wpsc%'; DELETE FROM wp_options WHERE option_name LIKE '%_transient_timeout%wpsc%';
7. Проверка после очистки sql. Проверим остались ли записи
SELECT 'Posts' as type, COUNT(*) as count FROM wp_posts WHERE post_type = 'wpsc-product' UNION ALL SELECT 'Postmeta', COUNT(*) FROM wp_postmeta WHERE meta_key LIKE '%wpsc%' UNION ALL SELECT 'Options', COUNT(*) FROM wp_options WHERE option_name LIKE '%wpsc%' UNION ALL SELECT 'Taxonomies', COUNT(*) FROM wp_term_taxonomy WHERE taxonomy LIKE '%wpsc%';
Поиск пустых страниц
Чтобы найти пустые страницы на сайте без контента и изображений, нужно проверить несколько аспектов:
1. Страницы полностью без контента:
SELECT ID, post_title, post_type FROM wp_posts WHERE post_type IN ('page', 'post') AND post_status = 'publish' AND (post_content = '' OR post_content IS NULL OR post_content = ' ') LIMIT 50;
2. Страницы без изображений в контенте:
SELECT ID, post_title, post_type FROM wp_posts WHERE post_type IN ('page', 'post') AND post_status = 'publish' AND post_content NOT LIKE '%<img%' AND post_content NOT LIKE '%wp-image%' AND post_content NOT LIKE '%attachment%' LIMIT 50;
3. Страницы без избранных изображений:
SELECT p.ID, p.post_title, p.post_type
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON (p.ID = pm.post_id AND pm.meta_key = '_thumbnail_id')
WHERE p.post_type IN ('page', 'post')
AND p.post_status = 'publish'
AND pm.meta_id IS NULL
LIMIT 50;
4. Комплексная проверка: страницы без контента и без изображений:
SELECT p.ID, p.post_title, p.post_type, p.post_content FROM wp_posts p LEFT JOIN wp_postmeta pm ON (p.ID = pm.post_id AND pm.meta_key = '_thumbnail_id') WHERE p.post_type IN ('page', 'post') AND p.post_status = 'publish' AND (p.post_content = '' OR p.post_content IS NULL OR p.post_content = ' ' OR p.post_content REGEXP '^[[:space:]]*$') AND pm.meta_id IS NULL LIMIT 50;
5. Страницы с очень коротким контентом (менее 50 символов):
SELECT ID, post_title, post_type, LENGTH(post_content) as content_length FROM wp_posts WHERE post_type IN ('page', 'post') AND post_status = 'publish' AND LENGTH(post_content) < 50 LIMIT 50;
6. Проверка медиафайлов на страницах:
SELECT p.ID, p.post_title, (SELECT COUNT(*) FROM wp_postmeta WHERE post_id = p.ID AND meta_key = '_thumbnail_id') as has_thumbnail, (LENGTH(p.post_content) - LENGTH(REPLACE(p.post_content, '<img', ''))) / LENGTH('<img') as img_count FROM wp_posts p WHERE p.post_type IN ('page', 'post') AND p.post_status = 'publish' LIMIT 50;
7. Статистика по пустым страницам:
SELECT post_type, COUNT(*) as total, SUM(CASE WHEN post_content = '' OR post_content IS NULL THEN 1 ELSE 0 END) as empty_content, SUM(CASE WHEN (SELECT meta_id FROM wp_postmeta WHERE post_id = wp_posts.ID AND meta_key = '_thumbnail_id') IS NULL THEN 1 ELSE 0 END) as no_thumbnail FROM wp_posts WHERE post_type IN ('page', 'post') AND post_status = 'publish' GROUP BY post_type;
Рекомендации по использованию:
Сначала выполните запрос №7 для общей статистики
Затем запрос №4 для поиска полностью пустых страниц
Запрос №5 для страниц с минимальным контентом
Запрос №2 для страниц без изображений в тексте
Фон в виде картинки
В таблице стилей
body { background: url(адрес картинки) no-repeat; }
no-repeat - одна картинка
#page {
background: url(адрес картинки) center no-repeat fixed;
}
прозрачность фона определяется свойством opacity: от 0.0 до 1.0;
Почему сайт не в топе
Если сайт не выходит за пределы ТОП-50, то нужно проверить SEO-настройки: sitemap, title, description, ссылки, микроразметку, правильность заполнения метатегов и файла robots.txt.
Если ниже ТОП-50 или ТОП-100, это указывает на дубли страниц, бан, малоценные страницы, недоработанная структура.
Изменение размера текста на странице
Изменить размер текста контента на всем сайте одновременно можно из панели администратора. Для этого надо пройти по пути «Внешний вид» ► «Настроить» ► «Дополнительные настройки». В открывшемся окне вставляем нужный код, в частности следующий:

В правой части экрана можно сразу наблюдать изменения на сайте. Если результат удовлетворяет нажимаем обновить.
Редирект 301 при изменении url страницы
Redirect 301 /old.php https://site.ru/new.php
Новый адрес указываем полностью с http или https и доменным именем.
Поскольку Вордпресс убирает форматирование
скопированных таблиц можно воспользоваться заготовкой таблицы.
Ширину столбцов задаем например так, для 4 столбцов
<table style="width: 100%;">
<colgroup>
<col style="width: 50%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<!-- Далее тело таблицы -->
</table>
Стили для кнопки вызова всплывающей формы обратной связи на сайте
/***Стили для формы обратной связи****/
.knopka-vopros a{
border:1px solid #ccc; /*цвет границы*/
background:#2674C8; /*цвет фона*/
padding:10px 20px; /*внутренние отступы*/
display:block;
text-align:center; /*выравнивание текста по центру*/
color:#fff; /*цвет текста*/
text-decoration:none; /*убрать подчёркивание у ссылки*/
width:200px; /*ширина кнопки*/
margin:auto; /*выравнивание кнопки по центру*/
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
transition: all 0.5s ease;
}
/**Плавное появление тени у кнопки при наведении**/
.knopka-vopros a:hover{
-moz-box-shadow: 0 0 6px #000;
-webkit-box-shadow: 0 0 6px #000;
box-shadow:0 0 6px #000;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
transition: all 0.5s ease;
}
Отключение редактирования тем и плагинов
на уровне панели администратора WordPress
Для этого используем DISALLOW_FILE_EDIT, чтобы запретить редактирование файлов и повысить безопасность.
Открываем файл wp-config.php.
В конце вставляем
DISALLOW_FILE_EDIT
Сохраняемся и закрываем файл.
Строки редактирования в разделах «Внешний вид» и «Плагины» не видны.
Размер шрифта на сайте
Открываем настройки — дополнительные стили и в окне пишем
Меняем весь шрифт. Экспериментируем с цифрой 1,25 добиваясь нужного результата.
body {
font-size:1.25rem;
}
Меняем шрифт в абзацах
p {
font-size: 25px;
}
Меняем шрифт в части заголовков h2, h3 и т.д.
h2 {
font-size: 2.5em;
}
Меняем размер в боковом меню
.sidebar li {
font-size: 12px;
}
Меняем размер текста в подвале
.footer {
font-size: 150%;
}
Меняем размер шрифта для разных устройств
html {
font-size: 18px;
}
@media (min-width: 900px) {
html {
font-size: 20px;
}
}
Единицы измерения в CSS
Эм (em) — 1em соответствует размеру шрифта на странице, то есть если размер шрифта 12pt, 1em=12pt.
Пикселm — пиксель это одна точка на экране компьютера или мобильного устройства.
Пункт — эту единицу заимствовали из бумажных изданий. Один пункт соответствует 1/72 дюйма.
Проценты — эта величина по умолчанию равна 100%, при увеличении или уменьшении будет меняться.
Как скрыть содержимое под спойлер используя HTML5
<details> <summary>Как скрыть содержимое под спойлер используя HTML5 (Заголовок)</summary> <p>Используем следующую конструкцию. Если надо чтобы текст был развернут изначально в <details> добавляем open="open"</p> </details>
Код в файл functions.php вашей темы для показа ID в админке:
// Добавляем колонку ID для страниц и записей
add_filter('manage_posts_columns', 'add_id_column');
add_filter('manage_pages_columns', 'add_id_column');
function add_id_column($columns) {
$columns['post_id'] = 'ID';
return $columns;
}
add_action('manage_posts_custom_column', 'show_id_column', 10, 2);
add_action('manage_pages_custom_column', 'show_id_column', 10, 2);
function show_id_column($column_name, $id) {
if ($column_name === 'post_id') {
echo $id;
}
}
Информация может быть полезной