it-swarm.dev

Untergeordnete Seiten-Schleife

Wenn jemand helfen kann, wäre das großartig.

Ich habe einen Codeausschnitt gefunden, der genau das tut, was ich will. Er listet die Unterseiten des übergeordneten Elements auf, fügt eine Miniaturansicht hinzu, falls vorhanden, und fügt einen benutzerdefinierten Auszug hinzu.

Das Problem ist jedoch, dass ich nicht einzelne <?php post_class(); ?> zu einem div innerhalb der Schleife hinzufügen kann, indem ich die Klasse des übergeordneten Elements verwende und sie für die Unterseiten wiederhole.

<?php
$child_pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = ".$post->ID."    AND post_type = 'page' ORDER BY menu_order", 'OBJECT');    ?>
<?php if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?>

<?php
// Must be inside a loop.
if ( has_post_thumbnail($pageChild->ID) ) {
get_the_post_thumbnail('page-thumb-mine');
}
//  else {
//  echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) . '/images/icon-cropped.png" />';
//  }
?>

<div <?php post_class(); ?>>    
<?php echo get_the_post_thumbnail($pageChild->ID, 'page-thumb-mine'); ?>
<h3><a href="<?php echo get_permalink($pageChild->ID); ?>" rel="bookmark" title="<?php     echo $pageChild->post_title; ?>"><?php echo $pageChild->post_title; ?></a></h3>
<?php echo excerpt(28); ?>
</div>
</div>
<?php endforeach; endif;
?>

Jede Hilfe wäre dankbar!

Vielen Dank

Andy

3
Andy

Ich bin mir ziemlich sicher, dass das Problem darin besteht, dass einige Template-Tags auf der globalen Variablen $post basieren. Wenn Sie setup_postdata() so verwenden, wie Sie jetzt sind, wird sich der $post nicht ändern. Wenn Sie alle Instanzen von $pageChild durch $post ersetzen, solltefunktionieren.

Ich würde jedoch dringend empfehlen, die WP_Query-Klasse zu verwenden und stattdessen Ihre Post-Daten mit 'the_post ()' einzurichten. Hier ist das Äquivalent zu Ihrem Code, aber mit WP_Query:

<?php
$args = array(
    'post_parent' => $post->ID,
    'post_type' => 'page',
    'orderby' => 'menu_order'
);

$child_query = new WP_Query( $args );
?>

<?php while ( $child_query->have_posts() ) : $child_query->the_post(); ?>

    <div <?php post_class(); ?>>  
        <?php  
        if ( has_post_thumbnail() ) {
            the_post_thumbnail('page-thumb-mine');
        }
        ?>
        <h3><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
        <?php the_excerpt(); ?>
    </div>
<?php endwhile; ?>

<?php
wp_reset_postdata();

Hinweis: Ich habe ein paar andere Dinge in Ihrem Postleitzahl aufgeräumt. Außerdem habe ich Ihre benutzerdefinierte excerpt() -Funktion durch the_excerpt() ausgetauscht, sodass der Beispielcode für alle funktioniert, die ihn kopieren/einfügen möchten.

Verweise:

https://codex.wordpress.org/Class_Reference/WP_Query

https://codex.wordpress.org/Function_Reference/setup_postdata

8
BigBagel