Сейчас, когда стал обыденным тот факт, что каждый второй или третий сайт, который вы посещаете, работает на движке WordPress, при знакомстве с очередным сайтом из царства WordPress, довольно часто возникает мысль, «как, черт возьми, они сделали это!».
Несмотря на то, что WordPress постоянно находится в поле внимания сообщества веб-разработчиков, он никогда не перестаёт носить в рукаве невероятные трюки и сюрпризы. При том, что существует целый ансамбль плагинов, остаётся вероятность, что вы захотите изменить в своём сайте WordPress что так,для чего не существует подходящего плагина.
Хаки WordPress’а дадут большое поле для деятельности веб-мастеров, которые не являются программистами, но хотят внедрить некоторые уникальные особенности на свой сайт, которые действительно помогут им в реализации их функциональности и позволят выйти за пределы обычных настроек. Мы упростим вашу работу, мы дадим несколько фрагментов когда которые дадут вам возможность «прокачать» свой сайт в том направлении, которое вам интересно.
Нижеследующий список хаков даст вам возможность реализовать на вашем сайте уникальные пользовательские возможность и пощеголять особенностями, которые нельзя реализовать иными методами.
1. Включаем шоткоды в виджетах
Никогда не прекращается соперничество за виджеты. Они формируют неотъемлемую часть почти каждого сайта на WordPress, и поэтому всегда приветствуются возможности улучшить их внешний вид или их особенности. И именно это могут сделать шоткоды. Используйте фильтры для этого:
add_filter( 'widget_text', 'do_shortcode' );
2. Делаем верхнюю навигацию более видимой
Меню на верхнем навигационном баре вашего сайта, вероятно, игнорируют, просто из-за его расположения. И поэтому вам нужно передвинуть его, и здесь как это сделать:
#top-nav {float: right;}
3. Передвиньте навигационное меню в центр
Может быть много причин, по которым вы решили переместить ваше лого
в центр заголовка, следовательно, вам нужно передвинуть навигационное меню в центр так, чтобы оно
не вышло за пределы. И здесь как это сделать:
#navigation { position: relative; } #main-nav { clear: left; float: left; list-style: none; margin: 0; padding: 0; position: relative; left: 50%; text-align: center; } .nav li { display: block; float: left; list-style: none; margin: 0; padding: 0; position: relative; right: 50%; } .nav li.hover, .nav li.hover { position: relative; } .nav li ul li { left: 0;
4. Задержка публикации вашего поста в 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');
5. Не хотите больше круглых аватарок ? Сделайте их квадратными
Тема, которую вы выбрали для своего сайта WordPress, может быть, автоматически модифицирует изображения аватарок, придавая им округлую форму. Но многие веб-мастера скорее предпочитают аватарки в квадратной форме. Для этого самого, этот код от GitHub работает исключительно хорошо:
#post-author .profile-image img, #comments .avatar img { border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; }
6. Пусть ваша RSS лента содержит ключевое изображение сообщения
Использование картинок в ваших сообщениях даёт дополнительный стимул вашей аудитории для чтения и последующего распространение в своих кругах. И когда у вас есть возможность вставить главное изображение сообщения в вашу RSS ленту, вы способствуете достижению этой цели, делая пост более броским.
add_filter('the_content_feed', 'rss_post_thumbnail'); function rss_post_thumbnail($content) { global $post; if( has_post_thumbnail($post->ID) ) $content = '
‘ . get_the_post_thumbnail($post->ID, ‘thumbnail’) . ‘
‘ . $content; return $content; }
7. Удаляем название конкретной страницы
Есть инструменты, которые удаляют название со всех страниц сайта, но иногда нам нужно удалить название только с определённых страниц. Это тот код, который вам нужен — просто замените “abcd” id номерами страниц для любых сообщений:
.page-id-abcd .title { display: none; }
8. Не хотите HTML в комментариях ? Давайте отключим их
HTML в комментариях может принести вагон спама, что отрицательно скажется на вашем веб-сайте. Вот почему отключение HTML в комментариях важно для хранения вашего веб-сайта чистым от спама. Чтобы это сделать, добавьте следующий код в файл functions.php:
//Как только кто-то комментирует function plc_comment_post( $incoming_comment ) { // показывать всё в комментариях буквально $incoming_comment['comment_content'] = htmlspecialchars ($incoming_comment['comment_content']); // одно исключение - это одинарные кавычки, которые не могут быть #039; т.к. WordPress пометить это как спам $incoming_comment['comment_content'] = str_replace( "'", ''', $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( ''', "'", $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 );
9. Когда пользователь ищет конкретное сообщение на вашем сайте, направьте его прямо на полное сообщение.
Вы, возможно, не считаете это нужным, но пользователи, которые ищут определённое сообщение и которые будут направлены на полное сообщение вместо предпросмотра, оценят это. Это не потребует от них лишних действий для перехода по ссылкам, что положительно скажется на опыт взаимодействия (user experience).
add_action('template_redirect', 'redirect_single_post'); function redirect_single_post() { if (is_search()) { global $wp_query; if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) { wp_redirect( get_permalink( $wp_query->posts['0']->ID ) ); exit; } } }
10. Отображение наиболее точной текущей даты копирайта
Копирайт — является неотъемлемой частью любого веб-сайта, содержащего большое количество полезной информации, веб-мастер не хочет, чтобы эта информация была бы раскопирована кем угодно в сети. Для этого отображается информация о копирайте, важно, чтобы она была актуальной (синхронизированный с текущим годом). Последующий участок кода сделает возможным для вас постоянное автоматическое обновление информации о копирайте.
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; }
11. Перенаправление пользователей после логирования
Как только пользователь залогинился на вашем сайте, он или она могут быть легко перенаправлены на другой URL по вашему выбору. Всё, что для этого нужно, это добавить следующий код в файл functions.php:
12. Пусть заголовок показывает персонализированные виджеты
Заголовок вашего вебсайт — это отличное рекламное место, где вы можете разместить по-настоящему заметную информацию. Тем не менее, обычно в инструментах администратора есть недостаток методов контроля внешнего вида заголовка, его элементов, всё это ведёт с недостатку гибкости.
Админу бы хотелось, чтобы была возможность добавить по своему желанию что-угодно справа от логотипа, и следующий код даст ему такую возможность:
if (function_exists('register_sidebar')) { register_sidebar(array( 'name' => 'Header Widget', 'id' => 'header-widget', 'description' => 'Это место виджета в правой стороне заголовка (header'а).', 'before_widget' => '
‘, ‘before_title’ => ‘
‘, ‘after_title’ => ‘
‘ )); add_action( ‘woo_header_inside’, ‘custom_canvas_header’ ); function custom_canvas_header () { ?> <*div id=»header-widget»> <*?php if (function_exists(‘dynamic_sidebar’) && dynamic_sidebar(‘header-widget’)) : else : ?> <*?php endif; ?> <*/div> <*?php } }
13. Даём дэшборду (Dashboard) персональный логотип
Многие вебмастера соперничают в стремлении иметь более персонализированный логотип в панели управления WordPress. Следующий код послужит этой цели, когда клиент пришёл к вам с просьбой подобного рода:
add_action('admin_head', 'custom_logo'); function custom_logo() { echo '
‘; }
14. Установление желаемого редактора по умолчанию
Возможно, вам не слишком интересен визуальный редактор (Visual Editor), вместо него вы предпочитаете HTML-редактор. В любом случае, у вас есть свобода выбора, какой редактор вы установите по умолчанию:
# Visual Editor по умолчанию add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') ); # HTML Editor по умолчанию add_filter( 'wp_default_editor', create_function('', 'return "html";') );
15. Изгнание первичной (Primary) или топовой (Top) навигации
Обычно, имеется две навигационных панели (навигационных бара). Один расположен над заголовком и, следовательно, он зовётся топовым навигационном баром. Следовательно, у вас есть первичная навигация, которая расположена внизу заголовка. Сейчас, хотели бы вы использовать одну из них или обе сразу, это исключительно ваша прерогатива, сейчас мы покажем, как вы можете удалить их:
От первичной навигации можно избавиться этим кодом:
add_action( 'init', 'remove_canvas_main_navigation', 10 ); function remove_canvas_main_navigation () { // удаляем главную навигацию из woo_header_after hook remove_action( 'woo_header_after','woo_nav', 10 ); }
Для удаления топовой навигации вам нужно это:
add_action( 'init', 'remove_canvas_top_navigation', 10 ); function remove_canvas_top_navigation () { // удаляем вернуюю навигацию из woo_top hook remove_action( 'woo_top', 'woo_top_navigation', 10 ); }
Итак, это некоторые из наиболее эффективных хаков WordPress. Когда в повестке дня появляется желание поработать с функциональностью сайта, то вышеописанные хаки WordPress послужат цели глубокого и «бесшовного» способа воздействия.
Кстати, ведь популярный сайт создаёт значительную нагрузку на хостинг. Важно, чтобы ваш хостер обеспечивал устойчивую работу в любых ситуациях, чтобы сайт не «лежал» от отключений электричества в дата центре, частом смене программного обеспечения, частых DdoS-атаках или просто от нагрузок сайтов и т.д. Ведь пользователям это быстро надоест и они уйдут на сайт-конкурент. Я перебрал довольно много решений и нашёл очень хороший вариант — 100 рублей в месяц! За эти деньги даётся профессиональный хостинг, с отличным аптаймом, с бесплатным доменом второго уровня в подарок (!), с 2 гигабайтами места на SSD диске, с неограниченным количеством баз данных, с возможностью подключать неограниченное количество новых доменов (платить придётся только за каждый новый домен — 139 рублей). Вообще, всего хорошего так много, что проще всего посмотреть это здесь.
Посмотрите, я уверен, это предложение заинтересует любого администратора сайта (хоть начинающего, хоть продвинутого), поскольку это хостинг с настоящим качеством от профессионалов. Кстати, у меня есть промокод, дающий бесплатный месяц (в дополнении к 2 неделям, которые и так даются всем), если хотите, можете воспользоваться.