Obtener el contenido de una entrada por ID

6 ene 2016, 08:37:49
Vistas: 61.1K
Votos: 10

¿Cómo puedo obtener el contenido de una entrada por su ID? Intenté usar get_page('ID'); para mostrar el contenido pero no funciona.

1
Comentarios

Votos negativos porque ni siquiera intentaste leer la documentación sobre get_page(). Ha estado obsoleto desde hace mucho tiempo. Además, hay una cantidad ilimitada de recursos en el sitio sobre este tema, incluso Google tiene mucha información al respecto

Pieter Goosen Pieter Goosen
6 ene 2016 09:25:19
Todas las respuestas a la pregunta 4
4
19

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.

6 ene 2016 08:58:42
Comentarios

Solo me pregunto por qué estás usando do_shortcode

Pieter Goosen Pieter Goosen
6 ene 2016 09:25:56

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 WPTC-Troop
6 ene 2016 09:36:52

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 Pieter Goosen
6 ene 2016 09:59:43

Sí, usar apply_filters en lugar de do_shortcode tiene sentido. Pero el uso de apply_filter se basa puramente en la decisión de su entorno. Permíteme actualizar mi respuesta también. Muchas gracias por tu cuidado con la comunidad @PieterGoosen

WPTC-Troop WPTC-Troop
6 ene 2016 11:04:15
0

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
    )
);
19 nov 2016 12:32:50
1
$id = 23; // agregar el ID de la página donde está el cero
$p = get_page($id);
$t = $p->post_title;
echo '<h3>'.apply_filters('post_title', $t).'</h3>'; // el título aquí está envuelto con h3
echo apply_filters('the_content', $p->post_content);
19 ene 2018 08:28:45
Comentarios

Por favor [edita] tu respuesta y añade una explicación: ¿por qué esto podría resolver el problema?

fuxia fuxia
19 ene 2018 08:30:13
1
-1

Al usar get_page('ID').

$page_id = 123;  //ID de la página
$page_data = get_page($page_id); 
$title = $page_data->post_title; 
$content = $page_data->post_content;
6 ene 2016 09:26:10
Comentarios

Votado negativo porque ni siquiera intentaste leer la documentación. get_page() está obsoleto

Pieter Goosen Pieter Goosen
6 ene 2016 09:27:38