WordPress中的PHP全局变量未返回预期值

时间:2012-06-13 20:52:07

标签: php wordpress upload

我正在处理一个2部分表单,允许用户在WordPress上创建帖子。

第一部分接收帖子标题,内容和链接,然后使用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;
    }

}

第二部分拍摄图像并将其上传到WordPress图库,然后将图像附加到帖子上作为其特色图像。对于图片提交,我使用的是Frontend Uploader,并使用此插件中包含的add_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

} );

这两个都在同一个文件中。

如果不清楚,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

尝试将此变量传递给匿名函数范围:

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

全局变量不会在单独的请求之间保留值,因此您可以在第一次调用时返回帖子ID,并将其与上传的文件一起传递,或者在$_SESSION数组中存储和访问它。