update_user_meta dentro de um popup / modal

Estou tentando criar uma notificação popup / modal se um usuário conectado tiver atingido um determinado nível.

Eu uso o seguinte código (simplificado):

function theme_achievements() { $value = user_total_posts( get_current_user_id() ) if( $value >= '0' && $value = '500' && $value <= '999' ) { update_user_meta( get_current_user_id(), 'author_level', array( 'lvl-2', '' ) ); } else { ... } } add_action( 'wp_head', 'theme_achievements' ); 

Agora, eu gostaria de criar uma notificação popup / modal quando o usuário alcançasse um determinado nível. A partir daqui, eu preciso de alguma orientação. Quando um usuário clica no ícone de fechamento, ele deve atualizar o usermeta.

Atualizada

Adicionado atributo de data-id que é necessário para update_user_meta

  function theme_notification_popup() { $level = get_user_meta( $user_id, 'author_level', true ); ?> 
<a class="uk-modal-close uk-close" data-id="-notification-read">

Title

...content...
<?php } add_action ('wp_footer', 'theme_notification_popup');

Como a AJAX é a maneira de lidar com isso, aqui está o meu código AJAX

 jQuery( 'document' ).ready( function( $ ) { jQuery('#uk-modal').on('click', '.uk-modal-close', function(e) { e.preventDefault(); var levelRead = $('.uk-modal-close').attr('data-id'); $.ajax( { url : ajax_url, type: 'POST', data: { action : 'km_ajax', 'data-id': levelRead, } } ) .success( function( results ) { // console.log( 'User Meta Updated!' ); console.log( levelRead ); } ) .fail( function( data ) { console.log( data.responseText ); console.log( 'Request failed: ' + data.statusText ); } ); return false; }); } ); 

E aqui está o retorno de chamada necessário

 function km_ajax_callback() { if( ! empty( $_POST['data-id'] ) ) : $new_val = sanitize_text_field( $_POST['data-id'] ); update_user_meta( get_current_user_id(), 'km_user_meta_author_level', array( '', $new_val ) ); endif; exit(); } add_action( 'wp_ajax_nopriv_km_ajax', 'km_ajax_callback' ); add_action( 'wp_ajax_km_ajax', 'km_ajax_callback' ); 

No console, vejo que o AJAX é bem sucedido quando um usuário clica no botão de close . No entanto, a segunda matriz do user_meta não é atualizada. Isso significa que deve haver um erro na minha function km_ajax_callback() .

Alguém pode me dizer o que estou fazendo de errado? Ou o que eu estou perdendo?

Solutions Collecting From Web of "update_user_meta dentro de um popup / modal"

Pelo que posso dizer, parece que você precisa usar o AJAX para atualizar esse meta do usuário.

Além disso, você também precisará recuperar o “conteúdo” com o AJAX, para obter as informações atualizadas se o novo modelo for chamado novamente.

Há muita documentação sobre o AJAX no wordpress, mas aqui está um artigo relacionado especificamente à sua pergunta: Atualize o metodo do usuário usando o ajax