В продолжение публикаций хаков и хитростей для 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”
Думаю, сколько времени в минутах поставить для отсрочки публикации в RSS — 2 суток многовато, одни сутки, наверное, будет достаточно ?
Каждый, конечно, как ему удобнее будет выставлять, но если вы это используете, хотелось бы узнать Ваше мнение.
Я сутки поставил. Достаточно для индексации Гуглом и для исправления замеченных ошибок и неточностей.
Здравствуйте.Вы используете кросспостинг в Твиттер и социальные сети ? Если используете, то хотелось бы узнать, с помощью каких плагинов и сервисов ( этот вопрос для меня актуален в продолжение темы — Об отсрочке публикации в RSS )
Привет, Костя. Спасибо за вопрос в тему.
Да использую два плагина для кросспостинга:
— LJ — www.lj-xp.com
— Twitter — www.jackmcintyre.net/proj...n=tracked-tweets
Думаю, сколько времени в минутах поставить для отсрочки публикации в RSS — 2 суток многовато, одни сутки, наверное, будет достаточно ?
Каждый, конечно, как ему удобнее будет выставлять, но если вы это используете, хотелось бы узнать Ваше мнение.
Я сутки поставил. Достаточно для индексации Гуглом и для исправления замеченных ошибок и неточностей.
Здравствуйте.Вы используете кросспостинг в Твиттер и социальные сети ? Если используете, то хотелось бы узнать, с помощью каких плагинов и сервисов ( этот вопрос для меня актуален в продолжение темы — Об отсрочке публикации в RSS )
Привет, Костя. Спасибо за вопрос в тему.
Да использую два плагина для кросспостинга:
— LJ — www.lj-xp.com
— Twitter — www.jackmcintyre.net/proj...n=tracked-tweets
Женя, спасибо. Попробовал функц.№2 — нормально, хоть и знал об этой страничке, но заглядывал редко — столько много всего нового и непонятного для себя открыл!
А ссылка в админке у меня появилась с анкором «Все настройки» в WP 2.9.2
Теперь бы вот разобраться, что там в настройках означают некоторые краказябы 😉
Пожалуйста, сейчас я тебе позвоню.
Женя, спасибо. Попробовал функц.№2 — нормально, хоть и знал об этой страничке, но заглядывал редко — столько много всего нового и непонятного для себя открыл!
А ссылка в админке у меня появилась с анкором «Все настройки» в WP 2.9.2
Теперь бы вот разобраться, что там в настройках означают некоторые краказябы 😉
Пожалуйста, сейчас я тебе позвоню.
Женя, у меня отсрочка публикации в RSS, дала сбой, перестали вообще все посты идти в рассылку. Убрал код и все вернулось. Покапаюсь, может найду причину.
Что-то, Дима, не складываются отношения у твоего шаблона с этими функциями. Может есть у них какая-то взаимная неприязнь? (в смысле большой временной разрыв или что-то еще) ))))
Все возможно)))
Женя, у меня отсрочка публикации в RSS, дала сбой, перестали вообще все посты идти в рассылку. Убрал код и все вернулось. Покапаюсь, может найду причину.
Что-то, Дима, не складываются отношения у твоего шаблона с этими функциями. Может есть у них какая-то взаимная неприязнь? (в смысле большой временной разрыв или что-то еще) ))))
Все возможно)))