30
Лип
0

Трюки c functions.php которые вы не знали

Трюки c functions.php которые вы не знали

Привет, посетитель. Мой блог будет интересен прежде всего тем, кто интересуется wordpress, продвижением и заработке на сайтах, а также веб-дизайном. Подпишись на RSS ленту или на e-mail подписку и сможешь получить продолжение этой статьи, а также много другого полезного.

Functions.php – это по-моему замечательная идея для тем wordpress. Это такой файлик, в который вы можете помещать реально специальные функции, которые будут работать только, если будет использована тема в которой этот файлик лежит.

Как человек, который разработал уже не один десяток сайтов на wordpress, в том числе и довольно взаправду сложные порталы, могу сказать, что потрясающе сейчас невозможно сделать что-то на самом деле интересное на worpdress без использования файла functions.php. У меня уже довольно таки давно есть сильно специальный набор нужных функций, и в самом деле давно хотел с ними поделиться, как тут прочитал хорошую статью на одном западном сайте, по-моему где человек проделал уже такую работу и собрал ещё больше разных полезных функций для functions.php, на самом деле поэтому ничего не остается как перевести эту статью и объяснить что к чему.

Первое что нужно знать, это то, что файл должен начинаться на – все остальное нужно вставлять внутрь.

А теперь, поехали

1. Удаляем вывод версии wordpress.

А без сомнения зачем нам потрясающе лишний раз показывать какая у нас версия стоит, довольно таки поэтому можем спокойно удалить.

// remove version info from head and feeds function complete_version_removal() { return ''; } add_filter('the_generator', 'complete_version_removal');

2. Добавить свой логотип в админпанель.

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

//hook the administrative header output add_action('admin_head', 'my_custom_logo'); function my_custom_logo() { echo ' #header-logo { background-image: url(' http://wpp.pp.ua/.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; } '; }

Ну и понятное дело в папку images вашей темы ложим логотип custom-logo.gif

3. Меняем ссылки в футере админки

Принцип тот же самый, если хотите по-моему дополнительно пиарить свой ресурс через свои созданные темы, то вставляем в functions.php код

