• CSS
    • ПРОГРАММИРОВАНИЕ (CODING)
    • Emmet, ul, li, table, form
    • Style, hover, child
    • CSS Hat, font, background
    • Reset, margin, padding, float
    • Base64, relative, z-index
    • Google Fonts, PSD
    • Brackets, Bootstrap
    • Script, src, comments
    • jQuery, Slick Js, Tooltip
    • Bootstrap, Slick Nav, @media
    • Mobile Vew, Font Awesome
    • SASS, Bootstrap
    • Flexbox, Slider
  • Word Press
    • #1. Introduction to WordPress
    • #2. WordPress Files Configuration
    • #3. Kernel Review. Codex
    • #4. Standards of Encoding
    • #5. Develop a plugin, introduction
    • #6. Hooks, Filters, InterNation
    • #7. Adding Admin Menus, JS, CSS
    • #8. HTTP API, Shortcodes, Transients
    • #9. Options API, Settings API
    • #10. Database API, $wpdb object
    • #11. Ajax. Widget API. Dashboard API
    • #12. Post Type. Taxonomies. Metadata
    • #13. Theme Development. Basics
    • #14. Loop. Template. WP_Query
    • #15. File functions.php – I
    • #16. File functions.php – II
    • #17. Child Theme. Shortcode. TinyMCE
    • #18. Frameworks. Blank Theme
    • #19. Framework. Underscores. Unyson
    • #20: Framework Unyson. Options
    • #21. Extensions, Components, Manifest
    • #22. Unyson: Built-in Extensions
    • #23. Unyson: Helpers, Filters & Actions
    • #24. WC: Installation & Updating
    • #25. WC: Settings & Options
    • #26. WC: Product Setup
    • #27. WC: Sell Products, Order
    • #28. WC: Theming
    • #29. WC: Extending
    • #30. WC: Extending
  • PHP
    • Laravel, MVC, Composer
    • FW Yii2
  • JS
    • JS
    • React, Angular
  • Freelance
  • Projects
    • Useful Products
      • Free WordPress Themes (WP)
      • Free CSS templates (CSS, HTML)
      • Стартовая тема Word Press (WP)
    • Project
      • Practic Task
      • Real Democracy Game
      • Research Journal
      • Qubot
      • Cyber-street
      • Amatue

#15. File functions.php — I

