WordPress: obtenga la última publicación personalizada de cada usuario

2 minutos de lectura

avatar de usuario
Pedro

¿Cómo puedo obtener la última publicación personalizada de cada usuario?

$args = array(  'post_type'      => 'userdatax', 
                'post_status'    => 'publish', 
                'orderby'        => 'post_date',
                'order'          => 'DESC',    
                'posts_per_page' => 999999 );  

$query_res = new WP_Query($args);

  • Buena muestra de código. Hmmm, no parece mostrar ningún esfuerzo por realizar consultas por parte del usuario… ¿puede ser específico? cada usuario?

    – nombre_usuario_aleatorio

    12 de septiembre de 2017 a las 0:10

  • ¿Has intentado establecer posts_per_page en -1?

    – Awais Umar

    14/09/2017 a las 12:34

  • ¿Quería mostrar la última publicación del usuario o el inicio de sesión del usuario actual?

    – Purvik Dhorajiya

    20 de septiembre de 2017 a las 6:13

según yo, el siguiente código puede lograr su objetivo.

prueba este código

function getUserPosts()
{
    $args = array(
    'order'        => 'ASC',
    ); 
    $users = get_users( $args );

    foreach ($users as $key => $value) {
        // WP_Query arguments
        $args = array(
        'post_type'              => array( 'userdatax' ),
        'post_status'            => array( 'publish' ),
        'author'                 => $value->ID,
        'posts_per_page'         => '-1',
        'order'                  => 'DESC',
        'orderby'                => 'date',
        );

        // The Query
        $query = new WP_Query( $args );

        // The Loop
        if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            // do something
            echo the_title();
        }
        } else {
        // no posts found
        }

        // Restore original Post Data
        wp_reset_postdata();
    }
}
add_action('init','getUserPosts');

Creo que necesitas mostrar la última publicación de cada usuario.

<?php 	
$lastposts = get_posts( array(
	 'post_status'    => 'publish', 
	 'orderby'        => 'post_date',
	 'order'          => 'DESC',
    'posts_per_page' => -1
) );
 
//Code to check only the latest post from  each user is displayed.
if ( $lastposts ) {
	$auther=""; 
    foreach ( $lastposts as $post ) :
        setup_postdata( $post ); 
		  	if($auther!=get_the_author()) { ?>
				<!--Do your html code here -->
				<h2><a href="https://stackoverflow.com/questions/46166018/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
				<?php the_content(); 
				$auther=get_the_author();	
			}
	 
    endforeach; 
    wp_reset_postdata();
}
?>

Espero eso ayude 🙂

  • Tengo más de 1 millón de usuarios. No creo que este código funcione :/

    – Pedro

    14 de septiembre de 2017 a las 8:02

<?php
$user_id = get_current_user_id();
$args = array( 'author' => $user_id, 'post_type' => 'any' );

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>';
    /* Restore original Post Data */
    wp_reset_postdata();
} else {
    // no posts found
}

?>

simplemente cambie posts_per_page para que sea -1 así

 $args = array(  'post_type'      => 'userdatax', 
            'post_status'    => 'publish', 
            'orderby'        => 'post_date',
            'order'          => 'DESC',    
            'posts_per_page' => -1);  

 $query_res = new WP_Query($args);

¿Ha sido útil esta solución?