Вопрос или проблема
У меня есть сайт, на котором автор включил партнерские ссылки 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 для изображений, что положительно повлияет на видимость вашего сайта в поисковых системах.