Вопрос или проблема
Я работаю над внедрением стандартов кодирования WordPress в тему, которая имеет несколько пользовательских типов записей, у каждого из которых в названиях присутствуют подчеркивания.
Тема использует название пользовательского типа записи в имени файлов, например: archive-my_posttype.php
для пользовательского типа записи my_posttype
… Но стандарты кодирования WordPress требуют, чтобы имена файлов использовали дефисы, а не подчеркивания (см. WordPress.Files.FileName.NotHyphenatedLowercase
для получения дополнительной информации).
Я изменил имя архива-шаблона на archive-my-posttype.php
, но я насторожен, потому что помню, что такого поведения раньше не было.
пример:
register_post_type( 'my_posttype' /* укорочено для краткости */ );
Это соответствовало бы шаблонам файлов archive-my_posttype.php
и single-my_posttype.php
, но не archive-my-posttype.php
и single-my-posttype.php
.
Я помню, что в прошлом меня просили использовать подчеркивания в именах файлов. Может кто-то сказать мне, когда это изменилось и связано ли это с атрибутом перезаписи, установленным при регистрации CPT?
Мне приятно видеть, что я могу заменить подчеркивания на дефисы без проблем, я просто хочу знать, когда это перестало быть проблемой и знает ли кто-нибудь о других условиях этой функции, о которых люди должны быть осведомлены.
Я ошибся. Подчеркивания обязательны для шаблонов файлов, если они являются частью названия пользовательского типа записи.
- Убедитесь, что очищен кэш перезаписи / посетите страницу постоянных ссылок, работая с шаблонами cpt.
- Шаблон archive.php, на который возвращался отсутствующий шаблон cpt, выглядел подобно.
- Следуя
wp-includes/template-loader.php
>> get_post_type_archive_template >> get_archive_template, похоже, не происходит замены подчеркиваний на дефисы.
Символы, используемые в именах файлов шаблонов, должны точно соответствовать названию cpt. Стандарты кодирования WordPress требуют, чтобы имена файлов не содержали подчеркиваний.
Мы должны (наверное) избегать использования подчеркиваний в названиях cpt.
Не уверен, связано ли это с версией WordPress или php/mysql или настройками, но дефисы, похоже, являются допустимыми символами для использования в названиях типов записей (где я не помню, чтобы они использовались ранее).
например: мы не могли написать
register_post_type( 'my-posttype' )
, а вместо этого должны были использоватьregister_post_type( 'my_posttype' )
.Таким образом, мы могли зарегистрировать типы записей с дефисами в названиях, чтобы отделить пространство имен от фактического названия, и, сделав это, мы получили бы имена файлов шаблонов для cpt-архива/одиночной страницы, которые соответствуют стандартам кодирования WordPress.
Ответ или решение
Вам совершенно не нужно беспокоиться о том, что мы должны изменять названия файлов шаблонов, чтобы они соответствовали стандартам кодирования WordPress, если в дескрипторе пользовательского типа записи (CPT) используются подчеркивания. Давайте разберемся с тем, как это организовано и какие процедуры необходимо провести.
-
Требования к названиям файлов: В соответствии с стандартами WordPress, названия файлов должны использовать дефисы (hyphens) вместо подчеркиваний (underscores). Однако когда вы регистрируете пользовательский тип записи с именем, содержащим подчеркивания, такие как
my_posttype
, соответствующие файлы шаблонов должны сохранять это имя с подчеркиваниями, то есть названия шаблонов должны отображаться какarchive-my_posttype.php
иsingle-my_posttype.php
. -
Регистрация CPT: Для регистрации пользовательского типа записи вы, вероятно, использовали следующий код:
register_post_type( 'my_posttype', /* параметры */ );
Это определяет дескриптор как
my_posttype
, и, следовательно, файлы шаблонов для этого типа записи должны содержать подчеркивания. Тем не менее, если вы еще не сделали этого, рекомендуется делать это с учетом будущих стандартов кодирования, избегая использования подчеркиваний в дескрипторах при регистрации CPT. К примеру, вы можете использоватьmy-posttype
вместоmy_posttype
. -
Флеш-кэш перезаписи: После изменения имен файлов не забудьте сбросить кэш перезаписи. Для этого просто перейдите на страницу настройки постоянных ссылок в админке WordPress и нажмите кнопку "Сохранить изменения". Это необходимо, чтобы ваши изменения в файлах шаблонов были распознаны WordPress.
-
Проверка на наличие конфликтов: Если ваше приложение все равно возвращает
archive.php
, это может происходить из-за того, что WordPress не может найти подходящий шаблон. Убедитесь, что названия файлов совпадают с дескрипторами. -
Изменение структуры CPT: Если вы хотите избежать проблемы с подчеркиваниями и упростить соответствие стандартам, подумайте о возможности настроить дескрипторы своих пользовательских типов записей таким образом, чтобы они не содержали подчеркиваний. Это позволит регистрировать ваши пост-типы с использованием дефисов. Например:
register_post_type( 'my-posttype', /* параметры */ );
Таким образом, шлемы файлов будут
archive-my-posttype.php
иsingle-my-posttype.php
, что будет соответствовать стандартам WordPress. -
Обратите внимание на версию WordPress: С изменением версии WordPress поведение может измениться. Убедитесь, что вы используете последнюю версию, чтобы избежать неожиданных конфликтов.
Резюмируя, используйте подчеркивания в названиях файлов, когда они соответствуют дескрипторам пользовательского типа записей, но одновременно оптимизируйте регистрируемые дескрипторы, чтобы соответствовать требованиям стандарта WordPress. Это будет хорошей практикой для долгосрочного сопровождения вашего проекта.