重复图像多个用户访问时保存在WordPress媒体库中

时间:2017-02-06 00:19:47

标签: php wordpress duplicates media-library

我正在处理的插件下载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;

0 个答案:

没有答案