se il post ha contenuto
Sto configurando un sito WordPress one-page. Sto ottenendo alcune pagine elencate nel mio sito che non hanno contenuto. Ad esempio, ottengo la pagina del blog vuota e il template del blog. Quindi ho pensato di inserire un controllo per verificare se la pagina ha contenuto e in caso affermativo procedere con la pubblicazione di quelle informazioni. Sto avendo problemi a farlo funzionare. Sto usando una query personalizzata per la homepage. Quindi ho pensato di fare questo
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;
il problema è che ottengo un errore su quel codice e non riesco a capire perché. Ottengo questo errore
Notice: Undefined property: WP_Query::$post_content in

Non puoi passare una funzione a empty()
come variabile. Devi prima memorizzarla in una variabile. Anche in quel caso, non funzionerà, poiché potrebbero esserci alcuni spazi vuoti nel tuo contenuto.

Ho implementato alcuni metodi "has_content()" diverse volte negli anni e c'è sempre abbastanza tempo tra un'implementazione e l'altra, quindi devo ricercare un po' per rispondere a questa domanda.
In ogni caso - questa è la mia soluzione, che vorrei trovare la prossima volta qui - quindi è per riferimento.
Tutte le funzioni "all'interno del loop" possono essere sostituite dalla proprietà "post_content" di un oggetto post.
In functions.php e file simili:
// scrivi all'interno del loop
$the_content = apply_filters('the_content', get_the_content());
if ( !empty($the_content) ) {
echo $the_content;
}
// con oggetto post tramite id
$post = get_post(12); // post specifico
$the_content = apply_filters('the_content', $post->post_content);
if ( !empty($the_content) ) {
echo $the_content;
}
Come funzione
// chiamata all'interno del loop
function mytheme_has_content(){
return !empty(apply_filters('the_content', get_the_content()));
}
Template all'interno 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 } ?>

questa è la seconda volta che consulto questo, lascerò un commento ogni volta che torno per scopi statistici

Anche questo funziona, e verifica elementi come paragrafi vuoti o
nel contenuto che potrebbero far fallire un controllo normale. Vedi http://blog.room34.com/archives/5360 per l'idea originale - lo registro qui solo per poterlo ritrovare in futuro. :O)
Inserisci questo nel tuo functions.php:
function empty_content($str) {
return trim(str_replace(' ','',strip_tags($str))) == '';
}
E inserisci questo dove vuoi eseguire il controllo:
if (function_exists('empty_content') && empty_content($post->post_content)) { ... }
Questo restituirà true
se il contenuto è vuoto, false
se non lo è.
