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.

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

32 комментария для “Продолжаем оптимизацию WordPress (часть 2)”
  1. I used to be able to find good information from your content.|
    Thanks for every other wonderful post. Where else may just anybody get that type of information in such an ideal method of writing? I have a presentation subsequent week, and I am on the look for such information.

  2. Thanks for another fantastic post. Where else could anyone get that type of information in such an ideal way of writing? I’ve a presentation next week, and I’m on the look for such information.

  3. I do consider all of the concepts you have presented to your post. They’re very convincing and will certainly work. Still, the posts are too quick for starters. Could you please lengthen them a bit from next time? Thanks for the post.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *