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. That is the appropriate weblog for anybody who wants to seek out out about this topic. You realize a lot its virtually onerous to argue with you. You positively put a new spin on a subject thats been written about for years. Great stuff, just great!

  2. Good info and straight to the point. I am not sure if this is actually the best place to ask but do you folks have any ideea where to employ some professional writers? Thanks 🙂

  3. Nice weblog here! Also your site so much up fast! What web host are you the usage of? Can I get your associate hyperlink in your host? I desire my site loaded up as fast as yours lol

  4. Great post. I used to be checking continuously this blog and I’m inspired! Extremely helpful information specially the last part 🙂 I care for such info a lot. I used to be looking for this certain info for a long time time}. Thank you and best of luck.

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

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