Diferencia entre the_content() y get_post()

25 ene 2018, 23:21:17
Vistas: 14.3K
Votos: 7

Estoy trabajando en ajustar un tema y necesito dividir el contenido de la publicación para eliminar cierto texto. El siguiente código es el que estoy usando:

$custom_Get_Post_Title = explode('|',get_post()->post_content);
echo "<h4>" . $custom_Get_Post_Title[0] . "</h4>";              
echo "<p>" . $custom_Get_Post_Title[1] . "</p>";

Originalmente, el desarrollador estaba usando el siguiente código para mostrar el contenido de la publicación, pero me dificultaba dividir los datos.

global $post;
setup_postdata($post);
the_content();

MI PREGUNTA: ¿Cuál es la diferencia entre estos dos métodos que ambos recuperan el contenido de la publicación?

0
Todas las respuestas a la pregunta 2
0

post_content es una propiedad del objeto WP_Post. WP_Post es un objeto que representa los datos del post desde la base de datos. Así que post_content contiene el contenido crudo como está almacenado en la base de datos.

the_content() es una etiqueta de plantilla que muestra el contenido del post actual. El 'post actual' es lo que sea que la variable global $post esté configurada en el momento en que se ejecuta la función. La variable global $post normalmente se establece dentro de El Loop con while( have_posts() ) : the_post();.

La diferencia crucial es que the_content() pasa el contenido crudo a través de varios filtros que lo preparan para su visualización. Estos hacen cosas como agregar etiquetas de párrafo, convertir URLs en embeds para cosas como videos, y convertir símbolos como comillas en comillas inteligentes, etc. Muchos plugins también usan este filtro, para agregar cosas como botones de compartir.

Así que si simplemente haces echo de post_content probablemente no se verá correctamente. Puedes imitar la salida de the_content() en datos crudos aplicando el filtro the_content manualmente. Entonces en tu ejemplo harías:

$post = get_post();

$split_content = explode( '|', $post->post_content );

echo '<h4>' . $split_content[0] . '</h4>';              
echo apply_filters( 'the_content', $split_content[1] );
26 ene 2018 06:17:59
0

get_post() es lo mismo que global $post

Funciones como the_content() solo pueden usarse dentro de un bucle.

La función setup_postdata() puede usarse para hacer que esas funciones estén disponibles.

Tu primer ejemplo podría reescribirse así:

global $post;
$custom_Get_Post_Title = explode('|',$post->post_content);

o podrías hacer algo similar con el segundo ejemplo:

global $post;
// setup_postdata($post); <- no es realmente necesario
$theContent = get_the_content($post->ID); // se puede usar el post-id para recuperar específico
$custom_Get_Post_Title = explode('|',get_post()->post_content);
25 ene 2018 23:44:05