Rostyslav - 11 января, 2018 - One comment

    Для чего нужен functions.php?

    Чем functions.php отличается от плагина?

    Мифы о производительности functions.php

    Произвольное меню

    Включаем поддержку произвольных меню (wp_nav_menu)

    Вывод произвольных меню через функцию wp_nav_menu

    Функции

    Интернационализация

    Специальные функции интернационализации

    Установка заголовков перевода

    Загрузка Text Domain

    Генерация POT-файла

    Функции подключение файлов

    add_theme_support()

    Theme Functions

    functions.php в WordPress

    Схема загрузки ядра WordPress (очередность загрузки хуков)

    Порядок загрузки ядра WordPress

    Вся правда о functions.php

    Файл темы functions.php в WordPress

    Где находиться functions.php WordPress и примеры его использования

    Файл functions.php из папки с темой WordPress — реальные примеры его использования

    Тема (шаблон)

    Шаблон

    after_setup_theme

    add_theme_support

    Произвольное меню в WP 3.0+ (wp_nav_menu)

    Navigation menus

    Как добавить свое меню в шаблон wordpress

    I18n for WordPress Developers

    Internationalization

    Plugin Handbook

    poedit

    Poedit — переводим темы и плагины WordPress

    Специальные функции интернационализации

    Blank-WordPress-Pot

    Как переводить темы для WordPress

    Как перевести тему для WordPress на другой язык

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

    • Определение функций, используемых в файлах шаблонов вашей темы;
    • Настройки в админке вашей темы, которые предоставляют пользователям варианты настроек цветов, стилей или других аспектов вашей темы.

    Темы, поставляемые с WordPress и установленные из коробки, имеют файл functions.php, который определяет ряд функций и настроек в админке темы, поэтому вы можете использовать его в качестве модели. Файл functions.php в основном работает как плагин, раздел Кодекса Function_Reference — лучшее место, где можно получить более подробную информацию о том, как вы можете использовать этот файл.

    Для чего нужен файл functions.php?

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

    Файл functions.php загружается при каждом запросе любой страницы в WordPress, включая запросы в панель администрирования и AJAX запросы. Это дает разработчикам темы возможность изменять любые аспекты их проекта на WordPress, а не только то, что связано с внешним видом.

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

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

    Вообще файл functions.php в WordPress по логике и скорости работы напоминает плагины. Хотя при этом у них есть принципиальные отличия. Плагины используются, как правило, для решения каких-то конкретных задач и применяются к любой теме вашего сайта. Плюс для работы их нужно активировать. Что касается файла шаблона functions.php, то он может содержать много разных функций и выполняется только для той темы, в которой определен. То есть при смене шаблона, все ваши текущие наработки будут отключены, а система начнет считывать информацию из другого файла функций (об этом следует помнить).

    Чем functions.php отличается от плагина?

    Если коротко — то ничем.

    Если взглянуть на порядок загрузки ядра WordPress в файле wp-settings.php, то мы увидим что файл functions.php активной темы загружается немного позднее всех активных плагинов, но данный порядок не дает каких-либо преимуществ или недостатков. А содержание файла functions.php и файлов плагинов подключаются и выполняются идентичным образом.

    Рис. 15.1 Процесс подключения functions.php

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

    Мифы о производительности functions.php

    Некоторые источники утверждают, что functions.php работает быстрее чем плагины, и иногда даже советуют переместить код из файла плагина в файл functions.php для его «ускорения». Это неправда.

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

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

    Произвольное меню

    WordPress 3.0 добавлена поддержка произвольных меню (настраиваемых меню). Удобство заключается в том, что теперь можно создавать и конфигурировать меню прямо из админки, добавляя ссылки кликами по чекбоксам и меняя порядок ссылок простым перетаскиванием. В меню можно добавить ссылки на страницы, категории и отдельные посты. Можно создавать многоуровневые меню, так же в меню можно добавлять свои произвольные ссылки, о которых WordPress не знает. В общем, полная свобода действий.

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

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

    Заметка автора: огорчает, то что меню работает через таксономию (nav_menu) WordPress, а произвольные (внешние) ссылки, записываются в основную таблицу БД posts. Такой подход более гибкий и динамичный, однако требует постоянной генерации таких меню, поэтому такие меню создают приличную нагрузку. Такая уж концепция WordPress — удобство превыше всего, несмотря на то, что порой оно не оправдано производительностью.

    Включаем поддержку произвольных меню (wp_nav_menu)

    Для начала нужно зарегистрировать возможность использования произвольных меню и сами меню. Делается это в файле functions.php,с помощью функции register_nav_menu() Регистрируется одно расположение/место меню, к которому затем в админке прикрепляются меню. Чтобы зарегистрировать сразу несколько таких меню используйте register_nav_menus().

    register_nav_menu( $location, $description );

    Регистрируется одно расположение/место меню, к которому затем в админке прикрепляются меню.

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

    Функция автоматически регистрирует поддержку навигационных меню для темы. т.е. используя эту функцию нет необходимости предварительно вызывать функцию: add_theme_support( ‘menus’ );

    Чтобы зарегистрировать сразу несколько таких меню используйте register_nav_menus().

    Функцию принято вызывать во время события after_setup_theme.

    Работает на основе: register_nav_menus() Хуков нет.

    Возвращает

    Функция ничего не возвращает, просто регистрирует расположение меню.

    Использование

    <?php register_nav_menu( $location, $description ); ?>

    $location(строка) (обязательный)

    Идентификатор расположения меню, как слаг — литая строка.

    По умолчанию: нет

    $description(строка) (обязательный)

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

    По умолчанию: нет

    Пример

    Используем этот код в файле темы functions.php.

    function registerNavMenu() {

       register_nav_menu( ‘primary’, ‘Primary Menu’ );

    }

    add_action( ‘after_setup_theme’, ‘registerNavMenu’ );

    После того, как меню зарегистрировано, зайдите в админку и добавьте в него элементы, а затем выведите его в шаблоне с помощью wp_nav_menu(), чтобы вывести меню в шаблоне.

    Сейчас мы зарегистрировали 1 меню с идентификатором  ‘primary’ с соответствующим названиям. Идентификатор нужен, чтобы использовать их в теме, для указания того места, где ,через функцию вывода wp_nav_menu(), будет выводиться созданное в админке меню. Названия зарегистрированных расположений мы увидим в админке, когда зайдем в раздел Внешний вид -> Меню(Appearance->Menus).

    После того, как меню зарегистрированы, идем в админку и создаем свое меню:

    1. Задаем название меню (меню в шаблоне можно выводить по указанному названию, функцией wp_nav_menu()
    2. Создаем пункты меню. Используем левый блок: страницы ссылки, рубрики
    3. Выбираем где будет расположено меню.

    Поддержка произвольных меню в WordPress включается для каждой темы отдельно, такой строкой в файле functions.php add_theme_support(‘menus’); Однако, в этой строчке нет необходимости, если мы регистрируем меню. В этом случаем поддержка будет включена автоматически.

    Вывод произвольных меню через функцию wp_nav_menu

    Меню зарегистрировано и создано, осталось добавить его в шаблон. Делается это функцией wp_nav_menu()

    wp_nav_menu()

    Выводит произвольное меню, созданное в панели: «внешний вид > меню» (Appearance > Menus). Какое именно меню навигации выводить (их может быть несколько), указывается в параметре theme_location. Если не указан параметр theme_location, то меню для вывода будет подбираться в следующем порядке:

    1. Меню, подходящее по ID, слагу или описанию переданному в параметре ‘menu’ и если в этом меню есть хоть одна ссылка (один элемент);
    2. иначе, первое не пустое меню;
    3. или, выведет значение возвращаемое функцией указанной в параметре «fallback_cb» (по умолчанию там указано функция wp_page_menu);
    4. если ничего не подошло, функция ничего и не выведет.

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

    add_theme_support( ‘menus’ );

    Или можно зарегистрировать место для меню, с помощью register_nav_menu(), тогда поддержка меню темой включиться автоматически.

    Фльтры изменения элемента меню

    • nav_menu_item_args — фильтрует параметры отдельного элемента меню.
    • nav_menu_css_class — фильтрует css классы (class атрибут) отдельного <li> элемента меню.
    • nav_menu_item_id — фильтрует ID атрибут отдельного <li> элемента меню.
    • nav_menu_link_attributes — фильтрует атрибуты <a> элемента меню: title, target, rel, href.
    • nav_menu_item_title — фильтрует текст анкора ссылки элемента меню.
    • walker_nav_menu_start_el — фильтрует HTML код начала отдельного элемента меню. Начало означает незакрытый li тег: <li><a></a>

    Хуки из функции:

    pre_wp_nav_menu

    wp_nav_menu

    wp_nav_menu_(menu->slug)_items

    wp_nav_menu_args

    wp_nav_menu_container_allowedtags

    wp_nav_menu_items

    wp_nav_menu_objects

    Возвращает

    Функция выводит на экран html код меню.

    Использование

    <?php wp_nav_menu( $args ); ?>

    wp_nav_menu( array(

    ‘theme_location’  => »,

    ‘menu’            => »,

    ‘container’       => ‘div’,

    ‘container_class’ => »,

    ‘container_id’    => »,

    ‘menu_class’      => ‘menu’,

    ‘menu_id’         => »,

    ‘echo’            => true,

    ‘fallback_cb’     => ‘wp_page_menu’,

    ‘before’          => »,

    ‘after’           => »,

    ‘link_before’     => »,

    ‘link_after’      => »,

    ‘items_wrap’      => ‘<ul id=»%1$s» class=»%2$s»>%3$s</ul>’,

    ‘depth’           => 0,

    ‘walker’          => »,

    ) );

    Аргументы параметра $args

    theme_location(строка)

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

    По умолчанию: »

    menu(строка)

    Меню которое нужно вывести. Соответствие: id, слаг или название меню.

    По умолчанию: «»

    container(строка)

    Чем оборачивать ul тег. Допустимо: div или nav. Если не нужно оборачивать ничем, то пишем false (container => false).

    По умолчанию: div

    container_class(строка)

    Значение атрибута class у контейнера меню.

    По умолчанию: menu-{menu slug}-container

    container_id(строка)

    Значение атрибута id у контейнера меню.

    По умолчанию: »

    menu_class(строка)

    Значение атрибута class у тега ul.

    По умолчанию: menu

    menu_id(строка)

    Значение атрибута id у тега ul.

    По умолчанию: слаг меню

    echo(логическое)

    Выводить на экран (true) или возвратить для обработки (false).

    По умолчанию: true

    fallback_cb(строка)

    Функция для обработки вывода, если никакое меню не найдено.

    Передает все аргументы $args указанной тут функции.

    Установите ‘__return_empty_string’ чтобы ничего не выводилось, если меню нет.

    По умолчанию: wp_page_menu

    before(строка)

    Текст перед тегом <a> в меню.

    По умолчанию: »

    after(строка)

    Текст после каждого тега </a> в меню.

    По умолчанию: »

    link_before(строка)

    Текст перед анкором каждой ссылки в меню.

    По умолчанию: »

    link_after(строка)

    Текст после анкора каждой ссылки в меню.

    По умолчанию: »

    items_wrap(строка)

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

    По умолчанию: ‘<ul id=»%1$s» class=»%2$s»>%3$s</ul>’

    depth(число)

    Сколько уровень вложенных друг в друга ссылок показывать. 0 — все уровни.

    walker(объект)

    Класса, который будет использоваться для построения меню. Нужно указывать объект, а не строку, например new My_Menu_Walker(). По умолчанию: Walker_Nav_Menu(). Как использовать смотрите ниже…

    По умолчанию: Walker_Nav_Menu

    item_spacing(строка)

    Оставлять или нет переносы строк в HTML коде меню. Может быть: preserve или discard

    По умолчанию: ‘preserve’

    Вывод меню

    <?php

    $args = array(

                       ‘theme_location’ => ‘primary’

                       ‘container’       => ‘nav’,        

                       ‘container_class’ => »,          

                       ‘container_id’    => ‘main-menu’,            

                       ‘menu_class’      => ‘horizontal-navigation’,          

                       ‘menu_id’         => »,              

                       ‘echo’            => true,            

                       ‘fallback_cb’     => ‘wp_page_menu’,  

                       ‘before’          => »,              

                       ‘after’           => »,             

                       ‘link_before’     => »,              

                       ‘link_after’      => »,           

                       ‘depth’           => 0,             

                       ‘walker’          => »,             

                   );

                   wp_nav_menu($args);

    ?>

    Функции

    get_nav_menu_locations() Получает массив зарегистрированных областей меню (расположений меню) и ID меню прикрепленных к каждой области.
    has_nav_menu() Проверяет зарегистрировано ли указанное меню навигации. Условный тег.
    register_nav_menu() Регистрируется одно расположение/место меню, к которому затем в админке прикрепляются меню.
    register_nav_menus() Регистрируется сразу несколько расположений меню, к которым затем прикрепляются меню.
    unregister_nav_menu() Удаляет, ранее зарегистрированное, меню навигации.
    wp_get_nav_menu_items() Получает элементы меню навигации в виде массива, который затем можно обработать.
    wp_get_nav_menu_object() Получает объект меню WordPress. Возвращает только объект самого меню, без элементв в нем.
    wp_get_nav_menus() Возвращает массив (объектов) всех зарегистрированных меню.
    wp_nav_menu() Выводит произвольное меню, созданное в панели: «внешний вид > меню» (Appearance > Menus).

    Интернационализация

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

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

    Специальные функции интернационализации

    Функция Описание
    __() Переводит указанный текст, используя файл перевода и возвращает его для обработки.
    _e() Переводит указанный текст, используя файл перевода и выводит его на экран.
    _n() Выбирает строку, которая будет использована для перевода единственного или множественного числа переданного в функцию (1 комментарий, 2 комментария). Функция локализации.
    _x() Переводит указанный текст, на основе указанного контекста. Использует файл перевода.
    _ex() Функция _ex() является полным аналогом функции _x(), с единственным исключением, что _x() — возвращает результат, а _ex() выводит его на экран.
    date_i18n() Получает локализованную дату (переведенную на текущий язык) из переданного штампа времени unix. Локализация PHP функции date().
    esc_attr__() Переводит с использованием функции esc_attr().
    esc_attr_e() Выводит переведенный текст, прежде очищенный функцией esc_attr().
    esc_html__() Переводит строку заменяя в ней спецсимволы на HTML сущности. Возвращает текст, которой можно отображать в HTML как HTML код.
    esc_html_e() Переводит строку и заменяет в ней спецсимволы на HTML сущности. Выводит на экран текст, которой можно отображать в HTML как HTML код.
    get_locale() Устанавливает глобальную переменную $locale и получает текущую локаль (индекс языка сайта). По умолчанию ‘en_US’.
    get_user_locale() Получает локаль (язык перевода) текущего или указанного пользователя.
    is_locale_switched() Проверяет была ли переключена локаль (язык перевода), была ли использована функция switch_to_locale().
    load_child_theme_textdomain() Загружает файл перевода дочерней темы (.mo) в память, для дальнейшей работы с ним.
    load_plugin_textdomain() Загружает строку для перевода плагина.
    load_textdomain() Подключает домен и .mo файл в данные локализации.
    load_theme_textdomain() Загружает файл перевода темы (.mo) в память, для дальнейшей работы с ним.
    switch_to_locale() Позволяет программно переключить язык сайта.
    translate() Получает перевод указанного текста.
    unload_textdomain() Выгружает (удаляет, отменяет) подключенный файл перевода.

    Установка заголовков перевода

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

      • Text Domain используется для обозначения всего текста, принадлежащего теме. Это уникальный идентификатор, который обеспечивает WordPress возможность различать все загруженные переводы. Это позволяет сохранять компактность файлов и обеспечивает лучшее взаимодействие с уже существующими инструментами WordPress. должен совпадать со slug темы. Например, если ваша тема представляет собой директорию step-by-step-development-theme то Text Domain должен быть step-by-step-development-theme.
    • Domain Path это папка, в которой WordPress будет искать файлы перевода .mo. По умолчанию, WordPress ищет файлы переводов в корневой папке темы. Однако размещение файла перевода в корневой папке может дезорганизовать структуру темы.
      Если вы хотите хранить файлы перевода в другой папке, например: /languages, необходимо сообщить об этом WordPress, используя заголовок Domain Path.

    Отредактируем style.css

    /*

    Theme Name: Step By Step Development Theme

    Theme URI: https://github.com/SolomashenkoRoman/step-by-step-development-theme

    Author: the romansolomashenko

    Author URI: https://www.linkedin.com/in/solomashenkoroman/

    Description: Step by step development of the theme.

    Version: 1.0

    License: GNU General Public License v2 or later

    License URI: http://www.gnu.org/licenses/gpl-2.0.html

    Text Domain: step-by-step-development-theme

    Domain Path: /languages/

    ……

    */

    Загрузка Text Domain

    load_theme_textdomain()

    Загружает файл перевода темы (.mo) в память, для дальнейшей работы с ним.

    Файл .mo должен находится в корневой директории темы. Он будет загружен в виде строки для указанного идентификатора $domain.

    Файл перевода .mo должен иметь точно такое же название как и текущая локализация (указывается в wp-config.php), например, ru_RU.mo.

    Следует вызывать во время хука after_setup_theme

    Используется в: load_child_theme_textdomain(). Работает на основе: load_textdomain()

    Хуки из функции:

    theme_locale

    Возвращает

    Логический. true — если файл перевода был загружен, false — если не удалось получить.

    Использование

    load_theme_textdomain( $domain, $path );

    $domain(строка) (обязательный)

    Уникальный идентификатор по которому позднее в функциях перевода: __() _e() можно будет обратиться именно к этой строке перевода.

    $path(строка)

    Путь до директории в которой расположен .mo файл (без оканчивающего слэша). По умолчанию указывается путь до каталога темы: get_template_directory().

    По умолчанию: false

    Пример

    define(«STEPBYSTEP_THEME_TEXTDOMAIN», ‘step-by-step-development-theme’);

    /**

    * Загрузка Text Domain

    */

    function themeLocalization(){

       load_theme_textdomain(STEPBYSTEP_THEME_TEXTDOMAIN, get_template_directory() . ‘/languages/’);

    }

    add_action(‘after_setup_theme’, ‘themeLocalization’);

    Генерация POT-файла

    Первый этап — сгенерировать .pot для вашего плагина или темы. Можно скачать пустой шаблон POT файла https://github.com/fxbenard/Blank-WordPress-Pot в папку languages темы

    Вместе с шаблоном POT файла идет файлик How-to-use-a-pot-file.txt в нем описано что нужно сделать чтобы создать файл перевода:

    1. Открыть программу Poedit

    1. Теперь нам нужно создать POT файл на основе пустого шаблона POT который мы скачали для этого делаем следующее Файл->Создать из POT файла
    2. Выбираем шаблон POT файла

    1. Вводи свое имя, адрес электронной почты, язык и страну (en_US) в форме настройки.

    Каталог->Свойства

    Теперь сохраним свой файл en_US.po в папке languages

    Создадим POT файл для русской локализации ru_RU  ru_RU.po. Все аналогично файлу en_US.po

    Пример

    /**

    * Включаем поддержку произвольных меню

    */

    function registerNavMenu() {

       register_nav_menu( ‘primary’, __(‘Primary Menu’, STEPBYSTEP_THEME_TEXTDOMAIN) );

    }

    add_action( ‘after_setup_theme’, ‘registerNavMenu’, 100 );

    Функции подключения файлов

    comments_template() Подгружает указанный файл шаблона комментариев для показа комментариев на старице записи. По умолчанию загружает файл: /comments.php из папки темы.
    get_footer() Подключает файл footer.php из шаблона (темы). Если указано имя в параметре, то будет подключен файл: footer-{name}.php из шаблона темы.
    get_header() Подключает файл шаблона header.php (шапку). Если передан параметр $name, то будет подключен файл header-{name}.php.
    get_search_form() Подключает форму поиска, файл темы searchform.php. Если такого файла в шаблоне темы нет, то будет использован дефолтный код для формы поиска.
    get_sidebar() Подключает файл шаблона sidebar.php (сайдбар). Если передан параметр $name, то будет подключен файл sidebar-{name}.php.
    get_stylesheet_uri() Получает готовую ссылку (URL) на файл стилей style.css текущей темы.
    get_template_part() Предназначена для поиска и подключения разных частей темы. Похожа на PHP функцию include(), только тут не нужно указывать путь до темы.
    is_page_template() Проверяет используется ли для вывода страницы отдельный файл шаблона. Возвращает true/false.
    load_template() Подключает указанный файл в PHP, с помощью require_once. WordPress-обёртка для PHP функции require_once.
    locate_template() Находит наиболее подходящий серверный путь к указанному файлу шаблона. При поиске учитывается дочерняя тема. В параметрах можно указать, чтобы файл сразу подключался в PHP.

     

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

     

    get_stylesheet_directory_uri() Получает URL текущей темы, не содержит слэша на конце. Учитывает дочернюю тему. Учитывает SSL.

     

    get_template() Получает название директории текущей темы, без слэшей на концах. Название каталога темы почти всегда равно названию темы.
    get_template_directory() Получает полный путь от корня сайта до текущей темы (родительской, не дочерней). Не содержит слэш на конце.
    get_template_directory_uri() Получает URL текущей темы. Учитывает SSL. Не учитывает наличие дочерней темы. Не содержит закрывающий слэш.

     

    get_template() Получает название директории текущей темы, без слэшей на концах. Название каталога темы почти всегда равно названию темы.
    get_template_directory() Получает полный путь от корня сайта до текущей темы (родительской, не дочерней). Не содержит слэш на конце.
    get_template_directory_uri() Получает URL текущей темы. Учитывает SSL. Не учитывает наличие дочерней темы. Не содержит закрывающий слэш.

    add_theme_support()

    Позволяет темам или плагинам регистрировать поддержку новых возможностей в WordPress (поддержка миниатюр, форматов записей и т.д.) Если функция вызывается из темы, то она должна находится в файле functions.php. Также, её можно вызвать из плагина, подключив к событию (хуку): after_setup_theme.

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

    Хуков нет.

    add_theme_support( $feature, $formats );

    $feature(строка) (обязательный)

    Название добавляемой возможности.

    Список всех новых возможностей:

    • post-formats
    • post-thumbnails
    • custom-background
    • custom-header
    • automatic-feed-links
    • html5
    • title-tag
    • custom-logo (с WP 4.5)
    • customize-selective-refresh-widgets (с WP 4.5)
    • starter-content (с WP 4.7)
    • admin-bar

    Следующие возможности нужны только для чтения и должны быть использованы в функции current_theme_supports():

    • widgets — используйте register_sidebar() или register_sidebars() взамен.
    • menus — используйте register_nav_menu() или register_nav_menus() взамен.
    • editor-style — используйте add_editor_style() взамен.

    По умолчанию: нет

    $formats(массив)

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

    По умолчанию: нет

    Новые возможности

    post-formats

    Позволяет указывать формат посту. Функция была добавлена в версии 3.1. Чтобы указать определенные форматы используйте второй аргумент функции:

    add_theme_support( ‘post-formats’, array( ‘aside’, ‘gallery’ ) );

    Чтобы проверить пост на формат quote, используйте такой код в файлах single.php, page.php:

    if ( has_post_format( ‘quote’ ) ) {

    echo ‘Это quote.’;

    }

    post-thumbnails

    Позволяет устанавливать миниатюру посту. Доступна с версии 2.9. Вы можете передать второй аргумент функции в виде массива, в котором указать для каких типов постов разрешить миниатюры:

    add_theme_support( ‘post-thumbnails’ );

    add_theme_support( ‘post-thumbnails’, array( ‘post’ ) );          // Только для post

    add_theme_support( ‘post-thumbnails’, array( ‘page’ ) );          // Только для page

    add_theme_support( ‘post-thumbnails’, array( ‘post’, ‘movie’ ) ); // Для post и movie типов

    Эту возможность нужно добавлять до хука init. Это значит, что функция должна быть расположена в файле темы functions.php или через хук after_setup_theme. Для произвольных типов записей также можно выводить блок миниатюр смотрите register_post_type().

    Чтобы вывести миниатюру в файле темы (index.php или single.php и т.д.) используем функцию the_post_thumbnail():

    the_post_thumbnail();

    Чтобы проверить, если ли у поста миниатюра, перед тем как её выводить, используем has_post_thumbnail():

    if ( has_post_thumbnail() ) {

    the_post_thumbnail();

    }

    custom-background

    Добавляет возможность изменять фон из админки. Доступна с версии 3.4.

    add_theme_support( ‘custom-background’ );

    Также, можно указать параметры во втором аргументе:

    $defaults = array(

    ‘default-color’          => »,

    ‘default-image’          => »,

    ‘wp-head-callback’       => ‘_custom_background_cb’,

    ‘admin-head-callback’    => »,

    ‘admin-preview-callback’ => »

    );

    add_theme_support( ‘custom-background’, $defaults );

    Получим в head части сайта:

    <style type=»text/css» id=»custom-background-css»>

    body.custom-background { background-color: #bdd96e; }

    </style>

    Совместимость с ранними версиями

    Чтобы произвольный фон был совместим в ранними версиями (ниже 3.4), можно использовать такое условие:

    global $wp_version;

    if ( version_compare( $wp_version, ‘3.4’, ‘>=’ ) )

    add_theme_support( ‘custom-background’ );

    else

    add_custom_background( $args );

    custom-header

    С версии 3.4, можно изменять изображения в шапке из админки, используя:

    add_theme_support( ‘custom-header’ );

    Также, можно указать дополнительные параметры:

    $defaults = array(

    ‘default-image’          => »,

    ‘random-default’         => false,

    ‘width’                  => 0,

    ‘height’                 => 0,

    ‘flex-height’            => false,

    ‘flex-width’             => false,

    ‘default-text-color’     => », // вызывается функций get_header_textcolor()

    ‘header-text’            => true,

    ‘uploads’                => true,

    ‘wp-head-callback’       => »,

    ‘admin-head-callback’    => »,

    ‘admin-preview-callback’ => »,

    ‘video’                  => false, // с 4.7

    ‘video-active-callback’  => ‘is_front_page’, // с 4.7

    );

    add_theme_support( ‘custom-header’, $defaults );

    Видео в заголовке (шапке WordPress)

    C WP 4.7 в настройках шапки можно разрешить устанавливать видео, которое будет использовано также как и картника — в целях декорации. Поэтому оно будет проигрываться автоматически, будет зациклено и будет без звука. Такую возможность хорошо использовать в комбинации с картинкой, чтобы сначала загружалась картинка, а затем, если видео поддерживается подгружалось оно.

    Поддержка видео включается так:

    add_theme_support( ‘custom-header’, array(

    ‘video’ => true,

    ) );

    При активации этой возможности в кастомайзере (настройках темы) появится блок где можно загрузить и установить.

    Все функции для вывода картинки и видео заголовка:

    • get_header_image — Получает УРЛ картинки шапки (заголовка). Для вывода на экран есть обертка header_image().
    • get_header_image_tag() — Получает <img> тег картинки заголовка. Добавляет туда атрибуты srcset и srcset. Для вывода на экран есть обертка the_header_image_tag().
    • has_header_video() – Проверяет было ли установлено видео в кастомайзере.
    • is_header_video_active() – Проверяет должно ли показываться видео для текущей страницы запроса во фронте.
    • get_header_video_url() – Получает URL видео для шапки. Может быть локальной или внешней ссылкой на видео.
    • the_header_video_url() – Выводит URL видео для шапки.
    • has_custom_header() – Проверяет установлена ли картинка для шапки темы, или установлено ли видео и доступно для показа на текущей странице запроса.
    • get_custom_header_markup() – Получает HTML код для отображения картинки заголовка (не включает видео).
    • the_custom_header_markup() – Выводит HTML код для отображения картинки заголовка и подключает JS код для обработки видео заголовка, если оно доступно для текущего запроса.

    Примеры

    Для начала в header.php где находится картинка шапки у нас должен быть такой код, чтобы нижеследующие настройки работали:

    <img src=»<?php header_image(); ?>» height=»<?php echo get_custom_header()->height; ?>» width=»<?php echo get_custom_header()->width; ?>» alt=»» />

    #1. Установим картинку для шапки размером: 980px на 60px:

    $args = array(

    ‘width’         => 980,

    ‘height’        => 60,

    ‘default-image’ => get_template_directory_uri() . ‘/images/header.jpg’,

    );

    add_theme_support( ‘custom-header’, $args );

    #2. Установим картинку по умолчанию и дадим возможность изменять её пользователям (‘uploads’=> true):

    $args = array(

    ‘width’         => 980,

    ‘height’        => 60,

    ‘default-image’ => get_template_directory_uri() . ‘/images/header.jpg’,

    ‘uploads’       => true,

    );

    add_theme_support( ‘custom-header’, $args );

    #3. Дадим возможность пользователям изменять размеры картинки (‘flex-width’, ‘flex-height’):

    $args = array(

    ‘flex-width’    => true,

    ‘width’         => 980,

    ‘flex-height’    => true,

    ‘height’        => 200,

    ‘default-image’ => get_template_directory_uri() . ‘/images/header.jpg’,

    );

    add_theme_support( ‘custom-header’, $args );

    automatic-feed-links

    Эта возможность добавляет ссылки на RSS фиды постов и комментариев в head часть HTML документа. Работает с версии 3.0. Нужно использовать вместо устарелой функции automatic_feed_links().

    add_theme_support( ‘automatic-feed-links’ );

    html5

    Включает поддержку html5 разметки для списка комментариев, формы комментариев, формы поиска, галереи и т.д. Где нужно включить разметку указывается во втором параметре:

    add_theme_support( ‘html5’, array( ‘comment-list’, ‘comment-form’, ‘search-form’, ‘gallery’, ‘caption’ ) );

    Если второй параметр оставить пустым, то будут использован следующий массив: array( ‘comment-list’, ‘comment-form’, ‘search-form’ ).

    C версии 3.9 WordPress использует элементы: <figure> (галерея) и <figcaption> (подпись) для кода галереи и для подписи картинок.

    title-tag

    С версии 4.1. Эта функция позволит плагинам и темам изменять метатег <title>. Эта возможность будет использоваться вместо wp_title().

    add_theme_support(‘title-tag’);

    Если активировать эту опцию для темы, то в теме не нужно устанавливать метатег <title><?php wp_title() ?></title> — он будет подключен автоматически через хук wp_head.

    custom-logo (с WP 4.5)

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

    custom-logo

    add_theme_support(‘custom-logo’);

    После установки такого лого, его можно получить и вывести в теме с помощью функции: get_custom_logo() или the_custom_logo().

    Чтобы проверить наличие такого логотипа используйте has_custom_logo().

    customize-selective-refresh-widgets (с WP 4.5)

    Включает поддержку «Selective Refresh» (выборочное обновление) для виджетов в кастомайзере. Что такое «Selective Refresh» смотрите в этом демо ролике и читайте (англ.) тут и тут.

    add_theme_support( ‘customize-selective-refresh-widgets’ );

    starter-content (с WP 4.7)

    Расширяет начальный контент (контент который устанавливается, при установке WordPress или темы). По умолчанию в WP есть свой начальный контент, но его можно дополнить указав в этой возможности все данные контента. Какие данные можно указать и в каком формате это делать, смотрите в коде функции get_theme_starter_content()

    Шаблон использования:

    add_theme_support( ‘starter-content’, array(

    ‘options’     => », // опции сайта

    ‘theme_mods’  => », // опции темы

    ‘widgets’     => », // данные виждетов

    ‘nav_menus’   => », // данные меню

    ‘attachments’ => », // данные вложений

    ‘posts’       => », // массив массивов: ID => array(‘post_type’ => », ‘post_title’ => », ‘post_excerpt’ => », ‘post_name’ => », ‘post_content’ => », ‘menu_order’ => », ‘comment_status’ => », ‘thumbnail’ => », ‘template’ => »)

    ) );

    admin-bar

    Эта возможность включена по умолчанию и отключается по-другому. Но через get_theme_support( ‘admin-bar’ ); WP получает название колбек функции _admin_bar_bump_cb(), она выводит css стили для отступа вверху html для админ бара.

    Чтобы убрать, отключить этот отступ используйте такой код:

    add_theme_support( ‘admin-bar’, array( ‘callback’=>’__return_false’ ) );

     

    Categories : Word Press, www

    • « Previous Post
    • Next Post »

    Discussions

    1. admin 19 января, 2018

      — отредактировал style.css:
      Text Domain: wpcodinghomework
      Domain Path: /languages/
      — скачал шаблон POT в /languages/ и сгенерировал файлы в программе PoEdit
      — добавил функции локализации в function.php (в том числе для главного меню)
      — добавил новые возможности в function.php

    • Word Press
      • #1. Introduction to WordPress
      • #2. WordPress Files Configuration
      • #3. Kernel Review. Codex
      • #4. Standards of Encoding
      • #5. Develop a plugin, introduction
      • #6. Hooks, Filters, InterNation
      • #7. Adding Admin Menus, JS, CSS
      • #8. HTTP API, Shortcodes, Transients
      • #9. Options API, Settings API
      • #10. Database API, $wpdb object
      • #11. Ajax. Widget API. Dashboard API
      • #12. Post Type. Taxonomies. Metadata
      • #13. Theme Development. Basics
      • #14. Loop. Template. WP_Query
      • Lecture #15. functions.php – I
      • Lecture #16. functions.php – II
      • #17. Child Theme. Shortcode. TinyMCE
      • #18. Frameworks. Blank Theme
      • #19. Framework. Underscores. Unyson
      • #20: Framework Unyson. Options
      • #21. Extensions, Components, Manifest
      • #22. Unyson: Built-in Extensions
      • #23. Unyson: Helpers, Filters & Actions
      • #24. WC: Installation & Updating
      • #25. WC: Settings & Options
      • #26. WC: Product Setup
      • #27. WC: Sell Products, Order
      • #28. WC: Theming
      • #29. WC: Extending
      • #30. WC: Extending
    • CSS
      • ПРОГРАММИРОВАНИЕ (CODING)
      • Emmet, ul, li, table, form
      • Style, hover, child
      • CSS Hat, font, background
      • Reset, margin, padding, float
      • Base64, relative, z-index
      • Google Fonts, PSD
      • Brackets, Bootstrap
      • Script, src, comments
      • jQuery, Slick Js, Tooltip
      • Bootstrap, Slick Nav, @media
      • Mobile Vew, Font Awesome
      • Flexbox, Slider
      • SASS, Bootstrap
    • Cron
    • Framework Yii2
    • React, Angular
    • JavaScript
    • Freelance

    Generic selectors
    Exact matches only
    Search in title
    Search in content
    Search in posts
    Search in pages
    Filter by Categories
    CSS
    JavaScript
    Word Press
    www

    2019 Rostyslav N Design © Уроки программирования