Здравствуйте, сегодня представляю вам 12 полезных хуков (хаков, сниппетов, шорткоды) для wordpress сайтов.
Скачать исходники для статьи можно ниже
Хуки прописываем в файл functions.php, однако, предупреждаю, что неверное копирование или ошибка может заблокировать ваш сайт – поэтому советую проверить нижеуказанные коды на каком-нибудь тестовом сайте – можно воспользоваться бесплатным хостиногом, например hostinger, или другом хостинге.
1. Использование шорткодов (shortcode) в текстовом виджете:
Если добавить следующий код в файл functions.php, то в виджете “Текст” можно будет использовать шорткоды (shortcode):
add_filter( 'widget_text', 'do_shortcode' );
2. Задержка в публикации RSS ленты:
У вас когда-нибудь случалось такое, что вы опубликовали пост, а затем нашли ошибку, которую достаточно легко исправить, но… – уже поздно, так как для ваших подписчиков – ваш пост уже был опубликован в их RSS-каналах.
Как же создать задержку при публикации вашего нового поста в RSS ленту, чтобы дать себе время еще раз проверить все на ошибки – достаточно добавить этот фрагмент в файл functions.php:
function publish_later_on_feed($where) { global $wpdb; if ( is_feed() ) { $time_now = gmdate('Y-m-d H:i:s'); $time_delay = '15'; // integer $time_span = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR $where = " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$time_now') > $time_delay "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');
В данном примере задержка – 15 минут.
3. Публикуем в RSS ленте миниатюры поста (thumbnail):
Намного красивее, когда в RSS ленте будет опубликована картинка, “говорящая” о содержании данной статьи.
add_filter('the_content_feed', 'rss_post_thumbnail'); function rss_post_thumbnail($content) { global $post; if( has_post_thumbnail($post->ID) ) $content = '<p>' . get_the_post_thumbnail($post->ID, 'thumbnail') . '</p>' . $content; return $content; }
4. Отключаем использование HTML тегов в комментариях:
Если спам доставляет вам очень много проблем, которые создают кучу исходящих ссылок с вашего сайта, то просто добавьте следующий код в файл functions.php:
// This will occur when the comment is posted function plc_comment_post( $incoming_comment ) { // convert everything in a comment to display literally $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']); // the one exception is single quotes, which cannot be #039; because WordPress marks it as spam $incoming_comment['comment_content'] = str_replace( "'", ''', $incoming_comment['comment_content'] ); return( $incoming_comment ); } // This will occur before a comment is displayed function plc_comment_display( $comment_to_display ) { // Put the single quotes back in $comment_to_display = str_replace( ''', "'", $comment_to_display ); return $comment_to_display; } add_filter( 'preprocess_comment', 'plc_comment_post', '', 1 ); add_filter( 'comment_text', 'plc_comment_display', '', 1 ); add_filter( 'comment_text_rss', 'plc_comment_display', '', 1 ); add_filter( 'comment_excerpt', 'plc_comment_display', '', 1 ); // This stops WordPress from trying to automatically make hyperlinks on text: remove_filter( 'comment_text', 'make_clickable', 9 );
5. Вывод последних записей на странице:
Данный код позволит выводить в нужном месте сайта блок последних записей.
<?php query_posts($query_string . '&showposts=5' ); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="story"> <div class="story-content"> <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> <?php the_excerpt(); ?> <?php endwhile; endif; ?>
Здесь showposts=5 – вывод 5 последних записей, можете поменять на нужное количество.
6. Изменяем логотип в панели управления wordpress (админке) на свой:
add_action('admin_head', 'custom_logo'); function custom_logo() { echo ' <style type="text/css"><!-- #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; } --></style>'; }
, где
template_directory – корневая директория сайта,
images/custom-logo.gif – путь до логотипа.
7. Удаляем сообщение об ошибке – при неверном вводе логина и пароля на странице авторизации пользователей:
add_filter('login_errors',create_function('$a', "return null;"));
8. Скрываем версию wordpress, которая установлена на вашем сайте:
<?php // Remove the WP version for extra WordPress Security function remove_wp_version(){ return ''; } add_filter('the_generator', 'remove_wp_version'); ?>
9. Автоматическое выставление даты Copyright в конец страницы
Вы наверное замечали, что на некоторых сайтах, в подвале, находится информация об авторских правах – Copyright с датой основания сайта по текущий год, например: “Название сайта © 2011-2014”, но некоторые авторы сайтов не следят за отображение данной строки и информация в ней устаревает, чтобы этого не случилось можно воспользоваться следующим кодом:
Нижеуказанная функция ищет даты первого поста и дату вашего последнего поста, данный код вставляем в файл functions.php:
function comicpress_copyright() { global $wpdb; $copyright_dates = $wpdb->get_results(" SELECT YEAR(min(post_date_gmt)) AS firstdate, YEAR(max(post_date_gmt)) AS lastdate FROM $wpdb->posts WHERE post_status = 'publish' "); $output = ''; if($copyright_dates) { $copyright = "© " . $copyright_dates[0]->firstdate; if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) { $copyright .= '-' . $copyright_dates[0]->lastdate; } $output = $copyright; } return $output; }
Далее вам нужно в подвал вашего сайта (футер) – footer.php добавить в нужном месте следующую строчку:
<?php echo comicpress_copyright(); ?>
10. Меняем “Редактор” по умолчанию:
Изначально, при редактировании записи у нас открывается “Визуальный редактор”, однако, если вы больше предпочитаете работать с “HTML” (“Текст”) редактором, то можно воспользоваться следующим хуком – для этого добавьте в файл functions.php нужную сточку:
# Визуальный редактор по умолчанию add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') ); # HTML редактор по умолчанию add_filter( 'wp_default_editor', create_function('', 'return "html";') );
11. Перенаправление пользователя сайта после авторизации:
Вы можете перенаправить пользователей, которые, авторизовалить на другой адрес в зависимости от их роли, используя этот фрагмент. Просто добавьте его в файл functions.php:
<?php function redirect_user_on_role() { //retrieve current user info global $current_user; get_currentuserinfo(); //If login user role is Subscriber if ($current_user->user_level == 0) { wp_redirect( home_url() ); exit; } //If login user role is Contributor else if ($current_user->user_level > 1) { wp_redirect( home_url() ); exit; } //If login user role is Editor else if ($current_user->user_level >8) { wp_redirect( home_url() ); exit; } // For other rolse else { $redirect_to = 'http://google.com/'; return $redirect_to; } } add_action('admin_init','redirect_user_on_role'); ?>
12. Хук, который прописывает ссылку на ваш сайт:
<?php bloginfo('url'); ?>
Пример:
<a href="<?php bloginfo('url'); >/about">О компании</a>