Основные команды при работе с СУБД MySQL или MariaDB

Чтобы начать знакомство с СУБД в командной строке достаточно освоить самые начальные команды, при помощи которых, вы будете выполнять подавляющее число операций.

Сперва, давайте осуществим подключение к серверу MySQL или MariaDB указав специальные параметры в командной строке. В этом примере мы подключаемся по протоколу SSH от пользователя root к нашему серверу, где находится (установлена) наша СУБД

ssh root@5.35.80.180

Если вы увидите в консоли подобную картинку, то это хороший знак 🙂 Мы успешно прошли авторизацию как пользователь root

консоль

Теперь необходимо ввести название вашей СУБД:

mysql

или соответственно для MariaDB

mariadb

Если всё прошло успешно, то вы должны увидеть в консоле схожую картинку, где СУБД готова выполнять наши команды

Успешная авторизация в СУБД

Иногда, в тех случаях если вы авторизовались на сервере под другой учётной записью, нужно дописать sudo

sudo mariadb

Основы при работе с базами данных

Чтобы внести изменения в базу данных или получить данные, вам нужно будет ввести оператор SQL. SQL расшифровывается как Язык Структурированных Запросов. Оператор SQL, который запрашивает данные, называется запросом. Базы данных хранят информацию в таблицах. Они похожи на электронные таблицы, но гораздо более эффективны в управлении данными.

https://mariadb.com/kb/ru/a-mariadb-primer/

Создание базы данных

Давайте создадим нашу первую базу для хранения данных. Для создания можно было ограничится оператором CREATE, но для эстетичности, давайте добавим условие на проверку существования имени базы данных IF NOT EXISTS .

CREATE DATABASE IF NOT EXISTS poetry;

Запрос выполнен успешно.

Запрос выполнен.

Посмотреть все базы данных

Теперь при помощи оператора SHOW мы можем посмотреть все доступные нам на текущем сервере СУБД базы данных:

SHOW DATABASES;
базы данных

Всё прошло успешно и мы видим созданную нами базу данных poetry. Прочие базы данных — это служебные базы самой СУБД и удалять их не нужно!

Выбор базы данных

Теперь, для дальнейшей работы, мы можем выбрать с помощью оператора USE нужную нам базу данных:

USE poetry;

База данных выбрана:

База данных выбрана

Похожей командой SHOW давайте посмотрим её таблицы:

SHOW TABLES;

Но мы будем немного разочарованы ответом: Empty set (0.001 sec)

Empty set (0.001 sec)

Это говорит, о том, что в нашей базе данных нет ещё таблиц. Так давайте же скорее их создадим!

Создание таблиц в базе данных

Давайте осуществим инструкцию для нашей СУБД — CREATE TABLE, которая создаст в базе таблицу. Мы будем создавать таблицу для хранение данных, о поэтах. Следовательно, мы неизбежно затрагиваем понятия типы данных. Углубляться мы сейчас в тонкости не будем, что лучше и для чего подходит и сколько оптимально выделять памяти для этих данных и т.п. В этот космос мы не полезем, а разберём простой пример. Нам нужны минимум два поля:

  1. ID (poet_id) — уникальный идентификатор для поэта. Это как паспорт — у каждого свой, у каждого уникальный. Повтора быть не может.
  2. Строка для хранения ФИО (poet_name) поэта

Отмечу, что создать таблицу можно просто при помощи инструкции (команды) CREATE TABLE, но мы добавим для эстетичности проверочку:

CREATE TABLE IF NOT EXISTS poets 
(poet_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
poet_name VARCHAR(100) NOT NULL);

В этом примере мы создали два поля для хранения данных:

  • INT — числовое, тип данных целое число
  • NOT NULL — не может быть не заполнено, своего рода предписание обязательно к заполнению
  • PRIMARY KEY — первичный ключ, понадобится нам для связей, но углубляться сейчас в этот термин не будем. Для каждой таблицы может быть не более одного первичного ключа.
  • AUTO_INCREMENT — автоматическое присвоение номере (айдишника поэта) путём увеличения значения. Важно понимать что после удаления значения, вновь созданному повторно эта цифра не присвоится
  • VARCHAR -для хранения текстовых данных переменной длины. В нашем случае ограничили сотней символов, как мне показалась для ФИО поэта это более, чем достаточно

Результат данного запроса при повторном отображении (SHOW TABLES) уже отобразит нашу строку Поэтов:

Давайте при помощи инструкции DESCRIBE (можно указать сокращённо DESC) посмотрим информацию о нашей табличке поэтов:

DESCRIBE poets;

Результат в виде табличного представления можно посмотреть на этом рисунке. Думаю комментарии уже излишне, что здесь к чему.

Данные таблицы поэтов

Во второй таблице нам нужно хранить произведения этих авторов (поэтов). Попробуйте самостоятельно создать таблицу для данных. Вот техническое задание:

  • Название таблицы poems
  • Айдишник стихотворения poem_id
  • Название стихотворения poem_title
CREATE TABLE IF NOT EXISTS poems 
(poem_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
poem_name VARCHAR(150) NOT NULL);

Поздравляю! Теперь у нас уже две таблички для хранения данных. Самое время их наполнить!

Наполнение таблиц БД данными

Инструкция (команда) INSERT INTO. Тут важно сопоставить названия наших столбцов со значениями которые мы им будем присваивать. В примере я заполняю таблицу поэтов их именами. Обратите внимание на то, что ID будет присваиваться автоматически. Тут важно уловить суть в синтаксисе, что где и как разделяется запятыми. А значение, которые строго соответствуют схеме в INSERT INTO должны тоже разделяться запятыми, но для простоты примера я ограничился одним значением — именем поэта.

INSERT INTO poets (poet_name) 
VALUES('Александр Сергеевич Пушкин'), 
      ('Михаил Юрьевич Лермонтов'),
      ('Сергей Александрович Есенин'),  
      ('Анна Андреевна Ахматова'),
      ('Борис Леонидович Пастернак'), 
      ('Николай Алексеевич Некрасов'),
      ('Владимир Владимирович Маяковский');

Вот пример выполнения данного SQL запроса. Важно инструкцию для СУБД закрывать точкой с запятой, а то что пробелы и переносы строк у нас получились лишние — это ничего страшного, СУБД принимает их к исполнению, главное не забывайте объявлять конец инструкции. Получим:

Запрос данных. Оператор SELECT

Ну вот и пришла пора познакомиться нам с оператором «Селект», при помощи которого мы можем делать выборку наших данных.

Мы знаем, что у нас уже есть данные в табличке poets, так давайте их запросим!

Данный пример, благодаря «звёздочке» запрашивает все столбцы данных из (FROM) таблицы poets

SELECT * FROM poets;

результат выборки

Всё верно, не правда-ли?

Если бы нас интересовали данные исключительно из столбца с ФИО поэта, то запись запроса выглядела бы следующим образом:

SELECT poet_name FROM poets;

Удаление данных из таблиц

Давайте проведём небольшой эксперимент. Мы удалим данные из таблицы поэтов и снова повторно создадим, чтобы посмотреть какой идентификатор будет присвоен нашему новому поэту.

Чтобы удалить все данные нужно воспользоваться оператором DELETE вот в такой конструкции:

DELETE FROM poets;

Это удалит все данные из нашей таблицы поэтов. Нам это не нужно. Тогда нашу запись нужно дополнить условием WHERE

DELETE FROM poets WHERE poet_id = 7;

В этом примере мы строго удаляем поэта с номером 7. В итоге получаем следующее:

Теперь при создании нового поэта ему будет присвоен следующий порядковый номер (но не 7!). Здесь отрабатывает заданный параметр AUTO_INCREMENT, при помощи которого ведётся, так сказать, история данной таблицы и учёт созданных уникальных значений идентификаторов. P.S. конечно есть решения и для сброса истории AUTO_INCREMENT — инструкция TRUNCATE TABLE, которая делает полный сброс, но об этом точно не в этой публикации 🙂

Мы научились добавлять данные при помощи оператора INSERT, задавая значения VALUES. Но вдруг, случилось так, что нам необходимо обновить данные в какой то из строк. Для этих целей существует оператор UPDATE.

Нам нужно за что то зацепиться и этим что то будет являться первичный ключ — «айди» нужной нам строки, именно по ней мы будем ее уникально идентифицировать. Запрос будет выглядеть так:

UPDATE poets 
SET poet_name= "Анна Ахматова" 
WHERE poet_id = 4;

Попробуйте выполнить этот запрос и посмотреть в консоле как изменились ваши данные.

Изменение структуры таблицы

Однажды, нам может понадобиться дополнить нашу таблицу данными или изменить текущие. Представим, что цифровой век застал бы этих поэтов и им пришлось бы обзавестись почтой, например, на сервисе gmail.

Давайте дополним таблицу новым столбиком poet_email при помощи инструкции ALTER TABLE

ALTER TABLE poets
ADD poet_email VARCHAR(50);

Готово!

Итак, давайте дополним данные наших поэтов. Не сочтите за фамильярность, но е-мэйлы буду создавать просто по имени поэта, для того чтобы не было совпадений с реальными адресами, так как в Google в их сервисе разрешено создавать ящик минимум от 6-ти символов.

Обновим данные при помощи UPDATE

UPDATE poets
SET poet_email= "sasha@gmail.com" 
WHERE poet_id = 1;

В примере выше мы обновили данные в одно строке, а в следующем примере мы добавим нового поэта, но уже с указанием второго столбца — его почты

