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

Редактировать в таком случае каждый пост будет очень нелогично и затратно по времени.

Задача решается очень простым образом – путем использования простейшей PHP-функции для замены текста:

function replace_text($text) {
	$text = str_replace('WordPress', '<strong>WordPress</strong>', $text);
	$text = str_replace('WordPress хаки', '<a href="#">WordPress хаки</a>', $text);
	return $text;
}
add_filter('the_content', 'replace_text');

Эту функцию необходимо поместить в файл functions.php вашего шаблона.

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

По аналогии можно делать одновременно сколько угодно таких замен.

Одной из рекомендаций, касаемых безопасности WordPress-сайта, является замена имени админа (admin), которое устанавливается системой по умолчанию.

Я удивляюсь тому, как долго разработчики движка шли к следующему – лишь в 3-й версии WordPress появилась возможность при установке указать свое имя.

Так вот, суть в том, что имя админа содержится в исходном коде комментариев, в виде имени CSS-класса comment-author-admin. Вот так это выглядит:

Удаляем имя админа из названий CSS-классов в комментариях

Видя этот класс, сразу понятно, что логин админа – admin. Остается только подобрать пароль.

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

function remove_comment_author_class( $classes ) {
	foreach( $classes as $key => $class ) {
		if(strstr($class, "comment-author-")) {
			unset( $classes[$key] );
		}
	}
	return $classes;
}
add_filter( 'comment_class' , 'remove_comment_author_class' );

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

P.S. Плюсом к вышеописанному рекомендую заблокировать отображение ошибок на странице авторизации.

В одном из недавних заказов у меня была задача – вырезать определенный контент из содержимого поста при его выводе на главной. Для подобных вещей в WordPress предусмотрена функция get_the_content().

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

$content = get_the_content();
$content = preg_replace('/вырезаем какой-то кусок текста/i', '', $content);
echo $content; // выводим отфильтрованный контент.

Однако при этом есть один минус – в выводимом таким образом контенте отсутствуют HTML-теги, которые есть в оригинале поста, т.е. к примеру, исчезают отступы между абзацами.

Задача решается применением следующей функции (ее необходимо поместить в файл functions.php):

function get_the_content_with_formatting ($more_link_text = '') {
	$content = get_the_content($more_link_text);
	$content = apply_filters('the_content', $content);
	// тут какие-то манипуляции с переменной $content
	echo $content;
}

Ну а в шаблоне вместо этого кода:

<?php the_content('Читать далее &raquo;'); ?>

использовать такой:

<?php get_the_content_with_formatting('Читать далее &raquo;'); ?>

Облако тегов