Повторяющиеся изображения сохраняются в WordPress Media Library при посещении нескольких пользователей

Плагин, над которым я работаю, загружает изображения Instagram и автоматически вставляет их в WordPress Media Library. Я также установил переходный процесс, чтобы пользователи могли устанавливать частоту, с которой плагин должен проверять наличие новых изображений.

Эта проблема: Когда на сайте несколько пользователей или у меня открыто несколько вкладок, и я обновляю их всех сразу, сценарий запускается несколько раз, и, таким образом, в библиотеке мультимедиа создаются дублированные изображения.

Любой совет, чтобы указать мне в правильном направлении приветствуется!

Код ниже — это функция, которая вставляет изображения в библиотеку.

    // Remove Instagram chace key from url
$clean_url = esc_url( remove_query_arg( 'ig_cache_key', $image_data['url'] ) );

$image_info = pathinfo( $clean_url );

if ( !in_array( $image_info['extension'], array( 'jpg', 'jpe', 'jpeg', 'gif', 'png' ) ) ) {
return false;
}

// These files need to be included as dependencies when on the front end.
if( !function_exists( 'download_url' ) || !function_exists( 'media_handle_sideload' ) ) {
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
}

$tmp = download_url( $clean_url );

$file_array             = array();
$file_array['name']     = $image_info['basename'];
$file_array['tmp_name'] = $tmp;

// If error storing temporarily, unlink
if ( is_wp_error( $tmp ) ) {

@unlink( $file_array['tmp_name'] );
$file_array['tmp_name'] = '';

return $tmp->get_error_message();
}

$id = media_handle_sideload( $file_array, 0, NULL, array(
'post_excerpt' => $image_data['caption']
) );

// If error storing permanently, unlink
if ( is_wp_error( $id ) ) {

@unlink( $file_array['tmp_name'] );

return $id->get_error_message();
}

unset( $image_data['caption'] );

foreach ( $image_data as $meta_key => $meta_value ) {
update_post_meta( $id, 'jr_insta_' . $meta_key, $meta_value );
}

return $id;

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]