INSERT INTO poets (poet_name, poet_email) 
VALUES('Игорь Владимирович Тальков', 'igor@gmail.com');

Ну вот и всё! Надеюсь, основы основ взаимодействия с СУБД , будут вам полезны и не показались через чур сложными.

Как изменить размер шрифта в консоли (терминале) PhpStorm?

PhpStorm — инструмент для разработки PHP- и веб-проектов. Он идеально подходит для работы с Laravel, Symfony, Drupal, WordPress и другими фреймворками.

Пользователю часто приходится работать во встроенном терминале этого редактора и для того чтобы увеличить шрифт или изменить его цвет первым делом нужно открыть настройки нашей IDE. Сделать это можно комбинацией клавиш или через раздел меню: File > Settings

настройки

Далее найти нужный раздел:

Editor > Color Scheme > Console Font и внести нужные настройки. В моём случае я осуществил увеличение шрифта до 18px

File > Settings > Editor > Color Scheme > Console Font

Рекомендация: нужные настройки удобно помогает отыскать строка поиска, в которой нужно задать осознанный поисковый запрос, например, console, тем самым осуществив фильтрацию и исключив ненужные пункты меню

фильтр в меню

Как добавить категорию товаров WooCommerce в меню сайта?

Начинающие пользователи могут быть озадачены добавлением ссылок в меню на созданные ими категории товаров в магазине под управлением WooCommerce и это неспроста. Да, есть некоторые особенности и сейчас мы с вами их рассмотрим.

Первые сложности могут появиться, если вы используете классическую тему оформления сайта. Наверняка, вы можете и не знать какой шаблон темы у вас используется, поэтому рассмотрим оба варианта.

Классический шаблон сайта

Находясь на сайте с правами администратора, вы должны видеть в разделе с названием сайта в выпадающем меню ссылку Меню

В выпадающем меню ссылку Меню

А если вы находитесь непосредственно в панели управления, то этот раздел должен находиться во Внешний вид

Внешний вид

Если вы не видите этого раздела, то вероятнее всего у вас установлена «блочная тема» оформления дизайна сайта и вам следует перейти к этому разделу.

Далее, на этой странице настроек меню вы можете увидеть текущие меню сайта или подобную пустую область для меню, которая говорит о том, что на вашем сайте отсутствует меню и его необходимо создать

меню отсутствует

В этом случае:

  1. дайте название вашему меню
  2. Отметьте область отображения на сайте (в разных темах эти области разные)
  3. Создайте меню
  4. Наполните его ссылками из раздела Элементов меню

И первая неприятность нас подстерегает вот в чём. По умолчанию добавления ссылок категорий товаров скрыты и вы их можете не увидеть в блоке элементов меню.

Нам необходимо их включить. Для этого откроем раздел в верхней правой части экрана Настройки экрана и отметим чекбокс Категории товаров, тем самым включив его в раздел элементов меню

Теперь категории товаров будут доступны нам в разделе конструктора элементов меню

Категории товаров в меню

Теперь отмечаем нужные категории и добавляем в наше меню. Сделаю примечание, что если вам нужно сделать вложенность, то необходимо перетянуть элементы вправо. Примерно должно получиться следующее:

Не забудьте сохранить изменения 🙂

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

Добавления категорий ВуКоммерс в меню сайта

Блочная тема оформления

Если вы используете блочную тему оформления, то в верхней части сайта вы должны видеть ссылку Редактировать сайт

Редактировать сайт

Откроется режим редактирования сайта. В который можно было попасть из Панели управления, но это мы рассмотрим чуть ниже.

После открытия режима редактирования нужно нажать на какую-нибудь область содержимого сайта.

редактирование

После этого загрузится блочный редактор и возможно его загрузка будет сопровождаться вот таким уведомлением:

После загрузки редактора я рекомендую открыть (распахнуть) все элементы страницы в виде иерархического списка, как на примере ниже. Нажмите на специальную иконку и распахните элементы:

Нас интересует Навигация и её список страниц. Выделите Список страниц. Он должен подсвечиваться примерно так. Это говорит что вы выделили Списки страниц (элементов) нужного меню

Далее нажимаем Изменить. Есть вероятность получить подобное уведомление:

уведомление

Этот список страниц синхронизируется с опубликованными страницами на вашем сайте. Отсоедините список страниц, чтобы самостоятельно добавлять, удалять или изменять порядок страниц.

Это обычно случается в том случае, если вы меняете меню впервые. По умолчанию оно создается автоматически из новых страниц вашего сайта. Нам этот вариант не подходит. Поэтому нажимаем Отсоединить и тем самым берём полную ответственность за построение меню на себя.

Убедитесь, что в режиме редактирования Навигации у вас включена справа область нужного Блока, как в примере ниже:

Редактор Навигации

Теперь мы можем создавать новые ссылки для нашего меню. Нажмите на «плюсик» и при помощи поиска отыщите Категории.

Начните писать название… Вы увидите Блок для построения ссылок из категорий ваших товаров

Поиск категорий

Добавляем и выбираем нужную категорию

Выбрать категорию

Добавляем нужные ссылки:

А также мы можем управлять их вложенностью:

А на публичной части сайта мы получим следующий результат:

Из Панели управления

А из панели управления в разделе Внешний вид будет аналогичная ссылка, правда с другим названием — Редактор:

После вызова редактора вы можете увидеть подобный раздел. Нас интересует Навигация

Далее переходим в её (навигации) редактирование

Как удалить верхнюю панель в админке у WooCommerce?

Если вам, как и мне, порядком надоела верхняя панель в панели администратора сайта у WooCommerce, то предлагаю с ней распрощаться!

Как я понял, кроме дублирующего заголовка текущего экрана (страницы) и нескольких неважных функций эта панель ничего существенного в себе не содержит. Так зачем занимать дорогую часть экрана?! Долой! 🙂

Удаляем верхнюю панель WooCommerce
<?php
/**
 * Удаляем служебный верхнюю панель WooCommerce в панели управления WordPress.
 *
 * @see https://woocommerce.github.io/code-reference/classes/Automattic-WooCommerce-Admin-Loader.html
 * @author Code==Poetry <codeispoetry@mail.ru>
 */
add_action( 'admin_head', function (){
    remove_action( 'in_admin_header', array( 'Automattic\WooCommerce\Internal\Admin\Loader', 'embed_page_header' ) );
    print '<style>#wpadminbar + #wpbody { margin-top:0; }</style>';
});

Шаг за шагом

Исследуем элемент этой верхней части (header)

Исследуем элемент этой верхней части

Видим идентификатор, за которой и можно зацепиться. Переходим в директорию с плагином WooCommerce и ищем пофайловым поиском соответствие. Находим его в файле класса Loader:

Loader Class

Этот элемент находится в методе embed_page_header(), который вызывается 1 раз. Исследуем файл и обнаруживаем его в конструкторе класса:

конструктор класса лоадер

Далее нам необходимо удалить этот, который закреплен за хуком in_admin_header. При помощи функции remove_action удалим этот метод. Вместо __CLASS__ необходимо указать пространство имён + название класса:

Получаем:

remove_action( 'in_admin_header', array( 'Automattic\WooCommerce\Internal\Admin\Loader', 'embed_page_header' ) );

P.S. Вполне возможно пространство имён в новых версиях может измениться, но принцип я думаю ясен.

Далее, «вешаем» этот «экшен» на событие происходящее только в верхней части панели администратора.

add_action( 'admin_head', function (){

    remove_action( 'in_admin_header', array( 'Automattic\WooCommerce\Internal\Admin\Loader', 'embed_page_header' ) );

});

И это даёт уже результат! Правда с небольшим нюансом.

Панель удалилась, но осталось пространство, которое явно нам ни к чему. Инспектируем эту область и находим нужное нам правило, которое и создаёт этот отступ:

Дополним наш код строчкой, которая при помощи языковой конструкции print выведет строчку дополнительного стиля, в котором благодаря новому правилу мы избавляемся от отступа.

Как правильно добавить PHP-код на страницу WordPress?

Однажды, перед пользователями CMS WordPress встаёт задача добавить на свой сайт скрипт (код) PHP, чтобы привнести или изменить функционал сайта. Сделать это можно разными способами, но мы рассмотрим сначала самый безопасный (при помощи плагина и его графического интерфейса), а затем еще пару вариантов, которые тоже можно взять на вооружение.

Плагин Code Snippets

Для начинающих пользователей я рекомендую добавлять сторонний код при помощи именно этого плагина, ну или похожих аналогов, например, WPCode

Начнём пошагово:

  1. Перейдите в раздел Плагины
Раздел меню Плагины
  1. В разделе Плагины, при помощи поискового запроса «Code Snippets» отыщите нужный нам плагин
  1. Установите нужный плагин

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

  1. Активируйте плагин

После его активации в разделе меню появится его ссылка

  1. Перейдите в раздел Сниппеты
Перейдите в раздел Сниппеты

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

Подробно ознакомиться с плагином можно в этом видео:

Ну а мы продолжим и добавить произвольный PHP-код.

  1. Выберите Добавить Новый
Выберите Добавить Новый

Перед нами появится экран добавления нового сниппета.

  1. Дайте осмысленное название, о том что будет делать добавленный код
экран добавления нового сниппета
  1. Добавьте PHP-код.

Обратите внимание, что открывающийся тег PHP <?php уже присутствует в области и его добавлять не нужно.

Добавьте PHP-код
  1. Выберите часть сайта (приватная — панель администратора, публичная — то что видят все в интернете)

