2012-06-13 34 views
0

我正在研究2部分表單以允許用戶在WordPress上創建帖子。WordPress中的PHP全局變量不返回期望值

第一部分接受文章標題,內容和鏈接,然後使用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)的這個插件。

我遇到了問題,當我嘗試使用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 

}); 

這兩個都在同一個file.php中。

如果這還不夠清楚,讓我知道。謝謝。

+0

在調用'add_action()'之前是否輸出任何內容? –

+0

是的,在函數內部,它會創建帖子並返回正確的帖子ID。嘗試將該ID傳遞給同一PHP文件中的另一個範圍是有問題的。 –

回答

1

試試這個變量傳遞給匿名函數範圍:

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

全局變量不保留單獨的請求之間的值,所以你要麼回帖子的ID形成第一個呼叫,並將其傳遞除了上傳的文件或存儲和訪問它在$_SESSION陣列。

+0

此代碼片段的返回值爲NULL。 –

+0

如果你在'global ...'和'add_action'之間移動'var_dump()'? –

+0

'NULL'和'NULL',這意味着它在創建後沒有被正確存儲。 –