0

私は、ユーザーがWordPressで投稿を作成できるようにするために、2つの部分からなるフォームに取り組んでいます。

最初の部分では、投稿のタイトル、コンテンツ、リンクを取り込み、AJAXを使用してそのデータから投稿を作成します。wp_insert_post()投稿IDを使用して投稿を作成すると返されます。

function makeblog_page2form (){

    global $make_post_id;

    if( check_admin_referer('page2form_submit','page2form_subform') ){

        // more code

        $make_post_id = wp_insert_post( $post );


        exit;

    } else{
        wp_redirect( home_url( '/submission-error/' ) );
        exit;
    }

}

2番目の部分では、画像を取得してWordPressギャラリーにアップロードし、その画像を投稿に添付して注目の画像にします。画像の送信には、Frontend Uploaderadd_action('fu_after_upload', callback_function)を使用しており、このプラグインに含まれているものを使用しています。

$make_post_id内のグローバルを使用しadd_action()て画像を添付しようとすると問題が発生しますが、何も返されません。

add_action( 'fu_after_upload', function( $attachment_ids ) { 

    global $make_post_id;
    var_dump($make_post_id); // no return value

} );

これらは両方とも同じfile.php内にあります。

これが十分に明確でない場合は、私に知らせてください。ありがとう。

4

1 に答える 1

1

この変数を無名関数スコープに渡してみてください。

global $make_post_id;
add_action( 'fu_after_upload', function( $attachment_ids ) use ($make_post_id){
    var_dump($make_post_id);
});

グローバル変数は個別のリクエスト間で値を保持しないため、最初の呼び出しからポスト ID を返し、アップロードされたファイルと一緒に渡すか、$_SESSION配列に保存してアクセスする必要があります。

于 2012-06-13T21:26:57.633 に答える