si le message a du contenu


9

J'installe un site WordPress d'une page. Je reçois des pages répertoriées dans mon site qui n'ont pas de contenu. Par exemple, j'obtiendrai la page de blog vide ainsi que le modèle de blog. J'ai donc pensé que je pourrais jeter un chèque pour voir si la page a du contenu et si elle va de l'avant et publier cette information. J'ai du mal à le faire fonctionner. J'utilise une requête personnalisée pour la page d'accueil. Alors j'ai pensé que je pouvais faire ça

 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;

le problème est que j'obtiens une erreur sur ce code et je ne peux pas comprendre pourquoi. Je reçois cette erreur

Remarque: propriété non définie: WP_Query :: $ post_content in

Réponses:


14

Le contenu est une propriété de l' postobjet et non de l'objet de requête.

Utilisez $postou à la get_post()place:

if( '' !== get_post()->post_content ) {
// do something
}

3

Qu'en est-il de

if ( !empty( get_the_content() ) ){ 
//code 
}

Vous ne pouvez pas passer une fonction en empty()tant que variable. Vous devez d'abord le stocker dans une variable. Même alors, cela ne fonctionnera pas, car il pourrait y avoir des espaces vides dans votre contenu.
Jack Johansson

1
Cela fonctionne pour moi! êtes-vous sûr? Au moins en PHP 7
Juan Solano

2

Cela fonctionne également et teste des éléments tels que des balises de paragraphe vides ou  dans le contenu, ce qui pourrait entraîner l'échec d'une vérification normale. Voir http://blog.room34.com/archives/5360 pour l'idée originale - il suffit de l'enregistrer ici pour que je puisse la retrouver. : O)

Mettez ceci dans votre functions.php:

function empty_content($str) {
    return trim(str_replace(' ','',strip_tags($str))) == '';
}

Et placez-le là où vous souhaitez exécuter la vérification:

if (function_exists('empty_content') && empty_content($post->post_content)) { ... }

Cela reviendra truesi le contenu est vide, falsesinon.


1

J'ai implémenté quelques méthodes "has_content ()" plusieurs fois au cours des années maintenant et il y a toujours assez de temps entre les deux, donc j'ai besoin de chercher encore un peu pour répondre à cette question.

de toute façon - c'est ma solution, que j'aime trouver la prochaine fois ici - donc c'est pour référence.

toutes les fonctions "à l'intérieur de la boucle" peuvent être remplacées par un objet post "post_content"

dans functions.php et fichiers similaires:

// write inside the loop
$the_content = apply_filters('the_content', get_the_content());
if ( !empty($the_content) ) {
  echo $the_content;
}
// with post object by id
$post = get_post(12); // specific post
$the_content = apply_filters('the_content', $post->post_content);
if ( !empty($the_content) ) {
  echo $the_content;
}

comme fonction

// call inside the loop
function mytheme_has_content(){
  return !empty(apply_filters('the_content', get_the_content()));
}

modèle à l'intérieur de la boucle:

<?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 } ?>

c'est la deuxième fois que je consulte ceci, je laisserai un commentaire à chaque fois que je reviens à des fins statistiques
Thomas Fellinger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.