Динамическое добавление подписей к изображениям

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

У меня есть сайт, на котором автор включил партнерские ссылки Amazon. Он сделал это, добавив URL-адреса к изображениям продуктов.

Мне интересно, есть ли способ добавить функцию, которая автоматически добавит wp-caption под этими изображениями, если они связаны с Amazon.

В принципе, условие должно быть таким: если href, содержащий изображение, связан с доменом, включающим ‘amazon’, добавить подпись под этим изображением, которая говорит “Купить сейчас”. Подпись также будет иметь ту же ссылку, что и это изображение.

Мне удалось сделать это с помощью какого-то хака на jQuery, но он не всегда срабатывает правильно. Я думаю, что может быть и лучший способ…

Спасибо

Загрузчик медиа оборачивает изображение и подпись в шорткод . Существует фильтр, называемый img_caption_shortcode, который может сделать то, что вам нужно. Подпись передается как часть массива в обработчик шорткода, так же как и ID изображения.

add_filter( 'img_caption_shortcode', 'wwm_img_caption_filter', 10, 3 );

function wwm_img_caption_filter( $empty, $attr, $content )
{

  $image_id = $attr['id'];
  //проверьте $image_id (идентификатор вложения), чтобы увидеть, на что он ссылается
  //если он ссылается на amazon, включите ссылку в подпись:
  if ( /*моё условие выполнено*/ ) {

   $attr['caption'] = ;//измените строку соответствующим образом
  }

  return ;//какая-то строка - см. документацию
}

Вот документация по фильтру: http://codex.wordpress.org/Plugin_API/Filter_Reference/img_caption_shortcode

ОБНОВЛЕНИЕ **

если у изображения, о котором идет речь, еще нет подписи, используйте фильтр the_content

add_filter( 'the_content', 'add_affiliate_link_caption' );

function add_affiliate_link_caption( $content )
{

 //Я даже не попытаюсь сделать regex...
 //но некий find/replace с использованием regex для $content

 return $content;
}

.

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

Для решения задачи динамического добавления подписей к изображениям на вашем сайте, где используются ссылки Amazon Affiliate, можно воспользоваться функциональностью WordPress. Это обеспечит более надежное и эффективное решение по сравнению с использованием jQuery.

1. Использование фильтра img_caption_shortcode

WordPress предоставляет возможность изменять обработку шорткодов для подписей изображений, используя фильтр img_caption_shortcode. Вам потребуется написать пользовательскую функцию, которая будет проверять, содержит ли URL изображений ссылку на Amazon. Если да, то подписка будет добавлена к изображению.

Пример кода

add_filter( 'img_caption_shortcode', 'wwm_img_caption_filter', 10, 3 );

function wwm_img_caption_filter( $empty, $attr, $content ) {
    $image_id = $attr['id'];
    $image_post = get_post( $image_id ); // Получаем информацию о вложении
    $image_url = wp_get_attachment_url( $image_id ); // Получаем URL изображения

    // Проверяем, связано ли изображение с Amazon
    if (strpos($image_url, 'amazon') !== false) {
        // Устанавливаем текст подписи
        $attr['caption'] = '<a href="' . $image_url . '">Купить сейчас</a>'; // Добавляем ссылку на картинку

        return sprintf(
            '<figure class="wp-caption alignnone" style="width: auto;">%s<figcaption class="wp-caption-text">%s</figcaption></figure>',
            $content,
            $attr['caption']
        );
    }

    return $empty; // Возвращаем пустое значение, если условие не выполнено
}

2. Альтернативный подход: Использование фильтра the_content

Если у изображений нет уже заданной подписи, можно использовать фильтр the_content для добавления подписей к изображению с ссылкой на Amazon.

Пример кода

add_filter( 'the_content', 'add_affiliate_link_caption' );

function add_affiliate_link_caption( $content ) {
    // Используем регулярное выражение для поиска изображений с ссылками на Amazon
    $pattern = '/<a href="(.*?amazon.*?)".*?>(<img.*?\/>)<\/a>/i';
    $replacement = '<a href="$1">Купить сейчас</a> $2'; // Подмена с добавлением подписи

    // Дополняем контент
    return preg_replace($pattern, $replacement, $content);
}

Заключение

Использование фильтров WordPress для динамического добавления подписей к изображениям — это надежный и эффективный способ автоматизации процесса. Внедрив предложенные инструкции, вы сможете существенно улучшить взаимодействие пользователей с контентом вашего сайта, обеспечив их ясной информацией о ссылках на Amazon.

Не забывайте тестировать код на локальном сервере перед развертыванием на рабочем сайте. Также стоит обратить внимание на SEO-оптимизацию вашего контента, добавляя метатеги и атрибуты alt для изображений, что положительно повлияет на видимость вашего сайта в поисковых системах.

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

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