我正在尝试保存和检索元数据 - 处理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显示我可以添加或删除的值列表。
我能想到的唯一解决方案是将列表定义并更新为类,而不是尝试直接更新数据库。还有其他建议吗?
谢谢,