Подключение скриптов и стилей с помощью шорткода на WordPress

Подключение скриптов и стилей, если в контенте есть шорткод

Подключение и проверка на всех страницах

В этом разделе рассмотрим, как подключать файл скрипта или стиля условно — только в том случае, если в контенте присутствует определённый шорткод.

Для этого мы будем использовать фильтр 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *