WordPress как найти функцию

Следующие классы были созданы разработчиками WordPress и находятся в файлах capabilities.php, classes.php, class-snoopy.php, locale.php, query.php, rewrite.php, script-loader.php, wp-db.php:

  • WP – обработка общих запросов
  • WP_Ajax_Response – обработка AJAX
  • WP_Object_Cache (в прошлом WP_Cache) – Кеш объектов (функции: wp_cache_add, wp_cache_close, wp_cache_delete, wp_cache_flush, wp_cache_get, wp_cache_init, wp_cache_replace, wp_cache_set)
  • WP_Error – обработка ошибок (и функция is_wp_error)
  • WP_Locale – управляет датой и локалями времени
  • WP_Query – Разбор запросов и управление ими, выборка записей (с функциями get_query_var, query_posts, have_posts, in_the_loop, rewind_posts, the_post, wp_old_slug_redirect, setup_postdata, а также Условные теги is_*)
  • WP_Rewrite – Правила перезаписи URL (функции: add_rewrite_rule, add_rewrite_tag, add_feed, add_rewrite_endpoint, url_to_postid)
  • WP_Roles, WP_Role, WP_User – Пользователи и их Возможности – map_meta_cap, current_user_can, get_role, add_role, remove_role
  • WP_Scripts – загрузка JavaScript (функции: wp_print_scripts, wp_register_script, wp_deregister_script wp_enqueue_script)
  • WP_Styles – загрузка CSS стилей (функции: wp_print_styles, wp_register_style, wp_deregister_style, wp_enqueue_style )
  • Отображение древовидных данных – Walker, Walker_Page, Walker_PageDropdown, Walker_Category, Walker_CategoryDropdown
  • wpdb – Интерфейс Базы Данных

Следующие классы были созданы сторонними разработчиками и могут быть найдены в файлах class-IXR.php, class-pop3.php, class-snoopy.php, gettext.php, rss.php, streams.php:

  • IXR – XML-RPC классы, включая IXR_Value, IXR_Message, IXR_Server, IXR_IntrospectionServer, IXR_Request, IXR_Client, IXR_ClientMulticall, IXR_Error, IXR_Date, IXR_Base64
  • Snoopy – HTTP клиент
  • gettext_reader (part of PHP-gettext) – класс Локализации
  • RSS классы (MagpieRSS и RSSCache) (функции: fetch_rss, is_info, is_success, is_redirect, is_error, is_client_error, is_server_error, parse_w3cdtf, wp_rss, get_rss)
  • POP3: обертка над SquirrelMail
  • StreamReader, StringReader, FileReader, CachedFileReader

В PHP functions.php помещается функционал, необходимый вашей теме и который не относится лишь к конкретному шаблону.

В Кодексе WordPress дается следующее определения файла функций:
Файл functions.php ведет себя, как плагин, добавляя функции и функционал на WordPress- сайт. Его можно использовать для вызова как PHP-функций, так и встроенных функций WordPress, для определения собственных функций. Можно получить тот же результат, добавив код в плагин WordPress или в файл functions.php темы WordPress.

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

Если у вас есть много функционального кода, который необходимо использовать на сайте, тогда нужно поместить этот код в плагин. Но если код зависит от темы, то functions.php – это именно то место, где его следует разместить. Общее правило:

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

Создайте плагин, если функционал более сложный или public function PHP не зависят от темы. В качестве примера можно привести регистрацию типов записей – вы ведь не хотите потерять пользовательские типы записей при изменении темы.

  • Общее использование файла функций
    • Добавление кода в файл функций и его активация
    • Создание файла функций
    • Добавление кода в файл functions.php
    • Добавление поддержки темы
    • Добавление файла перевода
    • Регистрация меню навигации
    • Подведем итоги
    • Включение файлов
    • Работа с родительскими и дочерними темами
    • Подключаемые функции
    • Деактивация функций
    • Использование приоритета функции
    • Файл функций – ваш друг

