Хаки и сниппеты WordPress

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

Для упрощения использования и управления хаками и сниппетами существует интересный плагин “Code Snippets“. Он очень прост в использование и удобен. Вы можете добавлять новые фрагменты кода просто вставив их в окне кода. Так же вы можете дать используемому фрагменту кода любое название и описание. Все фрагменты кода, добавляются как плагины и из за этого ими очень просто управлять.

Этот пост является продолжением “Полезные сниппеты, коды и хуки для WordPress.

Загрузка JQuery из репозитория Google

Полезный хак, кстати. Большинство красоты, которую используют шаблоны и плагины подгружает JQuery, и все это загружается с хостинга, где хранится Ваш сайт. Таким образом, скорость загрузки сайта снижается. Код ниже, распараллеливает загрузку и снижает нагрузку на хостинг. Код ниже, надо установить в файл functions.php Вашего шаблона.

if( !is_admin()){
     wp_deregister_script('jquery');
     wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, '1.3.2');
     wp_enqueue_script('jquery');
    }

 

Добавляем ко всем ссылкам в статьях атрибут target=_blank

После установки кода, все ссылки в статьях будут открываться в новой вкладке браузера. Код нужно устанавливать в файл functions.php, который находится в шаблоне.

function autoblank($text) {
       $return = str_replace('<a', '<a target="_blank"', $text);
       return $return;
    }
    add_filter('the_content', 'autoblank');

 

Выводим похожие записи WordPress без плагина

Один из самых известных способов увеличить количество просмотренных страниц вашего блога – это добавить после каждого поста похожие записи. Они помогают не только правильно перелинковать посты на вашем блоге, но и демонстрируют посетителям более старые записи, которые, возможно, ускользнули от их внимания.

Существует множество плагинов, которые помогут вам это реализовать, но мы с вами будем использовать специальный хак, с помощью которого, каждый желающий, сможет интегрировать код вывода похожих записей прямо в тему wordpress.

И так. Откройте файл вашей темы single.php и в конце цикла вставьте следующий код:

<?php
//По умолчанию выводится 5 постов
$tags = wp_get_post_tags($post->ID);
if ($tags) {
  echo '<h2>Похожие записи</h2>';
  $first_tag = $tags[0]->term_id;
  $args=array(
    'tag__in' => array($first_tag),
    'post__not_in' => array($post->ID),
    'showposts'=>5,
    'caller_get_posts'=>1
   );
  $my_query = new WP_Query($args);
  if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
      <?php
    endwhile;
  }
}
?>

 

Выводим популярные записи без плагина

Пожалуй, практически каждый блоггер использует на своем блоге возможность вывода популярных записей. Но, зачастую, это делается при помощи одного из многочисленных плагинов, а зачем? Ведь существует прекрасный хак, который поможет вам вывести популярные записи в любом месте вашего блога.




Для того, что бы это осуществить, вставьте код, представленный ниже, в любом месте вашей темы, например в sidebar.php

<h2>Популярные записи</h2>
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
 
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
<?php echo $title ?></a> (<?php echo $commentcount ?>)</li>
<?php } } ?>
 
</ul>

 

Если вы хотите вывести популярные записи в wordpress с картинками, то вам поможет следующий код:

<ul id="popular-comments">
 
<?php
$pc = new WP_Query('orderby=comment_count&posts_per_page=10'); ?>
 
<?php while ($pc->have_posts()) : $pc->the_post(); ?>
<li>
 
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(array(10,10)); ?></a>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
 
<p>Posted by <strong><?php the_author() ?></strong> on the
    <?php the_time('F jS, Y') ?> with
    <?php comments_popup_link('No Comments;', '1 Comment', '% Comments'); ?></p>
</li>
 
<?php endwhile; ?>
</ul>

 

Так же добавьте в файл style.css необходимые стили:

#popular-comments { list-style:none; width:360px; } /*Ширина блока*/
#popular-comments li { overflow:auto; margin:10px 0px; border-bottom:1px solid #E6E6E6; padding-bottom:5px; } /*Стиль для списка записей*/
#popular-comments li img { float:left; margin-right:10px; border:4px solid #EEEEEE;} /*Стиль миниатюр*/
#popular-commentss li a { text-decoration:none; font-weight:bold; color:#1e292b;} /*Стиль активной ссылки*/
#popular-comments li p { margin-top:10px; }

 

Отличительная черта данного способа в том, что в отличии от подобных хаков wordpress, здесь вам не требуется установка сторонних скриптов. Все делается при помощи базовых функций WordPress.

Выводим последние твиты на блоге wordpress без плагина

Наверняка вы, для работы или отдыха используете Twitter. Поэтому, я думаю, вам будет полезно узнать, как можно вывести последние твиты из вашего аккауна на блог wordpress. Конечно, можно установить один из множества плагинов, но мы будем использовать с вами специальный хак. Просто вставьте следующий код в любом месте вашего шаблона, где вы хотите отобразить твиты. Не забудьте изменить в третьей строке you_name на ваш ник в Twitter.

