0

WordPress には、WordPress イメージ ギャラリーへのファイルのアップロードを処理する機能があります。フォームを Ajax に変換した後、ファイルのアップロードが機能しなくなっていることに気付きました。問題は、Ajax の前に関数を実行することができれば、機能するということです。コードは次のとおりです。

function insert_attachment($file_handler,$post_id,$setthumb='false') {
    if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK){
        return __return_false(); 
    }
    require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    require_once(ABSPATH . "wp-admin" . '/includes/file.php');
    require_once(ABSPATH . "wp-admin" . '/includes/media.php');
    $attach_id = media_handle_upload( $file_handler, $post_id );

    if ($setthumb) 
        update_post_meta($post_id,'_thumbnail_id',$attach_id);
    return $attach_id;
}

そして、Ajax 送信が呼び出される前に実行したい呼び出しは次のとおりです。

foreach ($_FILES as $file => $array) 
{
    $newupload = insert_attachment($file,$post_id); 
}

その理由は$newupload、ファイルを wordpress 画像ギャラリーに送信しattachmentID、Ajax が挿入されているのと同じテーブルに挿入するために を返すためです。したがって、コードが Ajax の前に実行できれば、問題なく動作します。これはまったく可能ですか?

クリック時にバックグラウンドでPHP関数を実行するには?

4

1 に答える 1

0

PHPはクライアントではなくサーバーで実行されるため、サーバー上でのみ可能です。

そのため、サーバー上で ajax 呼び出しを完了し、コールバックで別の ajax 呼び出しを使用します。

CAll ajax1 --> コールバック --> ajax2 を呼び出す

このような

$.ajax({
    url: 'http://www.xxxxxxxxxxxxx',
    data: {name: 'xxxxxx'},
    dataType: 'jsonp',
    success: function(data){

        // do stuff

        // call next ajax function
        $.ajax({ xxx });
    }
});
于 2013-11-05T07:25:26.830 に答える