2

Web サービスからファイルを受信して​​ワードプレスに保存しようとしていますが、次の問題があります。

  1. 一部のファイルはアップロードされますが、Web サービス アドレスは正しいのに、破損していて開くことができません。
  2. 次のエラーが表示されます(ただし、これらのエラーは表示されますが、とにかくファイルをアップロードします。これは良いことですが、なぜそれらを受け取っているのか疑問に思っています)。

注意: /Applications/MAMP/htdocs/wordpress/wp-load.php の 22 行目に定数 ABSPATH が既に定義されています

致命的なエラー: 95 行目の /Applications/MAMP/htdocs/wordpress/wp-content/plugins/myproject/Myclasses/retrieve_2334.php の未定義関数 wp_generate_attachment_metadata() の呼び出し

私のコード:

    ini_set( 'display_errors', TRUE );
    error_reporting( E_ALL );
    require("/Applications/MAMP/htdocs/wordpress/wp-load.php");
    $pos = strrpos($Address, "&f=");
    $loc = substr($Address, $pos + 3);

    $Address = "http://dev.piction.com/v60/" . $Address;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_URL, $Address);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);



    $upload_dir = wp_upload_dir();
    $location= $upload_dir['basedir']. "/" . $loc;

try{
    $location= $upload_dir['path']. "/" . $loc;
    $wp_filetype = wp_check_filetype($loc, null );
    $fullpathfilename = $upload_dir['path'] . "/" . $loc;


    $fileSaved = file_put_contents($location, $output);
                if ( !$fileSaved ) {
                    throw new Exception("The file cannot be saved.");
                }
                $attachment = array(
                     'post_mime_type' => $wp_filetype['type'],
                     'post_title' => preg_replace('/\.[^.]+$/', '', $loc),
                     'post_content' => '',
                     'post_status' => 'inherit',
                     'guid' => $upload_dir['url'] . "/" . $loc
                );
                $attach_id = wp_insert_attachment( $attachment, $fullpathfilename, 0 );
                if ( !$attach_id ) {
                    throw new Exception("Failed to save record into database.");
                }
                //require_once(ABSPATH . "wp-admin" . '/includes/image.php');
                $attach_data = wp_generate_attachment_metadata( $attach_id, $fullpathfilename );
                wp_update_attachment_metadata( $attach_id,  $attach_data );

        } catch (Exception $e) {
                $error = '<div id="message" class="error"><p>' . $e->getMessage() . '</p></div>';
            }
    echo 'Photo is uploaded';
4

2 に答える 2

0

require_once("/Applications/MAMP/htdocs/wordpress/wp-load.php");すでに定義されている通知が表示されたら、に変更してみてください。これは、wp-load.phpがすでに含まれていることを示している可能性があります。

//require ( ABSPATH . 'wp-admin/includes/image.php' );また、使用できるようにするには、行のコメントを解除する必要がありますwp_generate_attachment_metadata()

于 2013-02-15T11:02:36.343 に答える
0

ファイルを 2 回インクルードしているように見えますが、これは「既に定義済み」のエラーが発生する理由を説明しています。

コードの 3 行目のステートメントを削除してみて、require()機能するかどうかを確認してください。そのファイルは、スクリプトの別の場所に既に含まれているように見えます。

于 2013-02-15T10:41:27.463 に答える