<h2>Твиттер </h2>
<?php
$username = "you_name"; // Ваш ник в twitter.
$limit = "5"; // Количество выводимых твитов.
 
$prefix = "";
$suffix = "";
$tweetprefix = "";
$tweetsuffix = "<br>";
 
$feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $limit;
 
function parse_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix) {
 
$feed = str_replace("&lt;", "<", $feed);
$feed = str_replace("&gt;", ">", $feed);
$clean = explode("<content type=\"html\">", $feed);
 
$amount = count($clean) - 1;
 
echo $prefix;
 
for ($i = 1; $i <= $amount; $i++) {
$cleaner = explode("</content>", $clean[$i]);
echo $tweetprefix;
echo $cleaner[0];
echo $tweetsuffix;
}
 
echo $suffix;
}
 
$twitterFeed = file_get_contents($feed);
parse_feed($twitterFeed, $prefix, $tweetprefix, $tweetsuffix, $suffix);
?>

 

Добавляем на блог «хлебные крошки»

Один из способов сделать хорошую перелинковку и добавить юзабилити вашему ресурсу — сделать на блоге «хлебных крошек» . Сейчас я покажу вам хак, который позволит реализовать это без всяких плагинов.




Для начала откройте файл functions.php в вашем шаблоне и вставьте туда следующий код:

<?php
function the_breadcrumb() {
     echo '';
     if (!is_home()) {
         echo '<a href="';
         echo get_option('home');
         echo '">';
         echo 'Home';
         echo "</a> &raquo; ";
        if (is_category() || is_single()) {
            the_category('title_li=');
            if (is_single()) {
                echo " &raquo; ";
                the_title();
            }
         } elseif (is_page()) {
            echo the_title();
         }
         elseif (is_tag()) {
            single_tag_title();
         }
         elseif (is_day()) {
            echo "Archive for "; the_time('F jS, Y');
         }
         elseif (is_month()) {
            echo "Archive for "; the_time('F, Y');
         }
         elseif (is_year()) {
            echo "Archive for "; the_time('Y');
         }
         elseif (is_author()) {
            echo "Author Archive";
         }
         elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {
            echo "Blog Archives";
         }
         elseif (is_search()) {
            echo "Search Results";
         }
         elseif (is_404()) {
            echo "404 Error";
         }
     }else{
        echo '<a href="';
        echo get_option('home');
        echo '">';
        echo 'Home';
        echo "</a>";
     }
}
?>

 

Затем откройте файл, в которомвы хотите отобразить хлебные крошки (single.php, page.php archive.php т.д.) и вставьте туда следующий код:

<?php the_breadcrumb(); ?>

 

Добавляем дополнительные кнопки в визуальный редактор WordPress

Вариант 1

Добавить новые кнопки в визуальный редактор WordPress можно легко и без использования каких-либо дополнительных плагинов. Добавить можно абсолютно любые кнопки, которые есть в редакторе TinyMCE (именно он используется в качестве редактора в движке). Для дополнительных кнопок можно использовать третий ряд в панели редактора, который по умолчанию вообще не используется.

Добавьте в файл functions.php вашей темы следующий код:

//добавление новых кнопок в редактор start 
function wph_new_buttons($buttons) {
    $buttons[] = 'fontselect';      //семейство шрифтов
    $buttons[] = 'fontsizeselect';  //размеры шрифтов
    $buttons[] = 'styleselect';     //форматы
    $buttons[] = 'cut';             //вырезать
    $buttons[] = 'copy';            //копировать
    $buttons[] = 'paste';           //вставить
    $buttons[] = 'superscript';     //верхний индекс
    $buttons[] = 'subscript';       //нижний индекс
    $buttons[] = 'blockquote';      //цитата
    return $buttons;
}
add_filter("mce_buttons_3", "wph_new_buttons");
//добавление новых кнопок в редактор end

Из сниппета вы можете удалить любые кнопки, которые не нужны вам в редакторе.

Вариант 2

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

Для того что бы добавить кнопки в визуальный редактор, просто вставьте код представленный ниже в файл function.php.

<?php
function add_more_buttons($buttons) {
  $buttons[] = 'hr';
  $buttons[] = 'del';
  $buttons[] = 'sub';
  $buttons[] = 'sup';
  $buttons[] = 'fontselect';
  $buttons[] = 'fontsizeselect';
  $buttons[] = 'cleanup';
  $buttons[] = 'styleselect';
  return $buttons;
}
add_filter("mce_buttons_3", "add_more_buttons");
?>

 

Добавляем дополнительные кнопки в HTML редактор WordPress

