Плагин, над которым я работаю, загружает изображения 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;
Задача ещё не решена.
Других решений пока нет …