Трюки c functions.php которые вы не знали - Форум
Включить музыку | Суббота, 10 Дек 2016, 7.35.27| Главная | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Архив - только для чтения
Форум » Корзина » Архив » Разное » Трюки c functions.php которые вы не знали (Для wordpress)
Трюки c functions.php которые вы не знали
veterokuaДата: Среда, 17 Ноя 2010, 4.41.11 | Сообщение # 1
Генерал-полковник
Группа: Администраторы
На форуме с: 11 Окт 2009
Награды: 93
Сообщений: 1647
< >
Статус:
~ Мои награды ~
Functions.php – это замечательная идея для тем wordpress. Это такой файлик, в который вы можете помещать специальные функции, которые будут работать только, если будет использована тема в которой этот файлик лежит.

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

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

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

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

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

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

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

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

Code

//hook the administrative header output
      add_action('admin_head', 'my_custom_logo');

      function my_custom_logo() {
      echo '
      <style type="text/css">
      #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; }
      </style>
      ';
      }   

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

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

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

Code

function remove_footer_admin () {
   echo 'Fueled by <a href="http://www.wordpress.org" target="_blank">WordPress</a> | Designed by <a href="http://www.uzzz.net" target="_blank">Uzzz Productions</a> | WordPress Tutorials: <a href="http://www.wpbeginner.com" target="_blank">WPBeginner</a></p>';
   }

   add_filter('admin_footer_text', 'remove_footer_admin');

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

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

Code

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 <a href="mailto:yourusername@gmail.com">here</a>. For WordPress Tutorials visit: <a href="http://www.wpbeginner.com" target="_blank">WPBeginner</a></p>';
      }

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

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

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

Code
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. Выводим автора записи через произвольные поля или функция для гостевых постов.

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

Code

   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 нужно вбить одну строку

Code

add_theme_support( 'post-thumbnails' );

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

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

Code
add_theme_support( 'menus' );

А меню нужно будет выводить в нужном месте с помощью кода
Code
<?php wp_nav_menu( array( 'sort_column' => 'menu_order', 'container_class' => 'menu-header' ) ); ?>

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

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

Code

   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;
      }

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

Code

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

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

Чтобы использовать теперь то или инное поле, вставляем в шаблон
Code
<?php echo $curauth->twitter; ?>

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

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

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

Code
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=>'MiddleSidebar',
'before_widget' => '<li class="widget">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h3>',
));

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

Code
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('MiddleSidebar') ) : ?>
   <!–Default sidebar info goes here–>

   <?php endif; ?>

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

Code

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. Вставляем миниатюры в рсс канал

Code

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

' . get_the_post_thumbnail($post->ID) .
'</p>' . get_the_content();
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');

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

Code

// 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.

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

Code

function showads() {
      return '<div id="adsense"><script type="text/javascript"><!–
      google_ad_client = "pub-XXXXXXXXXXXXXX";
      google_ad_slot = "4668915978";
      google_ad_width = 468;
      google_ad_height = 60;
      //–>
      </script>

      <script type="text/javascript"
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
      </script></div>';
      }

      add_shortcode('adsense', 'showads');

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

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

Code

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 ленты.

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

Code

// 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, то знаете, что он обрывается троеточием, этот код позволит исправить это.

Code

   // 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

Code

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

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

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

Code

function fb_disable_feed() {
      wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') );
      }

      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.

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

Code

// 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 с гугла, а не с нашего сервера
а зачем нагружать свой сайт лишними скриптами, если их можно грузить с гугла

Code

// 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. Проверяем нагрузку сайта

Code

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

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

Code
<?php sys_stat(); ?>

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

Прикрепления: 6946422.gif(6Kb) · 1897748.gif(6Kb)
 
Форум » Корзина » Архив » Разное » Трюки c functions.php которые вы не знали (Для wordpress)
Страница 1 из 11
Поиск:
Последние сообщения на форуме
Посетители дня
Посетители:

В гостях у Белчонки © 2016