Апр
10
25

Functions.php – файл функций темы (шаблона)

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

Итак, wordpress при обработке шаблона может обрабатывать специальный файл с названием functions.php, который находится в одной директории с темой. Причем данный файл работает как плагин. Таким образом, если в используемой теме есть файл functions.php, то он автоматически загружается при инициализации системы wordpress – как страниц блога, так и страниц админки. Представляете, какой потенциал у этого файла?

На официальном сайте системы есть 2 направления использования для functions.php:

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

По второму пункту, как я понимаю, речь идет о различных опциях шаблонов, которые часто есть премиум темах – когда пользователь может выбирать и настраивать дизайн блога без особых знаний html, php или css. Про админку, кстати, тоже было сказано не зря – сегодня искал варианты как можно изменить ее внешний вид, и оказалось, что файл functions.php при этом весьма полезен.

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

Через файл применяются множество wordpress хаков, поскольку он обрабатывается при инициализации системы и есть возможность внести изменения на самом первоначальном этапе. Так, совсем недавно публиковал статью про вывод текста после статьи. Еще есть достаточно показательный пример – через functions.php можно убрать вывод строки шаблона с текущей версией wordpress. Это, кстати, не всегда получается простым удалением соответствующей строчки html в файле шапки блога header.php, а вот через функции работает. Для этого добавляем в functions.php строку

<?php remove_action('wp_head', 'wp_generator'); ?>

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

Хотя, конечно, эти «минусы» являются вполне логичными и естественными для любой системы, поэтому можно сильно не грузиться по данному поводу. Просто нужно быть аккуратным в работе с файлом функций, а также ориентироваться в новых изменениях wordpress. В любом случае использование functions.php – очень интересный момент и особенность движка.

P.S. Постовой. Продвижение и оптимизация сайта – важные знания для вебмастеров.
А вы знаете самые популярные сайты? – ТОП10 сайтов в мире (по посещаемости).
В нашем блоге вы можете узнать все про блоггинг и почитать полезные публикации об этом интересном деле.

А еще можно опубликовать статью в своем блоге:
Опубликовать в twitter.com        
рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 2, средний балл: 7,00 из 7)
Loading ... Loading ...

категория Категории: Возможности; Хаки и секреты;
теги Теги: , , , , .
Еще интересно почитать:
Заработай на своих сайтах!

