Obtener el ID de la última entrada

7 sept 2011, 10:19:09
Vistas: 24K
Votos: 12

He estado buscando por todas partes la mejor manera de hacer esto.

Quiero obtener el ID de la última entrada de un cierto post_type.

¿Cómo puedo hacer esto de la manera más económica posible (por económica me refiero a usar la menor cantidad de consultas, y sin bucles ni rebobinado de posts)?

Seguramente existe un método rápido, ¿verdad?

// Método 1: Usando get_posts()
$args = array(
    'post_type' => 'tu_post_type',
    'numberposts' => 1,
    'orderby' => 'date',
    'order' => 'DESC'
);
$latest_post = get_posts($args);
$latest_post_id = $latest_post[0]->ID;

// Método 2: Usando WP_Query
$query = new WP_Query(array(
    'post_type' => 'tu_post_type',
    'posts_per_page' => 1,
    'orderby' => 'date',
    'order' => 'DESC',
    'fields' => 'ids'
));
$latest_post_id = $query->posts[0];
0
Todas las respuestas a la pregunta 2
4
27
$latest_cpt = get_posts("post_type=yourcpt&numberposts=1");
echo $latest_cpt[0]->ID

La única forma más económica que la anterior que se me ocurre, sería escribir tu propia consulta SQL para que solo devuelva un post y solo la columna ID.

7 sept 2011 10:31:42
Comentarios

¡Sí, eso es! He estado dando vueltas alrededor del asunto. Gracias @brady

Niels Niels
7 sept 2011 10:35:58

get_posts("post_type=yourcpt&numberposts=1&fields=ids") para solo devolver el ID del post, nada más, un poco más rápido de esta manera:)

passatgt passatgt
12 jun 2015 12:30:56

post_type=post para obtener los posts por defecto.

Travis van der Font Travis van der Font
11 jun 2018 13:27:09

Usando el método de @passatgt, la declaración echo sería echo $latest_cpt[0];, no hay forma de obtener el ->ID de un objeto.

catgofire catgofire
25 ene 2021 23:12:32
0

Una forma más pura usando SQL:

function GetLastPostId()
{
    global $wpdb;

    $query = "SELECT ID FROM $wpdb->posts ORDER BY ID DESC LIMIT 0,1";

    $result = $wpdb->get_results($query);
    $row = $result[0];
    $id = $row->ID;

    return $id;
}
16 sept 2017 10:34:38