Как мы можем использовать условные теги в плагинах?

В плагине, файл css загружает sitewide по умолчанию, я хочу загрузить его только в Single post.

условные теги, т. е. is_single () не работает в плагинах,

любая идея, как мы можем достичь этого?

Solutions Collecting From Web of "Как мы можем использовать условные теги в плагинах?"

Вам нужно что-то подобное в файле functions.php:

 if( is_single()) { wp_enqueue_style( 'ahmedkaludi-style', get_stylesheet_uri() . '/css/plugin-styles.css' ); } 

Измените '/css/plugin-styles.css' на фактический путь к таблице стилей плагина.

Если плагин написан хорошо, wp_enqueue_style будет завернут в функцию, например:

 if ( ! function_exists( 'my_scripts' ) ) { function my_scripts() { wp_enqueue_style( 'ahmedkaludi-style', get_stylesheet_uri() . '/css/plugin-styles.css' ); } add_action( 'wp_enqueue_scripts', 'steveclason_flat_scripts' ); } 

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

TL, DR;

Вы подключаетесь рано.


В плагине файл css загружается по всему сайту по умолчанию, я хочу загрузить его только на одну запись.

Это очень хорошая мысль, которую многие разработчики не учитывают при разработке тем / плагинов.

is_single() не работает в плагинах

Где вы используете is_single шаблона is_single в цикле выполнения WP ?

Предполагая, что вы подключаетесь к init или wp

Теги шаблона пока недоступны до действия template_redirect . Таким образом, эти теги не работают для init или wp .

Лучшее место для работы со сценариями или стилями – это wp_enqueue_scripts который запускается после template_redirect .

Любая идея, как мы можем достичь этого?

В зависимости от того, какой плагин мы используем, существует множество способов.

Переход к плагину TablePress .

controllers/controller-frontend.php – это место, где плагин является таблицей стилей очереди.

 if ( apply_filters( 'tablepress_use_default_css', true ) || TablePress::$model_options->get( 'use_custom_css' ) ) { add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_css' ) ); } 

Вы можете полностью отключить en- tablepress_use_default_css stylesheet, используя параметр tablepress_use_default_css и пользовательский параметр css для false, а затем загрузите их там, где вам нужно, в своем настраиваемом плагине / теме.

Если вы выкапываете файл, для этого плагина выполняется множество условных en-queueing.

Вы также можете сначала деактивировать стиль, а затем выложить в любом месте, где нужно.

Образец кода

 add_action('wp_enqueue_scripts','wp_228402_load_styles_conditionally',11); function wp_228402_load_styles_conditionally() { if(is_single()){ return; // return if not on the single post/page } wp_dequeue_style('tablepress-default'); } 

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