Как и обещал, спешу показать небольшой хак wordpress, который поможет добавить кнопки в HTML редактор. Для того, чтобы вручную это сделать, вам нужно отредактировать файл —quicktags.js, который находится в папке wp-includes/js/quicktags.js.

Если у вас возникнут сложности с чтением данного файла, тогда удалите его из папки, затем дублируйте файл quicktags.dev.js и переименуйте дублированный файл в quicktags.js.

Вот так выглядит код кнопки, которая делает текст «жирным»:

edButtons[edButtons.length] =
new edButton("ed_strong" //Название кнопки
,"b" //Название кнопки
,"<strong>" //Открытый тег
,"</strong>" //Закрытый тег
,"b" //Ключ доступа
,-1 //Дополнительное значение -1, если тег не должны быть закрыт
);

 

По такому же шаблону добавляются любые необходимые вам кнопки.

Добавляем произвольный текст в RSS сообщения

Если вы хотите добавить произвольный текст в ваши RSS сообщения, то используйте следующий код, который нужно добавить в файл functions.php вашей темы:

function feedFilter($query) {
if ($query->is_feed) {
add_filter('the_content','feedContentFilter');
}
return $query;
}
add_filter('pre_get_posts','feedFilter');
function feedContentFilter($content) {
$content .= '<p>ЗДЕСЬ ПИШИТЕ ПРОИЗВОЛЬНЫЙ ТЕКСТ </p>';
return $content;
}

 

Перемещаем Admin Bar вниз страницы

Начиная с третьей версии, в WordPress появился так называемый Admin Bar. Кому то он нравится, а кого то раздражает. А раздражает он почему?! Правильно! Потому что висит в самом верху экрана. Что бы исправить это недоразумение, просто добавьте следующий код в файл function.php.

function fb_move_admin_bar() {
    echo '
    <style type="text/css">
    body {
    margin-top: -28px; padding-bottom: 28px;}
    body.admin-bar #wphead {padding-top: 0;}
    body.admin-bar #footer {padding-bottom: 28px;}
    #wpadminbar {top: auto !important;bottom: 0;}
    #wpadminbar .quicklinks .menupop ul {bottom: 28px;}
    </style>';
}
// on backend area
add_action( 'admin_head', 'fb_move_admin_bar' );
// on frontend area
add_action( 'wp_head', 'fb_move_admin_bar' );

Как изменить имена ролей пользователей?

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

//изменение стандартных имен ролей start
function wph_change_role_name() {
    global $wp_roles;
    if (!isset($wp_roles))
        $wp_roles = new WP_Roles();
    $wp_roles->roles['subscriber']['name'] = 'Школьник';
    $wp_roles->role_names['subscriber'] = 'Школьник';   
    $wp_roles->roles['contributor']['name'] = 'Абитуриент';
    $wp_roles->role_names['contributor'] = 'Абитуриент'; 	
    $wp_roles->roles['author']['name'] = 'Студент';
    $wp_roles->role_names['author'] = 'Студент';
    $wp_roles->roles['editor']['name'] = 'Аспирант';
    $wp_roles->role_names['editor'] = 'Аспирант';
    $wp_roles->roles['administrator']['name'] = 'Бог';
    $wp_roles->role_names['administrator'] = 'Бог';
}
add_action('init', 'wph_change_role_name'); 
//изменение стандартных имен ролей end

Как отключить или ограничить количество редакций записей?

WordPress создает редакции записей при каждом их обновлении. Иногда эта функция полезна, но в итоге каждая запись в вашем блоге может иметь сотни разных редакций. Это засоряет базу данных, да и необходимость в редакциях записей, написанных пару лет назад сомнительна. Чтобы ограничить число редакций вам необходимо добавить в файл wp-config.php код:

define('WP_POST_REVISIONS', 3);

Где 3 это число редакций (при появлении новой редакции самая старая редакция будет удалена). Можно вообще отключить функцию редакций в WordPress, для этого используйте код:

define('WP_POST_REVISIONS', false);

Но будьте осторожны – в случае проблем вы больше не сможете откатиться на сохраненную копию редакции записи.

Как автоматически очищать корзину?

По умолчанию WordPress при удалении переносит удаляемые элементы в корзину, из которой они окончательно будут удалены через 30 дней. Этот срок можно изменить, добавив в файл wp-config.php в корне вашего сайта строчку:

define('EMPTY_TRASH_DAYS', 3);

Где 3 это число дней до окончательного удаления. Можно вообще отключить функцию движка по удалению в корзину, для этого используйте код:

define('EMPTY_TRASH_DAYS', 0);

Но будьте осторожны – удаленные по ошибке элементы восстановить будет нельзя!

Постраничная навигация

В WordPress уже встроена функция постраничной навигации, и её использование более предпочтительно, нежели использование плагинов или написания новых функций.

Итак, в functions.php необходимо добавить следующий код:

