Хаки и хитрости для WordPress. Коллекция полезных функций для function.php от Starr&Coyier. Часть №8

В продолжение публикаций хаков и хитростей для WordPress, представляю вашему вниманию следующую порцию замечательных функций, которые способны упростить жизнь блогера, уменьшить объем работы веб мастера, приукрасить блог и сделать его более удобным для пользователя. Сегодня мы рассмотрим следующие функции:

  • Отсрочка (задержка) публикации RSS после выхода поста
  • Добавление ссылки “Администрирование” на страницу “All-Settings” (Все настройки)
  • Удаление атрибута nofollow из всех комментариев

Чтобы не пропустить следующие обновления этого цикла, настоятельно прошу вас подписаться на RSS, чтобы получать всегда свежую информацию прямо в ваш ридер. А теперь начинаем:

Отсрочка (задержка) публикации RSS после выхода поста

Отсрочку выхода rss ленты после выхода поста обычно применяют, чтобы предотвратить воровство контента. Вернее, не предотвратить именно само воровство, а обезопасить себя от того, что новость, транслирующаяся с RSS на посторонний блог, была проиндексирована быстрее, чем основной пост. Для этого применяется хак для WordPress в виде функции, которую надо добавить в любое место файла function.php рабочей темы вашего блога на WordPress:

// delay feed update
function publish_later_on_feed($where) {
	global $wpdb;
	if (is_feed()) {
		// timestamp in WP-format
		$now = gmdate('Y-m-d H:i:s');
		// value for wait; + device
		$wait = '2880'; // время отсрочки в минутах
		// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
		$device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
               // add SQL-sytax to default $where
		$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
	}
	return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

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

В коде по умолчанию, значение отсрочки обозначено равным 2880 минутам, что равно 2 суткам. Вы можете изменить его на свое усмотрение.

Добавление ссылки “Администрирование” на страницу “All-Settings”

Не так давно я писал в статье “Скрытая фишка WordPress” о том, что если ввести в адресную строку браузера адрес вида http://ваш.доменю.ру/wp-admin/options.php">http://ваш.доменю.ру/wp-admin/options.php, то можно попасть на страницу админки, где выводятся абсолютно все настройки вашего блога. Все собрано в одном месте, все можно изменять, но все позиции по-английски. Побывать и поанализировать данные этой странице на досуге бывает очень полезно, поэтому с помощью небольшого хака для WordPress мы можем сделать ссылочку из главного меню административной части блога на эту, суммирующую все настройки, страницу.

function all_settings_link() {
	add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php');
}
add_action('admin_menu', 'all_settings_link');

Этот небольшой код надо добавить в файл function.php действующей темы вашего блога. Ссылка будет иметь анкор “All Settings”

Удаление атрибута nofollow из всех комментариев

Существует миллиард способов, чтобы удалить атрибут nofollow из комментариев, но нет способа проще, чем способ гуру php программирования Томаса Шольца (Thomas Scholz).

function xwp_dofollow($str) {
	$str = preg_replace(
		'~<a ([^>]*)\s*(["|\']{1}\w*)\s*nofollow([^>]*)>~U',
		'<a ${1}${2}${3}>', $str);
	return str_replace(array(' rel=""', " rel=''"), '', $str);
}
remove_filter('pre_comment_content',     'wp_rel_nofollow');
add_filter   ('get_comment_author_link', 'xwp_dofollow');
add_filter   ('post_comments_link',      'xwp_dofollow');
add_filter   ('comment_reply_link',      'xwp_dofollow');
add_filter   ('comment_text',            'xwp_dofollow');

Суть этого хака для WordPress заключена в том, что его достаточно просто вставить в файл function.php и он сам собой заработает.

Оригинальная статья, по материалам которой написан этот цикл, находится на блоге “Diggin into WordPress

  1. Константин

    Думаю, сколько времени в минутах поставить для отсрочки публикации в RSS — 2 суток многовато, одни сутки, наверное, будет достаточно ?

    Каждый, конечно, как ему удобнее будет выставлять, но если вы это используете, хотелось бы узнать Ваше мнение.

    1. eavasi

      Я сутки поставил. Достаточно для индексации Гуглом и для исправления замеченных ошибок и неточностей.

      1. Константин

        Здравствуйте.Вы используете кросспостинг в Твиттер и социальные сети ? Если используете, то хотелось бы узнать, с помощью каких плагинов и сервисов ( этот вопрос для меня актуален в продолжение темы — Об отсрочке публикации в RSS )

  2. Константин

    Думаю, сколько времени в минутах поставить для отсрочки публикации в RSS — 2 суток многовато, одни сутки, наверное, будет достаточно ?

    Каждый, конечно, как ему удобнее будет выставлять, но если вы это используете, хотелось бы узнать Ваше мнение.

    1. eavasi Автор записи

      Я сутки поставил. Достаточно для индексации Гуглом и для исправления замеченных ошибок и неточностей.

      1. Константин

        Здравствуйте.Вы используете кросспостинг в Твиттер и социальные сети ? Если используете, то хотелось бы узнать, с помощью каких плагинов и сервисов ( этот вопрос для меня актуален в продолжение темы — Об отсрочке публикации в RSS )

  3. Наблюдатель

    Женя, спасибо. Попробовал функц.№2 — нормально, хоть и знал об этой страничке, но заглядывал редко — столько много всего нового и непонятного для себя открыл!

    А ссылка в админке у меня появилась с анкором «Все настройки» в WP 2.9.2

    Теперь бы вот разобраться, что там в настройках означают некоторые краказябы 😉

  4. Наблюдатель

    Женя, спасибо. Попробовал функц.№2 — нормально, хоть и знал об этой страничке, но заглядывал редко — столько много всего нового и непонятного для себя открыл!

    А ссылка в админке у меня появилась с анкором «Все настройки» в WP 2.9.2

    Теперь бы вот разобраться, что там в настройках означают некоторые краказябы 😉

  5. osminog

    Женя, у меня отсрочка публикации в RSS, дала сбой, перестали вообще все посты идти в рассылку. Убрал код и все вернулось. Покапаюсь, может найду причину.

    1. eavasi

      Что-то, Дима, не складываются отношения у твоего шаблона с этими функциями. Может есть у них какая-то взаимная неприязнь? (в смысле большой временной разрыв или что-то еще) ))))

  6. osminog

    Женя, у меня отсрочка публикации в RSS, дала сбой, перестали вообще все посты идти в рассылку. Убрал код и все вернулось. Покапаюсь, может найду причину.

    1. eavasi Автор записи

      Что-то, Дима, не складываются отношения у твоего шаблона с этими функциями. Может есть у них какая-то взаимная неприязнь? (в смысле большой временной разрыв или что-то еще) ))))

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

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