Coma Web Development разрабатывает сайты на WordPress c 2010 года. В блоге мы делимся некоторыми наблюдениями из жизни, советами и рекомендациями для тех, кто решит сделать сайт на WordPress самостоятельно.

Что такое: Экран Администратора

Термин Экран Администратора используется для описания различных секций в WordPress, связанных с областью администраторской панели. Причина по которой используется термин «Экраны» а не «страницы», заключается в том, чтобы избежать путаницы между административными экранами и обычными страницами (как типом поста), которые могут быть созданы, отредактированы или удалены пользователем.

WordPress

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

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

С Экранов Администратора пользователи могут управлять практически всеми аспектами WordPress. Интерфейс выглядит одинаково как для обычных пользователей, так и для администраторов, но возможности зависят от роли. Администраторы имеют доступ ко всем настройкам, в то время как пользователи более низких ролей могут использовать только функции, которые соответствуют их уровню доступа — например, работать со своими постами или редактировать профиль.

Администраторы могут также изменять файлы темы или добавлять пользовательский код через экран «Редактор файлов» (Theme File Editor), однако в современных версиях WordPress его использование не рекомендуется, так как прямое редактирование файлов может привести к ошибкам и потере изменений. Для визуального изменения оформления в админ-панели доступен встроенный инструмент Additional CSS в настройщике (Customizer), если он включён темой; он позволяет безопасно добавить собственный CSS без изменения файлов темы.


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Как убрать возможность восстановления и смены пароля из WordPress

Зачем убирать восстановление или смену пароля в WordPress

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

Способ первый: убираем опцию восстановления пароля через плагин

Способ с плагином проще и удобнее. Он позволяет вам настроить отмену восстановления пароля для всех пользователей. Вам надо установить и активировать плагин Reset Password Removed.

Примечание: Reset Password Removed отключает восстановление пароля для всех пользователей, включая администраторов.

После активации плагин автоматически убирает ссылку «Забыли пароль?» и блокирует возможность восстановления пароля для всех пользователей.

Способ второй: вручную убираем функцию восстановления пароля в WordPress

Если вы предпочитаете не устанавливать дополнительные плагины, или хотите точечно отключать восстановление пароля для определённых пользователей, можно использовать кастомный код. Для этого откройте любой текстовый редактор и создайте файл, например disable-password-reset.php. Вставьте в него один из ниже приведённых вариантов кода.

Отключение для всех пользователей

Вариант 1: блокировка с перенаправлением и удалением ссылки «Забыли пароль?»

Следующий код полностью блокирует возможность восстановления пароля для всех пользователей, убирает ссылку «Забыли пароль?» на странице входа и перенаправляет всех, кто попытается открыть стандартную страницу сброса пароля, обратно на страницу входа:

<?php
add_filter( 'allow_password_reset', '__return_false' );
add_action( 'login_init', function() {
    if ( isset( $_GET['action'] ) && in_array( $_GET['action'], ['lostpassword', 'retrievepassword'] ) ) {
        wp_redirect( wp_login_url(), 301 ); // Перенаправляет всех на страницу входа
        exit;
    }
});
add_filter( 'gettext', function( $text ) {
    return ( $text === 'Lost your password?' ) ? '' : $text;
});
?>

Вариант 2: блокировка с сохранением возможности восстановления для администраторов

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

<?php
class Password_Reset_Removed {
    function __construct() {
        add_filter('show_password_fields', array($this, 'disable'));
        add_filter('allow_password_reset', array($this, 'disable'));
        add_filter('gettext', array($this, 'remove'));
    }

    function disable() {
        $userdata = wp_get_current_user();
        $user = new WP_User($userdata->ID);
        if ( ! empty( $user->roles ) && is_array( $user->roles ) && $user->roles[0] == 'administrator' ) {
            return true; // Администраторы сохраняют возможность восстановления через админпанель
        }
        return false; // Остальные пользователи не могут
    }

    function remove($text) {
        return str_replace(array('Lost your password?', 'Lost your password'), '', trim($text, '?'));
    }
}

$pass_reset_removed = new Password_Reset_Removed();
?>

Отключение для определённых ролей или пользователей