function wp_corenavi() {
  global $wp_query, $wp_rewrite;
  $pages = '';
  $max = $wp_query->max_num_pages;
  if (!$current = get_query_var('paged')) $current = 1;
  $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999));
  $a['total'] = $max;
  $a['current'] = $current;
 
  $total = 1; //1 - выводить текст "Страница N из N", 0 - не выводить
  $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей
  $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце
  $a['prev_text'] = '&laquo;'; //текст ссылки "Предыдущая страница"
  $a['next_text'] = '&raquo;'; //текст ссылки "Следующая страница"
 
  if ($max > 1) echo '<div class="navigation">';
  if ($total == 1 && $max > 1) $pages = '<span class="pages">Страница ' . $current . ' из ' . $max . '</span>'."\r\n";
  echo $pages . paginate_links($a);
  if ($max > 1) echo '</div>';
}

 

Обратите внимание, что именно здесь задается имя класса для навигации!

В нужном месте шаблона, где необходима постраничная навигация, вставляем код:

<?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>

 

Пример стилей для постраничной навигации:

/*********************************
ПОСТРАНИЧНАЯ НАВИГАЦИЯ
 *********************************/
 
 .navigation {
    clear: both;
    font-size: 11px;
    line-height: 13px;
    position: relative;
}
.navigation span, .navigation a {
    border-radius: 5px 5px 5px 5px;
    color: #666666;
    display: block;
    float: left;
    height: 20px;
    line-height: 20px;
    margin: 2px 5px 20px 0;
    padding: 0 9px;
    text-decoration: none;
    width: auto;
}
.navigation a:hover {
    background: none repeat scroll 0 0 #539511;
    color: #FFFFFF;
}
.navigation .current {
    background: none repeat scroll 0 0 #539511;
    border-radius: 5px 5px 5px 5px;
    color: #FFFFFF;
    height: 20px;
    line-height: 20px;
    padding: 0 9px;
}

 

Включаем отработку кода php внутри статьи

Решение вопроса очень простое: размещаем код в файле функций шаблона functions.php

// php в теле статьи [exec]код[/exec]
function exec_php($matches){
eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
return $inline_execute_output;
}
function inline_php($content){
$content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
$content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
return $content;
}
add_filter('the_content', 'inline_php', 0);

Использовать можно код как внутри записей, так и статичных страниц. Достаточно взять нужную функцию в такой шорткод:

[exec]код[/exec]

Вот сама функция:

<?php echo(rand(1,4)); ?>

Чтобы ей воспользоваться внутри статьи, необходимо сделать так:

[exec]echo(rand(1,4));[/exec]

Т.е. откидываем признак кода <?php ?> и вместо них используем шорткод.

Вот так выглядит в примере:

<img src="/wp-content/uploads/ferrari/f1-0[exec]echo(rand(1,4));[/exec].jpg" width="450" class="aligncenter" height="230" alt="Ferrari" />

Просмотр .pdf .xls и .doc файла прямо на сайте

Посетитель сможет листать страницы, если их несколько, приближать/удалять, а так же вывести в полноэкранном режиме.

Открываем файл functions.php (лежит в папке с шаблоном на хостинге) и сразу после <?php переходим на новую строку, где вставляем следующий код:

//Просмотр pdf прямо на сайте
function pdf_viewer($attr, $url) {
    return '<iframe
                    src="http://docs.google.com/viewer?url=' . $url . '&embedded=true"
                    style="width:' .$attr['width']. '; height:' .$attr['height']. ';"
                    frameborder="0">Ваш браузер не поддерживает фреймы</iframe>';
}
add_shortcode('pdfview', 'pdf_viewer');

 

Сейчас мы создали шорткод. Чтобы отобразился файл pdf на сайте, необходимо ссылку на этот файл разместить внутри такого шорткода (вставляете в свою статью или на страницу):

[pdfview width="600px" height="500px"]http://mojwp.ru/wp-content/uploads/2014/09/iphones5S6Plus.pdf[/pdfview]

 

Обратите внимание где указана ссылка на файл. Так же здесь вы можете задать ширину (width) и высоту (height) блока, чтобы гармонично вписать в страницу.

Если высота и ширина у вас будет всегда одного размера, то можно избавить себя от подбора цифр. Модифицируем немного код просмотрщика:

//Просмотр pdf прямо на сайте
function pdf_viewer($attr, $url) {
    return '<iframe
                    src="http://docs.google.com/viewer?url=' . $url . '&embedded=true"
                    style="width: 600px; height: 500px;"
                    frameborder="0">Ваш браузер не поддерживает фреймы</iframe>';
}
add_shortcode('pdfview', 'pdf_viewer');

 

Соответственно, отображать на странице будем уже так:

[pdfview]http://mojwp.ru/wp-content/uploads/2014/09/iphones5S6Plus.pdf[/pdfview]

 

