dacă postarea are conținut

6 nov. 2013, 02:50:05
Vizualizări: 59.7K
Voturi: 12

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

0
Toate răspunsurile la întrebare 4
0
24

Conținutul este o proprietate a obiectului post, nu a obiectului de interogare.

Folosește $post sau get_post() în schimb:

if( '' !== get_post()->post_content ) {
// fă ceva
}
6 nov. 2013 03:03:26
3

Ce zici de

if ( !empty( get_the_content() ) ){ 
//cod 
}
10 sept. 2017 19:18:33
Comentarii

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.

Johansson Johansson
10 sept. 2017 23:14:57

Funcționează pentru mine! ești sigur? Cel puțin în PHP 7

Juan Solano Juan Solano
11 sept. 2017 11:04:20

@Johansson Nu sunt sigur de unde ai obținut asta sau dacă omit ceva, dar desigur că poți, deoarece get_the_content() returnează un șir care poate fi gol sau nu. Nu trebuie confundat cu the_content(), care afișează un șir.

Gerard Reches Gerard Reches
3 apr. 2024 11:22:11
5

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 } ?>
11 iul. 2019 11:23:11
Comentarii

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

Thomas Fellinger Thomas Fellinger
10 mar. 2020 09:59:59

a treia oară aici

Thomas Fellinger Thomas Fellinger
19 aug. 2020 08:52:43

a 4-a oară, acum este 2020

Thomas Fellinger Thomas Fellinger
18 oct. 2020 13:28:40

Locul 5 în 2021 pare să fie o dată pe an

Thomas Fellinger Thomas Fellinger
23 mar. 2021 17:45:58

Locul 6 din nou în 2021...

Thomas Fellinger Thomas Fellinger
26 nov. 2021 11:03:05
0

Această metodă funcționează și testează elemente precum tag-uri de paragraf goale sau &nbsp; î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('&nbsp;','',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.

1 dec. 2015 18:33:31