Вопрос или проблема
Программа аффилированных лиц Amazon не позволяет скачивать изображения с их сайта и загружать их через свой сервер. Один из разрешённых способов использования изображений с Amazon – это использовать их API или Sitestripe. Для новых аффилированных лиц, которые ещё не сделали ни одной продажи, нам разрешено использовать только Sitestripe.
Sitestripe извлекает изображение с сайта, однако изображение представлено в виде HTML-кода. Можно ли установить главное изображение, используя указанный HTML-код, чтобы соответствовать требованиям Amazon?
Спасибо
Да, это возможно. Вам просто нужно использовать регулярные выражения для разбора HTML, чтобы получить URL изображения, загрузить его в папку загрузок, а затем установить его в качестве выделенного изображения.
Вот пример:
function set_featured_image_from_html( $html, $post_id ) {
// Если в HTML нет изображений, сразу возвращаем.
if ( ! preg_match( '/<img\s+.*?src=[\"\']?([^\"\' >]*)[\"\']?[^>]*>/i', $html, $image ) ) {
return;
}
$image_url = $image[1];
$upload_dir = wp_upload_dir();
$image_data = file_get_contents( $image_url );
$filename = basename( $image_url );
if ( wp_mkdir_p( $upload_dir['path'] ) ) {
$file = $upload_dir['path'] . "https://wordpress.stackexchange.com/" . $filename;
} else {
$file = $upload_dir['basedir'] . "https://wordpress.stackexchange.com/" . $filename;
}
file_put_contents( $file, $image_data );
$wp_filetype = wp_check_filetype( $filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $post_id, $attach_id );
}
Использовать это можно вот так:
set_featured_image_from_html('<img src="https://picsum.photos/800">', 29);
.
Ответ или решение
Да, установить изображение для публикации (Featured Image) с использованием HTML-кода возможно, особенно в контексте работы с Amazon Affiliate Program и Sitestripe. Ваша задача заключается в том, чтобы извлечь URL изображения из HTML-кода, а затем использовать его в качестве изображения для публикации. Давайте подробно рассмотрим этот процесс, чтобы обеспечить соответствие требованиям Amazon и добиться желаемых результатов.
1. Зачем это нужно?
Использование изображений правильно регулируется правилами Amazon. Скачивание изображений с их сайта и загрузка на ваш сервер запрещено, поэтому использование API или Sitestripe является единственно допустимым способом. При помощи HTML-кода, полученного из Sitestripe, можно легко работать, извлекая необходимую информацию.
2. Как это сделать?
Для начала нам нужно написать функцию, которая будет брать HTML-код в качестве входного параметра и устанавливать его как изображение для публикации в WordPress. На примере ниже показан важный процесс извлечения URL-адреса изображения и его установки.
function set_featured_image_from_html( $html, $post_id ) {
// Если в HTML нет изображения, прекратить выполнение.
if ( ! preg_match( '/<img\s+.*?src=[\"\']?([^\"\' >]*)[\"\']?[^>]*>/i', $html, $image ) ) {
return;
}
$image_url = $image[1];
$upload_dir = wp_upload_dir();
$image_data = file_get_contents( $image_url );
$filename = basename( $image_url );
if ( wp_mkdir_p( $upload_dir['path'] ) ) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
// Сохранение изображения в директорию загрузок.
file_put_contents( $file, $image_data );
$wp_filetype = wp_check_filetype( $filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $post_id, $attach_id );
}
3. Как использовать функцию
Для того чтобы передать HTML-код изображения в функцию, вы можете сделать это следующим образом:
set_featured_image_from_html('<img src="https://picsum.photos/800">', 29);
4. Правила и рекомендации
- Важно удостовериться, что вы соблюдаете условия использования Amazon и не нарушаете их правила. Использование API и Sitestripe должно быть предпочтительным способом получения данных.
- Убедитесь, что ваши изображения соответствуют стандартам качества и размера, необходимым для вашего сайта.
- Не забывайте тестировать ваш код в безопасной среде, прежде чем развертывать его на рабочем сайте, чтобы избежать ошибок и проблем с производительностью.
Заключение
Возможность установки изображения с использованием HTML-кода – это мощный инструмент для интернет-маркетологов и владельцев сайтов, работающих с партнерскими программами. Используя предложенный подход с помощью PHP и WordPress, вы можете легко и эффективно установить изображение для публикации, при этом соблюдая все необходимые правила. Это также позволит вам улучшить визуальное восприятие вашего контента, что в конечном итоге может привести к увеличению конверсии.