Когда использовать functions.php:

  • Добавление поддержки темы, например, для размещенных изображений, форматов записей и ссылок RSS;
  • Указание WordPress, где находится файл перевода темы;
  • Регистрация расположений для меню навигации, позволяющая добавлять меню через панель администрирования;
  • Добавление, удаление или переопределение функциональных возможностей родительской темы с использованием дочерней темы.
  • В этой статье я покажу вам, как это делается.

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

  • Пишем функции, которые затем вызываем в файлах шаблонов темы – это полезно, когда есть блок кода, который нужно использовать в нескольких местах темы, но он не будет работать как часть шаблона;
  • Привязываем функции к хуку действия или фильтра. Таким образом, функция запускается, когда WordPress встречает этот хук. WordPress сам предоставляет в распоряжение разработчиков сотни хуков. Вы можете найти некоторые из них в своей теме и плагинах. Если вы добавляете в functions.php код для активации определенного функционала в новой теме, тогда вам нужно создать дочернюю тему. Иначе файл функций будет перезаписан сразу после обновления темы;
  • Создаем шорткод, который затем добавляем в контент. Я бы не рекомендовала добавлять шорткод с помощью файла PHP function. Лучше сделать это с помощью плагина, чтобы содержимое, выводимое шорткодом, не пропало, если вы поменяете тему;
  • Создаем виджет. Это не очень хорошее решение; если вы хотите создать виджет, добавьте для него плагин;
  • Давайте рассмотрим, как работать с файлом functions.php и как с его помощью добавить некоторые из распространенных функциональных возможностей.

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

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

/************************************************************************
my_function - короткий текст, описывающий, что это делает
************************************************************************/

Рассмотрим некоторые часто используемые функции.

В WordPress есть определенные PHP static function, для которых нужно добавить поддержку темой, чтобы воспользоваться ими:

  • Форматы записей – tumblr-форматы, такие как standard, video, quote и aside;
  • Миниатюры записей – если вы хотите использовать их в своей теме, придется добавить код для их вывода в файлах шаблонов. Но они не будут доступны в панели администрирования, если вы не добавите для них поддержку темой;
  • Пользовательский фон – позволяет настраивать фоновое изображение и цвета фона через пользовательский интерфейс;
  • Пользовательский заголовок, который работает так же, как и пользовательский фон;
  • Автоматические ссылки на каналы – для RSS-каналов;
  • HTML5 – для формы поиска, комментариев, галереи и т.д. Это не влияет на возможность создания кода темы с помощью HTML5, но относится к коду, сгенерированному WordPress;
  • Тег заголовка – позволяет добавить тег заголовка в раздел для улучшения SEO и доступности.

Таким образом, чтобы добавить, например, поддержку темы для форматов записей, необходимо использовать функцию add_theme_support():

add_theme_support( 'post-formats' );

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

add_theme_support( 'post-formats', array( 'aside', 'quote' ) );

А для специальных изображений можно указать, в каких типах записей они будут поддерживаться:

add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );

Но ничего из этого не сработает, если вы не поместите свой код внутри функции и не привяжете к соответствующему хуку действия after_setup_theme. Можно добавить все функции add_theme_support() внутри одной более крупной функции, которую вы затем привяжете к after_setup_theme. Поэтому, если вы хотите добавить поддержку темой миниатюр записей, форматов записей, HTML5 и автоматических ссылок на каналы, добавьте следующий код в файл функций:

/*******************************************************************************
wpmu_theme_support - добавляет поддержку темой форматов записей, миниатюр записей, HTML5 и автоматических ссылок на каналы
*******************************************************************************/
function wpmu_theme_support() {

  /* форматы записей */
  add_theme_support( 'post-formats', array( 'aside', 'quote' ) );

  /* миниатюры записей */
  add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );

  /* HTML5 */
  add_theme_support( 'html5' );

  /* автоматические ссылки на каналы */
  add_theme_support( 'automatic-feed-links' );

}
add_action( 'after_setup_theme', 'wpmu_theme_support' );

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

С помощью private function PHP load_theme_textdomain() в файле функций укажите WordPress, где размещается файл перевода:

