Подключение скриптов и стилей, если в контенте есть шорткод
Подключение и проверка на всех страницах
В этом разделе рассмотрим, как подключать файл скрипта или стиля условно — только в том случае, если в контенте присутствует определённый шорткод.
Для этого мы будем использовать фильтр the_posts
.
Пример кода
// Подключаем скрипт, если на странице есть указанный шорткод.
// Используем фильтр как событие.
add_filter( 'the_posts', 'has_my_shortcode' );
function has_my_shortcode( $posts ) {
if( is_admin() || empty( $posts ) || ! is_main_query() ) {
return $posts;
}
$shortcode_name = 'my_shortcode'; // Укажите имя вашего шорткода
foreach( $posts as $post ) {
if( has_shortcode( $post->post_content, $shortcode_name ) ) {
add_action( 'wp_enqueue_scripts', 'add_my_scripts' );
break; // Выходим из цикла, если нашли шорткод
}
}
return $posts; // Возвращаем посты
}
// Подключение скриптов, если шорткод присутствует
function add_my_scripts() {
$theme_url = get_stylesheet_directory_uri(); // Получаем URL темы
wp_enqueue_script( 'my_script', "{$theme_url}/my_script.js" ); // Подключаем скрипт
}
Подключение и проверка для отдельных страниц - is_singular()
Теперь рассмотрим, как подключить стили или скрипты на отдельных страницах, если на них есть шорткод.
Пример кода
// Подключаем стили/скрипты, если шорткод присутствует в контенте
add_action( 'wp_head', 'my_shortcode_styles' );
function my_shortcode_styles() {
global $post;
$shortcode_name = 'my_shortcode_name'; // Имя вашего шорткода
// Проверяем, что это расширенная запись и в контенте есть шорткод
if( ! ( $post && is_singular() && has_shortcode( $post->post_content, $shortcode_name ) ) ) {
return; // Если нет, то ничего не делаем
}
?>
Важные моменты
- Шорткод — это специальный код, который позволяет вставлять динамический контент в посты и страницы. Например,
[my_shortcode]
. - Функция
is_admin()
проверяет, находимся ли мы в административной панели WordPress. - Функция
is_singular()
проверяет, находимся ли мы на странице одиночного поста или страницы. wp_enqueue_script
используется для подключение JavaScript файлов, аwp_enqueue_style
— для CSS.
С помощью данных примеров вы сможете условно подключать скрипты и стили, что поможет вам оптимизировать производительность вашего сайта на WordPress.