Комментариев - 25 к статье “Functions.php – файл функций темы (шаблона)”

  • RodgerFox   11.04.2010

    Да да… это самое классное что я нашёл в WP. Да и про изменение функций в новых версиях WP как то не особо важно, мы ведь в функциях прописываем доп. параметры либо создаём свою функцию и вызываем так что в большинстве своём, короче изучайте php xD

  • Беркут   11.04.2010

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

  • Yaroslav.CH   12.04.2010

    Одна из самых полезных фич WordPress – но при если не знать о ней, иногда запутывающая :) Буквально пару дней назад разбирался – почему не выводится строка «Ваш комментарий ожидает модерации». Причем, файл перевода есть, функция в ядре WordPress есть – а не выводится.
    В итоге выяснилось, что функция была переопределена в functions.php.

  • 893erg   13.04.2010

    Интересно, спасибо за статью надо будет попробовать поколупать сей файлик )))

  • danila   14.04.2010

    Я использую на своем сайте дополнительные поля в записях. В них выводятся внешние ссылки. Как сделать эти ссылки внутренними? Пробовал плагин wp_noexternalinks но в дополнительных полях он не заменяет. Как быть? Может быть через файлик function.php это можно сделать. Подскажите пожалуйста.

  • Tod   14.04.2010

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

  • Yaroslav.CH   14.04.2010

    danila, WP-NoExternalLinks формирует ссылки по принципу _http://[доменн]/goto/[URL направления].

    Соответственно, в выводе дополнительных полей, нужно прописать <a href="http://доменн/goto/ID, «link», $single = true); ?>»>[anchor]

    Для примера, нам нужно сослаться на _http://wordpressinside.ru. В дополнительном поле link вставляем _http://wordpressinside.ru, а для вывода пишем:
    <a href="http://www.poofsite.com.ua/goto/ID, «link», true); ?>»>ссылка

  • k0tello   16.04.2010

    Люблю ковырять в этом файле настройки админки.
    Так может к старости рнр и выучу :)

  • A1an   17.04.2010

    Над у себя заюзать =)

  • Alex   20.04.2010

    >>если, например, в wordpress 3.0 какая-то стандартная функция перестанет использоваться, то >>вам придется изменять код в functions.php

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

  • Tod   20.04.2010

    Alex, к сожалению верная, местами в cms старые функции удаляют и заменяют новыми. Это, конечно, не частое явление, но бывает.

  • Евгений   12.08.2010

    Я вот в своем блоге прописал код, который показывает нагрузку и количество запросов в самом низу страницы. Полезно иногда.

  • Наталья   15.03.2011

    Я вставила код в этот файл, блок заблокировался. Я смогла его разблокировать, но запись Читать далее стала отображаться вопросительными знаками. Как мне ее восстановить?
    function art_get_post_content() {
    global $post;
    ob_start();
    if(is_single() || is_page()) {
    echo art_get_the_content(__(‘Читать далее »’, THEME_NS));
    wp_link_pages(array(‘before’ => ‘Pages: ‘, ‘after’ => », ‘next_or_number’ => ‘number’));
    } else {
    echo art_get_the_excerpt(__(‘Читать далее »’, THEME_NS),
    get_permalink($post->ID),
    art_option(‘metadata.excerpt_words’),
    art_option(‘metadata.excerpt_use_tag_filter’) ? explode(‘,’,art_option(‘metadata.excerpt_allowed_tags’)) : null,
    art_option(‘metadata.excerpt_min_remainder’),
    art_option(‘metadata.excerpt_auto’));
    }
    return ob_get_clean();

  • Tod   15.03.2011

    Наталья, не совсем понятно, что значит «блок заблокировался». Иногда дизайнеры шифруют тему, когда при малейших изменениях в блоге отображается пустая страница – в этом случае нужно детально разбирать код. Что касается знаков вопроса, то, вероятно, при правке возникли проблемы с кодировкой (для редактирования кода лучше использовать Notepad++)

  • Наталья   15.03.2011

    Tod, мне посоветовали запись Read more, код принял эту запись.

  • cyklop   25.03.2011

    в wp 2 файла wp-includes\functions.php. первый в папке с темой. второй здесь wp-includes\functions.php.

    насколько я понял все основные(стандартные ) функции в wp-includes\functions.php. пользователь если хочет создать свою, пишет ее в фаил, которые в папке с темой.

    если происходит конфликт имён, то движок использует написанную пользователем функцию, то есть ту, которая в папке с темой. так ли это?

    при обновлении движка функции в wp-includes\functions.php могут измениться. а в фаиле , которые в папке с темой – не могут измениться. так ли это?

  • Tod   26.03.2011

    cyklop, я как-то не думал, что может быть несколько файлов, но вообще речь в статье шла о functions.php, который идет с шаблоном. Функции в основном добавляются туда, поэтому при обновлении самой системы он останется таким, как был. Другое дело, что нужно быть внимательным при обновлении шаблона, т.к. он может перезаписать вашу functions.php.

  • Дмитрий   27.03.2011

    Подскажите пожалуйста что сделать: при вставке любого кода в functions на сайте появляется только текст кода.

  • mr_exclusive   31.03.2011

    Изучай PHP – а где его взять для изучения и именно для вордпресс.. весь интернет перелопатил не найти, неужели умелые веб мастера не могут написать пару постов на эту тему

  • Tod   02.04.2011

    Дмитрий, похоже на то, что код находится где-то за пределами < ?php ,,, ?> и просто выводится вместо интерпретации, можно попробовать скачать базовый работающий файл functions (для шаблонов они как правило все правильно функционируют) и постепенно туда добавить нужный код, проверяя все ли отображается нормально.

    mr_exclusive, слабо вы «лопатили» интернет, да и можно запросто парировать мол «неужели так сложно взять и заняться изучением того, что вам так нужно», вместо поиска уже готовых решений, точнее даже искать сейчас мало кто хочет, все и сразу бывает очень редко, надо и самому проявить хоть чуть-чуть смекалки.

  • Дмитрий   02.04.2011

    Tod, может у меня просто такой файл в теме. Хотел добавить соц. кнопки, по методу одного блоггера мне выдает текст на странице вместо кода, а у другого блогера нашел работающий вариант. Он хотя бы работает.
    mr_exclusive, сам уже проверил на своем малом опыте, что в нете есть ВСЕ. В крайнем случае можешь ознакомиться с дисками Попова, у него есть отдельный диск по этой теме. А на сайте он выкладывает новые уроки, в принципе, он сильно разжевывает материал, что иногда даже перематываю.

  • Hovo   03.07.2011

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

    Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in /var/www/administ/data/www/votkak.co.cc/wp-includes/functions.php on line 3303

    Notice: load_plugin_textdomain вызвал аргумент, который не поддерживается с версии 2.7 и не имеет доступных вариантов. in /var/www/administ/data/www/votkak.co.cc/wp-includes/functions.php on line 3389

  • Tod   04.07.2011

    Hovo, как по мне, похоже на то, что шаблон блог очень старый и вызывает функции, которые старше версии 2.8 уже не работают. Как исправить? – либо установить шаблон поновее либо найти где в шаблоне используется register_sidebar_widget и убрать, скорее всего в Functions.php и найдете эти функции.

  • Oksana   16.11.2011

    Эх, у меня не выходит редактировать этот файл. Я даже если что-то, что в нем есть уберу и поставлю вновь – приходится делать откат. Не понимаю, все делаю как пишут, очень точно – не хочет он меняться, слетает и все тут.

  • Tod   17.11.2011

    Oksana, если файл слетает, то есть 2 возможных причины – в шаблоне в этом файле есть некая «защита» для темы блога дабы не удалять ссылки в футере и т.п. Вторая более частая проблема – лишние символы в файле – лучше всего использовать бесплатный Notepad++ для редактирования файла и сохранить в utf-8 без BOM его, плюс удалить лишние пробелы в начале файла в конце.

Оставить комментарий

(следующая статья)

Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Заработай в GoGetLinks
Последние посты
Полезное
Облако тегов
Лучшее в категории
Клуб читателей блога
Скажи свое мнение!

Где вы берете Wordpress шаблоны?

Посмотреть результаты

Loading ... Loading ...
Друзья проекта
Последние новости