Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/12/2013, 05:30
laura_moreno14
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: crear un sistema de cursos con seguimiento del progreso

Finalmente he conseguido crear un array para cada usuario loggeado con los ids de cada post que han visitado.

Código PHP:
//get each user read posts
function fab_set_read_posts($postID) {
    
    if( 
is_single() || user_is_logged_in() ) {
        
        
$user wp_get_current_user();
        
$user_id  $user->ID;
        
        
$meta_key 'read_post';
    
        
$meta_value $postID;
        
        
$user_meta get_user_meta($user_id$meta_keytrue);
        
        
//if $user_meta exist update it, is not, add new user meta
        
if($user_meta){
            
            
// be sure $user_meta is an array
            
if( ! is_array$user_meta ) )
                
$user_meta = array();
            
            
//if $meta_value is not in the array, push it into the array and update $user_meta
            
if(in_array($meta_value$user_meta)) {
                echo 
"Ya has leído este tema.";
            } else {
                   
array_push($user_meta$meta_value);
                
update_user_meta$user_id$meta_key$user_metafalse );
            }
    
        }else{
    
            
add_user_meta$user_id$meta_key$meta_valuetrue );
            
        }
    }


Se añade este codigo al archivo funtions.php y se llama a la funcion en el single.php

Código PHP:
<php fab_set_read_posts($post->ID?> 
Cuando un usuario que esta loggeado visite una post, se guardara el id de dicho post en el array. Después se puede usar estos datos para cosas varias, en mi caso quiero comprobar si un post ha sido ya leido o no. Solo hay que recuperar el array usando get_user_meta() y comprobar si el id actual se encuentra en el array. En el este caso, el codigo va dentro de un loop, pero se puede usar fuera del loop siempre que le pasemos el id de un post.

Código PHP:
          $user wp_get_current_user();
                    
$user_id  $user->ID;
                    
$meta_key 'read_post';
                    
$meta_value $post->ID;
                    
                    
$user_meta get_user_meta($user_id$meta_keytrue);
                    
                    if(
$user_meta){
                        
                        
// be sure $user_meta is an array
                        
if( ! is_array$user_meta ) )
                            
$user_meta = array();
                        
                        
//if $meta_value is not in the array, push it into the array and update $user_meta
                        
if(in_array($meta_value$user_meta)) {
                            
$read "Leido";
                        } else {
                            
$read "Sin leer";
                        }
                
                    } 
Espero que le sea util a alguien!