Так как мой скрипт должен удалять логотип WordPress в панели управления сайтом, я выбираю Only run in administration area

Если сомневаетесь, то оставляйте первый вариант Run snippet everywhere — это позволит скрипту выполняться по всему сайту, как по приватной его части, так и по публичной

При желании можете дать подробное описание назначения этого PHP-кода и отметить специальными тегами, например, такими, которые будут говорить куда предназначен скрипт:

  1. Активируйте и сохраните ваш добавленный код

Если вы всё сделали правильно и не произошло ошибки, то в разделе всех сниппетов вы непременно должны увидеть ваш добавленный скрипт. Кстати, в любой момент его можно отключить 🙂

Ошибки

Преимущество данного метода в том, что он оберегает вас от ошибок и если вы, например, забыли где то поставить кавычку (а скорее всего просто не скопировали её), то сайт «не поломается». В этом случае сниппет просто не активируется и выдаст предупреждение:

Ошибка при обработке

В данном случае мы получили сообщение о синтаксической ошибке.

Добавление через код

Этот метод не безопасный (для новичков), но делает процесс прозрачным и в сравнении с плагином, конечно же менее ресурсоёмким, так как плагины занимают больше вычислительных мощностей, чем простое добавление функций в файл.

Плагин Theme Customisations

Если заглянуть в файл functions.php известной, простой темы для интернет-магазина на WordPress — Storefront, то можно обнаружить примечание от разработчиков:

Note: Do not add any custom code here. Please use a custom plugin so that your customizations aren’t lost during updates.

https://github.com/woocommerce/theme-customisations

https://github.com/woocommerce/storefront/blob/trunk/functions.php

В этом сообщении нас призывают не добавлять код в functions.php, а воспользоваться для этого решением в виде плагина.

Плагин «Theme Customisations» можно скачать из репозитория на GitHub

Плагин "Theme Customisations"

После загрузки плагина, его необходимо установить в наш WordPress. Сделать это можно при помощи метода Загрузки

Загрузить плагин

После активации плагина, как в самом первом случае, мы не обнаружим в главном меню его раздела — его попросту нет.

Как же тогда работать с плагином? Отвечу — напрямую редактируя код. Попасть в специальный для этих целей раздел можно в меню Инструменты:

Увидеть этот раздел можно под учётной записью администратора. И при первом его посещении WordPress любезно вас предупредит:

Приняв риски, в правом верхнем углу нам нужно выбрать в выпадающем списке наш плагин. После чего нам будут доступны его исходные файлы:

исходные файлы

Нас интересует директория custom.

Соответственно, в каждый из файлов мы можем добавлять свой произвольный код:

  • CSS — в style.css
  • JavaScript — в custom.js
  • PHP — functions.php

Вот, например, сниппет, который удаляет логотип WordPress при входе в панель управления. Давайте добавим его в наш файл functions.php

Вот и всё 🙂

Как удалить версию WordPress внизу в панели администратора?

Чтобы удалить вывод версии WordPress в нижней части (футер) панели управления администратора сайта, нужно задействовать специальный фильтр:

apply_filters ('update_footer', строка $content  )

К данному фильтру прикреплена функция core_update_footer() с приоритетом (очерёдностью) выполнения 10. Это означает, что нам для того чтобы изменить это значение, необходимо выполнить функцию позже, то есть задать очерёдность выше 10, например, 15

<?php
/**
 * Удаляет версию WordPress из Футера панели администратора.
 *
 * @see https://developer.wordpress.org/reference/hooks/update_footer/ Documentation WordPress.
 * @author Code==Poetry <codeispoetry@mail.ru>
 */
 
add_filter( 'update_footer', '__return_empty_string', 15 );

Как удалить или изменить фразу Спасибо вам за творчество с WordPress?

Если взглянуть в ядро WordPress на исходный код, то можно обнаружить для решения нашей задачи специально предусмотренный фильтр (48-я строка):

apply_filters( ‘admin_footer_text’, string $text )

Теперь, если нам необходимо изменить текст, то передадим его нашей анонимной функции в изменённом виде и не забудем его вернуть 🙂

<?php
/**
 * Удаляет|Изменяет фразы из Футера панели администратора WordPress.
 *
 * @see https://developer.wordpress.org/reference/hooks/admin_footer_text/ Documentation WordPress.
 * @author Code==Poetry <codeispoetry@mail.ru>
 */
 
add_filter( 'admin_footer_text', function( $text ){
    
  $text = '&copy;' . get_bloginfo( 'name' ) . ', ' . wp_date( 'Y' );
  
  return $text;
} );

// Если нужно просто удалить, то вернём пустую строку
add_filter( 'admin_footer_text', '__return_empty_string' );

В данном примере я задействовал ещё две полезные функции из ядра WordPress:

get_bloginfo()

wp_date()

Первая из которых вернёт нам название сайта, а вторая поможет получить текущий год (для динамического вывода). Получаем:

В сниппете приведен пример для полного удаления надписи, для этого задействуем специальную функцию WordPress, которая вернёт пустую строку и как следствие ничего отображаться не будет.

__return_empty_string()

Как удалить логотип WordPress из админ-бара в панели управления?

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

do_action ( 'wp_before_admin_bar_render')

Посмотреть на ГитХаб

Наша задача изменить объект $wp_admin_bar до выполнения рендера панели инструментов. «Повешаем» на этот хук безымянную функцию и не забудем обратиться к глобальной переменной $wp_admin_bar, чтобы внести в неё корректировки.

<?php
/**
 * Удаляет логотип WordPress в админ-баре панели управления сайтом.
 *
 * @see https://developer.wordpress.org/reference/hooks/wp_before_admin_bar_render/ Documentation WordPress.
 * @author Code==Poetry <codeispoetry@mail.ru>
 */
 
add_action('wp_before_admin_bar_render', function(){
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu( 'wp-logo' );
} );

Готово!

Рекомендую ознакомиться со всеми методами класса WP_Admin_Bar, наверняка вы обнаружите ещё что то полезное 🙂

Как добавить текущий год в футер страницы сайта на WordPress?

Доводилось ли вам видеть в нижней части страницы сайтов несоответствие с текущим годом?

Например, на дворе 2023 год и посещая тот или иной сайт, вы видите в его нижней части следующее:

© ИП Пупкин В.И., 2012

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

Как правильно оформлять знак авторского права?

Отмечу, что все-таки, знак авторского права носит исключительно информационный характер и его оформление не критично в РФ, хотя в некоторых странах его несоответствие реальной картине может преследоваться по закону.

(©) — знак охраны авторского права, представляет собой латинскую букву C (первая буква слова «copyright») в окружности.

Подробнее Источник №1, Источник №2

Тем не менее, существует ГОСТ Р 7.0.1-2003, по которому следует оформлять авторское право на интеллектуальный продукт. Но в реальной картине мира оформляют его совершенно в произвольном виде, как вздумается 🙂

Эффектно выглядит запись с даты основания по текущий год. Например, на сайте студии Артемия Лебедева можно увидеть следующее:

Копирайт Студии Лебедева

Ставим себе Задачу: сделать текущий год динамическим. То есть, чтобы при наступлении 2024-го запись в примере выглядела 1995-2024.

Реализация

Решить данную задачу можно по разному, но мы рассмотрим универсальный способ — при помощи шорткода. add_shortcode это функция WordPress, которая позволяет прикрепить функцию-обработчик и затем безопасно вызывать её внутри контента вашего сайта.

В данном примере мы передаём два аргумента: current_year — это название шорткода, а второй — безымянная функция-обработчик.

add_shortcode( 'current_year', function() {
	return wp_date( 'Y' );
} );

Этот код необходимо добавить на ваш сайт. Далее, этот шорткод мы можем указать в нужном нам месте и он осуществит вызов этой безымянной функции, которая вернет текущий год. Запись может выглядеть примерно так:

&copy;  «Code is Poetry», [current_year]

Или так:

&copy;  «Code is Poetry», 2011-[current_year]

Я указал в редакторе блоков Гутенберг следующим образом:

На клиентской части сайта мы наблюдаем должный результат:

Вывод динамического года

Теперь нам не стоит переживать о текущем годе — данные будут актуальными на текущий момент времени.

Преимущество данного метода в том, что теперь мы имеем своего рода функцию-помощника (helper), которую можем использовать в любой части контента. Например, я вы зову её в следующем абзаце, в котором всегда должен будет отображаться актуальный год.

вызов шорткода
2024

Как создать дочернюю тему для блочной темы в WordPress?

С выпуском WordPress версии 5.9 (в январе 2022 года) появилась совершенно новая парадигма в разработки тем — разработка блочной темы. Этот урок посвящен процессу установки и настройки базовой дочерней темы для блочных тем.

Дочерняя тема — это просто часть темы, которая зависит от родительской темы и без неё она работать не будет.

Обычно дочерние темы создают чтобы сэкономить время на разработке. Выбор делается на понравившемся шаблоне оформления и сразу создается на его основе дочерняя тема (или тема-ребёнок).

Такой подход является хорошим тоном и позволяет вам избежать в будущем массу проблем и неожиданностей, основная неожиданность из которых — правка в родительской теме файлов. Так делать не надо! Ведь, после обновления темы (обновления регулярно выходят) вы затрёте ваши правки и как следствие — потеряете их. А в случае, если вы вносите правки в тему-ребенка (дочернюю тему), то даже после обновления темы-родителя ваши правки не будут затронуты и останутся работать, выполняя свои функции.