Если нужно блокировать восстановление пароля только для конкретных ролей или отдельных пользователей, используйте код с проверкой ролей или ID пользователей:

Блокировка для всех кроме администраторов:

<?php
add_filter('allow_password_reset', function($allow, $user_id) {
    $user = get_userdata($user_id);
    if (in_array('administrator', $user->roles)) return true; // Администраторы могут сбрасывать пароль
    return false; // Все остальные пользователи не могут
}, 10, 2);
?>

Блокировка для конкретных пользователей по ID:

<?php
add_filter('allow_password_reset', function($allow, $user_id) {
    $blocked_users = [3, 7, 15]; // ID пользователей, для которых восстановление заблокировано
    if (in_array($user_id, $blocked_users)) return false;
    return true; // Остальные пользователи могут сбрасывать пароль
}, 10, 2);
?>

Сохраните ваш файл. Затем соединитесь со своим сайтом по FTP и зайдите в папку wp-content/plugins.

WordPress

Загрузите созданный вами файл в эту папку. Теперь зайдите в админку на страницу Plugins, где вы увидите новый плагин Disable Password Reset в списке установленных. Активируйте его.

WordPress

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


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Что такое: .htaccess

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

В WordPress .htaccess файл в большинстве случаев используется для перезаписи URL, делая их чище, и более читабельными для людей и поисковиков.

В секции Адмнистрирования WordPress Настройки> Постоянная ссылка, у Вас есть возможность выбрать опцию структуры Вашего URL. WordPress автоматически обновит Ваш .htaccess файл, чтобы применить выбранную структуру.

Если WordPress не сможет сделать это автоматически, то Вас попросят сделать это вручную. Редактировать вручную файл .htaccess немного рискованно, так как это может привести к ошибкам на сервере, если настройки будут неверными. Поэтому будьте уверены, что копируете только ту информацию, которую WordPress рекомендует.

Стоит учитывать, что если Ваш сайт работает на Nginx, то .htaccess не используется — правила перенаправлений, перезаписи URL и кэширования задаются в конфигурации Nginx (например, через nginx.conf) или через панель управления хостинга. При этом современные панели управления (cPanel, Plesk, RunCloud и др.) часто предоставляют возможность автоматического редактирования .htaccess с резервным копированием, что снижает необходимость ручного вмешательства.

Такие плагины как W3 Total Cache, WP Rocket и другие современные решения для кэширования и оптимизации, изменяют Ваш .htaccess файл для настройки кэширования, сжатия и оптимизации ресурсов сайта.

Файл .htaccess обычно находится в корневых директориях Вашего WordPress сайта. Ваш FTP клиент может не показывать его, так как по умолчанию файлы и директории, начинающиеся с точки, считаются скрытыми. Чтобы увидеть их, включите отображение скрытых файлов в FTP-клиенте.

Если Вы используете CDN (Cloudflare, BunnyCDN и др.), часть перенаправлений и кэширования может управляться на уровне CDN, а не через .htaccess, что также стоит учитывать при настройке сайта.


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Как спрятать под замок контент сайта

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

Что такое замкнутый контент и зачем он нужен?

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

WordPress

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

Что нужно для скрывания контента на WordPress?

В этой инструкции мы с вами будем пользоваться OptinMonster, который на данный момент остаётся одним из лучших решений на рынке. Однако вам понадобится тариф plus или pro, чтобы вы могли прятать контент.

Добавление спрятанного контента

Первым чередом надо установить и активировать плагин OptinMonster. Этот плагин служит всего лишь связующим звеном между вашим сайтом и аккаунтом в системе OptinMonster. После активации плагина вы будете автоматически перенаправлены на страницу OptinMonster для подключения вашего сайта. Здесь плагин создаст безопасное соединение с вашим аккаунтом. После завершения настройки вы попадёте в раздел Campaigns (https://app.optinmonster.com/campaigns/), где можно создавать новые optin-формы, управлять существующими кампаниями и настраивать блокировку контента для вашего сайта.

Чтобы создать кампанию с блокировкой контента, нажмите Create New Campaign. Откроется окно с приветствием и выбором типа кампании. Вам предлагаются три основных варианта:

  • Playbooks — готовые, проверенные кампании, вдохновлённые успешными брендами.
  • Templates — сотни легко настраиваемых шаблонов с высоким коэффициентом конверсии.
  • Canvas — пустой шаблон для полной кастомизации с нуля.

WordPress

Выберите подходящий вариант и продолжите настройку кампании. Для блокировки контента рекомендуется использовать тип After Post / Inline, если вы хотите скрывать материал на страницах или постах.

Мы, например, нашли удобный шаблон Unlock Gated Content в библиотеке готовых решений — он специально предназначен для закрытого контента и отлично подходит для таких задач.

WordPress

Выберите нужный шаблон нажав Use Template.

Далее появится окно с настройками кампании:

  • What do you want to call your inline campaign? — введите название кампании.
  • Which website(s) do you want to load this campaign on? — выберите сайт из выпадающего списка или добавьте новый.

Если вы добавляете новый сайт, вам нужно ввести его название и домен, после чего нажать Start Building.

При добавлении домена важно понимать разницу между:

  • Top-level domain — например, mysite.com — это основной домен сайта. В этом случае кампания будет отображаться только на главном домене, но не будет работать на поддоменах, таких как blog.mysite.com.
  • Sub-domain — например, blog.mysite.com — используется для отдельных разделов или проектов. Кампания в этом случае будет работать только на указанном поддомене и не будет доступна на основном домене или других поддоменах.
  • Wildcard subdomain — например, *.mysite.com — охватывает все поддомены вашего сайта. Это удобно, если вы хотите использовать одну и ту же кампанию на нескольких поддоменах одновременно. Однако кампания при этом не будет работать на основном домене, если вы его явно не добавите отдельно.

После этого откроется визуальный drag-and-drop редактор, в котором можно гибко настроить внешний вид формы: изменить цвета, тексты, кнопки и добавить дополнительные элементы. Это позволяет адаптировать кампанию под дизайн вашего сайта без необходимости писать код.

WordPress

После завершения визуального редактирования кампании вы автоматически попадёте в раздел Display Rules → Conditions. Здесь вы можете выбрать, на каких страницах сайта будет показываться всплывающее окно с формой — например, на всех страницах WordPress-сайта или только на отдельных.

WordPress

После того как вы задали условия отображения, нажмите кнопку “Done? Go To Actions”, чтобы перейти к следующему шагу.

На следующем экране откроется раздел Display Rules → Actions, где можно добавить анимацию появления и звуковое сопровождение через MonsterEffects.

Далее прокрутите вниз до секции Lock Content, где можно включить блокировку контента, активировав переключатель Enable Content Locking.

WordPress

Здесь доступны два варианта поведения:

  • Blur — контент страницы размывается, и пользователи не могут его прочитать, пока не выполнят нужное действие.
  • Remove — контент полностью скрывается.

После того как посетитель выполнит требуемое действие, OptinMonster автоматически откроет доступ к скрытому контенту.

Ниже доступны дополнительные параметры отображения кампании, включая настройки cookie — вы можете задать, через сколько дней повторно показывать кампанию одним и тем же пользователям.

После настройки действий нажмите кнопку Go To Summary, чтобы перейти к сводке кампании и просмотреть логику перед публикацией, убедившись, что условия показа заданы правильно. Не забудьте сохранить изменения через кнопку Save в правом верхнем углу — это необязательно после каждого раздела, но рекомендуется, чтобы не потерять настройки.

Далее при необходимости откройте раздел Integration. Здесь можно настроить теги, сопоставить поля формы и при желании подключить сторонний сервис e-mail маркетинга. Если вы не используете сторонние сервисы, можно оставить настройки Monster Leads по умолчанию.

В разделе Analytics можно подключить сервисы аналитики, например Google Analytics, чтобы отслеживать эффективность кампаний и поведение пользователей.

Когда все настройки кампании завершены, перейдите в раздел Publish. Сначала убедитесь, что ваш сайт корректно подключен к OptinMonster с помощью опции Verify.

WordPress

После успешной проверки статус сайта изменится на Connected.

Затем выберите платформу WordPress.

WordPress

После того как все параметры проверены и сайт подключен, нажмите Publish.

WordPress

После публикации кампании все её настройки продолжают регулироваться в приложении OptinMonster. В WordPress через установленный плагин вы сможете видеть подключённые кампании, при необходимости вставлять шорткоды для ручного размещения inline-кампаний и проверять работу контента на сайте.

Для настройки способа отображения inline-кампаний с блокировкой контента откройте WordPress и перейдите в OptinMonster → Campaigns, затем выберите нужную кампанию и нажмите Output Settings.

WordPress

В разделе настроек кампании вы увидите блок WordPess Output Settings:

  • Automatic — блокировка контента происходит автоматически после указанного количества слов или абзацев. Вы можете задать количество абзацев или слов, после которых контент будет размываться или скрываться. Этот режим позволяет скрывать контент на всех постах без ручного редактирования.
  • Manual — вы добавляете шорткод на каждую страницу или пост, где хотите скрыть контент. Для этого скопируйте предоставленный шорткод и вставьте его через блок Shortcode в редакторе WordPress на нужных страницах или постах. Это даёт точный контроль над тем, какой контент будет заблокирован.

WordPress

Теперь вы можете открыть страницу с заблокированным контентом в браузере. Вы увидите, что контент размытый или скрытый. Как только пользователь выполнит требуемое действие (например, введёт email), скрытый материал будет отображён.


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


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

Хотели когда-нибудь позволить своим пользователям подписываться на определенных авторов вашего блога? Если у вас сайт, на котором трудится несколько журналистов, то вам стоит подумать над тем, чтобы позволить своим посетителям подписываться на их фаворитов. В этой статье мы расскажем вам как это сделать.

Зачем добавлять подписку на авторов?

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

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

Каждый автор на вашем сайте имеет собственный RSS фид. Его адрес имеет приблизительно следующий вид:

https://example.com/author/tom/feed/

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

WordPress

Добавляем автоматическую ссылку на подписку

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

// Function to generate author's RSS feed link
function wpb_author_feed() {
    $author_id = get_the_author_meta('ID');
    $author_feed = get_author_posts_url($author_id) . 'feed/';
    $author_name = get_the_author_meta('display_name');

    return '<a href="' . esc_url($author_feed) . '" class="author-subscribe-link">'
           . 'Подписаться на посты ' . esc_html($author_name) . '</a>';
}

// Create a shortcode to display the link
add_shortcode('authorfeed', 'wpb_author_feed');

// Enable shortcode execution in WordPress text and block widgets
add_filter('widget_text_content', 'do_shortcode'); 
add_filter('widget_block_content', 'do_shortcode');

Теперь можете использовать в своих постах шорткод [authorfeed] и у вас автоматически сгенерируется ссылка на RSS фид автора поста. Можете менять текст ссылки как вам угодно.

WordPress

Обратите внимание, что RSS-ссылка не создаёт реальную подписку — она просто открывает XML-фид автора. Чтобы подписаться, пользователю нужно добавить эту ссылку в своё приложение для чтения новостей (например, Feedly, Inoreader или NewsBlur).

Добавляем ссылку подписки на автора в сайдбаре

Теперь, когда шорткод готов, можно добавить ссылку на RSS-подписку в сайдбаре вашего сайта. Перейдите в раздел Appearance > Widgets и добавьте текстовый или Custom HTML виджет в область сайдбара, где вы хотите разместить ссылку. В текстовое поле вставьте шорткод [authorfeed], после этого нажмите Save.

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

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

  • Через редактор блоков виджетов (Gutenberg Widgets):
    при добавлении блока “Shortcode” или “HTML” в область виджетов, нажмите на него → в боковой панели выберите “Условия показа” (если поддерживается вашей темой или плагином, например Widget Options или Block Visibility).
    Укажите условие: Показывать только на отдельных записях (Single Posts).

  • С помощью плагина Widget Options:
    установите Widget Options, откройте настройки нужного виджета и отметьте пункт “Show on → Post Types (отмечен значком булавки) → Posts”.

WordPress

Теперь при просмотре любой статьи в сайдбаре будет отображаться корректная ссылка на RSS-фид именно того автора, который написал пост. Можете использовать немного CSS, чтобы создать красивую кнопку или добавить иконку для подписки.

Использование RSS-ссылок остаётся самым простым и надёжным способом позволить пользователям подписываться на конкретного автора: каждый читатель получает обновления именно того автора, который ему интересен, и никаких сложных настроек или дополнительных плагинов не требуется. В то же время современные методы, такие как подписка по электронной почте или push-уведомления, становятся всё более популярными и широко используемыми для общих подписок на сайт. Мы подробно рассказали о том, как реализовать подписку через e-mail и push в отдельных статьях.


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Как использовать WP-CLI для управления WordPress

WP-CLI — это мощный инструмент командной строки, который позволяет управлять сайтом WordPress без использования браузера. С его помощью можно быстро обновлять плагины, работать с записями, управлять пользователями, выполнять резервное копирование и автоматизировать рутинные задачи.

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

Почему стоит использовать WP-CLI

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

С WP-CLI всё это можно делать в несколько раз быстрее, просто набирая команды в терминале. Это удобно, если вы:

  • обслуживаете несколько сайтов и хотите ускорить рутинные операции;
  • автоматизируете процессы (скрипты, cron);
  • работаете на staging или production-серверах через SSH, где нет доступа к админке или нужно быстро решать проблемы;
  • хотите выполнять массовые операции без кликов в интерфейсе.

Для локальной разработки WP-CLI также идеально подходит: вы можете тестировать команды на локальном сервере (например, WAMP) без риска повредить живой сайт. Все команды будут выполняться на вашем компьютере, а не на реальном сервере.

Установка WP-CLI на локальном сервере (WAMP)

Для удобства создайте отдельную папку для WP-CLI, например, C:\wp-cli.  Это позволит использовать WP-CLI глобально и не привязывать его к конкретному сайту. В командной строке (Command Prompt) создайте папку и перейдите в неё:

mkdir C:\wp-cli
cd C:\wp-cli

Находясь в этой папке, скачайте WP-CLI с помощью команды:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Иногда скачанный файл может иметь расширение .txt, например wp-cli.phar.txt. В этом случае переименуйте его обратно в wp-cli.phar:

rename wp-cli.phar.txt wp-cli.phar

Проверить работу WP-CLI можно командой:

php C:\wp-cli\wp-cli.phar --info

Эта команда выведет информацию о версии WP-CLI, PHP и вашей рабочей среде.

Чтобы не вводить полный путь к .phar каждый раз, можно создать batch-файл wp.bat в той же папке с содержимым:

@ECHO OFF
php "C:\wp-cli\wp-cli.phar" %*

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

wp --info

*На Windows 10/11 иногда batch-файл не корректно обрабатывает %*, поэтому для стабильной работы удобнее использовать прямой вызов .phar через PHP.

Установка WP-CLI на живой сайт через SSH

Подключитесь к серверу через SSH:

Перейдите в корень WordPress, где находится файл wp-config.php:

cd /path/to/wordpress

*Замените /path/to/wordpress на реальный путь к вашей установке WordPress.

Если WP-CLI установлен глобально, проверить работу WP-CLI можно командой:

wp --info
Если глобальная установка не выполнена, используйте прямой вызов .phar:
php wp-cli.phar --info

Работа с WP-CLI

WP-CLI всегда должен запускаться из корня сайта, где находится wp-config.php.

На локальном сервере Windows это обычно:

C:\wamp64\www\mysite

На live-сервере через SSH:

cd /path/to/wordpress

*Замените mysite или /path/to/wordpress на реальные имена ваших папок.

Полезные команды WP-CLI

Обновление ядра WordPress

wp core update

Установка и активация плагина

wp plugin install contact-form-7 --activate

*Замените contact-form-7 на название вашего плагина.

Установка и активация темы

wp theme install twentytwentyfive --activate

*Замените twentytwentyfive на нужную тему.

Добавление нового пользователя

wp user create editor [email protected] --role=editor --user_pass=123456

*Замените editor, [email protected] и 123456 на реальные имя пользователя, email и пароль, которые вы хотите использовать.

Резервная копия базы данных

wp db export backup.sql

Импорт базы данных

wp db import backup.sql

Деактивация сбойного плагина

wp plugin deactivate problem-plugin

*Замените problem-plugin на название вашего плагина.

Итог

Использование WP-CLI позволяет:

  • ускорять управление WordPress;
  • безопасно обновлять плагины, темы и ядро;
  • управлять пользователями и базой данных напрямую через терминал;
  • автоматизировать повторяющиеся задачи;
  • быстро решать проблемы с плагинами или другими компонентами без входа в админку.

Эти возможности делают WP-CLI особенно полезным для разработчиков, администраторов и при работе с несколькими сайтами или большими проектами.


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Как вывести список постов по расписанию

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

Что такое посты по расписанию?

Если вы уже какое-то время занимаетесь блоггингом, то наверняка заметили, что публикуя посты в определенное время может помочь заработать больше просмотров. Если вы новенький в ведении блога, то вам следует начать с анализа посещаемости (например, Google Analytics / GA4), чтобы понять, когда ваша аудитория наиболее активна.

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

Важно понимать: по умолчанию WordPress не показывает посетителям посты в статусе Scheduled (запланированные). Они автоматически станут видимыми в блоге только в назначенное время. Но если вы хотите вывести список будущих записей (например, раздел «Скоро выйдет»), это можно сделать с помощью плагина или собственного кода. В этой статье мы рассмотрим оба варианта.

Способ первый: отображение грядущих постов при помощи плагина

Установите и активируйте плагин Display Posts. Он добавляет универсальный шорткод, который позволяет выводить записи по любым параметрам, включая статус future. Вставьте в запись, страницу или блок Shortcode следующий код:

[display-posts post_status="future" order="ASC" posts_per_page="5"]

Этот шорткод выведет до 5 запланированных постов в порядке возрастания даты публикации. (Параметр posts_per_page="5" определяет количество выводимых постов. Вы можете заменить 5 на любое другое число, чтобы показывать нужное количество запланированных записей).

Список можно разместить в сайдбаре через блок «Shortcode» или «Custom HTML», а также вставить прямо в текст страницы или записи.

Проблема со ссылками

По умолчанию Display Posts создаёт ссылки на заголовки постов. Для авторизованных пользователей (админ, редактор, автор) они работают и ведут на превью поста, а для незалогиненных пользователей ссылки ведут на 404, так как пост ещё не опубликован.

Решение с CSS

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

.logged-out .display-posts-list a {
    pointer-events: none;
    cursor: default;
    text-decoration: none;
    color: inherit;
}

Для незалогиненных пользователей ссылки внутри .display-posts-list становятся некликабельными благодаря классу .logged-out, в то время как авторизованные пользователи видят рабочие ссылки. Таким образом вы можете безопасно показывать список будущих постов на сайте без риска, что посетители попадут на 404 страницы.

Способ второй: показываем запланированные посты вручную

Если вы предпочитаете лёгкий кастомный код без плагинов, добавьте следующий код в файл functions.php вашей дочерней темы или создайте небольшой собственный плагин-сниппет.

// Add this code to your child theme's functions.php or a small custom plugin
function wpb_upcoming_posts() {
    // Query for future posts
    $the_query = new WP_Query( array(
        'post_status'    => 'future',      // Only get scheduled posts
        'posts_per_page' => 3,             // Limit number of posts displayed
        'orderby'        => 'date',        // Order by post date
        'order'          => 'ASC',         // Earliest posts first
    ) );

    // Initialize output variable
    $output = '';

    // Check if there are future posts
    if ( $the_query->have_posts() ) {
        $output .= '<ul class="upcoming-posts">';
        while ( $the_query->have_posts() ) {
            $the_query->the_post();

            // Escape title and date for security
            $title = esc_html( get_the_title() );
            $date  = esc_html( get_the_date( get_option( 'date_format' ) ) );

            // If user is logged in, show link; otherwise show only title and date
            if ( is_user_logged_in() ) {
                $permalink = esc_url( get_permalink() );
                $output .= "<li><a href=\"{$permalink}\">{$title}</a> ({$date})</li>";
            } else {
                $output .= "<li>{$title} ({$date})</li>";
            }
        }
        $output .= '</ul>';
    } else {
        // Message if no scheduled posts are found
        $output .= '<p>No upcoming posts yet.</p>';
    }

    // Reset post data after query
    wp_reset_postdata();

    // Return the HTML output
    return $output;
}

// Register shortcode [upcoming_posts]
add_shortcode( 'upcoming_posts', 'wpb_upcoming_posts' );

// Enable shortcode execution in text widgets
add_filter( 'widget_text', 'do_shortcode' );

Теперь зайдите в Appearance – Widgets (или в редактор блоков) , добавьте блок «Shortcode» или «Custom HTML» в сайдбар и вставьте этот шорткод:

[upcoming_posts]

WordPress

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


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Как найти и заменять текст в вашей базе данных WordPress одним щелчком

Если вы хотите найти и заменить определенный текст, адрес или изображение, вы можете легко это сделать, используя плагин WordPress по поиску и замены или же простой запрос SQL.

Когда вам может понадобиться поиск и замены в базе данных WordPress

Допустим, что вы добавили определенный текст или адрес в некоторое количество своих постов. Вы не знаете в какие именно посты вы его добавили, но знаете, что этих постов очень много. Вы можете вручную проверять посты один за другим, убить на это кучу времени и, скорее всего, упустить какие-нибудь вещи. С помощью команды по поиску и замене вы сможете сделать то же самое, но куда быстрее и эффективнее. Единственный момент, который стоит учитывать, это то, что если вы допустите ошибку, то вы не сможете все вернуть назад. Как только текст будет заменен, он исчезнет навсегда. Поэтому внимательно набирайте текст, который вы ищете и которым будете заменять.

Приступаем к делу

Как мы уже упомянули выше, изменения вернуть назад будет невозможно, поэтому советуем вам сделать бэкап базы данных – это можно сделать при помощи плагина или phpMyAdmin – после чего можно приступать к поиску и замене.

Поиск и замена при помощи плагина

Если вы не дружите с кодом и не хотите писать SQL запрос, то есть более простой способ найти и заменить текст. Это плагин WordPress под названием Better Search Replace.

WordPress

Он позволяет вам запускать команды по поиску и замене прямо в самой админке WordPress.

Главное преимущество Better Search Replace — он корректно работает с сериализованными данными, которые часто хранятся в опциях и метаполях WordPress. Это особенно важно, если вы заменяете доменные имена или ссылки на HTTPS — простая текстовая замена может повредить сериализованные массивы, поэтому рекомендуется использовать именно плагин или WP-CLI (см. ниже).

Запуск SQL запроса поиска и замены в phpMyAdmin

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

WordPress

На скриншоте выше отображена админка cPanel в Hostnet. Ваша админка может выглядеть иначе. Запустится phpMyAdmin, где вам надо будет щелкнуть по названию базы данных WordPress и потом щелкнуть по SQL.

WordPress

Вам надо будет ввести ваш SQL-запрос следующим образом:

update TABLE_NAME set FIELD_NAME =
replace(FIELD_NAME, 'Text to find', 'text to replace with');

Например, если вы хотели найти текст в постах WordPress, то вам надо написать запрос подобным образом:

update wp_posts set post_content =
replace(post_content, 'Text to find', 'text to replace with');

Нажмите на кнопку Go, чтобы продолжить. phpMyAdmin запустит SQL-запрос и в случае успеха покажет количество замененных строк. Можете теперь зайти на свой сайт, чтобы увидеть изменения.

*Обратите внимание: префикс таблиц может отличаться от стандартного wp_.

Альтернатива для продвинутых пользователей: WP-CLI

В настоящее время для больших сайтов и разработчиков одним из самых быстрых способов замены текста является WP-CLI — консольный инструмент управления WordPress. Он также поддерживает сериализованные данные и может работать со всеми таблицами сразу.

Пример команды:

wp search-replace 'http://oldsite.com' 'https://newsite.com' --all-tables

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


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


Как изменить расписание удаления спама в Akismet

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

Зачем менять расписание?

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

Меняем расписание

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

WordPress

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

add_filter( 'akismet_delete_comment_interval', 'custom_spam_delete_interval' );

function custom_spam_delete_interval() {
	return 7;
}

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

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

Проверка изменений

Вы можете увидеть изменения, зайдя на страницу Settings – Akismet. Прокрутите вниз и вы увидите примечание: Spam in the spam folder older than X days is deleted automatically, где X — это количество дней, которое вы указали.

WordPress

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


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520