Архив метки: Wordpress

Как правильно отключить XML-RPC

Сегодня в статье поговорим о WordPress и его функционале. Начиная с первых версий у WordPress есть функция удаленного управления сайтом с помощью специальных приложений.






XML Remote Procedure Call — (Вызов удаленной процедуры) используется для подключения к сайту через мобильное приложение WordPress (android, ios).




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




История XML-RPC




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




Сервис Blogger создал API и оффлайн-приложение для создания контента, и пользователи стали загружать контент через XML-RPC. После этого остальные блог-платформы сделали то же самое у себя.




В 2008-2009 годах компания Automattic, которая поддерживает плагины WP Super Cache, WooCommerce, Jetpack, VaultPress и другие, выпустила приложение WordPress для мобильных, которое использует интерфейс XML-RPC.




XML-RPC был в Вордпресс с самого начала, но по умолчанию он был выключен. После выхода мобильного приложения, начиная с версии 3.5, функцию включили по умолчанию.




Проблема XML-RPC




Проблема включенного XML-RPC заключается в том, что роботы подбирают логин и пароль к сайту через файл xmlrpc.php практически без ограничений. Если на главной странице входа на сайт можно установить ограничение попыток авторизации, то через файл xmlrpc.php с помощью нескольких запросов можно попробовать сотни логинов и паролей.




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




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




В этой статье вы узнаете 3 способа отключить XML-RPC.




Как отключить XML-RPC в wp-config.php




Для отключения добавьте это правило в конце wp-config.php после строки require_once(ABSPATH . 'wp-settings.php');




/* Отключение XML-RPC */
add_filter('xmlrpc_enabled', '__return_false');




Как отключить XML-RPC с помощью плагина




Если вы не хотите добавлять код, установите плагин Disable XML-RPC. Этот плагин делает то же самое, что и код в первом способе.




Как отключить XML-RPC в .htaccess




Хотя эти 2 способа хорошо работают, они не запрещают роботам подключаться к XML-RPC. Когда хакбот приходит на сайт и перебирает комбинации логинов и паролей, он использует ресурсы вашего сервера.




Чтобы отключить xmlrpc.php и не дать хакерам нагрузить сервер, отключите xmlrpc в файле .htaccess. В этом случае запрос не будет передаваться в WordPress, и робот не получит разрешения для подключения к XML-RPC.




Этот способ не будет нагружать сервер. Это самый правильный способ отключить XML-RPC.




Добавьте этот код в .htaccess:




# Block XML-RPC requests
<Files xmlrpc.php>
  Order Allow,Deny
  Deny from all
</Files>




Частичное отключение XML-RPC




Чтобы отключить XML-RPC частично, добавьте следующие строки в .htaccess:




# Block XML-RPC requests
<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.1
  Allow from 10.0.0.0/100
</Files>




Измените адреса на те, которым вы хотите разрешить подключение к XML-RPC. Добавьте столько адресов, сколько вам нужно.




Если вы не хотите добавлять код, используйте плагин Stop XML-RPC Attack, он создает правило в файле .htaccess, которое разрешает использовать XML-RPC только плагину Jetpack и другим инструментам Automattic.




Плагины iThemes Security, Anti-Malware Security and Brute-Force Firewall и All in One WP Security & Firewall ограничивают попытки авторизации на стандартной странице входа на сайт и через XML-RPC.




All in One WP Security & Firewall может частично отключить XML-RPC, чтобы работал функционал Jetpack.




Wordfence не отключает XML-RPC, так как разработчики считают, что Вордпресс улучшил встроенную защиту этой функции.



[endtxt]




RSS



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


2021-07-15T20:09:34
WordPress

Установка WordPress (nginx)

Устанавливать WordPress будем на Devuan 3 beowulf, а в качестве web-сервера используем nginx. Про Devuan я уже писал, если вкратце это урезанный Debian без systemd, с низким потреблением ресурсов.





Читать →

Установка WordPress (Apache2)

Устанавливать WordPress будем на Devuan 3 beowulf, а в качестве web-сервера используем apache2. Про Devuan я уже писал, если вкратце это урезанный Debian без systemd, с низким потреблением ресурсов.





Читать →

Отключение редакций и ревизий в WordPress.

В WordPress отключение редакций и ревизий приносит умиротворение и порядок. Не знаю, как вас, меня иногда бесит огромное количество этих самых ревизий. И, ладно бы, мой сайт прост как грабли и не имеет большого количества функционала и контента. А если это большой сайт и контента много и он добавляется часто? Беда. Редакции — это резервные копии, которые сохраняются в базе данных при каждом обновлении поста или страницы. Если Вам все же нужны ревизии записей и страниц, то можно ограничить количество их сохранения, а можно полностью отключить и удалить.

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

  1. Ограничить редакции и ревизии можно при помощи:

WP_POST_REVISIONS

, поместив в config.php:

define('WP_POST_REVISIONS' , 1);

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

wp_revisions_to_keep

Ограничиваем:

function limit_save_revisions_db($count, $post)
{

if ($post-&gt;post_type == 'page') {//для стандартных страниц WordPress сохраняем 1 ревизию

return 1;

} elseif ($post-&gt;post_type == 'post') {//для стандартных записей WordPress сохраняем 3 ревизии

return 3;

} elseif ($post-&gt;post_type == 'reviews') {//для произвольного типа записей "Отзывы" не сохраняем ревизий

return 0;

} else {//для всех остальных сохраняем 3 ревизии

return 3;

}
}
add_action( 'wp_revisions_to_keep', 'limit_save_revisions_db', 10, 2 );

  1. Или отключаем. Третий вариант предусматривает полное отключение редакций и ревизий в WordPress:

