Продолжаем оптимизацию WordPress (часть 2)

word Привет, друзья. Вы читаете статью на сайте o-blogah.ru. Это продолжение поста  «Внутренняя оптимизация WP (часть I)». Предлагаю анонс: узнаем как скрыть рубрики на главной странице  WordPress; можно не отдавать некоторые записи в RSS ленту; что сделать если не выводятся мета-теги в теме WordPress; а также как защитить WordPress от спама без плагинов.

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

Редактирование (оптимизация) header.php и footer.php будут рассмотрены в статье «Оптимизируем работу Вордпрес без плагинов (часть 3)». А пока поговорим о том

Как скрыть рубрики на главной странице WordPress без помощи плагинов

Решение очень простое. Есть плагин: Advanced Category Excluder. Но лучше обойтись без плагинов. Будем экономить место на сервере. Работаем в админке WordPress. Обратимся к пункту «Внешний вид» в админке wordpress, из него — в редактор. Откроем файл >index.php. Надо дописать одну строку в коде. Ищем следующую строку:

<?php if (have_posts ()) : ?>

Под этой строкой вставим нашу:

<?php query_posts ($query_string.'&cat=-67'); ?>

Примечание: число -67 – это ID той рубрики, которую мы хотели бы скрыть на главной. Если таких рубрик несколько, добавим их ID через запятую.

Как не отдавать в RSSленту некоторые записи

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

function exclude_cat_feed ($query) {if ($query->is_feed) {$query->set (‘cat’,'-1 -4′);} return $query;}

add_filter (‘pre_get_posts’,'exclude_cat_feed’);

Небольшое пояснение: два числа '-1 -4′ — это ID рубрики, статьи которых мы не желаем отдавать в RSS ленту.

Не выводятся мета-теги в теме WordPress 

Если вы обнаружили, что, не смотря на ручное заполнение тегов, мета теги meta description и meta keywords остаются пустыми (вы это можете проверить, посмотрев код страницы), то это показывает на не совсем корректную работу вашей темы. Но это легко исправить. Вам надо подкорректировать файл header.php. Откройте его редактором админки или, например, notepad++ и добавьте вызов функции:

<?php wp_head (); ?>

Примечание: эта функция отвечает за вывод мета-информации.

Защита от спама в WordPress без плагинов

Идея метода заключается в следующем: вы добавляете еще одно поле для ввода комментариев. Первое из них (стандартное) делаете невидимым для ваших читателей. Они вводят комменты во второе поле. А первое поле заполняется спамным комментарием, т.к. спам-скрипты ищут и заполняют поле со стандартным именем. Таким образом, комменты разделяются автоматически на два потока: ручной (его вводят люди) и автоматическая рассылка спама.

Нам придётся рассмотреть два варианта: для WordPress 3.0 и для более старого. Как вы сами понимаете: разные версии имеют разные наборы функций.

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

1.Вариант для WordPress 3.0. Разработчики  ввели новую функцию comment_form (). Она может заменять форму комментария. Откроем файл functions.php. В конце его допишем следующий текст:

add_filter ('comment_form_defaults', 'change_comment_form_defaults');

function change_comment_form_defaults ($default) {$commenter = wp_get_current_commenter ();

$default['comment_notes_after'] .='<p class="comment-form-real-comment">

<label for="real-comment">Комментарий</label><textarea id="real-comment"

aria-required="true" rows="8" cols="45" name="real-comment"></textarea></p>';

return $default;}

Для того чтобы сделать невидимым стандартное поле вставим в style.css всего одну строку:

.comment-form-comment {display: none;}

2. Этот пункт предназначен для более старой версии wordpress.

Откройте comments.php и найдите часть текста, примерно похожую на приведённую ниже:

class="textarea" name="comment"></textarea>

Этот кусочек надо заменить на следующий:

 

<div class="smo">

   <textarea id="comment" class="textarea" name="comment"></textarea>

</div>

<textarea id="real-comment" class="textarea" name="real-comment">

</textarea>

Имя видимого поля для комментариев — «real-comment». Теперь нам надо скрыть существующее видимое поле для комментов. Внесём небольшие изменения в файл стилей  style.css. Добавим в него на выбор одну из строк:

 

.smo {position: absolute; left: -1000px;}

или

.comm {display: none;}

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

Теперь осталось добавить фильтр, принцип работы которого заключается в сортировке: если комментарий ввели через видимое поле, то комментарии публикуем, иначе — запрещаем к публикации. Этот код надо вставить в файл functions.php:

 

//проверка на спам start

add_filter ('pre_comment_on_post', 'verify_spam');

function verify_spam ($commentdata) {$spam_test_field = trim ($_POST['comment']);

if (!empty ($spam_test_field)) wp_die ('Спаму нет!');

$comment_content = trim ($_POST['real-comment']);

$_POST['comment'] = $comment_content; return $commentdata;}

//проверка на спам end

Всё, на этом работа по защите от спама закончена. В следующей статье поговорим об оптимизации файлов шаблона wordpress: header.php и footer.php.

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

Похожие посты

42 комментария

  1. GeorgeBisee 05.02.2017 Ответ
  2. AlikaSeike 13.01.2017 Ответ
  3. kazimir_tagashov 17.03.2016 Ответ
  4. crorkservice fiverr 30.01.2016 Ответ

Оставить комментарий

Ваш e-mail не будет опубликован.