Intereting Posts
Какой самый простой способ остановить WP от когда-либо вывешивать меня Отображение опубликованных сообщений для определенного периода времени Пустой визуальный редактор Каков правильный способ поддержки темы для пользовательских интерфейсов плагина? Изменение размера изображения в зависимости от страницы Могу ли я подключиться к пользовательскому процессу приглашения, чтобы проверить, что его адрес электронной почты указан из определенного домена? Получать уведомление по электронной почте, когда на сайте wordpress возникает фатальная ошибка? Ошибка при сохранении wordpress Добавить персонализированную поддержку сообщений для встроенного редактора frontend Попытка получить свойство ошибки, отличной от объекта, используя get_post_meta () 403 Запретный локальный Wamp Apache Php Показать пользовательские поля в Quick Edit Не удается получить доступ к администратору: «Не допустимо» Кэш баз данных и разница в кеше объектов? Плагин для автоматического изменения якорных текстов URL-адресов в заголовке получателей?

Шаблоны и CSS – Правильная практика программирования?

Я долгое время работал с WP / html / css, но никогда раньше не прорывался, у меня есть несколько вопросов о хороших практиках.

Мой фон – полностью пропустите это, если не интересно

Я временно остался ответственным за сайт WP, поскольку мы ищем другой профессиональный webdev для замены нашего предыдущего. Я – инженер-программист по профессии, но мое образование и опыт работы никогда не касались html / css. Опыт – это создание моего собственного портфолио и, возможно, классного проекта или двух в школе.

Поскольку я добавлял функциональность и контент, я копал код ex-dev и организацию шаблонов. Многие из них представляют собой плохую практику и плохое использование общих принципов CS, но я недостаточно осведомлен, чтобы знать, являются ли эти вещи «единственным способом» или действительно хорошей практикой в ​​этой конкретной области.

Вопросов

Предполагается ли, что шаблоны имеют жестко заданные значения?


Например, я создал новую страницу, которая интегрировала наш сторонний магазин непосредственно в наш собственный домен, поэтому мне пришлось обновлять кнопки по всему сайту, связанному с магазином. Только 2 или 3 места мне пришлось обновить, но эта страница не получила изменения. Прокопайте весь сайт, прежде чем обнаруживать, что URL-адрес был жестко закодирован в кнопку в этом одном шаблоне, используемом этой страницей, – мои колокольчики плохой практики отключены. Подобные жестко заданные значения, такие как URL-адрес, для файла изображения, размещенного в домене, для заголовков или фонов или w / e, по множеству шаблонов.

Ответ: Является ли код для страниц и сообщений, которые должны быть смешанными?

Обновление: сообщение в wordpress – это любой тип контента (внутренний: post_type) (из комментариев ниже)


Основываясь на этой документации, первая строка этого кода представляет собой только тег post, а CSS-код в таблице стилей темы будет применяться к сообщениям с этим тегом. Я не понимаю терминологию здесь? Возможно, «Посты» и «Страницы» – это интерфейсная терминология и <?php post_class(); ?> <?php post_class(); ?> имеет отношения к буквальным сообщениям?

Нужно ли жестко указывать идентификаторы для каждой страницы, к которой я хочу применить определенный стиль CSS?


На странице «Содержимое» указан шаблон A, присвоенный ему (соответствует странице-a.php). Шаблон A использует get_template_part () для захвата шаблона a-modified (в разделе say ../template-parts/a-modified.php)

Я пошел и сделал страницу «Содержимое новой», в которой используется тот же шаблон А, что и «Контент». Без каких-либо изменений на этой новой странице несколько вещей в заголовке уже были испорчены. Основываясь на этом SO-потоке, я выяснил, что повсюду в таблице стилей CSS ID для «Контента» (скажем 111) мне пришлось дублировать эту строку для ID 222 «Content New», например:

 .page-id-111 .entry-header img, .page-id-222 .entry-header img { width: 100%; left: 0; } 

Придется сделать это чуть менее 20 раз в таблице стилей, чтобы получить заголовок «Content New», выглядящий точно так же, как «Контент». Снова кажется плохой практикой и болью в заднице в любое время, когда вы хотите что-то новое использовать существующие шаблоны / функциональность (или изменить шаблон, применяемый к тому, что уже существует). Нет ли лучшего способа применить один и тот же CSS ко всем страницам, использующим шаблон A?


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

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