function wpmu_translation() {
    load_child_theme_textdomain( 'wpmu-theme', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'wpmu_translation' );

Эта функция использует функцию get_template_directory(), чтобы найти папку темы, а затем ищет в папке languages файл, начинающийся с wpmu-theme. Поэтому путь будет wp-content/themes/mytheme/languages/, а имя для файла языка начинается с wpmu-theme, за чем следует код языка.

В файле functions.php также регистрируются меню навигации. Во многих темах есть флажок «Основное меню», который можно установить в разделе «Меню». Это дает возможность использовать меню в определенном месте темы. Чтобы реализовать подобный функционал, нужно использовать функцию register nav menus():

function wpmu_nav_menus() {
  register_nav_menus( array(
	  'primary' => __( 'Primary Navigation', 'wpmu-theme' ),
	) );
	
}
add_action( 'after_setup_theme', 'wpmu_nav_menus' );

Этот код регистрирует расположение меню, которое будет отображаться в панели администрирования как “Основное меню“, а его идентификатор будет primary. Затем вы используете этот идентификатор для вывода меню в файле темы header.php.

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

Также можно использовать эту PHP function для регистрации нескольких позиций вывода меню навигации. В приведенном ниже коде зарегистрировано основное меню, а также дополнительное меню в боковой панели:

function wpmu_nav_menus() {
  register_nav_menus( array(
	  'primary' => __( 'Primary Navigation', 'wpmu-theme' ),
	  'sidebar' => __( 'Sidebar Navigation', 'wpmu-theme' ),
	) );
	
}
add_action( 'after_setup_theme', 'wpmu_nav_menus' );

Нужно добавить код меню в файл sidebar.php темы, используя функцию wp_nav_menu().

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

Можно создать одну большую функцию:

/**********************************************************************************
wpmu_theme_setup - задает настройки темы
- добавляет поддержку темой форматов записей, миниатюр записей, HTML5 и автоматических ссылок на каналы
- регистрирует файл перевода
- регистрирует меню навигации
**********************************************************************************/
function wpmu_theme_setup() {
  /*******************************
  Начинаем с добавления поддержки темой
  *******************************/
  /* форматов записей */
  add_theme_support( 'post-formats', array( 'aside', 'quote' ) );

  /* миниатюр записей */
  add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );
  /* HTML5 */
  add_theme_support( 'html5' );
  /* автоматических ссылок на каналы */
  add_theme_support( 'automatic-feed-links' );
  /*******************************
  Файл перевода
  *******************************/
  load_child_theme_textdomain( 'wpmu-theme', get_stylesheet_directory() . '/languages' );

  /*******************************
  Меню навигации
  *******************************/
  register_nav_menus( array(
	  'primary' => __( 'Primary Navigation', 'wpmu-theme' ),
	  'sidebar' => __( 'Sidebar Navigation', 'wpmu-theme' ),
	) );

}
add_action( 'after_setup_theme', 'wpmu_theme_support' );

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

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

Создайте в своей теме папку под названием includes, а затем добавьте в нее отдельные файлы PHP для каждого блока кода, который нужно отделить. Например, если нужно было переместить настройку темы в другой файл, я бы переместила весь приведенный выше код в файл с именем theme_setup.php, а затем вызвала его в functions.php:

include( get_stylesheet_directory() . '/includes/theme_setup.php' );

Данный код вызывает код включаемого файла, а затем запускает его в том месте functions.php, в котором я добавила функцию include(). Обычно я помещаю все включаемые файлы в начале файла функций, чтобы их было легко найти.

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

Существует три способа переопределения или добавления функций в дочернюю тему:

  • Создание новой версии подключаемой функции;
  • Деактивация функции родительской темы;
  • Добавление собственной функции с использованием приоритета, чтобы переопределить функцию родительской темы.

Рассмотрим каждый из способов.

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

Например:

<?php
if ( ! function_exists ( 'my_function' ) ) {
    function my_function() {
        // Содержимое функции.
    }
}
?>

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

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

remove_action( 'init', 'parent_function' );

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

Примечание. Если родительская функция содержит параметр приоритета в add_action() выполняющей функцию, которую нужно деактивировать, вам нужно указать тот же приоритет при ее деактивации.

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

Допустим, что родительская тема содержит функцию parent_function(), которая активируется с помощью хука init с приоритетом 20:

function parent_function() {
    // Содержимое функции.
}
add_action( 'init', 'parent_function', 20 );

Можно написать функцию, которая переопределит родительскую функцию, а затем привязать ее к хуку init с более высоким приоритетом, например 30:

function child_function() {
    // Содержимое функции.
}
add_action( 'init', 'child_function', 30 );

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

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

Игорь steshka.ru

