Крючки (action hooks) и фильтры являются очень полезными в WordPress. Они позволяют “зацепить” пользовательскую функцию к уже существующей, которая позволяет изменять функциональность WordPress без редактирования основных файлов.
В этой статье, вы узнаете о 9 полезных “крючках” и фильтрах, которые усовершенствуют вашу WordPress установку!
Предотвращение автоматического сжатия изображений
По умолчанию, WordPress сжимает jpg изображения при их загрузке на блог. Это полезно тем, что экономится время загрузки, но иногда вы можете предпочесть наличие высококачественных изображений (например, вы фотограф, который использует WordPress, чтобы продемонстрировать свои работы).
Вставьте приведенный ниже код в functions.php файл, чтобы удалить автоматическое сжатие изображений.
1
|
add_filter('jpeg_quality', function($arg){return 100;});
|
Добавление target=”blank” ко всем ссылкам
Если вам нужно преобразовать все ссылки на 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 блоге, когда вы нажимаете на “Читать далее”, он автоматически перескакивает в часть статьи, на которой вы только что, теоретически, закончили. Если вам не очень нравится этот скачок, просто вставьте следующий код в ваш functions.php файл, чтобы избавиться от него.
1
2
3
4
|
function wdc_no_more_jumping($post) {
return '<a href="'.get_permalink($post->ID).'" class="read-more">'.'Continue Reading'.'</a>';
}
add_filter('excerpt_more', 'wdc_no_more_jumping');
|
Автоматический запуск древовидных комментариев
По умолчанию, WordPress не позволяет древовидные комментарии. Если вы хотите/должны это изменить, вот вам полезный сниппет для вставки в functions.php:
1
2
3
4
5
6
7
8
|
function enable_threaded_comments(){
if (!is_admin()) {
if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1))
wp_enqueue_script('comment-reply');
}
}
add_action('get_header', 'enable_threaded_comments');
|
Как показать срочное сообщение в админе Вордпресса?
При написании пользовательских WordPress шаблонов или плагинов, вы, возможно, захотите проинформировать пользователя, что что-то требует срочного внимания, например, обновления. Вам нужно, чтобы пользователь обновил настройки, или убедиться, что настройки были правильно перенесены. Вот готовый к использованию “крючок” (hook) для отображения пользовательского сообщения для администраторов.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function showMessage($message, $errormsg = false){
if ($errormsg) {
echo '<div id="message" class="error">';
} else {
echo '<div id="message" class="updated fade">';
}
echo "<p><strong>$message</strong></p></div>";
}
function showAdminMessages() {
showMessage("Вам нужно обновить базу данных...", true);
if (user_can('manage_options') {
showMessage("Hello admins!");
}
}
add_action('admin_notices', 'showAdminMessages');
|
Автоматическая замена слов в постах
Только представьте себе, что ваш блог был назван “МойБлог” и по каким-то причинам вы переименовали его на “МойСуперБлог”. Не стоит редактировать свое х-количество постов, чтобы заменить слово! Вместо этого вставьте этот полезный крючок в файл functions.php и пусть он сделает всю работу за вас. Как альтернатива – это всегда также можно сделать напрямую в базе данных.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function replace_text_wps($text){
$replace = array(
// 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS'
'wordpress' => '<a href="#">wordpress</a>',
'excerpt' => '<a href="#">excerpt</a>',
'function' => '<a href="#">function</a>'
);
$text = str_replace(array_keys($replace), $replace, $text);
return $text;
}
add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');
|
Добавление миниатюры (thumbnail) поста на RSS канал
Вставьте этот код в functions.php и сохраните файл. Не забывайте, что вы должны использовать тему, которая поддерживает миниатюру поста для того, чтобы этот сниппет сработал.
1
2
3
4
5
6
7
8
9
10
11
|
function cwc_rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) .
'</p>' . get_the_content();
}
return $content;
}
add_filter('the_excerpt_rss', 'cwc_rss_post_thumbnail');
add_filter('the_content_feed', 'cwc_rss_post_thumbnail');
|
Режим быстрого техобслуживания
Иногда, вам нужно поставить блог в режим ожидания, пока выполняется техобслуживания. Многие плагины позволяет это сделать, но есть более простое решение: просто вставьте следующий фрагмент в файл functions.php и сохраните его. Ваш блог будет недоступен для всех, кроме администраторов. Не забудьте удалить код, когда вы закончите с обслуживанием!
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');
|
Удалить автоссылки комментариев
Если кто-то оставляет комментарии содержащие url на вашем блоге, они будут автоматически преобразованы в ссылки самим WordPress. Это может быть полезно, но некоторые не хотят видеть много ссылок в комментариях, особенно когда они относятся к спаму.
Удалить автоссылки довольно легко: просто вставьте следующий код в functions.php файл. После того как вы сохранили файл, вы заметите, что все автоссылки исчезли. Вуаля!
1
|
remove_filter('comment_text', 'make_clickable', 9);
|