Obtener el contenido de una entrada por ID
¿Cómo puedo obtener el contenido de una entrada por su ID? Intenté usar get_page('ID'); para mostrar el contenido pero no funciona.
Puedes hacerlo de múltiples formas. Las siguientes son las dos mejores maneras.
$post_id = 5 // ejemplo de ID de publicación
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo do_shortcode( $content ); //ejecutando shortcodes
Otro método
$content = get_post_field('post_content', $post_id);
echo do_shortcode( $content ); //ejecutando shortcodes
Después de la sugerencia de Pieter Goosen sobre apply_filters.
Puedes usar apply_filters si deseas que el contenido sea filtrado por otros plugins. Esto elimina la necesidad de usar do_shortcode.
Ejemplo
$post_id = 5 // ejemplo de ID de publicación
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo apply_filters('the_content',$content);
//no es necesario usar do_shortcode, pero el contenido podría ser filtrado por otros plugins.
Si no quieres permitir que otros plugins filtren este contenido y necesitas la función de shortcode, entonces usa do_shortcode.
Si tampoco quieres shortcode, simplemente trabaja directamente con post_content.
Hola, gracias por preguntar. @PieterGoosen Como estamos obteniendo el contenido crudo del post. Cualquier shortcode incrustado en el post no será procesado. Así que lo estamos haciendo nosotros mismos con do_shortcode
WPTC-Troop
Una mejor manera sería usar apply_filters( 'the_content', $content );, de esta forma, todos los filtros que se aplican a the_content() como wpautop y el manejador de shortcodes, se aplican a $content. ;-). Nota el plural filters
Pieter Goosen
Voy a dejar aquí otra forma poco elegante que puede resultarte útil en ocasiones. Por supuesto, los métodos que utilizan llamadas a la API siempre son preferibles (get_post(), get_the_content(), ...).
global $wpdb;
$post_id = 123; // rellena aquí el ID de post que desees
$post_content_raw = $wpdb->get_var(
$wpdb->prepare(
"select post_content from $wpdb->posts where ID = %d",
$post_id
)
);