Могу ли я запускать сценарии, подобные этим, чтобы контролировать, на каких страницах они находятся?

Я работаю над своим первым плагином WordPress. Плагин в основном создает несколько коротких кодов для достижения нескольких эффектов. Чтобы включать только все файлы css и js на нужные страницы, я установил вызовы функций wp_enqueue_ *, которые будут вызываться, если активирован короткий код. Это может быть не очень четкое описание, поэтому здесь приведены фрагменты кода, связанные с тем, о чем я говорю:

add_shortcode( 'slider_space', 'f_slider_space'); function link_page_files(){ wp_enqueue_style( 'cccslider-style', plugins_url("...") ); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'jquery.easing', plugins_url("..."), array('jquery') ); wp_enqueue_script( 'scrollcontrol', plugins_url("...") ); wp_enqueue_script( 'cccslider', plugins_url("..."), array('jquery.easing', 'scrollcontrol') ); } function f_slider_space($atts, $content = null){ link_page_files(); // .......... } 

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

Это будет печатать ссылки стилей в нижнем колонтитуле. Работает в большинстве браузеров, но недействителен HTML. Вы должны подключиться к действию wp_head и проверить содержимое сообщения для ваших коротких кодов. Используйте приоритет 0 для запуска раньше, чем действие wp_enqueue_scripts .

 add_action( 'wp_head', 'shortcode_check', 0 ); function shortcode_check() { global $wp_query; if ( empty ( $wp_query ) or empty ( $wp_query->posts ) ) return; foreach ( $wp_query->posts as $post ) { if ( FALSE !== stripos( $post->post_content, '[shortcodename' ) ) return add_action( 'wp_enqueue_scripts', 'shortcode_enqueue' ); } } function shortcode_enqueue() { // enqueue scripts and stylesheets here }