web-dev-qa-db-fra.com

the_excerpt () ne montrant pas l'extrait manuel pour Pages

J'ai activé la fonctionnalité d'extrait pour les pages de mon thème wordpress -

add_action( 'init', 'my_add_excerpts_to_pages' );
    function my_add_excerpts_to_pages() {
         add_post_type_support( 'page', 'excerpt' );
    }

Cela a activé la zone d'extraits lors de l'ajout ou de la mise à jour de pages dans la zone d'administration, ce à quoi je m'attendais.

J'essaie ensuite d'afficher chaque extrait sur la page d'accueil de mon site comme suit -

$child_pages = $wpdb->get_results("SELECT *    FROM $wpdb->posts WHERE post_parent  = 64    AND post_type = 'page' ORDER BY post_title", 'OBJECT');    ?>
            <?php if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?>
            <div class="memberHover" id="member-<?php echo $pageChild->ID; ?>">
              <div><h4><?php echo $pageChild->post_title; ?></h4>
                <p><?php the_excerpt(); ?></p>
              </div><?php echo get_the_post_thumbnail($pageChild->ID, '312,156'); ?>
            </div>
        <?php endforeach; endif; ?>

Le problème est que même si un extrait manuel est rempli dans la zone d'administration, il crée toujours l'extrait automatique lors de son affichage sur la page d'accueil. Il semble que cela ne tienne pas compte du fait qu’il existe un extrait personnalisé dans la base de données pour chaque élément.

Toute aide est grandement appréciée!

Merci Tristan

2
TGuimond

Parce que je suis très attentif à la façon de faire des choses dans Wordpress quand il s’agit de faire une boucle, je ne pouvais pas m'empêcher de poster une meilleure façon de faire la boucle ci-dessus dans votre question car voir ce que vous avez fait ressemble à beaucoup de travail inutile pour vous-même.

Vous avez déjà répondu à votre propre question, mais pour pouvoir utiliser la fonction the_excerpt (), j'ai réécrit le code ci-dessus pour utiliser l'objet WP_Query, ce qui, à mon avis, est une meilleure façon de traiter les problèmes liés à la mention plus facile). Vous n'avez vraiment besoin d'utiliser des requêtes manuelles de ce type que lorsque vous voulez interroger quelque chose que la classe WP_Query ne peut pas.

<?php
$args = array('post_parent' => 64, 'orderby' => 'title', 'order' => 'ASC', 'post_type' => 'page', 'post_status' => 'publish');
$child_pages = new WP_Query($args);
?>

<?php if ($child_pages->have_posts()): ?>

<?php while($child_pages->have_posts()): $child_pages->the_post(); ?>
            <div class="memberHover" id="member-<?php the_ID(); ?>">
              <div><h4><?php the_title(); ?></h4>
                <p><?php the_excerpt(); ?></p>
              </div><?php echo get_the_post_thumbnail($post->ID, '312,156'); ?>
            </div>
<?php endwhile; ?>

<?php endif; ?>
2

J'ai déjà eu ce problème. La façon dont vous avez géré la situation est correcte, mais vous pouvez également le faire, ce qui est essentiellement la même chose (mais un peu différent):

<?php echo get_the_excerpt();?>
4
willbeeler

Fixe :)

J'ai mis à jour <p><?php the_excerpt(); ?></p> pour devenir <p><?php echo $pageChild->post_excerpt; ?></p> et le problème a été résolu.

0
TGuimond