si la entrada tiene contenido
Estoy configurando un sitio WordPress de una sola página. Estoy obteniendo algunas páginas listadas en mi sitio que no tienen contenido. Por ejemplo, obtengo la página de blog vacía así como la plantilla del blog. Entonces pensé que podría incluir una verificación para ver si la página tiene contenido y si lo tiene, mostrar esa información. Estoy teniendo problemas para hacerlo funcionar. Estoy usando una consulta personalizada para la página de inicio. Así que pensé que podría hacer esto
if ( $page_query->have_posts() ) : while ( $page_query->have_posts() ) : $page_query->the_post();
if( $page_query->post_content != ''){
get_template_part( 'content', get_post_format() );
}
endwhile; endif;
el problema es que obtengo un error en ese código y no puedo entender por qué. Obtengo este error
Notice: Undefined property: WP_Query::$post_content in

No puedes pasar una función a empty()
como variable. Primero debes almacenarla en una variable. Incluso así, no funcionará, ya que podrían haber algunos espacios vacíos en tu contenido.

He implementado algunos métodos "has_content()" varias veces a lo largo de los años y siempre hay suficiente tiempo entre cada implementación como para que necesite buscar un poco para responder esta pregunta.
De cualquier forma, esta es mi solución, que me gustaría encontrar aquí la próxima vez - así que es como referencia.
Todas las funciones "dentro del loop" pueden ser reemplazadas por el "post_content" de un objeto post.
En functions.php y archivos similares:
// escribir dentro del loop
$the_content = apply_filters('the_content', get_the_content());
if ( !empty($the_content) ) {
echo $the_content;
}
// con objeto post por ID
$post = get_post(12); // post específico
$the_content = apply_filters('the_content', $post->post_content);
if ( !empty($the_content) ) {
echo $the_content;
}
Como función:
// llamar dentro del loop
function mytheme_has_content(){
return !empty(apply_filters('the_content', get_the_content()));
}
Plantilla dentro del loop:
<?php if ( $customQuery->have_posts() ) {?>
<?php while ( $customQuery->have_posts() ) {
$customQuery->the_post(); ?>
<?php $the_content = apply_filters('the_content', get_the_content()); ?>
<!-- html -->
<?php if ( !empty($the_content) ) { ?>
<div class="content">
<?php echo $the_content; ?>
</div>
<?php } ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
<?php } ?>

esta es la segunda vez que consulto esto, dejaré un comentario cada vez que vuelva con fines estadísticos

Esto también funciona, y comprueba cosas como párrafos vacíos o
en el contenido que podrían hacer fallar una comprobación normal. Consulta http://blog.room34.com/archives/5360 para ver la idea original - solo lo registro aquí para poder encontrarlo de nuevo. :O)
Coloca esto en tu functions.php:
function empty_content($str) {
return trim(str_replace(' ','',strip_tags($str))) == '';
}
Y coloca esto donde quieras ejecutar la comprobación:
if (function_exists('empty_content') && empty_content($post->post_content)) { ... }
Esto devolverá true
si el contenido está vacío, false
si no lo está.
