Свежие хаки и фильтры для WordPress

Здравствуйте, уважаемые читатели XoZbloga! В одной из предыдущих статей мы с вами уже рассматривали полезные вставки (фрагменты) кода для WordPress, так вот сегодня продолжим эту тему. В этой статье рассмотрим 8 свежих хаков и фильтров для WordPress. Немного теории для тех кто не знает: что такое Хак? и для чего нужны фильтры WordPress? Да все очень просто: Хак — это такое изменение исходного кода, в нашем случае исходного кода WordPress, которое приводит к уменьшению кода, повышению функциональности и увеличению скорости работы сайта. Ну а фильтры обрабатывают выводимый контент на сайте и при необходимости изменяет содержимое.

wordpress filters

Предотвращение автоматического сжатия изображений

По умолчанию, WordPress сжимает JPG изображения, когда Вы загружаете их на свой блог. Это полезно, потому что экономит трафик и время загрузки, но иногда Вы можете предпочесть этому качество изображение, которое снижается при сжатии (например, если вы фотограф, и используете WordPress, чтобы демонстрировать свои работы).

Вставьте приведенный ниже код в файл functions.php Вашей темы:

add_filter('jpeg_quality', function($arg){return 100;});

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

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

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

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

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

Информация пользователя в профиле

function my_user_contactmethods($user_contactmethods){
  $user_contactmethods['twitter'] = 'Twitter Username';
  $user_contactmethods['facebook'] = 'Facebook Username';

  return $user_contactmethods;
}

add_filter('user_contactmethods', 'my_user_contactmethods');

Добавить изображения (эскизы) статей в RSS поток

С помощью этого фрагмента кода в RSS поток к каждой записи будет добавлено «привязанное» к ней изображение. Вставьте этот код в functions.php. Не забывайте для того чтобы этот хак работал, Вам нужно использовать темы, которые поддерживают эскизы в статьях. Еще один минус — не работает с FeedBurner :(

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 и все! Ваш блог теперь никому не доступен, кроме администратора. Не забудьте удалить код, когда Вы закончите с обслуживанием!

function cwc_maintenance_mode() {
    if (!current_user_can('edit_themes') || !is_user_logged_in() ) {
        wp_die('Блог находится на обслуживании, зайдите позже!');
    }
}
add_action('get_header', 'cwc_maintenance_mode');

Отключить собственные трэкбэки (trackbacks)

Если Вы ссылаетесь в статье на другой блог WordPress, то в комментариях к той статье на которую вы ссылаетесь останется ссылка на Ваш материал — это и есть трэкбэк. Это отличный способ получить больше посетителей на Ваш сайт.

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

function disable_self_ping( &$links ) {
    foreach ( $links as $l => $link )
        if ( 0 === strpos( $link, get_option( 'home' ) ) )
            unset($links[$l]);
}
add_action( 'pre_ping', 'disable_self_ping' );

Отключить обновление WordPress

Если Вас все устраивает в WordPress , не хотите получать неприятности при обновлении WordPress или просто не любите обновляться :) Тогда отключите обновление WordPress, используя вот этот хак, куда его вставлять Вы и так знаете :)

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

Отключить автосохранение

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

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

function disableAutoSave(){
    wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disableAutoSave' );

Но теперь не забывайте чаще нажимать кнопку Сохранить, пока пишите материал :)

Важно: перед тем как внести изменения в function.php, необходимо делать резервную копию файла, мало ли что.

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на страницу ВКонтакте или подпишитесь на почтовую рассылку. Не забывайте оставлять комментарии к статьям и урокам. Если статья Вам понравилась и пригодилась сделайте tweet или like — тем самым Вы выразите свою благодарность. Спасибо за прочтение. До связи!

P.S.: Не знаете как установить социальные кнопки для DLE? Об этом и многом другом читайте на Artinblog.ru

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на еженедельную почтовую рассылку или на новостную ленту RSS. Спасибо!

  • Login2030

    Добрый день, установлен плагин »
    theme-my-profile » не подскажите, а как удалить ненужные поля в профиле, например «last name»? пробовал идалять их из движка путь — wp-admin-user-edit, не помогает(версия 3.4.1)