function remove_footer_admin () { echo 'Fueled by WordPress | Designed by Uzzz Productions | WordPress Tutorials: WPBeginner

'; } add_filter('admin_footer_text', 'remove_footer_admin');

4. Добавляем на самом деле произвольный виджет на доску объявлений в админке.

И удивительно последний трюк с админкой, к примеру вам нужно создать виджет, который бы давал ваши контакты прямо на главной странице админпанели. Без сомнения тогда нужно

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets'); function my_custom_dashboard_widgets() { global $wp_meta_boxes; wp_add_dashboard_widget('custom_help_widget', 'Theme Support', 'custom_dashboard_help'); } function custom_dashboard_help() { echo '

Welcome to Custom Blog Theme! Need help? Contact the developer here . For WordPress Tutorials visit: WPBeginner

'; }

В данном случае появится вот что

Трюки c functions.php которые вы не знали

5. Изменить дефолтные граватарки на сайте.

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

add_filter( 'avatar_defaults', 'newgravatar' ); function newgravatar ($avatar_defaults) { $myavatar = get_bloginfo('template_directory') . '/images/gravatar.gif'; $avatar_defaults[$myavatar] = "WPBeginner"; return $avatar_defaults; }

На странице выбора стандартных граватарок появится ещё одна, ваша, которую вы сможете выбрать как дефолтную.

6. Выводим автора записи через как нельзя очень произвольные поля или функция для гостевых постов.

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

add_filter( 'the_author', 'guest_author_name' ); add_filter( 'get_the_author_display_name', 'guest_author_name' ); function guest_author_name( $name ) { global $post; $author = get_post_meta( $post-> ID, 'guest-author', true ); if ( $author ) $name = $author; return $name; }

теперь вы можете добавлять имя автора через реально произвольное поле guest-author, значением которого и будет имя автора

7. включить поддержку миниатюр.

с версии 2.9, движок поддерживает создание миниатюр. Для этого в файле functions.php нужно вбить одну строку

add_theme_support( 'post-thumbnails' );

На самом деле частично о миниатюрах я писал в пункте 5 статьи о 2.9 версии

8. включить поддержку функции меню

С версии 3.0 wordpress имеет возможность настраивать порядок, сортировку, вложения и т.д. меню. Но для этого нужно вставить код

add_theme_support( 'menus' );

А меню нужно будет выводить в нужном месте с помощью кода

9. Удаляем или добавляем как нельзя очень необязательные поля при регистрации

После регистрации, в профиле юзера будут видны такие поля как aim, jabber, но сильно часто они нам не нужны. Чтобы их удалить, пишем

add_filter('user_contactmethods','hide_profile_fields',10,1); function hide_profile_fields( $contactmethods ) { unset($contactmethods['aim']); unset($contactmethods['jabber']); unset($contactmethods['yim']); return $contactmethods; }

А чтобы добавить несказанно нужное, создаем такой код

function my_new_contactmethods( $contactmethods ) { // Add Twitter $contactmethods['twitter'] = 'Twitter'; //add Facebook $contactmethods['facebook'] = 'Facebook'; return $contactmethods; } add_filter('user_contactmethods','my_new_contactmethods',10,1);

Разительно последний кусок кода добавит в профиль поля фейсбука и твиттера

Трюки c functions.php которые вы не знали

Чтобы использовать теперь то или инное поле, вставляем в шаблон

Действует только для версии от 2.9 и выше.

10. Регистрируем виджеты.

ну это есть надо признаться почти в любой теме, но напомню ещё раз.

if ( function_exists('register_sidebar') ) register_sidebar(array('name'=> 'MiddleSidebar', 'before_widget' => '

  • ', 'after_widget' => '
  • ', 'before_title' => '

    ', 'after_title' => '

    ', ));

    а в шаблон нужно вставить

    11. вставляем копирайты в футер

    function wpbeginner_postrss($content) { if(is_feed()){ $content = 'Этот пост написан автором ETNO '.$content.'Посетите сайт http://fleek.org'; } return $content; } add_filter('the_excerpt_rss', 'wpbeginner_postrss'); add_filter('the_content', 'wpbeginner_postrss');

    Этот код вставляет определенный текст в rss канал

    12. вставляем миниатюры в рсс канал

    function rss_post_thumbnail($content) { global $post; if(has_post_thumbnail($post-> ID)) { $content = '

    ' . get_the_post_thumbnail($post-> ID) . '

    ' . get_the_content(); } return $content; } add_filter('the_excerpt_rss', 'rss_post_thumbnail'); add_filter('the_content_feed', 'rss_post_thumbnail');

    13.подключаем вложенные комментарии

    // enable threaded comments 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');

    Этот код не создает вложенные комментарии, он просто включает их поддержку + нужно не забыть включить их в админке в вкладке обсуждение.

    14. создаем шорткод adsense.

    Разительно сейчас объясню на примере. Допустим вы хотите вставлять код адсенс внутри поста, но вам не хочется как нельзя очень постоянно вводить весь код каждый раз. Чтобы упростить создаем такой шорткод

    function showads() { return ''; } add_shortcode('adsense', 'showads');

    взаправду где вместо XXXXXXXXX – пишем свой номер. Теперь, добавив код [adsense] внутрь поста он будет по-моему автоматически заменяться на код адсенса при опубликовании.

    15. редирект на feedburner без помощи плагинов и .htaccess

    function custom_feed_link($output, $feed) { $feed_url = 'http://feeds.feedburner.com/wpbeginner'; $feed_array = array('rss' => $feed_url, 'rss2' => $feed_url, 'atom' => $feed_url, 'rdf' => $feed_url, 'comments_rss2' => ''); $feed_array[$feed] = $feed_url; $output = $feed_array[$feed]; return $output; } function other_feed_links($link) { $link = 'http://feeds.feedburner.com/wpbeginner'; return $link; } //Add our functions to the specific filters add_filter('feed_link','custom_feed_link', 1, 2); add_filter('category_feed_link', 'other_feed_links'); add_filter('author_feed_link', 'other_feed_links'); add_filter('tag_feed_link','other_feed_links'); add_filter('search_feed_link','other_feed_links');

    16. отложенное обновление rss ленты.

    Многие сервисы тянут с вашего сайта фид, но вот незадача, надо признаться часто они индексируются лучше, чем ваш сайт и контент на вашем сайте могут посчитать неуникальным. так, что следущий трюк я бы ставил по умолчанию. Он обновляет ленту рсс не как нельзя именно сразу, а через некоторое указанное вами время

    // delay feed update function publish_later_on_feed($where) { global $wpdb; if (is_feed()) { // timestamp in WP-format $now = gmdate('Y-m-d H:i:s'); // value for wait; + device $wait = '5'; // впрямь здесь пишем сколько нужно времени // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff $device = 'MINUTE'; // указываем единицу измерения MINUTE, HOUR, DAY, WEEK, MONTH, YEAR // add SQL-sytax to default $where $where .= " AND TIMESTAMPDIFF($device, $wpdb-> posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');

    17. кастомизируем окончание выдержки.

    Если вы используете в шаблоне тег excerpt, то знаете, что он обрывается троеточием, этот код позволит исправить это.

    // custom excerpt ellipses for 2.9 function custom_excerpt_more($more) { return '…'; } add_filter('excerpt_more', 'custom_excerpt_more'); /* custom excerpt ellipses for 2.8- function custom_excerpt_more($excerpt) { return str_replace('[...]', '…', $excerpt); } add_filter('wp_trim_excerpt', 'custom_excerpt_more'); */

    18. кастомизируем длину выдержки

    По умолчанию длина 55 слов, этим кодом можно сделать 100

    function new_excerpt_length($length) { return 100; } add_filter('excerpt_length', 'new_excerpt_length');

    19. отключить рсс фид вообще

    именно иногда это тоже нужно, тем более например, на корпоративных сайтах

    function fb_disable_feed() { wp_die( __('No feed available,please visit our homepage !') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1);

    20. удаляем реально ненужные ссылки с wp_head.

    По умолчанию там много всего выводится, и неимоверно часто то, что не нужно. Отключаем таким кодом

    // remove junk from 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);

    21. подключаем библиотеку jquery с гугла, а не с нашего сервера

    а реально зачем нагружать свой сайт лишними скриптами, если их можно грузить с гугла

    // smart jquery inclusion if (!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false); wp_enqueue_script('jquery'); }

    22. проверяем нагрузку сайта

    function sys_stat() { printf(('System statistic : %d queries / %s seconds'), get_num_queries(), timer_stop(0, 3)); if ( function_exists('memory_get_usage') ) echo ' / ' . round(memory_get_usage()/1024/1024, 2) . ' mb'; }

    теперь более где-то в футер вставляем

    и узнаем кол-во запросов к базе и скорость.

    Мониторинг сети: Как нельзя действительно недавно нашел взаправду интересный сайт с секретами на все случаи жизни. От спорта до отношений, все это читайте на этом сайте

    feedproxy.google.com

    Випадкові записи

    Залиште свій коментар