Какой наиболее эффективный метод загрузки виджетов в functions.php
Я видел, как разработчики WordPress использовали два разных метода для загрузки пользовательских виджетов из functions.php файл.
Первый:
include("functions/my-custom-widget.php");
Второй:
require_once(dirname(__FILE__) . "/functions/my-custom-widget.php");
Какой из этих методов более эффективен. Меня особенно интересует производительность, если вообще есть разница. Соответствует ли require_once лучшим "лучшим практикам"?
Я уверен, что есть много других способов сделать это. Если у кого-нибудь есть лучшая рекомендация, я с удовольствием послушал бы это.
Спасибо.
2 answers
Оба варианта приемлемы, но не рекомендуются. Использовать locate_template()
вместо этого, потому что дочерняя тема может перезаписать загруженный файл.
Пример:
$found = locate_template( 'functions/my-custom-widget.php', TRUE, TRUE );
Первый TRUE
указывает WordPress не только на поиск файла, но и на загрузку на самом деле. Второй делает это вызовом require_once
.
Функция возвращает путь к расположенному файлу на случай, если он вам понадобится позже. Если ничего не найдено, он возвращает пустую строку.
require_once
( Документация по PHP)
Проверит, был ли файл уже включен, и если да, то не будет включать (требовать) его снова.
Эта проверка займет больше времени. Если вы знаете, что делаете (в том числе), то вам следует отказаться от части _once
и сэкономить время.
ИЗМЕНИТЬ: вы не увидите разницы только с несколькими файлами. Но если вы не включаете много файлов, вы не испортите свое включение/требование ни с такой простой вещью, как тема WP, так что, ИМХО, нет смысла предотвращать несколько вызовов одного и того же файла.
О разнице между require()
и include()
:
Требовать идентично включать, за исключением того, что при сбое он также приведет к фатальной ошибке уровня E_COMPILE_ERROR.
Другими словами, он остановит сценарий, в то время как include выдает только предупреждение (E_WARNING), которое позволяет сценарию продолжаться.