А теперь немного упростим себе жизнь, внедрим свою кнопку, которая будет выглядеть так:

QTags.addButton( 'pdf', 'PDF', '[pdfview width="600px" height="500px"]', '[/pdfview]');

 

Либо так, в случае с уже заданными параметрами высоты и ширины:

QTags.addButton( 'pdf', 'PDF', '[pdfview]', '[/pdfview]');

 

Соответственно, название шорткода pdfview вы можете заменить на свое в нужных местах кода. Аналогично и в названии ссылки панели форматирования. Это на случай, если вам понадобится отображать .xls или .doc.

PHP-код в виджете

Открываем файл функций шаблона functions.php, который будет лежать в вашей папке с шаблоном на хостинге. Сразу после <?php и с новой строки вставляем следующий код:

//Включаем php-код в виджете
function php_in_widgets($widget_content) {
	if (strpos($widget_content, '<' . '?') !== false) {
		ob_start();
		eval('?' . '>' . $widget_content);
		$widget_content = ob_get_contents();
		ob_end_clean();
	}
	return $widget_content;
}
add_filter('widget_text', 'php_in_widgets', 99);

 

Сохраняем файл и закидываем его на хостинг. Теперь любой код php будет работать в стандартном виджете “Текст” по вашему сайту.

Быстрый снимок стороннего сайта

Открываем файл functions.php в шаблоне вашего сайта и вставляем перед закрывающим ?> (самый-самый конец файла) следующий код:

// снимок сайта старт
function snapshot ($attributes, $content = '', $code = '') {
	extract(shortcode_atts(array(
		'url' => '',
		'width' => 250,
	), $attributes));
	$imageUrl = shotsite ($url, $width);
	if ($imageUrl == '') {
		return '';
	} else {
		$image = '<img src="' . $imageUrl . '" alt="' . $url . '" width="' . $width . '"/>';
		return '<div class="snapsiteshot"><a href="' . $url . '">' . $image . '</a></div>';
	}
}
function shotsite ($url = '', $width = 250) {
	if ($url != '') {
		return 'http://s.wordpress.com/mshots/v1/' . urlencode(clean_url($url)) . '?w=' . $width;
	} else {
		return '';	}
}
add_shortcode('snap', 'snapshot');
// конец

 

В 12 строке, если есть необходимость, можно тегу “a” сделать rel=”nofollow”. Кроме этого задан класс class=”snapsiteshot”, что позволяет сделать свои настройки CSS (например рамку/бордюр вокруг).

В самой статье применяем следующий шорткод, который и будет отображать на сайте снимок другого сайта:

[snap url="http://сайт.ru/" width="300px"]

 

где: url=”http://сайт.ru/” – указываете необходимый сайт/страничку, width=”300px” – ширина картинки (высота автоматически подстроится).

Удалить WP и левые ссылки из панели администратора.

Обратите внимание на логотип WP, который находится в левом углу панели администратора. Внутри него, находится целая куча бесполезных ссылок, которые можно удалить вместе со значком. Для этого, добавьте следующий код в файл — «functions.php»:

<?php if ( function_exists("add_theme_support") ) { add_theme_support("post-thumbnails"); }
function wps_admin_bar() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('wp-logo');
    $wp_admin_bar->remove_menu('about');
    $wp_admin_bar->remove_menu('wporg');
    $wp_admin_bar->remove_menu('documentation');
    $wp_admin_bar->remove_menu('support-forums');
    $wp_admin_bar->remove_menu('feedback');
    $wp_admin_bar->remove_menu('view-site');
}
add_action('wp_before_admin_bar_render', 'wps_admin_bar');
?>

 

Отключение подсказок на входе в админку WordPress.

При неправильном вводе пароля или имени WordPress выдаёт подсказку, указывая на ошибку. Для обеспечения дополнительной безопасности, эту функцию можно отключить. Достаточно в — «functions.php», добавить, вот такой кусок кода:

 

add_filter('login_errors',create_function('$a', "return null;"));

 

Нормальные комментарии.

Количество комментариев на сайте или блоге, выводится криво (два комментарий, 1 комментария и т. д.). Для правильного отображения количества комментариев, можно использовать следующий код, добавив его в файл — «functions.php»:

