WordPress – это многогранная, интересная и многофункциональная система. У нее много стандартных возможностей, а есть еще секреты, или хаки, которые позволяют открыть более оригинальные возможности.
Перед тем, как внедрять хак на свой сайт, рекомендуем сделать его резервную копию. Ваш хостинг должен давать возможность сделать архивацию сайта и скачать его на компьютер.
А теперь рассмотрим несколько хаков для Вордпресс с наиболее интересными возможностями.
1. Короткие ссылки на статью WordPress
На некоторых сайтах в конце контента находится короткая ссылка на материал. Это очень удобно для пользователей, которые могут за одно движение скопировать ссылку на статью. Все что нужно сделать, так это добавить фрагмент кода во внутренний файл single.php.
1 2 3 4 | <div><span class="post-shortlink">Короткая ссылка на статью: <input id="cods" type='text' value='<?php echo wp_get_shortlink(get_the_ID()); ?>' onclick='this.focus(); this.select();' /> </span></div> <?php } ?> |
CSS
1 2 3 4 | input#cods{ border: 1px solid #bfbfbf; padding: 5px; } |
Результат
2. Добавляем объявление в RSS-поток
Этот хак позволяет поместить рекламу в ваш rss-канал и получать дополнительный доход. Чтобы применить этот хак, нужно вставить следующий код в файл functions.php:
1 2 3 4 5 6 | function insertAds($content) { $content = $content.'<hr /><a href="http://ваш сайт.ru">Важно! Читать обязательно!</a><hr />'; return $content; } add_filter('the_excerpt_rss', 'insertAds'); add_filter('the_content_rss', 'insertAds'); |
Результат:
3. Выпадающее меню WordPress
На некоторых сайтах можно увидеть большое количество категорий, которые отображаются в верхнем меню или сбоку страницы. Они занимают много места и делать использование сайта неудобным. Чтобы исправить это, можно создать выпадающее меню. Вставьте код в текстовый виджет в панели управления.
1 2 3 4 5 6 7 8 | <form action="<?php bloginfo('url'); ?>/" method="get"> <?php $select = wp_dropdown_categories('show_option_none=Категории сайта&show_count=1&orderby=name&echo=0&selected=6'); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <noscript><input id="catvp" type="submit" value="View" /></noscript> </form> |
CSS
1 2 3 4 | #cat{ border: 1px solid #bfbfbf; padding: 5px; } |
Результат:
4. Содержимое про автора в конце каждой статьи
Когда вы добавляете одну и ту же информацию в конце каждого материала на сайте, это занимает много времени. Чтобы избавиться от этой работы, и добавим следующий код в файл functions.php:
1 2 3 4 5 6 7 8 9 10 | function postFooter($footernote) { if(is_single()) { $footernote .= "<div class='postfot'>"; $footernote .= "<h4>Автор блога: Пупкин Пуп</h4>"; $footernote .= "<p>Следите за моей RSS-лентой: <a href='ваш сайт.ru/feed/'>Подписывайся!</a>.</p>"; $footernote .= "</div>"; } return $footernote; } add_filter ('the_content', 'postFooter'); |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 | .postfot { background: #fff; padding: 10px; border: 2px solid #bcbcbc; } .postfot h4 { color: #464646; font-family: Arial; font-size: 15px; line-height: 36px; text-transform: uppercase; } |
5. Отображение любой RSS-ленты
Код использует файл rss.php, встроенный в WordPress, который берет из нужной ленты определенное количество материала. Этот код необходимо использовать в нужном месте шаблона, его не внедряют в functions.php.
1 2 | <?php include_once(ABSPATH.WPINC.'/rss.php'); wp_rss('http://feeds.feedburner.com/GeringsBlog', 5); ?> // Параметры: URL и количество записей |
6. Перенаправление на запись, если она одна
Бывает такое, что посетитель сайта заходит в какой-либо раздел, а там только один материал. Тогда этот код перебрасывает его сразу в эту единственную запись. Это очень удобно для пользователя.
1 2 3 4 5 6 7 8 9 10 | function stf_redirect_to_post(){ global $wp_query; // если один пост в категории if( is_archive() && $wp_query->post_count == 1 ){ the_post(); // получаем прямую ссылку $post_url = get_permalink(); // собственно - редирект wp_redirect( $post_url ); } } add_action('template_redirect', 'stf_redirect_to_post'); |
7. Как добавить или убрать ссылку в админ-панель
В админ-панели много лишнего и много чего не хватает. С помощью этого кода это можно исправить. Вот список меню, которые установлены по умолчанию, удаляйте, что не нужно:
- my-account / my-account-with-avatar : иконка пользователя, под кем произведен вход и ссылка на профиль.
- get-shortlink : короткая ссылка на пост.
- edit : ссылка на редактирование страницы.
- new-content : выпадающее меню «Добавить».
- comments : «Комментарии».
- appearance : «Внешний вид».
- updates : «Обновления».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | remove_menu('comments'); // можно удалить подменю $wp_admin_bar->remove_menu('new-link', 'new-content'); // а можно и добавить что-то свое $wp_admin_bar->add_menu( array( 'parent' => 'new-content', 'id' => 'new_media', 'title' => __('Media'), 'href' => admin_url( 'media-new.php') ) ); } // включаем функцию add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' ); ?> |
8. Режим «Осторожно, работают люди!»
Иногда необходимо закрыть сайт для посетителей в случае, если нужно что-либо доработать. Чтобы пользователи не увидели процесс исправления и доработки сайта — включается этот код. Пока он работает, сайт виден только администраторам, то есть вам. После завершения исправлений нужно убрать код.
1 2 3 4 5 6 | function cwc_maintenance_mode() { if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) { wp_die('Осторожно! Работают люди! Заходите попозже.'); } } add_action('get_header', 'cwc_maintenance_mode'); |
9. Скрываем оповещения об обновлении WordPress
Обновление Вордпресс иногда создает проблемы на сайте, поэтому многие их отключают. Когда появляется новая версия, можно обновить самостоятельно, контролируя изменения на сайте.
1 2 3 4 | add_action('admin_menu','wphidenag'); function wphidenag() { remove_action( 'admin_notices', 'update_nag', 3 ); } |
10. Добавляем дополнительные кнопки в визуальный редактор
Это очень полезный код, позволяющий добавить нужные вам кнопки. Стандартная панель редактора WordPress нельзя назвать очень удобной, но мы можем это исправить. Еще можно использовать плагины, которые выполняют подобные действия — они действуют по такому же принципу.
1 2 3 4 5 6 7 8 9 10 11 12 13 | function add_more_buttons($buttons) { $buttons[] = 'hr'; $buttons[] = 'h2'; $buttons[] = 'h3'; $buttons[] = 'del'; $buttons[] = 'sub'; $buttons[] = 'sup'; $buttons[] = 'fontselect'; $buttons[] = 'fontsizeselect'; return $buttons; } add_filter("mce_buttons_3", "add_more_buttons") |
11. Исключение страниц из результатов поиска
Страницы на сайте часто содержат информацию о создателе, например, контакты и прочие вещи. Они попадают в результаты поисковой выдачи, что не очень хорошо. Этот код позволит вывести только нужные записи в результатах.
1 2 3 4 5 6 7 | function vibeExcludePages($query) { if ($query->is_search) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts','vibeExcludePages'); |
12. Атрибут target=_blank ко всем ссылкам в статьях
Этот код нужен, чтобы ссылки в материалах открывались в новой вкладке браузера. Код нужно устанавливать в файл functions.php, который находится в шаблоне вашего сайта или блога.
1 2 3 4 5 | function autoblank($text) { $return = str_replace('<a', '<a target="_blank"', $text); return $return; } add_filter('the_content', 'autoblank'); |
13. Загрузка JQuery из репозитория Google
Это очень полезный код, который позволяет снизить скорость загрузки сайта. Дело в том, что элементы дизайна, которые используют шаблоны и плагины подгружает JQuery, и все это загружается с хостинга, где хранится Ваш сайт. Таким образом, скорость загрузки сайта снижается. Код снижает нагрузку на хостинг. Его надо установить в файл functions.php шаблона.
1 2 3 4 5 | 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'); } |
14. Добавление всего контента в поиск
После появления WordPress 3 версии, стало возможным использования разного вида контента: галерея, видео, ссылка… все это — «custom post types», т. е. нестандартный тип записей. По умолчанию, этот контент не попадает в поисковую выдачу. Код несет две функции: первая определяет, что именно должно быть в поиске, а вторая подключает все. Вставляем код в файл functions.php во вторую строку, сразу после <?php
1 2 3 4 5 6 7 8 9 | // определяем, какие типы записей будут в результатах function searchAll( $query ) { if ( $query->is_search ) { $query->set( 'post_type', array( 'post', 'page', 'feed', 'custom_post_type1', 'custom_post_type2', 'custom_post_type3', 'custom_post_type4' )); } return $query; } // Хук, добавляющий все типы записей в поиск add_filter( 'the_search_query', 'searchAll' ); |
15. Удаление ненужного контента из wp_head
Блогеры часто пишут, что тег шаблонов wp_head добавляет множество ненужного, от чего лучше будет избавиться. Для этого вставляем в файл шаблона functions.php, во вторую строку, следующий код.
1 2 3 4 5 6 7 8 9 10 | // Удаляет ненужный контент из wp-head remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'feed_links', 2); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'feed_links_extra', 3); remove_action('wp_head', 'start_post_rel_link', 10, 0); remove_action('wp_head', 'parent_post_rel_link', 10, 0); remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0); |
16. Защита сайта от спама
Этот код позволяет защитить блог от спама, при этом можно убрать лишний плагин. После установки кода, лучше проерить его работу, написав комментарий на сайт. Этот код не защищает сайт на 100% от спама, но удалив плагин можно снизить дополнительную нагрузку. Код нужно вставить в файл шаблона functions.php
1 2 3 4 5 6 7 | function check_referrer() { if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] == “”) { wp_die( __('Реферер не определен в вашем браузере. Пожалуйста, активируйте опцию передачи реферера. Но скорее всего вы гребаный спамер, но попали не по адресу! ') ); } } add_action('check_comment_flood', 'check_referrer'); |
17. Вывод количества последних комментариев
Этот код позволяет вывести любое количество комментариев, оставленных на сайте за последнее время. Функция comment_content,1,30 в пятой строке задает количество символов в комментариях, а функция LIMIT в той же строке определяет количество комментариев. Следующий код можно вставить и в страницу шаблона, и в виджет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $pre_HTML =""; $post_HTML =""; global $wpdb; $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"; $comments = $wpdb->get_results($sql); $output = $pre_HTML; $output .= "\n<ul>"; foreach ($comments as $comment) { $output .= "\n<li>".strip_tags($comment->comment_author) .": " . "<a href=\"" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "\" title=\"on ".$comment->post_title . "\">" . strip_tags($comment->com_excerpt)."</a></li>"; } $output .= "\n</ul>"; $output .= $post_HTML; echo $output; ?> |
Теперь будут выводиться только последние 10 комментариев, с именем автора и длиной не более 30 символов. Кликнув по любому комментарию, вы перейдете на страницу с ним.
18. Отображение общего количества постов и комментариев на сайте
Известно, что в панели администратора отображается общее количество комментариев на сайте и количество опубликованных статей и страниц. Но мы хотим, чтобы эти цифры были видны всем посетителям. Код выводит: общее количество опубликованных статей на сайте; общее количество комментариев, оставленных на сайте и среднее количество комментариев к каждой статье. Последний показатель делит общее количество комментариев на количество опубликованных статей и выдает результат.
Код нужно вставить на свой сайт, где хотите, чтобы отображалась статистика. Можно вставить его и в виджет через панель администратора.
1 2 3 4 5 6 7 8 | <?php $count_posts = wp_count_posts(); $posts = $count_posts->publish; $count_comments = get_comment_count(); $comments = $count_comments['approved']; $html = '<p>Всего в блоге <strong class="white">' . $posts . '</strong> записей.<br />Читатели оставили <strong class="white">' . $comments . '</strong> комментариев.<br />В среднем по <strong class="white">' . round($comments/$posts) . '</strong> комментариев на пост.</p>'; echo $html; ?> |
Если вам понравилась статья, поделитесь ею в социальных сетях