Графические символы вместо подчеркиваний в именах файлов шаблонов архивов пост-типов, когда дескриптор пост-типа содержит подчеркивание.

Вопрос или проблема

Я работаю над внедрением стандартов кодирования 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?

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

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

  1. Убедитесь, что очищен кэш перезаписи / посетите страницу постоянных ссылок, работая с шаблонами cpt.
  2. Шаблон archive.php, на который возвращался отсутствующий шаблон cpt, выглядел подобно.
  3. Следуя 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) используются подчеркивания. Давайте разберемся с тем, как это организовано и какие процедуры необходимо провести.

  1. Требования к названиям файлов: В соответствии с стандартами WordPress, названия файлов должны использовать дефисы (hyphens) вместо подчеркиваний (underscores). Однако когда вы регистрируете пользовательский тип записи с именем, содержащим подчеркивания, такие как my_posttype, соответствующие файлы шаблонов должны сохранять это имя с подчеркиваниями, то есть названия шаблонов должны отображаться как archive-my_posttype.php и single-my_posttype.php.

  2. Регистрация CPT: Для регистрации пользовательского типа записи вы, вероятно, использовали следующий код:

    register_post_type( 'my_posttype', /* параметры */ );

    Это определяет дескриптор как my_posttype, и, следовательно, файлы шаблонов для этого типа записи должны содержать подчеркивания. Тем не менее, если вы еще не сделали этого, рекомендуется делать это с учетом будущих стандартов кодирования, избегая использования подчеркиваний в дескрипторах при регистрации CPT. К примеру, вы можете использовать my-posttype вместо my_posttype.

  3. Флеш-кэш перезаписи: После изменения имен файлов не забудьте сбросить кэш перезаписи. Для этого просто перейдите на страницу настройки постоянных ссылок в админке WordPress и нажмите кнопку "Сохранить изменения". Это необходимо, чтобы ваши изменения в файлах шаблонов были распознаны WordPress.

  4. Проверка на наличие конфликтов: Если ваше приложение все равно возвращает archive.php, это может происходить из-за того, что WordPress не может найти подходящий шаблон. Убедитесь, что названия файлов совпадают с дескрипторами.

  5. Изменение структуры CPT: Если вы хотите избежать проблемы с подчеркиваниями и упростить соответствие стандартам, подумайте о возможности настроить дескрипторы своих пользовательских типов записей таким образом, чтобы они не содержали подчеркиваний. Это позволит регистрировать ваши пост-типы с использованием дефисов. Например:

    register_post_type( 'my-posttype', /* параметры */ );

    Таким образом, шлемы файлов будут archive-my-posttype.php и single-my-posttype.php, что будет соответствовать стандартам WordPress.

  6. Обратите внимание на версию WordPress: С изменением версии WordPress поведение может измениться. Убедитесь, что вы используете последнюю версию, чтобы избежать неожиданных конфликтов.

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

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

Капча загружается...