我正在处理的插件下载Instagram图像并自动将它们插入到Wordpress媒体库中,我还设置了一个瞬态,以便用户可以设置插件检查新图像的频率。
问题:当网站上有多个用户或我打开了多个标签时,我会立即刷新所有脚本,因此会多次触发脚本,因此会在媒体中创建重复的图像库。
任何提示我指向正确方向的提示都会受到赞赏!
下面的代码是将图像插入库中的功能
// 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;