2017-03-20 23 views
0

update_user_metaを正しく使用する方法を理解するのが難しいです。今私は、ユーザーmeta_keyを更新する必要がある2つの関数があります。ただし、wp_headフィルタが原因で、毎回theme_levels関数がajax関数をオーバーライドします。より良い方法がありますか?update_user_metaの適切な使用

function theme_levels() { 

    $value = user_total_posts(get_current_user_id()) 

    if($value >= '0' && $value <= '499') {   
     $levels[] = array(
       'level'   => 'level-1',    
     ); 
     update_user_meta($user_id, 'author_level', $levels);   
    } else { 
     ... 
    } 
} 
add_action('wp_head', 'theme_levels'); 

を次のように

私のコードは、私が同じユーザmeta_keyに別の配列を追加する必要があり、AJAXコールバックを持っています。

array(1) { 
    [0]=> array(2) { 
     ["level"]   => string(10) "level-1" // this will be added if user is logged in and reached the level 
     ["notification"] => string(28) "level-1-notification-read" // this should be added after the AJAX call 
    } 
} 

すべてのヘルプははるかに高く評価されています

function ajax_callback() { 
    if(! empty($_POST['data-id'])) {   
     $levels[] = array(
       'notification' => sanitize_text_field($_POST['data-id']), 
     );  
     update_user_meta($user_id, 'author_level', $levels);   
    } 

    wp_die(); 
} 
add_action('wp_ajax_theme_ajax', 'ajax_callback'); 

は、これは私が(それが一部var_dump$levelsにもあります)それになりたい方法です。

答えて

0

使用している$user_idはどこにも定義されていません。

最初に機能theme_levels()ajax_callback()の範囲内で以下のコードを使用してください。

$current_user = wp_get_current_user(); 
$user_id=$current_user->ID; 
+0

こんにちは、私のPHPファイル '$ user_id'は' get_current_user_id() 'として定義されていますが、何とかここに私の投稿に追加するのを忘れました。それを指摘してくれてありがとう。つまり、私の問題はまだ残っています。 'theme_levels()'関数がAJAX関数をオーバーライドするのを止めるには? – kiarashi