function plural_form($number, $after) {
$cases = array (2, 0, 1, 1, 1, 2);
echo $number.' '.$after[ ($number%100>4 && $number%100 }

 

Отключение смещения тега More.

Каждый раз, когда на главной странице сайта, прочитав анонс поста, Вы нажимаете на ссылку  — «Читать далее…», открывается его полная версия и происходит смещение страницы, до того места, где стоял тег — «More». Чтобы его удалить добавьте в — «functions.php» следующий хак:

function remove_more_jump_link($link) {
 $offset = strpos($link, '#more-');
 if ($offset) {
 $end = strpos($link, '"',$offset);
 }
 if ($end) {
 $link = substr_replace($link, '', $offset, $end-$offset);
 }
 return $link;
 }
 add_filter('the_content_more_link', 'remove_more_jump_link');

 

Перенаправление читателей с 404 страницы.

Есть способ, который перенаправляет всех читателей не на 404, а в любое нужное Вам место. Чтобы это реализовать, достаточно открыть файл — «404.php» и в самом начале вставить redirect:

<?php wp_redirect("http://sozdaiblog.ru", 301); exit; ?>

Внутри, можно вставить любую необходимую ссылку.

 

Увеличение лимита памяти WordPress.

Если Вы не знали, то в WordPress есть встроенная функция ограничение лимита памяти. Она защищает Ваш движок от кривых плагинов, которые могут съесть, все Ваши драгоценные килобайты. Переполнение памяти может вызвать ошибку, которая  будет выдаваться во время обращения к Вашему ресурсу. По умолчанию в WordPress стоит ограничение — 32Mб. Чтобы это значение увеличить, достаточно в файл — «WP-config.php», добавить следующий код:

define('WP_MEMORY_LIMIT', '96M');

Отключение HTML в комментариях

//Как только кто-то комментирует
function plc_comment_post( $incoming_comment ) {
    // показывать всё в комментариях буквально
    $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
    // одно исключение - это одинарные кавычки, которые не могут быть #039; т.к. WordPress пометить это как спам
    $incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] );
    return( $incoming_comment );
}
// это произойдёт до показа комментария
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 );
// это остановит WordPress от попыток автоматически сделать гиперссылки в тексте:
remove_filter( 'comment_text', 'make_clickable', 9 );

 

Запрет индексации страниц 404, медиафайлов и поиска

в header.php прописать

<?php if (is_404() or is_search() or is_attachment()) : ?>
<meta name="robots" content="noindex, follow" /> 
<?php else : ?>
<meta name="robots" content="index, follow" />
<?php endif; ?>

Вставляем рекламу после определенного количества символов.

function kama_content_advertise($text){
//спустя сколько символов искать перенос строки и вставлять рекламу?
	$nu = 400;
//Код рекламы
	$adsense = <<<HTML
<div style="float:right;margin:0 0 10px 15px;">
Здесь ваш рекламный код
</div>
HTML;
	//	return str_replace('<span id="more-5424"></span>', $adsense.'<!--more-->', $text);
	return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|
)@', "\\1$adsense\\2", trim($text), 1);
}
add_filter('the_content', 'kama_content_advertise', -10);

 

Защита от спама без плагина и без капчи

В файл шаблона functions.php в цикл помещаем следующий код:

/* Добавляем действия. */
add_action('comment_form', 'flagok_antispam_filtra');
add_action('comment_post', 'proverka_na_flagka');

/**
* Печать флажочка-антиспама.
*/
function flagok_antispam_filtra($id) {
if (!is_user_logged_in()) : /* Если гость, тогда показываем. */
print '<input style="width:auto;margin:5px;" type="checkbox" name="bad_post" value="1" />Это не спам';
endif;
}

/**
* Функция проверяет, что пользователь отметил флажок во время отправки комментария.
*/
function proverka_na_flagka($id) {
if (!is_user_logged_in()) :
if (!$_POST['bad_post']) :
$updated_status = 'trash'; /* В корзине мусору самое место. */
wp_set_comment_status($id, $updated_status);
wp_die('Спамер!'); /* Покажем простому спам-боту, что он спамер. */
endif;
endif;
}

Вы всегда можете отключить прямой доступ к файлу wp-comments-post.php путем добавления следующего кода к вашему файлу .htaccess:

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

не забудьте заменить «yourdomainname» на имя вашего домена

Удалить окончание #more-id

Добавляем в файл functions.php следующий код:

function no_more_jumping($post) {
    return '<a href="'.get_permalink($post->ID).'" class="read-more">'.'Читать далее:'.'</a>';
}
add_filter('the_content_more_link', 'no_more_jumping');

«Читать далее» — измените текст на свой вариант.

Удалить ссылку «читать далее»:

Вставляем в файл functions.php такой код:

function remove_more_jump_link($link)
 {
  $offset = strpos($link, '#more-');
   if ($offset)
    {
     $end = strpos($link, '"',$offset);
    }
   if ($end)
    {
     $link = substr_replace($link, '', $offset, $end-$offset);
    }
  return $link;
 }
add_filter('the_content_more_link', 'remove_more_jump_link');

 

Вывод информации о нагрузке блога на WordPress

В файл functions.php вашего шаблона добавьте код:

function usage() {
printf(('%d / %s'), get_num_queries(), timer_stop(0, 3));
if ( function_exists('memory_get_usage') ) echo ' / '
 . round(memory_get_usage()/1024/1024, 2) . 'mb '; 
}
add_action('admin_footer_text', 'usage');