Случай с дочерними темами: после небольшого исследования исходных файлов WordPress некоторые люди обнаруживают, где находятся файлы темы, а затем напрямую редактируют их. После следующего обновления темы они с ужасом обнаруживают, что обновление полностью стерло все их внесенные изменения. Многие владельцы сайтов, дизайнеры усвоили этот урок на собственном горьком опыте. 

Как предотвратить это? Использовать блочную дочернюю тему! Дочерняя тема — это тема, которая переопределяет и добавляет элементы в другую блочную тему («Родительская» блочная тема), не затрагивая какой-либо код родительской темы. При обновлении родительской темы ваша дочерняя тема сохранит все внесенные в неё правки.

https://learn.wordpress.org/lesson-plan/create-a-basic-child-theme-for-block-themes/

Поэтому, стоит уяснить, что после выбора темы и её активации необходимо создать дочернюю тему и активировать следом.

Это правило хорошего тона при разработке.

Создание простой дочерней блочной темы

  1. Создайте пустую папку (директорию) для вашей будущей темы-ребёнка

Чтобы не запутаться, я рекомендую добавлять просто постфикс -child к названию той директории, тема которой выступает в качестве родительской.

Например, мы создаем дочернюю тему на основе twentytwentyfour, соответственно, название директории для темы-ребёнка будет twentytwentyfour-child

Такой подход позволит вам не запутаться в связях дочерних тем и родительских.

  1. Создайте в этой папке файл style.css

В файле стилей (style.css) внесите следующие необходимые данные:

/*
 Theme Name: [ИМЯ ВАШЕЙ ТЕМЫ]
 Description: Это дочерняя тема. В качестве родительской выступает тема Twenty Twenty-Four.
 Author: [ВАШЕ ИМЯ]
 Author URI: [ВАШ АДРЕС САЙТА/URL]
 Template: twentytwentyfour
 */

Важно! В строке Template обязательно укажите название папки темы-родителя, чтобы WordPress понимал из какой директории ему наследовать файлы.

директория дочерней темы

Пример моего файла:

Пример файла CSS

В панели управления мы можем наблюдать уже первые изменения:

панель управления сайтом
  1. Добавьте скриншот

Наверняка вы заметили как некрасиво и безлико выглядит квадратик с нашей темой. Чтобы это исправить, мы можем позаимствовать из родительской темы специальный файл для заполнения этого квадратика — screenshot.png

Скопируйте этот файлик из родительской темы в свою дочернюю. Если файл отсутствует — создайте его (размер 1200 на 900 пикселей).

Результат моей творческой фантазии можно увидеть ниже:

Скриншот дочерней темы

Теперь в нашей папке уже два файла: style.css и screenshot.png и раздел с доступными темами для активации тоже преобразился 🙂

Скриншот дочерней темы
  1. Создайте файл theme.json

В завершении, создайте файл с названием theme.json и скопируйте в него всё что есть в одноименном файле родительской темы.

theme.json— это файл конфигурации, который позволяет вам определять глобальные настройки, стили и многое другое для вашей темы (для визуального редактора, который называется Gutenberg). 

Файл работает как с блочными, так и с классическими темами. 

https://developer.wordpress.org/themes/global-settings-and-styles/introduction-to-theme-json/

Теперь вы можете смело активировать вашу дочернюю тему. После этого зайдите в редактирование страницы и обратите внимание на заготовки цветовых схем, шрифтов.

Редактор Гутенберг