Привет,
скажи пожалуйста, а функция “свернуть развернуть” есть на сайте или это личный код, я сейчас использую скрипт readmore.js, но он сильно не удобен, так как конфликтует, хотелось бы использовать твой, как и оглавление, которое до сих пор работает на моем сайте,
Спасибо

0

6.4 года назад #

Коллеги, прошу помощи!

Есть сайт на wordpress, в конце кода каждой страницы идет подгрузка нужных javaскриптов из файлов.
Возникла необходимость изменить кое-какие из этих ссылок.

Покопавшись в шаблоне, понял, что список js-скриптов выводится функцией wp_footer().
Но не могу понять, где искать ее код, чтобы изменить ее содержимое?
Спасибо заранее!


  • Вопрос задан

    более трёх лет назад

  • 2481 просмотр

Искать ее код бесполезно, ибо, скажу по секрету, функция занимает одну строчку: do_action('wp_footer')
Чтобы изменить подгружаемые скрипты, ищите, в каких плагинах в каком месте темы происходит добавление оных в экшен (выглядит примерно так: add_action(‘wp_footer’, ‘{functionname}’)). Далее удаляете экшен и создаете свой при помощи remove_action add_action соответственно.

Пригласить эксперта

Обычно скрипты и стили подключаются в functions.php.


  • Показать ещё
    Загружается…

23 мая 2023, в 11:56

250000 руб./за проект

23 мая 2023, в 11:54

12000 руб./за проект

23 мая 2023, в 11:12

15000 руб./за проект

Минуточку внимания

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

Статья имеет 3 подраздела:

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

Что такое файл functions.php и зачем он нужен?

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

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

  • Наиболее простой вариант — изменение внешнего вида темы. Вспоминаются сразу хаки для ссылки читать далее где можно влиять на вид линка «read more» и формат анонса.
  • Определение своих функций дабы позже вызывать их в других файлах шаблона, что экономит время на внедрение изменений на сайте (да, и вообще является нормальным принципом в программировании). Например, функция отображение первой картинки поста, которую после определения можно использовать в файлах темы для категорий, тегов, архивов.
  • Настройка админки под себя — скрытие определенных пунктов из меню, изменение разных параметров отображения для других пользователей и т.п. Сразу вспоминается статья про скрытие custom fields для не админов. Также с помощью functions.php в WordPress можно создать специальную страницу настроек темы.
  • Переопределение каких-то параметров системы — изменение размеров миниатюр для шаблона, а также разного рода хаки и фильтры. Например, с помощью данного файла можно подправить отображение комментариев в wp_list_comments.

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

Где находится functions.php и как его редактировать?

Файл функций расположен в корневой директории темы (вместе с index.php, single.php и другими). То есть вы заходите в папку wp-content/themes/название_темы/, и он будет там. Это не то же самое что одноименный файл ядра, который находится в системной директории /wp-includes/, нужный нам объект — в папке шаблона.

Где находится functions.php

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

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

  • через WP админку;
  • с помощью текстового редактора.

Первый вариант достаточно простой и наглядный. Вы заходите в меню «Внешний вид» — «Редактор» и выбираете соответствующий файл для правки.

Редактирование functions.php

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

Если файл functions.php закрыт для записи, то воспользоваться встроенным редактором WordPress у вас не получится. В таком случае запускаете FTP клиент, например, Mozilla и скачиваете файл функций на локальный компьютер.

Скачать файл functions.php с FTP

Для работы с php файлом советую использовать специальные бесплатные редакторы — Notepad++ или Sublime Text. При этом важно чтобы кодировка редактируемого файла была UTF-8 без BOM. Вот как можно ее выбрать в Notepad++:

Кодировка UTF-8 без BOM в Notepad++

Если этого не сделать, то из-за BOM может возникнуть глюк в WordPress. Для Sublime Text 2 в меню «File» есть опция «Reopen With Encoding», позволяющая открыть файл в нужной кодировке. Однако при запуске functions.php автоматически срабатывает UTF-8 (т.к. файл сохранен именно в ней), поэтому ничего дополнительно делать не нужно.

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

Вставка сниппетов (примеры кода и типичные ошибки)

Дабы у вас не возникало ошибок при работе с functions.php в WordPress, давайте рассмотрим основные правила вставки кода и возможные ошибки. Первым делом обратите внимание на глобальную структуру любого PHP файла:

<?php
// .... разный PHP код и функции ....
?>

