Можно ли задать избранное изображение с помощью HTML?

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

Программа аффилированных лиц 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, вы можете легко и эффективно установить изображение для публикации, при этом соблюдая все необходимые правила. Это также позволит вам улучшить визуальное восприятие вашего контента, что в конечном итоге может привести к увеличению конверсии.

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

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