Поместите значение параметра URL внутрь короткого кода WordPress.

Вопрос или проблема

Я хотел бы получить значение параметра URL и поместить его внутри шорткода, чтобы оно обрабатывалось как переменная, например,

http://example.com/?source=http://example.com/media/myfile.pdf

Шорткод в записи будет:

[EmbedMe file=”source“]

Примечание: Source – это динамическое значение из параметра URL

Если это шорткод, который вы разрабатываете сами, то вы можете добавить проверку / получение параметра URL, например, так,

add_shortcode( 'EmbedMe', 'embedme_callback' );
function embedme_callback( $atts ) {

  $defaults = array(
    'file' => ''
  );
  $atts = shortcode_atts( $defaults, $atts, 'EmbedMe' );

  if ( 
    'source' === $atts['file']
    && ! empty( $_GET['source'] )
    && $file = esc_url_raw( $_GET['source'], array( 'http', 'https' ) ) 
  ) {
    $atts['file'] = $file;
  }

  // какой-то код

  return $html;  
}

Выше мы проверяем, установлено ли значение атрибута файла на “source” и что оно также установлено как параметр GET (URL). И для надежности параметр URL передается через функцию экранирования, чтобы убедиться, что он в правильном формате.

Если шорткод разработан кем-то другим, вам следует проверить, предоставляет ли он фильтр для изменения атрибутов (или вывода). Если да, вы можете подключить пользовательскую функцию к фильтру и выполнить проверку параметра GET внутри вашей функции. Вот так,

add_filter( 'shortcode_atts_EmbedMe', 'filter_EmbedMe_atts' );
function filter_EmbedMe_atts( $atts ) {
  if (
    isset( $atts['file'] )
    && 'source' === $atts['file']
    && ! empty( $_GET['source'] )
    && $file = esc_url_raw( $_GET['source'], array( 'http', 'https' ) )
  ) {
    $atts['file'] = $file;
  }
  return $atts;
}

Ответ или решение

Для того чтобы извлечь значение параметра URL и поместить его внутрь шорткода в WordPress, необходимо понимать, как работает система шорткодов и методы обработки GET параметров. В данной статье мы подробно рассмотрим, как это можно реализовать, используя два различных подхода.

1. Создание собственного шорткода

Если вы разрабатываете шорткод самостоятельно, то можете использовать следующий подход для получения значения URL параметра:

add_shortcode( 'EmbedMe', 'embedme_callback' );

function embedme_callback( $atts ) {
    $defaults = array(
        'file' => ''
    );
    $atts = shortcode_atts( $defaults, $atts, 'EmbedMe');

    // Проверяем, установлен ли атрибут file как "source" и есть ли параметр в URL
    if (
        'source' === $atts['file'] && 
        ! empty( $_GET['source'] ) && 
        $file = esc_url_raw( $_GET['source'], array( 'http', 'https' ) )
    ) {
        $atts['file'] = $file;  // Устанавливаем значение атрибута file как значение параметра из URL
    }

    // Дополнительный код для обработки и генерации HTML может быть добавлен здесь

    return $html;  
}

2. Изменение существующего шорткода

Если шорткод был разработан сторонними разработчиками, и вы хотите изменить его поведение, используйте следующий подход с фильтром:

add_filter( 'shortcode_atts_EmbedMe', 'filter_EmbedMe_atts' );

function filter_EmbedMe_atts( $atts ) {
    if (
        isset( $atts['file'] ) &&
        'source' === $atts['file'] && 
        ! empty( $_GET['source'] ) && 
        $file = esc_url_raw( $_GET['source'], array( 'http', 'https' ) )
    ) {
        $atts['file'] = $file; // Обновляем значение атрибута file как значение из параметра URL
    }
    return $atts;
}

Объяснение кода

  1. Функция add_shortcode: Регистрация шорткода под именем EmbedMe.
  2. Фильтр shortcode_atts_EmbedMe: Позволяет перехватывать атрибуты шорткода перед тем, как они будут обработаны основной функцией шорткода.
  3. Функция esc_url_raw: Обеспечивает безопасное извлечение и очистку URL параметра, разрешая только протоколы HTTP и HTTPS.

Заключение

Использование URL параметров в шорткодах WordPress расширяет функциональность вашего сайта и позволяет динамически передавать данные. Этот подход удобен для интеграции различного контента и улучшает пользовательский опыт. Будьте осторожны с обработкой данных, чтобы избежать уязвимостей, связанных с безопасностью.

Если вы следуете приведенным выше рекомендациям, это поможет вашему сайту быть более адаптивным и интерактивным для пользователей, что также может положительно сказаться на SEO, улучшив показатели взаимодействия с контентом.

Оцените материал
Добавить комментарий

Капча загружается...