function deactivate_revisions( $count )
{
return 0;
}
add_filter( 'wp_revisions_to_keep', 'deactivate_revisions' );

После этого неплохо бы почистить БД WP через PHPMyAdmin (не забываем сделать резервную копию базы данных WP):

DELETE FROM `wp_posts` WHERE post_type = 'revision';

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

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



2021-03-09T16:28:04
WordPress

Можно ли отключить AMP для страниц WordPress?

В этом посте показано, как полностью отключить и удалить функцию Google Accelerated Mobile Pages (AMP) с веб-сайтов и страниц WordPress.

AMP ускоряет время загрузки вашего веб-сайта и обеспечивает высокую производительность для вашей аудитории и посетителей. Это достигается за счет удаления большого количества элементов HTML и JavaScript, которые замедляют загрузку веб-сайтов.

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

Если вы чувствуете, что ваши AMP-страницы не очень полезны и мешают взаимодействию пользователей с вашим сайтом, просто отключите и удалите их.

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

Чтобы начать отключение и удаление AMP из WordPress, выполните следующие действия:

Отключаем AMP для WordPress

Установив AMP для WordPress, просто перейдите на страницу плагинов и отключите установленный плагин AMP.

После деактивации плагина нажмите ссылку «Удалить», чтобы удалить его из WordPress.

Удаление плагина приведет к очистке его записей, хранящихся в базах данных, и связанных данных из WordPress.

Настраиваем перенаправления

Отключение AMP и удаление плагина — это только половина дела. Вы не можете просто удалить плагин AMP без добавления перенаправления.

Если Google отправляет поисковиков на ваши AMP-страницы, но ни одна из них недоступна, всем им будут показаны страницы с ошибкой 404. Это плохо.

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

Сначала перейдите на страницу своих плагинов ==> Добавить новый.

Затем выполните поиск Redirection, как показано на изображении ниже. Когда вы найдете плагин Redirection, нажмите Установить.

После установки плагина активируйте его.

После включения перейдите в Инструменты ==> Redirection, чтобы настроить плагин. Вам может быть предложено запустить мастер установки. Просто выполните параметры по умолчанию и закончите.

На странице настроек добавьте новое перенаправление со следующими настройками:

В поле Source URL введите строку ниже

/(.*)/amp

Затем выберите REGEX в раскрывающемся списке справа от поля ввода.

В Target URL ниже введите:

http://www.yourwebsite.com/$1

Затем выберите падение вниз Group окна и нажмите, Redirections.

Когда вы закончите, нажмите кнопку «Добавить перенаправление», чтобы завершить настройку.

Это должно сработать!



2021-02-02T18:07:30
WordPress

Вывод произвольных типов записей и полей в WordPress на сайте.

Вывод произвольных типов записей в WordPress рассматриваю на примере темы Understrap.

Произвольные типы записей и поля:

Добавление произвольных типов записей в WordPress (чуть позже напишу о Pods)

Вывод произвольных типов записей в WordPress

Добавление произвольных полей к записям в WordPress

Вывод произвольных полей в записях WordPress

Вывод (отображение) произвольных типов записей в WordPress

Открываем папку с активной темой в любимом редакторе (я люблю VS Code). В примере я использую тему understrap (https://github.com/understrap/understrap). Поэтому если будете повторять за мной, рекомендую тренироваться именно на этой теме. Пояснять буду на примере пользовательского портфолио.

  1. Кастомные поля решил попробовать создавать при помощи плагина Pods (https://docs.pods.io/). Создал поле с именем «Работы» (works).
  2. Создал страницу отвечающую за вывод постов из кастомного раздела — в папке page-templates works-template.php. В шапке прописываю имя шаблона и из админки WP создаю новую страницу и шаблоном выбираю его.

  

- Template Name: Template: Works
-
- Template for displaying a page without sidebar even if a sidebar widget is published.
-
- @package UnderStrap

Публикую страницу.

Вывод произвольных типов записей в WordPress на сайте

Вношу изменения в страницу works-template.php

Что-то типа:

$posts = get_posts("post_type=works&orderby=date&numberposts=5");
if ($posts) : ?>
                 foreach ($posts as $post) : setup_postdata($post);
the_title(); 
the_post_thumbnail(); 
the_excerpt();
endforeach;
           endif;

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

Готово. Если вы все сделали правильно, то задача минимум достигнута. Мы вывели произвольные типы записей — из раздела «Работы» на страницу сайта. Дальше можно заняться деталями. А именно, чтобы наши полноценные записи выводились в нужной нам верстке, а не в стандартной для шаблона.

  1. Вывод произвольных типов записей в отдельном шаблоне

В корне темы создаю файл single-works.php и копирую в него код из single.php. Найдя строчки типа

get_template_part( 'loop-templates/content', 'single' );

я поменяю на свой шаблон — single-works.

Создаю файл content-single-works.php в папке loop-templates. Копирую в него код из content-single.php и меняю под нужную мне верстку Теперь «Работы» выводятся по шаблону content-single-works.php. Если необходимо изменить разметку, стили, то правим именно его.

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



2021-01-30T13:20:43
WordPress