Obtener publicaciones por guid

2 minutos de lectura

Estoy tratando de obtener la publicación por su guid.

Lo intenté:

$post = get_post(array('guid' => 'foo'));

Pero eso solo devuelve la primera publicación. (su guid no es ‘foo’).

¿Qué me estoy perdiendo?

  • Cualquier razón específica por qué Usted necesita hacer ésto. ¿Por qué no usar ID de publicación?

    – Pieter Goosen

    21 de noviembre de 2014 a las 6:30

  • Correcto, obviamente si supiera la identificación, la usaría.

    – pguardiario

    21 de noviembre de 2014 a las 6:39

  • Punto tomado, pero ¿cómo se obtiene el guid?

    – Pieter Goosen

    21 de noviembre de 2014 a las 7:01

  • @pieter – Estás pensando demasiado en esto. Supongamos que tengo el guid y nada más.

    – pguardiario

    21 de noviembre de 2014 a las 7:37

  • Supongamos que desea agregar datos de varias fuentes externas en un tipo de publicación personalizada. Cada vez que obtenga y actualice estos datos, querrá asegurarse de que puede actualizar las publicaciones ya existentes y agregar solo las publicaciones nuevas. El ID de publicación de WP no es útil porque no tiene relación con los datos remotos. Usar el campo GUID para este propósito sería la elección obvia en mi mente. Es lamentable que los desarrolladores principales de WP no detectaran este caso de uso. Aparentemente, solo imaginaron que se usaría en fuentes RSS.

    – Tomas Eklund

    20 de enero de 2020 a las 13:01

No puede pasar GUID en get_post().

Le recomiendo que cree una función que devuelva una ID de publicación desde un GUID.

function getIDfromGUID( $guid ){
    global $wpdb;
    return $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid=%s", $guid ) );

}

var_dump( get_post( getIDfromGUID('http://localhost/wpdev/?p=10') ) );

  • Está bien. Esperaba no tener que entrar en sql, pero lo aceptaré si a nadie se le ocurre algo más.

    – pguardiario

    21 de noviembre de 2014 a las 6:40

Si está dentro de un argumento/valor no válido, get_post devolverá los datos de la primera publicación.

get_post solo acepta $post_id. http://codex.wordpress.org/Function_Reference/get_post

$post = get_post(7);
$title = $post->post_title;

Si desea una publicación de filtrado específica, puede usar get_posts. http://codex.wordpress.org/Template_Tags/get_posts

Ejemplo:

$args = array(
    'posts_per_page'   => 1,
    'category'         => 4,
    'orderby'          => 'post_date',
    'order'            => 'DESC',
    'post_type'        => 'post',
    'post_status'      => 'publish'
 );

get_posts( $args );

  • get_posts tampoco me funciona. No puedo obtener una publicación por guid usando ninguno de los dos get_post o get_posts.

    – pguardiario

    21 de noviembre de 2014 a las 4:54


  • guid es una url en wordpress. Si desea recuperar la publicación por slug, puede usar get_posts().$args=array( 'name' => 'slug-name', 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 1 );

    – Clemente

    21 de noviembre de 2014 a las 5:15


  • No, quiero obtenerlo por guid. Puedo hacerlo con sql sin procesar, pero prefiero usar funciones wp.

    – pguardiario

    21 de noviembre de 2014 a las 5:38

¿Ha sido útil esta solución?