Важный момент! Перед тем, как внедрять хаки на свой сайт, сделайте его резервную копию. Если хостинг, на котором находится Ваш сайт, не позволяет делать архивацию сайта и скачивать его на компьютер, тогда нужно бежать с этого хостинга. Этот хостинг точно не для Вас. Сохраните сайт на компьютер тогда через FTP. Итак, приступим.
Отображение общего количества постов и комментариев на сайте
Все знают, что в панели администратора отображается общее количество комментариев на сайте и количество опубликованных статей и страниц. Но мы этот показатель выведем в, то место на сайте, где его будут видеть все посетители, а не только администратор. Следующий код выводит: общее количество опубликованных статей на сайте; общее количество комментариев оставленных на сайте и среднее количество комментариев к каждой статье. Последний показатель делит общее количество комментариев на количество опубликованных статей и выдает результат. В моем случае: 3002 комментария ÷ 210 статей = 14 комментариев на статью
Вставьте следующий код на свой сайт, где хотите, чтобы отображалась статистика. Можно вставить и в виджет через панель администратора.
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; ?> |
Выводим произвольное количество последних комментариев
Этот хак тоже интересный. Можно вывести любое количество комментариев оставленных на сайте за последнее время. Функция 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 символов. Длину символов, я бы советовал увеличить до 4о-45 знаков. Кликнув по любому комментарию, Вы перейдете на страницу с этим комментарием.
Защита сайта от спама
Следующий хак позволяет защитить блог от спама, при этом можно избавиться от лишнего плагина. Этот код я не проверял, потому что на это надо время. Но, если код не работает, пишите в комментариях – буду разбираться.
Код нужно вставить в файл шаблона 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'); |
После установки кода, проверьте, как он работает. Для этого можно просто добавить комментарий на сайт. Этот код не защищает сайт на 100% от спама, но удалив плагин можно снизить дополнительную нагрузку. Читайте статью «защита от спама, плагин invisible captcha»
Удаляем ненужный контент из 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); |
Добавляем весь контент в поиск
После появления 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' ); |
Загрузка 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'); } |
Запрет на деактивацию и изменение плагинов
Если у Вас есть сайт на движке WordPress, и Вы занимаетесь только публикацией статей, то этот хак Вам явно не пригодится. Хак этот больше подойдет для веб-мастеров, которые делают сайты на заказ, или занимаются настройкой сайтов. Код этот предназначен для того, чтобы клиент не мог отключать или изменять плагины, что может нарушить работу сайта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
add_filter( 'plugin_action_links', 'slt_lock_plugins', 10, 4 ); function slt_lock_plugins( $actions, $plugin_file, $plugin_data, $context ) { // Удаляем "Изменить" if ( array_key_exists( 'edit', $actions ) ) unset( $actions['edit'] ); // Удаляем деактивацию if ( array_key_exists( 'deactivate', $actions ) && in_array( $plugin_file, array( 'slt-custom-fields/slt-custom-fields.php', 'slt-file-select/slt-file-select.php', 'slt-simple-events/slt-simple-events.php', 'slt-widgets/slt-widgets.php' ))) unset( $actions['deactivate'] ); return $actions; } |
Запрет смены шаблона на сайте
Этот код запрещает менять шаблон на сайте. В панели администратора пропадает меню «Внешний вид».
1 2 3 4 5 6 7 8 9 |
add_action( 'admin_init', 'slt_lock_theme' ); function slt_lock_theme() { global $submenu, $userdata; get_currentuserinfo(); if ( $userdata->ID != 1 ) { unset( $submenu['themes.php'][5] ); unset( $submenu['themes.php'][15] ); } } |
Включаем режим «на сайте ведутся технические работы»
Если Вы решили делать изменения на сайте, тогда после добавления этого хака, все изменения на сайте будут не видны посетителям, а только администратору сайта. После редактирования сайта, кода надо удалить.
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'); |
Добавляем ко всем ссылкам в статьях атрибут 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'); |
Есть полно других хаков, которые я не описал в этой статье. Я описал только то, что посчитал наиболее важным и интересным. Можно еще убрать панель в админке, или добавить дополнительные кнопки в текстовый редактор и прочее, но все это Вы можете найти в интернете без проблем. Если встретятся мне еще полезные хаки для WordPress, я обязательно о них напишу.
Ксения, ничем не могу помочь в этом вопросе, сорри
Здравствуйте, есть ли какой-нибудь способ контролировать порядок вывода кода функцией wp_head(); т.е мне не нравится что у меня идет тайтл, потом идет куча кода выводимого wp_head, а потом где то внизу идет дескрипшн и кейвордц, так же выводимые функцией wp_head (у меня это делает плагин ALL in SEO pack)
Я скопировала код и вставила в виджет, но он отображается кодом, а не комментариями 😐
Подскажите, какой именно код вставляете в виджет.
Здравствуйте! Можно просто скопировать код и вставить в виджет. А можно код установить в файл, например, на главную страницу в любое подходящее место. Можно сделать, чтобы надписи выглядели красиво. если применить стили CSS
Добрый вечер!
Подскажите, в каком виде нужно размещать в виджетах код для комментариев? 😐
Для меня код от спама очень даже актуальный. Замучил. Плагин все равно не защищает.