在同一个ajax函数中调用update_user_meta / get_user_meta时不同步

时间:2014-11-09 22:43:45

标签: php ajax wordpress metadata

我正在尝试保存和检索元数据 - 处理wordpress项目。

调用get_user_meta时我有一个奇怪的问题。有谁能解释为什么?它就像update_user_meta和get_user_meta不是顺序函数一样。

我首先调用update_user_meta来更新值。 接下来我调用get_user_meta来检索值。 (这样做是为了测试目的,我意识到这可能看起来有点奇怪:)重点是 - 然而 - 这些更新/获取调用是在相同的ajax请求中进行的。

过滤器执行 - 调用它不是问题。

问题是 - get_user_meta有50%的机会获得旧的元值,而不是我刚刚更新的元值。

public function addcampaign_getlist($sponsorlist, $downloadid) {

    update_user_meta( get_current_user_id(), 'testvar', $downloadid);

    $sponsorlist['download_id'] = get_user_meta( get_current_user_id(), 'testvar', true ); 
    return $sponsorlist;
}

add_filter('sfc_add_campaign_get_list', array($this, 'addcampaign_getlist'), 10, 2);    

过滤器通过ajax调用,如下所示。我知道调用有效,因为刷新后,后续的get_user_meta调用会检索正确的数据。 但是,如果在同一个ajax函数中执行,则update_user_meta和get_user_meta之间似乎存在序列性问题。

function sfc_ajax_add_to_support() {
    $sponsorlist=   array( 'download_id' => 0 );
    if ( isset( $_POST['download_id'] ) ) 
        $sponsorlist = apply_filters('sfc_add_campaign_get_list', $sponsorlist,$_POST['download_id'] );
    echo json_encode( $sponsorlist );   
    edd_die();
}
add_action( 'wp_ajax_sfc_add_to_support', 'sfc_ajax_add_to_support' );

我想要实现的是按用户ID显示我可以添加或删除的值列表。

我能想到的唯一解决方案是将列表定义并更新为类,而不是尝试直接更新数据库。还有其他建议吗?

谢谢,

0 个答案:

没有答案