После этого в админке вашего блога в футере автоматически появится информация о количестве запросов к базе, времени генерации страницы и числе затраченной памяти.

Если нужен вывод в футере самого сайта, добавляем в файл functions.php еще одну строчку:

add_action('wp_footer', 'usage');

В файл футера footer.php, вставляем такой код:

<?php if (current_user_can('level_10')){ ?>
<small><?php usage();?></small><?php } ?>

Как вывести сообщение об использовании AdBlock

Произвольная заглушка в место рекламы, которая закрыта AdBlock

В файл footer.php темы, в самый его конец добавьте скрипт:

<script>
var ads = "no-adblock"
var msg = '<div class="noadblock">Вы используете расширение AdBlock или подобное. Вы можете добавить этот сайт в белый список, и тем самым внесете свой вклад в его развитие.</div>';
   
 onload=function(){
if (document.getElementsByClassName == undefined) {
 document.getElementsByClassName = function(className)
{
var hasClassName = new RegExp("(?:^|\s)" + className + "(?:$|\s)");
var allElements = document.getElementsByTagName("*");
var results = [];
var element;
for (var i = 0; (element = allElements[i]) != null; i++) {
var elementClass = element.className;
if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
 results.push(element);
}
return results;
}
}
   
 blocked = 0;
var ad_nodes = document.getElementsByClassName(ads);
for(i in ad_nodes){
if (ad_nodes[i].offsetHeight == 0){
 blocked = 1;
 ad_nodes[i].innerHTML = msg;  
}
}
}
</script>

Чтобы скрипт работал и отображалось наше содержимое, нужно рекламный код поместить во внутрь блока DIV с классом no-adblock. Пример как это выглядит для рекламного блока Google Adsense:

<div class="no-adblock">
    //тут код рекламного блока
    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-XXXXXX" data-ad-slot="XXXXXX" data-ad-format="auto"></ins>
    <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>

Немного красоты:

.noadblock {
    padding: 10px;
    background:#fff;
    border: 1px dotted #eee;  
    font-size: 18px;
    line-height: 1.38em;  
    text-align:center;
    color:#444;
    background: #FFFFD3;
}

Удаляем строку «Можно использовать следующие HTML-теги и атрибуты…»

Прописуем в functions.php следующий код:

function mytheme_init() {
add_filter('comment_form_defaults','mytheme_comments_form_defaults');
}
add_action('after_setup_theme','mytheme_init');
function mytheme_comments_form_defaults($default) {
unset($default['comment_notes_after']);
return $default;
}

Убрать поле сайт в комментах

В файл functions.php

/**убрать поле сайт в комментах*/
add_filter('comment_form_default_fields', 'remove_url_from_comments');
function remove_url_from_comments ($fields){
    if(isset($fields['url']))
       unset($fields['url']);
       return $fields;
}

удалить атрибуты ширины и высоты у картинок

Когда вы загружаете свои картинки на блог с помощью загрузчика картинок и вставляете их в запись, ворпдесс автоматически заключает атрибуты ширины и высоты в html-тег. Однако при использовании «резиновых» тем это может привести к возникновению множества проблем. Ниже — простой и быстрый рецепт избавления от этих атрибутов.

Просто вставьте следующий код в файл functions.php вашей темы:

add_filter( 'post_thumbnail_html', 'remove_width_attribute', 10 );
add_filter( 'image_send_to_editor', 'remove_width_attribute', 10 );

function remove_width_attribute( $html ) {
   $html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
   return $html;
}

 

Отключение автоматического обновления плагинов в WordPress

По умолчанию, WordPress автоматически проверяет появились ли обновления у установленных на блоге плагинах, и если обновились, предлагает вам установить их. В большинстве случаев — это полезная штука, однако, если нужно отключить, то ниже — код. В установке нет ничего сложного, как обычно: открываем файл вашей темы functions.php, добавляем код и сохраняем.

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );

 

Использование в редакторе своего шаблона текста

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

//текст в редакторе по умолчанию start  
function wph_my_content($content) {
    $content = "Это текст по умолчанию в редакторе.";
    return $content;
}
add_filter('default_content', 'wph_my_content');
//текст в редакторе по умолчанию end

 

Данный сниппет будет полезен, если ваши записи на сайте содержат какой-то повторяющийся текст, который не надо будет заново набирать или копировать.

Добавление колонки «Миниатюры» в список записей

