Categorías
Wordpress

Cómo obtener ID de publicación en WordPress

En estos ejemplos, mostraré cómo obtener la identificación de la publicación: título de la publicación, slug, URL de la publicación, clave meta y meta valor, categoría / ID de etiqueta, etc.

Estos métodos también funcionan para páginas de WordPress y tipos de publicaciones personalizadas.

Si estás buscando información de una publicación por ID, todo lo que necesitas es usar la get_post()función, por ejemplo:

$post = get_post( 52 );
// Mostramos el título del post con id 52
echo $post->post_title;

O también se pueden obtener publicaciones por ID con WordPress WP_Query:

$query = new WP_Query( array( 'p' => 52 ) );
$query->the_post();
// Llamamos al post con id 25
echo $query->post->post_type;
// Mostramos según el estado del post (Activado/Privado/Borrador)
echo $query->post->post_status;

Objeto $global post

El objeto global $postcontiene muchos datos de la publicación actual . Es muy fácil obtener la identificación del objeto:

echo  $ post -> ID ;

A veces, cuando lo está utilizando dentro de una función (o en cualquier caso cuando no imprime nada 🙂 simplemente agrega la sentenciaglobal $post; al principio del código.

 $ post global ;
echo  $ post -> ID ;

6. Uso de las funciones get_the_id () y the_id ()

La diferencia entre estas dos funciones es que get_the_id()devuelve la identificación de la publicación actual y la the_id()imprime.

echo get_the_id ( ) ;
the_id ( ) ;

7. Obtener ID de publicación por título

Esta es una función incorporada de WordPress y desde la versión 3.0.0 funciona no solo para páginas sino para cualquier tipo de publicación personalizada. El tercer parámetro de función es el nombre de un tipo de publicación ( pagepor defecto).

$ mypost = get_page_by_title (  'Hola mundo' , '' , 'post'  ) ;
echo  $ mypost -> ID ;

8. Obtenga ID de publicación por Slug

La función es similar a get_page_by_title(). Pero si su publicación tiene padres (solo para tipos de publicaciones jerárquicas), también debe especificar la sección principal, por ejemplo parent-post/hello-world.

$ mypost = get_page_by_path ( 'hello-world' , '' , 'post' ) ;
echo  $ mypost ->ID ;

9. Obtener ID de publicación por URL

Función muy simple.

$ mypost_id = url_to_postid (  'http://yanez.pro/wordpress/get-post-id.html'  ) ;

10. Obtenga la ID de publicación que se muestra en la página principal

Bueno, este ejemplo es solo para el tipo de publicación page. Puedes obtener los ID de código de las páginas Front page y Post page (de la sección Lectura del menú Ajustes)

$ frontpage_id = get_option (  'page_on_front'  ) ;
$ blogpage_id = get_option (  'page_for_posts'  ) ;

11. Manera fácil de obtener ID de publicación en un bucle WP_Query 

Cuando usa WP_Query u otros bucles adicionales, siempre es mucho mejor y más rápido obtener las propiedades del objeto $ post en lugar de usar get_the_id()the_id()funciones.

$mi_custom_query = new WP_Query( 'posts_per_page=10' );
 
while( $mi_custom_query-have_posts() ) : $mi_custom_query->the_post();
	echo $mi_custom_query->post->ID; // muestra post ID
endwhile;

12. Obtener ID de publicación por clave meta

De hecho, hay dos formas de hacerlo: usando WP_Query o MySQL query. Aquí le presentaré una función que devuelve una ID de publicación o una matriz de ID de publicación que coinciden con la metaclave dada.

/*
 * Devuelve ID de publicación coincidentes para una metaclave de la base de datos
 *
 * @param string $meta_key
 *
 *@return Array de post ID de publicación: si más de una publicación coincide con esta meta clave  
* @return int ID de publicación: si solo se encontró una publicación
 */
function misha_post_id_by_meta_key( $meta_key ){
	global $wpdb;
 
	$ids = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key ) );
 
	if( count( $ids ) > 1 ) 
		return $ids; // return array
	else
		return $ids[0]; // return int
}

13. Obtenga ID de publicación tanto por meta clave como por valor

Es similar a la función anterior, pero aquí también puede especificar un metavalor.

/*
 * Devuelve ID de publicaciones coincidentes para un par de metaclaves y metavalor de la base de datos
 *
 * @param string $meta_key
 * @param mixed $meta_value
 *
 * @return array|int Post ID(s)
 */
function misha_post_id_by_meta_key_and_value( $meta_key, $meta_value ){
	global $wpdb;
 
	$ids = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %s", $meta_key, $meta_value ) );
 
	if( count( $ids ) > 1 ) 
		return $ids; // return array
	else
		return $ids[0]; // return int
}

14. Obtener ID de publicación por ID de término (ID de categoría, ID de etiqueta)

/*
 * Devuelve ID de publicaciones en un término con una ID determinada
 *
 * @param int $term_id
 *
 * @return array|int Post ID(s)
 */
function misha_post_id_by_term_id( $term_id ){
	global $wpdb;
 
	$ids = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term_id ) );
 
	if( count( $ids ) > 1 ) 
		return $ids; // return array
	else
		return $ids[0]; // return int
}

De hecho, utilizando $wpdbpuedes obtener ID de publicaciones por cualquier parámetro: nombre de categoría, fecha de publicación, número de comentarios, incluso por correo electrónico del autor del comentario ,etc.