Intereting Posts
Создание пользовательского меню / области виджетов Проблема с запросом типа пользовательского сообщения Как создать плагин или тему с помощью шаблона MVC? Настройка заголовков на лету с кодом Где мои ссылки js и css в заголовке? получить последние 5 сообщений и конкретную запись и отсортировать в определенном порядке Есть ли более быстрый способ, чем wp_insert_post для добавления контента в блог Отображать имя меню с помощью wp_nav_menu Навигация по отдельным сообщениям Как настроить вывод короткого кода галереи изображений WP из плагина? Как я могу предотвратить визуальный редактор, нарушающий html? Таксономия переписывает разбиение на страницы 404 Применить пользовательский стиль к одному слову в WordPress Добавление структурированных данных JSON в WordPress Как показать собственное сообщение пользователя на определенной странице

Использовать условные обозначения с помощью wp_enqueue_style для прикрепления таблицы стилей в соответствии с отображаемым типом сообщения

У меня есть много настраиваемых типов сообщений, в том числе некоторые, введенные плагином, такие как bbPress или WooCommerce.

Моя стандартная таблица стилей растет, поэтому я решил разбить ее на несколько таблиц стилей в зависимости от типа сообщений, просматриваемых в браузере. Таким образом, когда пользователи просматривают bbpress fourms, он также загружает forum.css; при просмотре страниц WordPress он загружает страницу page.css. И так далее.

Я попытался добавить следующий код в мои functions.php:

function sg_frontend_enqueue_styles(){ $templateuri = get_template_directory_uri(); // some of my custom post types if( get_post_type() == ( 'activity' OR 'dining' OR 'heritage' OR 'hiking' OR 'nightlife' ) ) : wp_enqueue_style( 'locations', $templateuri.'/css/locations.css', '', false, 'all' ); // bbPress forums elseif ( get_post_type() == ( 'forum' OR 'topic' OR 'reply' ) ) : wp_enqueue_style( 'forum', $templateuri.'/css/forum.css', '', false, 'all' ); // Pages elseif ( get_post_type() == 'page' ) : wp_enqueue_style( 'page', $templateuri.'/css/page.css', '', false, 'all' ); // WooCommerce elseif ( get_post_type() == 'product' ) : wp_enqueue_style( 'product', $templateuri.'/css/product.css', '', false, 'all' ); endif; add_action('wp_print_styles', 'sg_frontend_enqueue_styles'); 

Однако это не работает. Проблема: все стили CSS загружаются вообще, независимо от того, отображает ли пользователь сообщение, принадлежащее этому типу сообщения. Кроме того, « page.css » вообще не включается.

Затем я попытался с другим подходом, заменив условные выражения на переключатель:

  $templatename = get_post_type(); switch ( $templatename ) : case 'activity' : wp_enqueue_style( 'locations', $templateuri.'/css/locations.css', '', false, 'all' ); case 'dining' : wp_enqueue_style( 'locations', $templateuri.'/css/locations.css', '', false, 'all' ); case 'forum' : wp_enqueue_style( 'forum', $templateuri.'/css/forum.css', '', false, 'all' ); case 'heritage' : wp_enqueue_style( 'locations', $templateuri.'/css/locations.css', '', false, 'all' ); case 'hiking' : wp_enqueue_style( 'locations', $templateuri.'/css/locations.css', '', false, 'all' ); case 'nightlife' : wp_enqueue_style( 'locations', $templateuri.'/css/locations.css', '', false, 'all' ); case 'page' : wp_enqueue_style( 'page', $templateuri.'/css/page.css', '', false, 'all' ); case 'product' : wp_enqueue_style( 'product', $templateuri.'/css/product.css', '', false, 'all' ); case 'reply' : wp_enqueue_style( 'forum', $templateuri.'/css/forum.css', '', false, 'all' ); case 'topic' : wp_enqueue_style( 'forum', $templateuri.'/css/forum.css', '', false, 'all' ); break; default : ''; endswitch; 

это иногда иногда срабатывает … На форумах bbpress отлично работает, но на страницах, например, он вставляет все таблицы стилей …

Проблема в вашем первом блоке кода – синтаксис:

 if( get_post_type() == ( 'activity' OR 'dining' OR 'heritage' OR 'hiking' OR 'nightlife' ) ) : 

это неправильное использование OR и будет оценивать true независимо от того, что возвращает get_post_type() .

Проблема во втором блоке снова является синтаксисом, вам нужно break; в конце каждого случая коммутатора или других операторов после его выполнения.