С помощью данного сниппета вы можете добавить в список записей и страниц новую колонку “Миниатюры”, в которой будут выводиться миниатюры записей. Таким образом вы легко можете найти запись без установленной миниатюры или быстро найти запись, у которой вы хотите поменять миниатюру. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//колонка "миниатюры" в списке записей и страниц start
function wph_columns_names($defaults){
    $defaults['wph_thumbs'] = 'Миниатюры';
    return $defaults;
}
function wph_add_thumbs($column_name, $id){
    if($column_name === 'wph_thumbs'){
        echo the_post_thumbnail(array(125,80));
    }
}
add_filter('manage_posts_columns', 'wph_columns_names', 5);
add_action('manage_posts_custom_column', 'wph_add_thumbs', 5, 2);
add_filter('manage_pages_columns', 'wph_columns_names', 5);
add_action('manage_pages_custom_column', 'wph_add_thumbs', 5, 2);
//колонка "миниатюры" в списке записей и страниц end

 

Поменяйте размеры миниатюр, если это будет необходимо (например, в случае, если ваша тема использует нестандартное соотношение сторон у миниатюр).

Добавление колонки «ID» в список записей и страниц

Узнать ID записи или страницы очень легко – достаточно лишь навести мышку на нужную запись или страницу, чтобы увидеть во всплывающей в браузере ссылке число, которое и будет обозначать ID. Однако, не все могут пользоваться мышкой, так как на мобильных устройствах ее нет. В этом случае вы можете воспользоваться сниппетом, который добавит отдельную колонку “ID” при просмотре списка записей или страниц. Вставьте в файл functions.php вашей темы следующий код:

//колонка "id" в списке записей и страниц start
function wph_columns_names_id($defaults){
    $defaults['wph_id'] = 'ID';
    return $defaults;
}
function wph_add_id($column_name, $id){
    if($column_name === 'wph_id'){
        the_id();
    }
}
add_filter('manage_posts_columns', 'wph_columns_names_id', 5);
add_action('manage_posts_custom_column', 'wph_add_id', 5, 2);
add_filter('manage_pages_columns', 'wph_columns_names_id', 5);
add_action('manage_pages_custom_column', 'wph_add_id', 5, 2);
 
function wph_css_for_column_id() {
echo '<style>
  .column-wph_id {
    width: 8%;
  } 
 </style>';
}
add_action('admin_head', 'wph_css_for_column_id');
//колонка "id" в списке записей и страниц end

 

Или вы можете установить плагин Reveal IDs, который добавит колонку “ID” ко всем типам записей и таксономий.

Отключение проверки обновлений тем сайта

Добавьте в файл functions.php вашей темы следующий код:

//отключение проверки обновления тем start
remove_action('load-update-core.php', 'wp_update_themes');
wp_clear_scheduled_hook('wp_update_themes');
add_filter('pre_site_transient_update_themes', 
    create_function('$del_themes_updates', "return null;"));
//отключение проверки обновления тем end

 

После этого все сообщения об обновлениях тем пропадут из админки.

Отключение обновлений плагинов

Чтобы отключить обновление плагинов вставьте в functions.php вашей темы код:

//отключение обновления плагинов start
function disable_updates($value) {
   unset($value->response['akismet/akismet.php']);
   unset($value->response['all-in-one-seo-pack/all_in_one_seo_pack.php']);
   return $value;
}
add_filter('site_transient_update_plugins', 'disable_updates');
//отключение обновления плагинов end

 

Создание кнопки «Вверх» без плагинов

Откройте файл function.php, скопируйте и вставьте код ниже в самом низу, перед закрывающим тегом ?>.

add_action( 'wp_footer', 'back_to_top' );
function back_to_top() {
echo '<img id="totop" src="http://wordpress-club.com/wp-content/uploads/2015/04/scroll-to-img.gif" />';
}
 
add_action( 'wp_head', 'back_to_top_style' );
function back_to_top_style() {
echo '<style type="text/css">
#totop {
cursor:pointer;
position: fixed;
right: 30px;
bottom: 30px;
display: none;
outline: none;
}
</style>';
}
 
add_action( 'wp_footer', 'back_to_top_script' );
function back_to_top_script() {
echo '<script type="text/javascript">
jQuery(document).ready(function($){
$(window).scroll(function () {
if ( $(this).scrollTop() > 400 )
$("#totop").fadeIn();
else
$("#totop").fadeOut();
});
 
$("#totop").click(function () {
$("body,html").animate({ scrollTop: 0 }, 800 );
return false;
});
});
</script>';
}

 

Для того чтобы убрать изображение и поставить текст — замените в коде нашего примера строчку 3 на:

echo '<a id="totop" href="#">Вверх</a>';

 

Для того чтобы заменить изображение кнопки — замените ссылку на нужное вам изображение в строчке 3.

Кнопка будет отображаться тогда, когда на странице мы опустимся более 400 пикселей вниз от шапки сайта, и будет прятаться если мы поднимемся выше. Изменить высоту при которой кнопка будет появляться достаточно легко, для этого нужно заменить значение 400 на нужную вам высоту в этой строчке кода:

if ( $(this).scrollTop() > 400 )

 

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.