Всё это тянется из файла theme.json. Попробуйте найти взаимосвязь. Откройте этот файл вашей дочерней темы и попробуйте удалить первые три, четыре блока в фигурных скобках раздела palette:

			"palette": [
				{
					"color": "#f9f9f9",
					"name": "Base",
					"slug": "base"
				},
				{
					"color": "#ffffff",
					"name": "Base / Two",
					"slug": "base-2"
				},
				{
					"color": "#111111",
					"name": "Contrast",
					"slug": "contrast"
				},
				{
					"color": "#636363",
					"name": "Contrast / Two",
					"slug": "contrast-2"
				},
Редактор кода

После сохранения вернитесь в редактор Гутенберг и исследуйте область цветовых схем для текста и фона при редактировании текста:

Вы непременно обнаружите, что число цветовых кружков уменьшилось.

Заготовки цветовых схем

Ну вот и всё!

Мы создали дочернюю тему на основе блочной темы и разобрались в минимальном количестве файлов и их назначения.

Создание при помощи плагина

Отмечу, что существует официальный плагин от разработчиков WordPress, который позволяет через визуальный интерфейс создавать свои блочные темы, как родительские, так и дочерние.

Страница плагина Create Block Theme

Как установить WordPress?

Важно понимать, что сайт на CMS WordPress состоит из двух частей:

  1. Файлы сайта на хостинге
  2. База данных

Ниже мы рассмотрим пошагово путь установки CMS WordPress с момента первого экрана — выбора языка, до действующего сайта.

Когда мы обращаемся к корню нашего сайта, там где лежат файлы WordPress мы непременно должны наблюдать первый экран, который и начинать путь установки и запуска первого сайта на WordPress:

Первый экран установки Вордпресс

Здесь нам нужно выбрать ту локаль (региональные настройки), тот язык на котором будет наш будущий сайт. В данном примере выбираем «Русский»

Выбираем язык ВордПресс

Далее мы видим примечание, о том что для соединения с базой данных (там наш WordPress будет хранить данные и контент сайта) нам необходимо знать параметры для соединения.

В самом начале я отмечал, что сайт состоит из двух частей: файлы и БД (база данных). Детали я пропускаю, подразумевая что вы обладаете уже этими данными

И на следующем шаге мы как раз то и должны их указать!

экран установки Вордпресс

После ввода параметров для соединения с Базой Данных мы переходим к следующему экрану:

экран установки Вордпресс

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

В случае успеха мы переходим непосредственно к установке:

Установка ВП

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

Рекомендуется указывать действующий E-mail, так как может возникнуть ситуация восстановления пароля и ссылку для восстановления можно будет получить на указанный действующий адрес почты.

И вот финальный экран, который поздравляет нас об успешной установки WordPress.

Теперь наш сайт делится на две части:

  • Приватная часть (это панель управления, для редактирования материалов сайта, которая доступна по логину и паролю, которые вы придумывали ранее для своей учетной записи)
  • Публичная часть (страницы которой видят все в интернете)

Как попасть в панель управления сайтом на WordPress?

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

/wp-admin

Получится примерно следующее:

https://ваш-сайт.ru/wp-admin

Как поменять язык на сайте WordPress?

Прежде всего отмечу, что начиная с версии 4.0, в процессе установки WordPress предлагает сделать выбор языка с которым будет происходить дальнейшая установка .

А ниже мы рассмотрим метод, которой позволяет изменить языковой перевод интерфейса сайта c английского на русский язык.

  1. Выберите в разделе меню Settings > General
  1. В выпадающем списке раздела Site Language выбрать нужный язык

Подробнее…

Google Таблицы: Как заменить пустые ячейки на «ноль»?

Решение:

  1. Выделите нужный столбец, по которому будет осуществляться поиск
Выделяем нужный столбик
  1. Выберите в верхнем меню раздел Правка > Найти и Заменить
Выбираем Найти и Заменить
  1. Далее, вставьте в поле Найти регулярное выражение
^(\s*)$
Последовательность настроек

Вот и всё! Результат выполнения можно увидеть ниже:

Результат выполнения

Послесловие:

Проблема поиска и замены в Таблицах Гугл описана в этом тикете. Вы можете подписаться на него для отслеживания. Возможно механизм замены значений null будет однажды упрощен.

Лично мне понравился метод при помощи регулярного выражения. Гугл Таблицы осуществляют поиск согласно синтаксису RE2 — познакомиться с ним можно на сайте этой библиотеки.

Давайте разберем этот пример.

^

Знак вставки: соответствует началу текстовой строки, поиск которой выполняется с использованием регулярного выражения.

^абв

позволяет найти все строки, которые начинаются с букв абв.

$

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

эюя$

позволяет найти все строки, которые заканчиваются буквами эюя.

И осталось нам разобраться с серединкой, которая сгруппированна круглыми скобками (хотя можно и не группировать, т.е. записать без скобок)

\s

Соответствует символам пробелов. 

*

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

То есть это нужно для того, чтобы ____ три пробела — тоже считать пустотой

Как это запомнить?

Нужно руками это несколько раз набрать. При наборе начинайте последовательно: с начала и конца строк — это ^ и $, далее между ними группировка при помощи круглых скобок, получаем: ^()$ и внутри укажите символ пробела и знак «звёздочки», готово!

^(\s*)$

Хэштеги городов России

Давайте разберёмся, Что такое хештег и как им пользоваться. Не секрет, что одним из основных источников трафика являются публикации с хэштегами.

Хэштег представляет из себя фразу или слово перед которой ставится специальный символ # (решетка). Hashtag состоит из двух смысловых слов: hash — знак решётки (#) и tag — метка — ключевое слово.

В хэштегах недопустимы пробелы и если необходимо написать название города состоящее из двух и более слов, то пишется это слитно, например: 

  • #Санктпетербург
  • #cанктпетербург
  • #СанктПетербург

Назначение хэштегов — группировка тематического контента, что несомненно полезно при выборке тех или иных тем. 

Мы делимся своей работой — подборкой городов Российской Федерации с хештегами и пробелами после слов. А в конце страницы сформирован список из 75 самых крупных городов РФ.

#Абаза #Абакан #Абан #Абатский #Абдулино #Абинск #Авангардное #Агаповка #Агинское #Агрыз #Адамовка #Адлер #Адреаполь #Адыгейск #АдыгеХабль #Азнакаево #Азов #Азово #Айкино #Акбулак #Акбулак #Аксай #Аксарка #Аксубаево #Актаныш #Акулово #Акша #Акъяр #Алагир #Алапаевск #Алатырь #Алдан #Алеевка #Алейск #Александров #Александров Гай #Александровка #Александровка #Александровск #Александровское #Александровское #АлександроНевский #Алексеевка #Алексеевская #Алексеевское #Алексин #Аликово #Алнаши #Алтайское #Алькеево #Альменево #Альметьевск #Амга #Амурск #Анадырь #Анапа #Ангарск #Анжеро-Судженск #Анна #Антропово #Анучино #Апастово #Апатиты #Апшеронск #Арбаж #Аргаяш #Аргун #Ардатов #Ардатов #Ардон #Арзамас #Арзгир #Аркадак #Армавир #Армизонское #Аромашево #Арсеньев #Арсеньево #Арск #Артем #Артемовский #Арти #Архангельск #Архангельское #Архангельское #Архонская #Асбест #Асекеево #Асино #Аскарово #Аскиз #Аскино #Астрахань #Аткарск #Атня #Атюрьево #Атяшево #Ахтубинск #Ачайваям #Ачинск #Ачинское #Ачит #Ачхой-Мартан #Аша #Аше #Аян #Бабаево #Бабушкино #Бабынино #Бавлы #Багаевский #Баган #Багратионово #Багратионовск #Баево #БазарныйКарабулак #БазарныйСызган #Байкалово #Байконур #Баймак #Бакалы #Баксан #Бакчар #Балабаново #Балаково #Балахна #Балахта #Балашов #Балезино #Балтай #Балтаси #Балтийск #Барабинск #Баргузин #Барда #Барнаул #Барыш #БатагайАлыта #Батайск #Батецкий #Батырево #Башмаково #Беднодемьяновск #Бежаницы #Бежецк #Безенчук #Бекенево #Беково #Белая #Белая Глина #Белая Калитва #Белая Холуница #Белгород #Белебей #Белебей #Белев #Белинский #Белкино #Белово #Белогорск #Белозерск #Белозерское #Белокуриха #Беломорск #Белорецк #Белореченск #Белоярский #Белоярский #Белый #БелыйЯр #Беляевка #Бердигестях #Бердск #Бердюжье #Береговое #Березник #Березники #Березовка #Березовка #Березовка #Березовка #Березовка #Березово #Березовский #Березовский #Беслан #Бессоновка #Бея #Бижбуляк #Бийск #Бикин #Биробиджан #Бирск #Бирюлюсы #Бичура #Благовещенка #Благовещенск #Благовещенск #Благодарный #Ближнее #Бобров #Богатово #Богатые Сабы #Богданович #Боговарово #Богородицк #Богородск #Богородское #Богородское #Боготол #Боград #Богучаны #Богучар #Боковская #Бокситогорск #Болгар #Бологое #Болотное #Болхов #Большаково #БольшаяГлушица #БольшаяМартыновка #БольшаяМурта #БольшаяПоляна #БольшаяСоснова #БольшаяЧерниговка #Большеречье #Большеустьикинское #БольшиеБерезняки #БольшиеГорки #Большие Уки #БольшоеБолдино #БольшоеИгнатово #БольшоеМурашкино #БольшоеНагаткино #Большоесело #БольшоеСело #Большое Солдатское #Большое Сорокино #Большой Камень #Большой Улуй #БольшойЦарын #Бондари #Бор #Борзя #Борисовка #Борисоглебск #Борисоглебский #Боровичи #Боровск #Борогонцы #Бородино #Борское #Борское #Братск #Бреды #Брейтово #Брюховецкая #Брянск #Брянское #Бугульма #Бугуруслан #Буденновск #Буздяк #Бузулук #Буй #Буинск #Бураево #Бурла #Бутурлино #Бутурлиновка #Быково #Быстрый Исток #Бычково #Вавож #Вагай #Вад #Вадинск #Валдай #Валуйки #Ванино #Варгаши #Вардане #Варна #Варнавино #Васильево #Васильково #Вача #Ведено #Вейделевка #Велиж #ВеликиеЛуки #ВеликийНовгород #ВеликийУстюг #Великолукское #Вельск #Венгерово #Венев #Верещагино #Вернийбисер #Верхневилюйск #Верхнеуральск #Верхнеяркеево #Верхние Киги #Верхний Ландех #ВерхнийМамон #ВерхнийУслон #Верхний Уфалей #ВерхняяПышма #ВерхняяСалда #ВерхняяТойма #Верхняя Хава #Верховажье #Верховье #Верхотурье #Верхошижемье #ВерхУсугли #ВерхЧебула #Веселый #Весново #Ветлуга #Вешенская #Вешкайма #Взморье #Визинга #Викулово #Вилюйск #Вилючинск #Вичуга #Вишневка #Вишневое #Вишневское #Вишневый #Владивосток #Владикавказ #Владимир #Владимиро-Александровское #Владимирово #Вожега #Вознесенское #Волгоград #Волгодонск #Волгореченск #Волжск #Волжский #Волово #Волово #Вологда #Володаровка #Володарский #Волоколамск #Волоконовка #Волосово #Волот #Волочаевское #Волхов #Волчиха #Вольное #Вольно-Надеждинское #Вольск #Воркута #Воробьевка #Воробьево #Воронеж #Воротынец #Воскресенск #Воскресенское #Воскресенское #Восод #Воткинск #Вохма #Всеволожск #Вуктыл #Вурнары #Выборг #Выгоничи #Выкса #Выльгорт #Выльногорск #Выселки #Высокая Гора #Высокое #Высокое #Вытегра #Вышний Волочек #Вяземский #Вязяма #Вятские Поляны #Гаврилов Посад #Гаврилово #Гаврилов-ям #Гагарин #Гагино #Гай #Галич #Гальбштадт #Гастеллово #Гатчина #Гвардейск #Гвардейское #Гдов #Геленджик #Георгиевск #Георгиевское #Георгиевское #Гиагинская #Глазов #Глазуновка #Глинка #Глушково #Глушково #Глядянское #Голицыно #Головкино #Голышманово #Гончарово #Гордеевка #Гордое #Горно-Алтайск #Горнозаводск #Горный #Горняк #Городец #Городище #Городище #Городовиковск #Гороховец #Горшечное #Горьковское #Горячий Ключ #Грайворон #Грахово #Грачевка #Грачевка #Грачевка #Гремячинск #Грибановский #Грибки #Грозный #Громово #Грязи #Грязовец #Губаха #Губкин #Губкинский #Гудермес #Гуково #Гулькевичи #Гурьевск #Гурьевск #Гусев #Гусево #Гусиноозерск #Гусь Хрустальный #Давлеканово #Далматово #Дальнегорск #Дальнее #Дальнее #Дальнее #Дальнее Константиново #Дальнереченск #Данилов #Даниловка #Данков #Даровский #Дворкино #Дебесы #Дедовичи #Демидов #Демидово #Демянск #Дербент #Дергачи #Десногорск #Дзержинск #Дзержинск #Дивеево #Дивногорск #Дивное #Дивное #Дивное #Дигора #Димитровград #Динская #Дмитриевка #Дмитриев-Льговский #Дмитров #Дмитровск-Орловский #Дно #Добринка #Доброволец #Добровольск #Доброе #Добрянка #Доваторовка #Довольное #Долгодеревенское #Долгоруково #Долгоруково #Домбаровский #Домново #Домодедово #Донецк #Донской #Дорогобуж #Дорожное #Дрожжаное #Дружба #Дубенки #Дубна #Дубна #Дубовка #Дубовское #Дубровка #Дубровка #Дудинка #Дульдурга #Думиничи #Дунаевка #Духовницкое #Духовщина #Дюртюли #Дятьково #Егорлыкская #Егорьевск #Ейск #Екатеринбург #Екатеринбург #Екатериновка #Елабуга #Елань #Елец #Елизово #Елово #Еловое #Ельники #Ельники #Ельня #Ельняки #Ельцовка #Еманжелинск #Емва #Емельяново #Енисейск #Енотаевка #Ермаково #Ермаковское #Ермекеево #Ермишь #Ермолаево #Ершичи #Ершов #Ершово #Ессентуки #Еткуль #Ефремов #Жаворонково #Железноводск #Железногорск #Железногорск #Железногорск-Илимский #Железнодорожный #Желудево #Жердевка #Жигулевск #Жиздра #Жилино #Жиратино #Жирновск #Жуковка #Жуково #Жуковский #Журавлевка #Забайкальск #Забарье #Заветное #Завитинск #Заводоуковск #Заволжье #Завьялово #Завьялово #Загородный #Загорское #Задонск #Заинск #Зайцево #Закаменск #Залари #Залегощь #Залесово #Залесье #Заливино #Заливное #Залукокоаже #Заовражное #Заозерный #Заозерск #Заозерье #Заокский #Заостровье #Западная Двина #Западный #Заповедное #Заполярный #Зарайск #Заречное #Заречный #Заречье #Заречье #Заринск #Звездный #Звенигово #Звенигород #Звеньевое #Зверево #Звериноголовское #Здвинск #Зеленогорск #Зеленоградск #Зеленодольск #Зеленое #Зеленокумск #Зеленчукская #Земетчино #Зерноград #Зея #Зилаир #Зима #Зимовники #Златоуст #Злынка #Змеиногорск #Змиевка #Знаменка #Знаменка #Знаменск #Знаменск #Знаменское #Знаменское #Знаменское #Золотухино #Зональное #Зорино #Зубова Поляна #Зубцов #Зуевка #Зырянское #Ибреси #Ивановка #Иваново #Ивантеевка #Ивдель #Ивня #Иволгинск #Иглино #Игра #Идринское #Ижевск #Ижма #Ижморский #Извилино #Измалково #Изобильное #Изобильный #Ики-Бурул #Икряное #Иланский #Илек #Иловля #Ильинский #Ильинское-Хованское #Ильинско-Подомское #Ильичевка #Ильичевка #Илюшино #Инжавино #Инза #Инсар #Инта #Йошкар-ола #Ипатово #Ирбейское #Ирбит #Иркутск #Исаклы #Исаково #Исетское #Исилькуль #Искитим #Исса #Истра #Истровка #Исянгулово #Ишеевка #Ишим #Ишимбай #Кавалерово #Кавказская #Кагальницкая #Кадом #Кадошкино #Кадуй #Кадый #Казанское #Казань #Казачинское #Казачинское #Кайбицы #Калач #Калачинск #Калач-на-дону #Калга #Калевала #Калининград #Калинино #Калининск #Калининская #Калининское #Калинково #Калиновка #Калманка #Калтасы #Калуга #Калужское #Калязин #Камбарка #Каменка #Каменка #Каменка #Каменоломни #Каменск- Шахтинский #Каменское #Каменское #Каменск-Уральский #Камень-на-Оби #Камень-Рыболов #Камешково #Камское Устье #Камызяк #Камышин #Камышлов #Канаш #Канаш #Кандалакша #Каневская #Канск #Кантемировка #Кара #Карабаш #Караблино #Карагай #Караидель #Каракулино #Карамышево #Карасук #Каратузское #Карачев #Каргаполье #Каргасок #Каргат #Каргополь #Кардымово #Кармаскалы #Карпинск #Карпогоры #Карсун #Карталы #Карымская #Касимов #Касли #Каспийский #Касторное #Касумкент #Катав-Ивановск #Катайск #Качканар #Кашары #Кашин #Каширское #Каштановка #Каштаново #Каштаново #Кваркено #Кедровый #Кез #Кемерово #Кемля #Кемь #Кетово #Кетченеры #Кижинга #Кизел #Кизильское #Кизляр #Кизнер #Киквидзе #Кикнур #Килемары #Кильмезь #Кимовск #Кимры #Кингесепп #Кинель #Кинель-Черкасы #Кинешма #Киргиз-Мияки #Киреевск #Киренск #Киржач #Кириллов #Кириши #Киров #Киров #Кирова #Кировград #Кирово-Чепецк #Кировск #Кировск #Кировский #Кирс #Кирсанов #Киселевск #Кисловодск #Кичменгский Городок #Киясово #Кленовое #Клетня #Клетский #Климовка #Климово #Клин #Клинцы #Ключи #Ключи #Клявлино #Княгинино #Ковдор #Ковернино #Ковров #Коврово #Ковылкино #Когалым #Кодинск #Кожевниково #Козельск #Козловка #Козулька #Козьмодемьянск #Койгородок #Кола #Кологрив #Коломна #Колосовка #Колосовка #Колпашево #Колпна #Колывань #Колышлей #Кольчугино #Комаричи #Комсомольск #Комсомольск #Комсомольский #Комсомольск-на-Амуре #Комсомольское #Конаково #Кондинское #Кондоль #Кондопога #Кондрово #Коноша #Константиновка #Константиновка #Константиновск #Конышевка #Копейск #Копьево #Коренево #Кореновск #Коркино #Кормиловка #Корнево #Короленково #Короча #Корткерос #Корф #Коряжма #Косиха #Костомукша #Кострово #Кострома #Костромино #Костюковка #Котельниково #Котельнич #Котлас #Котово #Котовск #Коченево #Кочки #Кочкурово #Кош-Агач #Кошехабль #Кошки #Кошхатау #Крапивинский #КраснаяГорбатка #КраснаяГорка #Красноармейск #Красноармейская #Красноармейское #Красноармейское #Красноборск #Красновишерск #Красногвардейск #Красногвардейское #Красногвардейское #Красногородское #Красногорское #Красногорское #Красногорское #Краснодар #Красное #Красное #Красное #Красное-на-Волге #Краснозерское #Краснознаменск #Красной Чикой #Краснокаменск #Краснокамск #Краснолесье #Красноолмский #Краснополье #Краснополянское #Красноселькуп #Краснослободск #Красноторовка #Краснотуранск #Краснотурьинск #Красноуральск #Красноусольский #Красноуфимск #Краснофлотское #Краснощеково #Красноярск #Красноярское #КрасныеБаки #КрасныеЧетаи #Красный #КрасныйБор #КрасныйКут #КрасныйСулин #КрасныйХолм #КрасныйЯр #Крестцы #Кривошеино #Кромы #Кромы #Кропоткин #Кругловка #Крутинка #Крутиха #Крылово #Крыловская #Крымск #Кстово #Кубановка #Кувандык #Кувшиново #Кугеси #Кудепста #Кудымкар #Куеда #Куженер #Кузнецк #Кузоватово #Куйбышев #Куйбышево #Куйбышевское #Кукмор #Кулебаки #Кулунда #Кумачово #Кумены #Кумертау #Кумылженская #Кунашак #Кунгур #Кунья #Купино #Курагино #Курах #Курган #Курганинск #Куркино #Курманаевка #Курортное #Курсавка #Курск #Куртамыш #Курумкан #Курчатов #Курья #Куса #Кушва #Кушнаренково #Кущевская #Кшенский #Кызыл #Кытманово #Кыштовка #Кыштым #Кяхта #Лабинск #Лабытнанги #Ладушкин #Лазо #Лаишево #Лангепас #Лахденпохья #Лебедянь #Лебяжье #Лебяжье #Лев Толстой #Левобережное #Левокумское #Лежнево #Ленинградская #Лениногорск #Ленинск #Ленинский #Ленинск-Кузнецкий #Ленинское #Ленск #Лермонтов #Лермонтово #Лесное #Лесное #Лесное #Лесное #Лесозаводск #Лесосибирск #ЛетняяСтавка #Лешуконское #Ливны #Лиман #Линево #Липецк #Липин Бор #Липняки #Липовка #Липово #Лиски #Лихославль #Ловозеро #ЛодейноеПоле #Локня #Локоть #Ломово #Ломоносов #Ломоносовка #Лоо #Лопатино #Лотошино #Лоухи #Луга #Луговое #Луговое #Луговое #Луговское #Лужки #Луза #Лукоянов #Лунино #Лунино #Лунино #Луховицы #Лучегорск #Лысково #Лысые Горы #Лысьва #Львовское #Льгов #Любим #Любинский #Любытино #Людиново #Лямбирь #Лянтор #Магадан #Магнитогорск #Маевка #Майкоп #Майма #Майна #Майский #Майское #Майское #Майя #Макаров #Макарьев #Максатиха #Макушино #МалаяВишера #МалаяПурга #МалаяСердоба #Малгобек #Малиники #Малиновка #Малиновка #Малмыж #Малоархангельское #Маломожайское #Малояз #Малоярославец #Малые Горки #Мальцево #Мамадыш #Мамоново #Мамонтово #Мантурово #Мантурово #Марево #Мариинск #Мариинский Посад #Маркс #Мартыновка #Маршальское #Марьино #Марьяновка #Маслянино #Матвеев Курган #Матвеевка #Матросово #Махачкала #Маяковское #Мглин #Мегион #Медвежьегорск #Медвенка #Медногорск #Медовое #Медынь #Междуреченск #Междуреченский #Междуреченский #Междуречье #Мезень #Меленки #Мелеуз #Мельниково #Мельниково #Менделеево #Менделеевск #Мензелинск #Месягутово #Мещовск #Миайлово #Миасс #Миасское #Миллерово #Милославское #Мильково #Милютинская #Минеральные Воды #Минусинск #Миньяр #Мирный #Мирный #Михайлов #Михайловка #Михайловка #Михайловка #Мичуринск #Мичуринский #Мишкино #Мишкино #Могайтуй #Можайск #Можга #Моздок #Мозырь #Мокроус #Мокроусово #Мокшан #Молчаново #Монастырщина #Мончегорск #Моргауши #Моргуново #Мордово #Мордовское #Морки #Морозовск #Моршанск #Мосальск #Москаленки #Москва #Мостовской #Мошенское #Мошково #Мраково #Муезерский #Мужи #Муравленко #Мураши #Мурманск #Муром #Муромское #Муромцево #Муслюмово #Мухоршибирь #Мучкапский #Мценск #Мыски #Мысовка #Мышкин #Набережные Челны #Навашино #Навля #Нагорное #Нагорск #Надеждино #Надым #Назарово #Назрань #Называевск #Наимово #Нальчик #Намцы #Нариманов #Наровчат #Наро-Фоминск #Нарткала #Нарышкино #Нарьян-Мар #Находка #Началово #Невель #Неверкино #Невинномысск #Невское #Невьянск #Некрасово #Некрасово #Некрасовское #Нелидово #Нема #Неман #Неманское #Нерехта #Нерчинск #Нерюнгри #Нестеров #Нефтегорск #Нефтекамск #Нефтекумск #Нефтеюганск #Нехаевский #Нея #Нива #Нивенское #Нижневартовск #Нижнедевицк #Нижнекамск #НижниеСерги #НижнийИнгаш #НижнийЛомов #НижнийНовгород #НижнийТагил #НижняяОмка #НижняяСалда #НижняяТавда #НижняяТура #Низовье #Никель #Николаевка #Николаевск #НиколаевскнаАмуре #НиколоБерезовка #Никольск #Никольск #Нилово #Новаядеревня #НоваяЛяля #НоваяМалыкла #НоваяУсмань #Новичиха #Новоалександровск #Новоалтайск #Новоаннинский #Новобелокатай #Новобирилюссы #Новобобруйск #Нововаршавка #Нововоронеж #Новогурьевское #Новодвинск #Новодугино #Новоегорьевское #Новозыбков #Новокиевский Увал #Новоколозное #Новокубанск #Новокузнецк #Новокуйбышевск #Новомичуринск #Новомосковск #Новомосковский #Новомосковское #Новониколаевский #Новонукутский #Новоорск #Новопавловск #Новопокровская #Новоржев #Новороссийск #Новоселицкое #Новоселово #Новоселово #Новосергиевка #Новосибирск #Новосокольники #Новоспасское #Новостроево #Новостроево #Новостройка #Новотроицк #Новоузенск #Новоульяновск #Новоуральск #Новохоперск #Новочеркасск #Новошахтинск #Новошешминск #НовыеБурасы #НовыйНекоуз #НовыйОскол #НовыйТоръял #НовыйУренгой #Ногинск #НожайЮрт #Нолинск #Норильск #Ноябрьск #Нурлаты #Нытва #Нюксеница #Нюрба #Нягань #Нязепетровск #Няндома #оСоловки #Обливская #Обнинск #Обоянь #Обь #Обьячево #Овражье #Одесское #Одоев #Озерки #Озерки #Озерск #Озерск #Озеры #Озинки #Оконешниково #Октябрьск #Октябрьск #Октябрьский #Октябрьский #Октябрьский #Октябрьский #Октябрьское #Октябрьское #Октябрьское #Октябрьское #Окуловка #Олекминск #Оленегорск #Оленино #Олеово #Олонец #Ольга #Ольоватка #Ольовка #Ольховатка #Ольховка #Омск #Омсукчан #Омутинский #Омутнинск #Онгудай #Онега #Оотное #Опарино #Опочка #Орда #Ордынское #Орел #Оренбург #Ореовка #ОреховоЗуево #Оричи #Орлов #Орловка #Орловский #Орск #Оршанка #Оса #Осинники #Осиновка #Оссора #Осташков #Остров #Островское #Островское #Острогожск #Острогожское #Отрадная #Отрадное #Отрадный #Оханск #Охотск #Очер #Павино #Павловка #Павлово #Павловск #Павловск #Павловская #Павловский Посад #Павлоградка #Палана #Палатка #Палех #Палкино #Палласовка #Панино #Панкрушиха #Парабель #Параньга #Партизанск #Партизанское #Партизанское #Парфеньево #Парфино #Пахачи #Пачелма #Пенза #Пено #Пеньки #Первомайск #Первомайский #Первомайский #Первомайский #Первомайское #Первомайское #Первомайское #Первоуральск #Перевоз #Переволоцкий #Перелюб #Перемышль #Переславское #Переяславка #Переяславль-Залесский #Пермь #Песочное #Пестово #Пестрецы #Пестровка #Пестяки #Песчанокопск #Петино #Петрово #Петровск #Петровское #Петрозаводск #Петропавловка #Петропавловка #ПетропавловскКамчатский #Петропавловское #Петухово #Петушки #Печора #Печоры #Пижанка #Пикалево #Пильна #Пионерский #Пировское #Пителино #Питерка #Питкяранта #Пичаево #Плавск #Пласт #Плесецк #Плешаново #Плюсса #Победино #Поваровка #Поворино #Погар #Пограничный #Пограничный #Подгоренский #Подгорное #Подгорное #Подгоровка #Поддорье #Поддубное #Поддубное #Поддубы #Поддубье #Подлипово #Подольск #Подосиновец #Подпорожье #Покровка #Покровск #Покровское #Покровское #Покровское #Покровское #Покрышкино #Полевский #Полесск #Полина Осипенко #Половинное #Полтавка #Полтавское #Полярные Зори #Полярный #Поназырево #Пономаревка #Поныри #Порецкое #Поречье #Порхов #Поспелиха #Похвистнево #Почеп #Починки #Починок #Пошехонье #Правдино #Правдинск #Преградная #Преображенская #Пречистое #Приаргунск #Прибрежное #Приволжск #Приволжье #Привольное #Пригородное #Пригородное #Придорожное #Придорожное #Приморск #ПриморскоАхтарск #Приморье #Приморье #Приозерное #Приозерное #Приозерск #Пристень #Приютное #Прокопьевск #Проладное #Пролетарск #Промышленная #Пронск #Прооровка #Прохладный #Прохоровка #Прудное #Пруды #Пряжа #Прямицыно #Псков #Пугачев #Пудож #Пустошка #Путятино #Пучеж #Пушкино #Пушкинские Горы #Пыталово #Пытьях #Пышма #Пыщуг #Пятигорск #Пятидорожное #Радищево #Радужный #Радужный #Раевский #Разино #Райчихинск #Ракитино #Ракитное #Раменское #Рамешки #Рамонь #Рассвет #Рассказово #Ребриха #Ревда #Реж #Ремонтное #Репьевка #Ржакса #Ржев #Ржевское #Ровеньки #Ровное #Ровное #Рогнедино #Родино #РодионовоНесветайская #Родники #Родники #Романовка #Романово #Романово #Романовская #Ромоданово #Рославль #Россия #Россошь #Ростов #Ростов #Рощино #Рощино #Ртищево #Рубцовск #Рудня #Рудня #Руза #Рузаевка #РусскаяПоляна #РусскийКамешкир #Ручьи #Рыбачий #Рыбинск #Рыбинск #Рыбкино #РыбнаяСлобода #Рыбное #Рыльск #Рябиновка #Ряжск #Рязань #Савино #Садовое #Садовое #Садовое #Сакмара #Салават #Салехард #Сальск #Самара #Самара #Самара #Самойловка #Сангар #Сандово #СанктПетербург #Санчурск #Сапожок #Саракташ #Саранск #Саранское #Сарапул #Саратов #Саргатское #Сарманово #Саров #Сасово #Сатинка #Сатка #Сафакулево #Сафоново #Саяногорск #Светлогорск #Светлоград #Светлый #Светлый #Светлый Яр #Свеча #Свобода #Свободный #Себеж #Северное #Северное #Северный #Северный #Северобайкальск #Северодвинск #Североморск #Североуральск #Северск #Северская #Севск #Севское #Сегежа #Седельниково #Сеймчан #СелоИмБабушкина #Селты #Семенов #Семеново #Семикаракорск #Семилуки #Сенгилей #Серафимович #Сергач #СергиевПосад #Сергиевск #Сердобск #Серебрянные Пруды #Сернур #Серов #Серпухов #Серышево #Сеченово #Сибай #Сива #Скалистый #Сковородино #Скопин #Славгород #Славинск #Славск #Славское #Славянка #Славяновка #СлавянскнаКубани #Славянское #Сладково #Сланцы #Слободской #Смоленск #Смоленское #Снежинск #Снежногрск #Собинка #Соболево #Советск #Советск #Советская Гавань #Советский #Советский #Советское #Советское #Совозное #Совозный #Сокол #Сокольники #Солдатово #Солдатово #Солигалич #Соликамск #Солнечная Долина #Солнечногорск #Солнечный #Солнцево #Соловьево #Солонешное #Солонцы #Солотча #Солтон #Соль-Илецк #Сольцы #Сонково #Сопкино #Сорочинск #Сорск #Сортавала #Сосновка #Сосновка #Сосновка #Сосновка #Сосновоборск #Сосновоборск #СосновоОзерское #Сосновское #Сосновый Бор #Сосногорск #Сочи #Спас-Деменск #Спас-Клепики #Спасск #Спасск-Дальний #Спасское #СпасскРязанский #СредниеПахачи #СредняяАхтуба #Сретенск #Ставрополь #Становое #СтараяКулатка #СтараяМайна #СтараяПолтавка #СтараяРусса #СтараяЧара #Старица #Староалейское #Стародуб #СтароеШайгово #Старожилово #Староминская #Старощербиновская #Староюрьево #СтарыйОскол #Степное #Степное #Стерлибашево #Стерлитамак #Стрежевой #Стройный #Строитель #Струги- Красные #Ступино #Суворов #Суворовка #Суворово #Суджа #Судиславль #Судогда #Суздаль #Суземка #Сузун #Суксун #Суна #Сунтар #Суоярви #Сураж #Сургут #Суровикино #Сурское #Сусанино #Сусуман #Сухиничи #Сухобузимское #Сухой Лог #Сызрань #Сыктывкар #Сысерть #Сычевка #Сюмси #Сямжа #Таборы #Табуны #Тавда #Таврическое #Таганрог #Тазовский #Тайга #Таилтып #Тайшет #Талдом #Талица #Таловая #Талпаки #Тальменка #Тамала #Тамбов #Тара #Тарасовский #Тарбагатай #Тарко-сале #Тарногский Городок #Таруса #Тасеево #Татарск #Татищево #Тахтамукай #Тацинский #Ташла #Таштагол #Таштып #Тбилисская #Тверь #Тевриз #Тегульдет #Тейково #Темкино #Темников #Темрюк #Теньгушево #Теплое #Тербуны #Терек #Тереньга #Терней #Терновка #Терскол #Тетюши #Тигиль #Тикси #Тиличики #Тим #Тимашевск #Тимирязево #Тимофеевка #Тимофеево #Тисуль #Тихвин #Тихорецк #Тишино #Тобольск #Тогул #Тогучин #Токаревка #Толбазы #Тольятти #Томск #Тонкино #Топки #Топчиха #Торбеево #Торжок #Торопец #Тосно #Тотьма #Тоцкое #Трехгорный #Троицк #Троицк #Троицкое #Троицкое #Троицкое #ТроицкоПечорск #Тросна #Тростники #Трубачевск #Туапсе #Тугаев #Тугулым #Тужа #Туймазы #Тула #Тульский #Тумановка #Тургенево #Туринск #Туринская Слобода #Турки #Турочак #Турунтаево #Тында #Тырныауз #Тюкалинск #Тюленино #Тюльган #Тюлячи #Тюменцево #Тюмень #Тюхтет #Тяжинский #Убинское #Ува #Уварово #Уват #Увельский #Углич #Угловское #Угра #Удомля #Ужур #Узловая #Узловое #Уинское #Уйское #УланУдэ #Улеты #Ульяново #Ульяново #Ульяновск #Умба #Умет #Унеча #Уни #Упорово #Уразовка #Урай #Урень #Уржум #Урмары #УрусМартан #Уруссу #Урюпинск #Усвяты #Усинск #Усмань #Усогорск #Усолье #УсольеСибирское #Успенское #Уссурийск #УстьАбакан #УстьБольшерецк #УстьДжегута #УстьДонецкий #Устье #УстьИлимск #УстьИшим #УстьКалманка #УстьКамчатск #УстьКан #УстьКатав #УстьКишерть #Усть-Кулом #Усть-Кут #Усть-Лабинск #Усть-Мая #Усть-Омчуг #Усть-Ордынский #Усть-Пристань #Усть-Тарка #УстьУда #УстьХайрюзово #УстьЦильма #Устюжна #Уфа #Ухолово #Ухта #Учалы #Учкекен #Ушаковка #Ушаково #Уяр #Фаленки #Фатеж #Февральское #Федоровка #Федотово #Ферзиково #Фершампенуаз #Филипповка #Фирово #Фокино #Фролово #Фрунзенское #Фурманов #Фурмановка #Фурманово #Хабаровск #Хабары #Хакуринохабль #Хандыга #Хантымансийск #Харабали #Харовск #Харп #Хвалынск #Хвастовичи #Хвойная #Хилок #Хиславичи #Хлебниково #Хлевное #Холм #ХолмЖирковский #Холмогоровка #Холмогоры #Холмогорье #Холмы #Хомутивка #Хоринск #Хороль #Хоста #Хохольский #Цаган Аман #Целина #Целинное #Целинное #Цивильск #Цимлянск #Чагода #Чайкино #Чайковский #Чалтырь #Чамзинка #Чаны #Чапаевск #Чаплыгин #Чарышское #Частоозерье #Частые #Чебаркуль #Чебоксары #Чегдомын #Чегем Первый #Чекмагуш #Челно-Вершины #Челябинск #Челябинск #Чеово #Чердаклы #Чердынь #Черемисиново #Черемуино #Черемхово #Черемшаны #Черепаново #Череповец #Черкесск #Черлак #Черниговка #Черноголовка #Черногорск #Чернушка #ЧерныйЯр #Чернышевск #Чернышевское #Чернышковский #Чернь #Чернянка #Черняховск #Чертково #Чесма #Чехов #Чикола #Чистоозерное #Чистополь #Чистополье #Чистыепруды #Чита #Чишмы #Чкаловск #Чоя #Чугуевка #Чудово #Чулым #Чумикан #Чунский #Чурапча #Чусовой #Чухлома #Чучково #Шадринск #Шали #Шалинское #Шаля #Шаран #Шаранга #Шаркан #Шарлык #Шарыпово #Шарья #Шатки #Шатой #Шатрово #Шатура #Шаховская #Шахты #Шахунья #Шацк #Шебалино #Шебекино #Шевченко #Шексна #Шелаболиха #Шелехов #Шелопугино #Шемурша #Шемышейка #Шенкурск #Шентала #Шербакуль #Шилка #Шилово #Шимановск #Шимск #Шипуново #Шира #Широкое #Шовгеновский #Шолоово #Шоссейный #Шуйское #Шумерля #Шумиха #Шумячи #Шушенское #Шуя #Щегловка #Щеглы #Щекино #Щелково #Щигры #Щучье #ЫтыкКюель #Электросталь #Элиста #Эльхотово #Энгельс #Эртиль #Эссо #Юдино #Южа #Южно-Сахалинск #Южноуральск #Южный #Юкаменское #Юрга #Юргамыш #Юргинское #Юрино #Юрьев- Польский #Юрьевич #Юрья #Юхнов #Яблоневка #Яблоневка #Яблоновка #Явас #Ягодное #Ядрин #Языково #Яковлевка #Якутск #Якшурбодья #Ялуторовск #Яльчики #Янаул #Янтарный #Янтиково #Яр #Яранск #Яренск #Ярки #Ярково #Яровое #Ярославль #Ярославское #Ярсале #Ярцево #Ясеньское #Ясная поляна #Ясногорск #Ясное #Ясный #Яшалта #Яшкино #Яшкуль #Яя

Подборка городов Российской Федерации

75 самых крупных городов России

#Москва #СанктПетербург #Новосибирск #Екатеринбург #НижнийНовгород #Казань #Самара #Челябинск #Омск #РостовнаДону #Уфа #Красноярск #Пермь #Волгоград #Воронеж #Саратов #Краснодар #Тольятти #Тюмень #Ижевск #Барнаул #Ульяновск #Иркутск #Владивосток #Ярославль #Хабаровск #Махачкала #Оренбург #Томск #Новокузнецк #Кемерово #Астрахань #Рязань #НабережныеЧелны #Пенза #Липецк #Тула #Киров #Чебоксары #Калининград #Курск #УланУдэ #Ставрополь #Магнитогорск #Тверь #Иваново #Брянск #Сочи #Белгород #НижнийТагил #Архангельск #Владимир #Чита #Калуга #Сургут #Смоленск #Волжский #Курган #Орёл #Череповец #Вологда #Владикавказ #Саранск #Мурманск #Якутск #Тамбов #Грозный #Стерлитамак #Кострома #Петрозаводск #Нижневартовск #ЙошкарОла #Новороссийск #КомсомольскнаАмуре #Таганрог

Как сохранять сообщения E-mail из форм плагина «Contact form 7» на сайте?

Дано: Сайт под управлением CMS WordPress. На сайте используется плагин «Contact Form 7», для создания и отправки E-mail форм.

Задача: Сохранять отправленные E-mail сообщения (обращения) внутри сайта, в базу данных, чтобы можно было получить доступ к письмам из панели управления сайтом.

Решение: Плагин «Contact Form 7» не сохраняет отправленные пользователями сообщения через формы на сайте. Но существует дополнение к этому плагину, которое исправляет эту маленькую неприятность.

Flamingo — это плагин для сохранения сообщений, созданный специально для плагина Contact Form 7.

Найти и установить его можно из панели управления сайтом, по одноимённому ключевому слову:

После активации плагина, вам будет доступен пункт Flamingo в меню административной панели WordPress.

Раздел плагина в меню

После активации плагин сразу сохраняет в базе данных вашего сайта все сообщения, отправленные через контактные формы. Теперь все они будут собраны здесь.

В Адресной книге будут E-mail пользователей, которые уже существовали в базе данных на сайте, а также которые будут поступать с новых обращений. Обратите внимание на полезный раздел История, в котором отображается источник обращения.

Адресная книга

А при помощи кнопочки Экспорт вы можете выгрузить данные пользователей в формате CSV, например, для переноса их в сервис рассылки или CRM 🙂

Возможность экспорта данных

Раздел Входящие обращения содержит непосредственно сами письма поступающие из форм созданных плагином Contact Form 7. В частности, ниже мы видим поступившее обращение:

поступившее обращение

Если перейти внутрь сообщения, то нам становится доступна обширная информация по нему. Вначале Поля, которые заполнял пользователь, а ниже дополнительная служебная информация об отправителе и отправлении, в частности мы можем узнать с какой страницы было отправлено данное сообщение, посмотреть информацию о браузере пользователя, его «Айпи»

С Flamingo вам больше не придётся беспокоиться о потере важных сообщений из-за ошибок почтового сервера или неправильной настройки отправки почты.

Официальная страница плагина на WordPress.org

Существуют и другие подобные решения, но в своей статья я ограничился этим, так как оно является простым, не нуждается в настройках и работает сразу «из коробки», а самое главное — его разработчик это автор плагина Contact Form 7, а следовательно вопрос совместимости и прочих нюансов отпадает.

Возможные неприятности

И вроде бы всё с первого взгляда хорошо… Приходят письма, данные отправителей сохраняются…

Но есть одно «но». Не стоит забывать о спаме! Как известно перед спамерами наиболее уязвимы именно формы отправки данных, такие как: комментарии, формы обратной связи.

Поэтому чтобы держать вашу базу почтовых адресатов в чистоте позаботьтесь в первую очередь о защите от спама. Возможно вам вполне хватит фильтрации сервиса Akismet, а возможно верным и надежным решением окажется  встроенная интеграция с капчей от Google плагина Contact Form 7.