Use the_content fuera del bucle

2

Estaba tratando de obtener las primeras 100 palabras del contenido en el encabezado, y uso el siguiente fragmento de código para obtener las primeras 100 palabras en el bucle, pero es posible obtener el valor fuera del bucle:

$cstring = get_the_content( '' );
$newcString = substr( $cstring, 0, 100 );
echo'<p>' . $newcString . '</p>';
    
pregunta Hardeep Asrani 30.04.2014 - 22:00

3 respuestas

5

Si está intentando hacerlo para la página actual en la que se encuentra, puede usar esto:

global $post;
$content = $post->post_content;'

Esto obtendrá el contenido de la publicación actual en lugar de tener que establecer la ID específicamente.

    
respondido por el Nick Young 30.04.2014 - 22:36
5

Escribí un artículo en esto aquí , pero aquí hay un resumen de los puntos:

  • the_content solo se puede usar 'dentro del bucle'
  • 'dentro del bucle' solo puede ser 'simulado' correctamente llamando a setup_postdata() y global $post .
  • A continuación, necesita aclararse después de usted mismo llamando a wp_reset_postdata()

El siguiente código proporciona una función para recuperar el contenido de la publicación de la ID de la publicación. Se diferencia de @NickYoung en que el contenido que recibe es no lo que está almacenado en la columna post_content de la tabla de publicaciones, sino que el contenido después ha pasado por el filtro the_content (por ejemplo, códigos cortos analizados, etc.).

El código

/**
 * Display the post content. Optinally allows post ID to be passed
 * @uses the_content()
 * @link http://stephenharris.info/get-post-content-by-id/
 * @link https://wordpress.stackexchange.com/questions/142957/use-the-content-outside-the-loop
 * @param int $id Optional. Post ID.
 * @param string $more_link_text Optional. Content for when there is more text.
 * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
 */
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
    global $post;
    $post = get_post($post_id);
    setup_postdata( $post, $more_link_text, $stripteaser );
    the_content();
    wp_reset_postdata( $post );
}
    
respondido por el Stephen Harris 04.05.2014 - 12:28
0

Puede usar get_page () o get_post () para sacar el contenido del bucle

//For page
$page_id = 1;
$get_page_object = get_page( $page_id );
$page_object = $get_page_object->post_content;
echo $newpagecString = substr($page_object, 0, 100);
//For post
$post_id = 2;
$get_post_object = get_post( $post_id );
$post_object = $get_post_object->post_content;
echo $newpostcString = substr($post_object, 0, 100);
    
respondido por el Maidul 30.04.2014 - 22:05

Lea otras preguntas en las etiquetas