web-dev-qa-db-fra.com

Comment modifier ce modèle de page pour afficher des extraits de sous-page (et non des extraits)?

J'ai créé un modèle de page qui montre les sous-pages liées en utilisant ce morceau de code:

<?php
        $mypages = get_pages( array( 'child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_or

        foreach( $mypages as $page ) {
                $content = $page->post_content;
                if ( ! $content ) // Check for empty page
                        continue;

                $content = apply_filters( 'the_content', $content );
?>
        <h2><a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo $page->post_title; ?></a><
        <div class="entry"><?php echo $content; ?></div>
<?php
}
?>

J'ai obtenu le code à partir d'ici et l'ai modifié pour que les sous-pages d'ordre soient dans l'ordre de leur ordre de page.

Cela fonctionne, mais affiche le contenu de toutes les pages. Je veux seulement qu'il montre des extraits de page, avec l'image présentée.

(J'ai activé les extraits de page dans l'éditeur en ajoutant add_post_type_support( 'page', 'excerpt' ); à functions.php)

Comment modifier ce modèle de page pour afficher des extraits de sous-page?

3
paradroid

Modifier légèrement ces lignes

$content = $page->post_content;
if ( ! $content ) // Check for empty page
    continue;

$content = apply_filters( 'the_content', $content );

à

$content = $page->post_excerpt;
if ( ! $content ) // Check for empty excerpt content & fallback to full content
    $content = $page->post_content;
if ( ! $content ) // Check for empty page
    continue;

$content = apply_filters( 'the_excerpt', $content );

UPDATE: pour ajouter l'utilisation de l'image sélectionnée

<div class="image"><?php echo get_the_post_thumbnail($page->ID);?></div>
3
Mridul Aggarwal

Un exemple retravaillé de votre extrait

Cet exemple vous montre comment vous pouvez utiliser des plug-ins qui intègrent leurs actions dans des filtres ou des points d'ancrage. Il permet également d’utiliser une protection par mot de passe pour le poste enfant incl. chaînes de traduction par défaut.

$wpse69264_child_pages = get_pages( array(
     'child_of'    => in_the_loop ? get_the_ID() : $post->ID // Are we in the loop?
    ,'sort_column' => 'menu_order'
    ,'sort_order'  => DESC
) );

foreach ( $wpse69264_child_pages as $child )
{
    // Default filters: Excerpt length - Also takes languages in account where 1 char = 1 Word (like Chinese)
    $output = $child->post_excerpt ? $child->post_excerpt : apply_filters( 'excerpt_length', $child->post_content );

    if ( post_password_required( $child ) )
    {
        // Default translation
        _e( 'There is no excerpt because this is a protected post.' );
        continue;
    }

    // Just in case    
    $output = force_balance_tags( $output );

    // Default filters:
    $output = apply_filters( 'get_the_excerpt', $output );
    echo apply_filters( 'the_excerpt', $output );
}
unset( $wpse69264_child_pages, $child );
2
kaiser