12 полезных хуков (хаков, сниппетов) для wordpress сайтов

полезные хуки, хаки, шорткоды, сниппеты

Здравствуйте, сегодня представляю вам 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( "'", '&apos;', $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( '&apos;', "'", $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>

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>