Я в беспорядке. Я знаю, что это глупый вопрос. Вы видите, что путь к теме не так хорош. Так есть ли другой способ? Как я могу использовать get_template_directory()
здесь?
// theme folder path
if ( ! defined( 'TZSC_THEME_DIR' ) ) {
define( 'TZSC_THEME_DIR', dirname(__FILE__).'/' );
}
// theme folder URL
if ( ! defined( 'TZSC_THEME_URL' ) ) {
define( 'TZSC_THEME_URL', plugin_dir_url( __FILE__ ) );
}
theme-development
Ашраф
источник
источник
Ответы:
Не используйте для этого константы. Не используйте глобальные константы вообще.
Существует два типа констант: константы класса / интерфейса и глобальные константы.
Константы в классах или интерфейсах хороши и иногда полезны. Чрезмерно упрощенный пример:
Но имейте в виду, эти константы всегда публичны. Если вы измените их позже, вы можете нарушить код, который зависит от них.
Это хуже с глобальными константами. Представьте себе следующее:
А затем функция для изображения заголовка по умолчанию:
Эта функция делает предположение о том, что находится вне ее контроля, она знает слишком много. Как вы тестируете эту функцию с различными значениями для константы? Ты не можешь.
Допустим, вы хотите проверить, что происходит, когда константа установлена в несуществующий каталог или на другой, более медленный сервер. Но как только вы определили константу, вы не можете изменить ее значение. Вы не можете запустить все тесты за один раз, это делает тестирование сложнее, чем необходимо.
И в дочерней теме, которая пытается использовать свой собственный образ по умолчанию - как вы это реализуете? Константа задается родительской темой. Вы можете добавить проверку с помощью
defined()
, но это усложнит, чтобы увидеть, где на самом деле было написано его значение.Было бы намного лучше переписать функцию так:
Я говорил ранее, константы - это API. API-интерфейсы должны легко меняться, но на самом деле трудно устареть константе, потому что PHP не регистрирует доступ. Таким образом, ваше сообщение об устаревании никогда не будет достигнуто другими разработчиками, за исключением случаев, когда они очень внимательно прочитают ваш исходный код или ваши документы. Поверь мне, они этого не делают.
Используйте
get_stylesheet_directory_uri()
в дочерних иget_template_directory_uri()
родительских темах. Оба могут быть отфильтрованы во время выполнения, так что вы можете запустить весь тест сразу.источник