dacă postarea are conținut
Creez un site WordPress one-page. Primesc în lista site-ului meu câteva pagini care nu au conținut. De exemplu, primesc pagina de blog goală precum și șablonul blogului. Așa că m-am gândit să introduc o verificare pentru a vedea dacă pagina are conținut și dacă are, să afișez acea informație. Am probleme să o fac să funcționeze. Folosesc un query personalizat pentru homepage. Așa că m-am gândit să fac asta
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;
problema este că primesc o eroare la acest cod și nu-mi dau seama de ce. Primesc această eroare
Notice: Undefined property: WP_Query::$post_content in

Nu poți pasa o funcție către empty()
ca variabilă. Mai întâi trebuie să o stochezi într-o variabilă. Chiar și așa, nu va funcționa, deoarece pot exista spații goale în conținutul tău.

Am implementat de mai multe ori metode "has_content()" de-a lungul anilor și de fiecare dată a trecut suficient timp între implementări, așa că trebuie să caut din nou răspunsul la această întrebare.
Oricum - acesta este soluția mea, pe care aș dori să o găsesc data viitoare aici - deci este pentru referință.
Toate funcțiile "în interiorul buclei" pot fi înlocuite cu "post_content" al unui obiect post.
În functions.php și fișiere similare:
// scrie în interiorul buclei
$the_content = apply_filters('the_content', get_the_content());
if ( !empty($the_content) ) {
echo $the_content;
}
// cu obiect post după id
$post = get_post(12); // post specific
$the_content = apply_filters('the_content', $post->post_content);
if ( !empty($the_content) ) {
echo $the_content;
}
ca funcție
// apelează în interiorul buclei
function mytheme_has_content(){
return !empty(apply_filters('the_content', get_the_content()));
}
șablon în interiorul buclei:
<?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 } ?>

aceasta este a doua oară când consult acest lucru, voi lăsa un comentariu de fiecare dată când revin în scop statistic

Această metodă funcționează și testează elemente precum tag-uri de paragraf goale sau
în conținut care ar putea cauza o verificare normală să eșueze. Vezi http://blog.room34.com/archives/5360 pentru ideea originală - o înregistrez aici ca să o pot găsi din nou. :O)
Pune acest cod în functions.php:
function empty_content($str) {
return trim(str_replace(' ','',strip_tags($str))) == '';
}
Și pune acest cod acolo unde vrei să rulezi verificarea:
if (function_exists('empty_content') && empty_content($post->post_content)) { ... }
Aceasta va returna true
dacă conținutul este gol, false
dacă nu este.