Здесь в начале идет специальный открывающий тег и в конце закрывающий. Важно чтобы не было никаких пробелов перед открывающимся и после закрывающегося тегов! Хотя в некоторых случаях вы можете встретить запись, когда последнего тега нет (для PHP это нормально). Давайте рассмотрим парочку примеров.

Ситуация 1

Допустим, вы нашли в интернете готовый сниппет для решения определенной задачи. И в описании сказано, что нужно вставить этот код в файл функций functions.php. В качестве примера выберем код удаления WP версии из wp_head:

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

Так размещать неправильно:

<?php
// .... разный PHP код и функции ....
 
<?php
remove_action('wp_head','wp_generator');
?>  
?>

Возникает ошибка, поскольку система встречает тег открытия <?php нового PHP блока без закрытия предыдущего. Логичнее просто опустить <?php … ?> из найденного сниппета (так правильно):

<?php
// .... разный PHP код и функции ....
 
remove_action('wp_head','wp_generator');
?>

Следующий вариант также будет работать (между PHP блоками не должно быть пробелов):

<?php
// .... разный PHP код и функции ....
?><?php
remove_action('wp_head','wp_generator');
?>

Ситуация 2

Допустим вы хотите обновить jQuery в WordPress для чего нашли соответствующий код:

function my_update_jquery () {
	   wp_deregister_script('jquery');
 	   wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, false, true);
	   wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', my_update_jquery);

Неправильный вариант использования:

<?php
// .... разный PHP код и функции ....
?>
 
function my_update_jquery () {
	   wp_deregister_script('jquery');
 	   wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, false, true);
	   wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', my_update_jquery);

Нельзя размещать код после закрывающего PHP тега. Вам нужно поставить всю функцию внутрь конструкции:

<?php
// .... разный PHP код и функции ....
 
function my_update_jquery () {
	   wp_deregister_script('jquery');
 	   wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, false, true);
	   wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', my_update_jquery);
 
?>

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

Ситуация 3

Нельзя вставлять сниппет внутрь другой функции. Допустим, в файле шаблона functions.php у вас имеется следующий код:

<?php
// .... разный PHP код ....
 
function some_name() { // Открывающий тег функции
// разный код внутри функции
} // Закрывающий тег
 
?>

Неправильный вариант вставки:

<?php
// .... разный PHP код ....
 
function some_name() { 
// разный код внутри функции
 
function my_update_jquery () {
	   wp_deregister_script('jquery');
 	   wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, false, true);
	   wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', my_update_jquery);
 
} // Закрывающий тег
 
?>

Добавить код можно только после закрывающего тега «}» первой функции. Вот так будет правильно:

<?php
// .... разный PHP код ....
 
function some_name() { 
// разный код внутри функции
} // Закрывающий тег
 
function my_update_jquery () {
	   wp_deregister_script('jquery');
 	   wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, false, true);
	   wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', my_update_jquery);
 
?>

Ситуация 4

Рассмотрим для ознакомления еще один вариант, когда внутри функции вы можете встретить конструкцию <?php … ?>, которая не будет нарушать общий порядок работы самого файла.

<?php
// .... разный PHP код ....
 
function oxygen_metabox() {
	$oxygen_post_location = get_post_meta( $post->ID, '_oxygen_post_location', true ); ?>
	<p><?php echo __( 'Featured', 'oxygen' ) ?></label></p>
	<span class="description"><?php _e( 'Post location on the home page', 'oxygen' ); ?>
	<?php           
}
 
// .... разный PHP код ....
?>

Тут нужно учитывать 2 нюанса. Во-первых, не должно быть ошибок в последовательности открывающих и закрывающих PHP тегов — каждый открытый блок должен быть закрыт. Во-вторых, внутри функции {…} пробелы и переносы строк между тегами <?php и ?> не критичны. В любом случае нужно быть очень внимательным в процессе редактирования. Плюс редакторов Notepad++ и Sublime Text в том, что они подсвечивают теги/функции, и так проще ориентироваться в коде.

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

Если у вас остались вопросы по работе с functions.php в вордпресс, пишите их в комментариях.

P.S. Постовой. Продвижение и оптимизация сайта — важные знания для вебмастеров.
А вы знаете самые популярные сайты? — ТОП10 сайтов в мире (по посещаемости).

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