Полезные хаки для файла functions.php

Полезные хаки для файла functions.php

В данной статье мы рассмотрим полезные хаки для WordPress, которые позволяют выполнить интересные действия с темой. Весь код, представленный ниже, необходимо добавить в файл functions.php. Сразу хочу заметить: выполнять это лучше на локальном сервере, поскольку любая ошибка – и вам придется вручную редактировать файл functions.php через FTP.

Отключить уведомления о необходимости обновления WordPress для пользователей, не являющихся администраторами

Как только появляется новая версия WordPress, пользователи, не являющиеся администраторами, получают уведомление, в котором сообщается, что они должны оповестить администратора ресурса о необходимости обновления системы. Если вы по каким-либо причинам не хотите, чтобы это уведомление выводилось на экран для всех пользователей, за исключением администратора, вы можете легко удалить его с помощью следующего сниппета:

   global $user_login;
   get_currentuserinfo();
   if ($user_login !== "admin") { // измените admin на имя пользователя, который будет получать уведомления
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
    add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
   }

Удалить ненужный контент из wp_head

Тег шаблонов 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);   

Отключить скачок при нажатии “Read more” (“Читать далее”)

Когда вы щелкаете по “Read more”, вы автоматически переходите к определенному участку статьи, на котором вы теоретически могли остановиться. Иногда это раздражает, особенно, если вы не читали анонс, а вам уже предлагают читать дальше с определенного места статьи. Чтобы убрать раздражающий скачок, достаточно разместить следующий сниппет:

function no_more_jumping($post) {
 return '<a href="'.get_permalink($post->ID).'" class="read-more">'.'Continue Reading'.'</a>';
}
add_filter('excerpt_more', 'no_more_jumping');  

Разрешить пользователям с ролью “contributor” загружать файлы

Резрешать пользователям загружать файлы – довольно рискованное действие, однако иногда это просто необходимо. Чтобы предоставить посетителям с ролью “contributor” эту возможность, достаточно разместить следующий код:

if ( current_user_can('contributor') && !current_user_can('upload_files') )
    add_action('admin_init', 'allow_contributor_uploads');
 
function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');

Автоматически включать древовидные комментарии

Древовидные комментарии по умолчанию выключены. Чтобы исправить это, достаточно добавить следующий код:

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');

Настройка футера для секции администратора

Не нравится надпись “Powered by WordPress”? Измените ее! Сделать это можно с помощью следующего хака:

function custom_admin_footer() {
 echo 'Gotta love <a href="http://example.com">ссылка</a>';
}
add_filter('admin_footer_text', 'custom_admin_footer');

Открыть для поиска произвольные типы записей

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

function searchAll( $query ) {
 if ( $query->is_search ) { $query->set( 'post_type', array( 'site','plugin', 'theme','person' )); }
 return $query;
}
add_filter( 'the_search_query', 'searchAll' );

Отключить уведомления об обновлении неактивных плагинов

Ненавижу, когда в разделе обновления появляются цифры, указывающее на то, что необходимо обновить какой-нибудь плагин, а когда посещаешь соответствующую секцию, то видишь, что обновления требует плагин, который сейчас деактивирован! Вы можете легко подкорректировать вывод цифр для плагинов с помощью простого хака (выводиться будут уведомления об обновлении только для активных плагинов):

function update_active_plugins($value = '') {
    /*
    The $value array passed in contains the list of plugins with time
    marks when the last time the groups was checked for version match
    The $value->reponse node contains an array of the items that are
    out of date. This response node is use by the 'Plugins' menu
    for example to indicate there are updates. Also on the actual
    plugins listing to provide the yellow box below a given plugin
    to indicate action is needed by the user.
    */
    if ((isset($value->response)) && (count($value->response))) {
 
        // Get the list cut current active plugins
        $active_plugins = get_option('active_plugins');    
        if ($active_plugins) {
 
            //  Here we start to compare the $value->response
            //  items checking each against the active plugins list.
            foreach($value->response as $plugin_idx => $plugin_item) {
 
                // If the response item is not an active plugin then remove it.
                // This will prevent WordPress from indicating the plugin needs update actions.
                if (!in_array($plugin_idx, $active_plugins))
                    unset($value->response[$plugin_idx]);
            }
        }
        else {
             // If no active plugins then ignore the inactive out of date ones.
            foreach($value->response as $plugin_idx => $plugin_item) {
                unset($value->response);
            }          
        }
    }  
    return $value;
}
add_filter('transient_update_plugins', 'update_active_plugins');    // Hook for 2.8.+
//add_filter( 'option_update_plugins', 'update_active_plugins');    // Hook for 2.7.x

Запретить размещение обратных ссылок, указывающих на свой блог

Еще один ненавистный момент – появление обратных ссылок, когда вы ссылаетесь на что-либо, опубликованное на своем же сайте. Отключить это можно следующим кодом:

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

Использование шорткодов в виджетах

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

if ( !is_admin() ){
    add_filter('widget_text', 'do_shortcode', 11);
}

Примечание: сам я лично проверял только некоторые сниппеты, и после одного из них столкнулся с ошибкой, после чего мой сайт перестал открываться. А поскольку на календаре была пятница, да еще и вторая половина дня, добиться чего либо от службы поддержки хостинга мне не удалось (у меня не было доступа к FTP). В итоге блог был недоступен все выходные до понедельника. Так что экспериментируйте с умом! Считайте, что я вас предупредил.

http://wpshout.com/wordpress-functions-php

Сохранено из oddstyle.ru

Добавить комментарий

%d такие блоггеры, как: