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


PHP globals in WordPress not returning expected value

我正在制作一个由两部分组成的表单,以允许用户在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图库,然后将图像附加到帖子中,使其成为其特色图像。对于图像提交,我正在使用前端上传器,并将包含的add_action('fu_after_upload', callback_function)与此插件一起使用。

当我尝试在add_action()中使用$make_post_id全局来附加图像时,我遇到了问题,但没有任何返回。

add_action( 'fu_after_upload', function( $attachment_ids ) { 
    global $make_post_id;
    var_dump($make_post_id); // no return value
} );

这两者都在同一个文件中.php。

如果这还不够清楚,请告诉我。谢谢。

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

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

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