Да, терминология может быть немного запутанной, если вы не привыкли к WordPress. Страница на самом деле представляет собой сообщение технически, как и многие другие вещи. Если ваш шаблон страницы включает вызов post_class (), тогда классы из ядра будут выводиться на тег, который использует post_class (). Это может быть полезно для таргетинга на отображение определенного типа сообщения / формата или условного добавления к нему собственных классов с фильтром для разных дисплеев в разных контекстах.

Существует несколько способов настроить таргетинг элементов на основе того, откуда они взяты, и как вы хотите, чтобы ваши стили переносились в WordPress.

В вашей ситуации, да, вы могли бы жестко установить идентификаторы, но я бы не сказал, что это хороший выбор, но это только мое мнение. Если ваш план заключается в создании нового контента, и, в конце концов, когда он будет сделан, вы удалите старую страницу контента, которая использует тот же шаблон, – тогда, вероятно, лучше всего создать новый шаблон страницы с новым именем в целом. Класс body будет применяться для вас, чтобы использовать для определенных стилей в этом шаблоне, поэтому вы должны писать свои определения CSS для имен:

 .page-template-your-custom-template .entry-header img, .page-template-your-custom-template .entry-header img { width: 100%; left: 0; } 

Тогда вы узнали бы, что вы устраиваете конкретные вещи для этого шаблона и не будете путать себя в будущем. Вам не нужно возвращаться к администратору, чтобы увидеть, какой шаблон страницы что-то использует, и чтение вашей таблицы стилей будет иметь больше смысла.

Как и метод post_class (), существует также метод body_class (), который добавляет классы в элемент body. Другой вариант заключается в том, чтобы условно добавить класс тела на страницу, чтобы вы могли позаботиться об этом.

Возьмем, к примеру:

Работая сверху вниз, возможно, в header.php вашей темы есть метод body_class () на <body> .

Вы можете добавить свои собственные классы к этому с помощью фильтра body_class , а затем проверить идентификатор страницы, с которым хотите работать с is_page () в файле functions.php – например:

 function theme_namespace_your_body_class( $classes ) { if ( is_page( array( 111, 222 ) ) ) { $classes[] = 'your-custom-body-class'; } return $classes; } add_filter( 'body_class', 'theme_namespace_your_body_class' ); 

Теперь вместо того, чтобы писать что-то вроде этого:

 .page-id-111 .entry-header img, .page-id-222 .entry-header img { width: 100%; left: 0; } 

У вашей таблицы стилей будет:

 .your-custom-body-class .entry-header img { width: 100%; left: 0; } 

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

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

С этого верхнего уровня можно сделать то же самое то, что можно сделать глубже на уровне post_class (), и использовать что-то вроде is_single (), чтобы проверить, является ли сообщение в запросе идентификаторами, которые вы хотите включить в класс для этого элемента, для , Возьмите, например, следующее:

 function theme_namespace_your_post_class( $classes ) { if ( is_single( array( 111, 222 ) ) ) { $classes[] = 'your-custom-post-class'; } return $classes; } add_filter( 'post_class', 'theme_namespace_your_post_class' ); 

Теперь ваш элемент, использующий метод post_class (), будет условно включать этот класс для этих почтовых идентификаторов.

Как и создание нового шаблона страницы, вы можете сделать это для сообщений. Вы можете создать такой файл, как your-custom-post-single-post.php, и обозначить его для использования только сообщений:

 <?php /* * Template Name: Your custom template * Template Post Type: post */ 

Или, может быть, вы хотите, чтобы один и тот же шаблон мог использоваться для страниц и сообщений:

 <?php /* * Template Name: Your custom templatee * Template Post Type: post, page */ 

Вы должны обязательно заглянуть в иерархию шаблонов WordPress, поскольку вы расширяете свою тему, и то, что лучше всего подходит для вас, может быть совершенно другим решением, но это определенно поможет вам в том, что должно быть где и где лучше структурировать вашу тему. Глядя на стартовую тему, такую ​​как _s , или даже любой из двадцати человек, чтобы увидеть, как они структурируют вещи, также является хорошим способом увидеть некоторые из лучших практик и методов ведения дел.

Все это не означает, что абсолютно запрещено или плохая практика использовать идентификаторы страниц или сообщений для стилей, но я считаю, что в 99% этих ситуаций это необязательно.