Intereting Posts
Показать значение раскрывающегося списка select в мета-окне Хотите установить post_meta данные о загрузке изображений в портфолио Перенос данных из Woocommerce в другой webapp Контент(); ошибочно закрывая предыдущее открытие перед этим TwentyTwelve, где ящик с отрывками добавляет новые? сообщение в подкатегорию и родительский элемент в wp_insert_post Admin: меню навигации не отображает пустые категории / таксономии на вкладке поиска списка. Как я могу автопопулировать заголовки в медиа-библиотеке? Как сделать проекты сообщений или сообщений в обзоре доступными через полный url / slug? Как показать сообщение для определенного срока пользовательской таксономии? Theme Customizer – Моя панель исчезает Загрузите url с минимальными / отсутствующими запросами DB Пользовательские отношения таксономии (например: классификация растений) Как вставить изображение с помощью WP REST API Добавление области «героя» в интерьер с добавленной настройкой заголовка php

Почему is_page_template () не добавляет класс body?

Я хочу условно добавить класс тела в зависимости от того, какой шаблон используется.

Я не могу понять, почему следующий код не работает …

function damsonhomes_body_classes( $classes ) { if (is_page_template('single.php')) { $classes[] = 'sans-hero'; } return $classes; } add_filter( 'body_class', 'damsonhomes_body_classes'); 

Спасибо всем

Solutions Collecting From Web of "Почему is_page_template () не добавляет класс body?"

Функция is_page_template() – это некорректная функция, используемая в этом случае, когда она проверяет шаблоны страниц, а single.php – это обычный шаблон, а не специальный для страницы, обычно предназначенный для сообщений.

Функция, которую вы, вероятно, собираетесь использовать вместо этого, is_single( $optional_posttype ) которая будет искать сингулярное представление типа post, post по умолчанию.

 if( is_single() ) { /** ... **/ } 

Вы также можете проверить базовое имя, если хотите:

 global $template; $template_slug = basename( $template ); if( 'single.php' === $template_slug ) { /** ... **/ } 

Обратите внимание, что single.php является файлом шаблона для одной записи, которую вы обычно не используете для страниц.

Также обратите внимание, что get_body_class() уже добавляет некоторую информацию о текущем шаблоне страницы:

 if ( is_page_template() ) { $classes[] = "{$post_type}-template"; $template_slug = get_page_template_slug( $post_id ); $template_parts = explode( '/', $template_slug ); foreach ( $template_parts as $part ) { $classes[] = "{$post_type}-template-" . sanitize_html_class( str_replace( array( '.', '/' ), '-', basename( $part, '.php' ) ) ); } $classes[] = "{$post_type}-template-" . sanitize_html_class( str_replace( '.', '-', $template_slug ) ); } else { $classes[] = "{$post_type}-template-default"; } 

Если вы предназначались для таргетинга на single.php то во многих случаях нам не нужно добавлять к нему настраиваемый класс body, поскольку get_body_class() уже добавляет следующие классы в этом случае:

 if ( is_single() ) { $classes[] = 'single'; if ( isset( $post->post_type ) ) { $classes[] = 'single-' . sanitize_html_class( $post->post_type, $post_id ); $classes[] = 'postid-' . $post_id; // Post Format if ( post_type_supports( $post->post_type, 'post-formats' ) ) { $post_format = get_post_format( $post->ID ); if ( $post_format && !is_wp_error($post_format) ) $classes[] = 'single-format-' . sanitize_html_class( $post_format ); else $classes[] = 'single-format-standard'; } } } 

Поэтому я бы сказал, что в большинстве случаев классы тела по умолчанию достаточны.