wordpress循环中的循环错误

Wordpress loop within loop error

本文关键字:循环 错误 wordpress      更新时间:2023-09-26

在我的父页面上,我有一个自定义页面模板调用另一个模板:

if( have_posts() ): while( have_posts() ): the_post(); ?>
<div class="wrapper">

<?php get_template_part( 'template', 'page-section' ); ?>
<?php endwhile; endif; wp_reset_postdata(); ?>

在模板页面部分.php中,我有以下内容:

<?php
/*
Template Name: Page Section
*/
$args = array(
    'post_parent' => 9,
    'post_type' => 'page',
    'orderby' => 'menu_order',
    'posts_per_page' => -1,
    'order' => 'ASC'
);
$wpq = new WP_Query( $args ); ?>
<?php while ( $wpq->have_posts() ) : $wpq->the_post(); ?>
<?php if ( $post->ID == 101 ) {
    include( 'template-slider.php' );
} ?> 
<div class="page-section">
    <h1><?php the_title(); ?></h1>
    <?php /* The loop */ ?>
        <?php the_content(); ?>
</div>
<?php endwhile; wp_reset_postdata();?>

在模板滑块.php中,如下:

<div id="slider-container">
    <ul id="slider">
        <? $query = get_pages( 
            array(
                'post_type' => 'slides',
                'orderby' => 'menu_order',
                'posts_per_page' => -1
            ));

            foreach( $query as $post ) { 
            setup_postdata( $post ); ?>
            <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail', $thumbsize[0] ); ?>
            <li>
            <img src="<?php echo $image[0]; ?>">
            </li>
            <?php } wp_reset_postdata(); ?>
        </ul>   
    </div>      

问题是,一旦wordpress在滑块模板中点击循环,它为帖子内容回显的信息就不是父内容的子帖子,而是父内容。

谁能告诉我我做错了什么?我想不通!

这只是一个未经测试的猜测,但请尝试以下操作:

模板页面部分.php

$wpq = get_posts( $args );
if( $wpq ) {
    foreach( $wpq as $p )
    {
        if ( $p->ID == 101 ) {
            include( 'template-slider.php' );
        }
        ?>
            <div class="page-section">
                <h1><?php echo $p->post_title; ?></h1>
                <?php echo $p->post_content; ?>
            </div>
        <?php
    }
}

模板滑块.php

<div id="slider-container">
    <ul id="slider">
        <?php 
        $query_pages = get_pages( 
            array(
                'post_type' => 'slides',
                'orderby' => 'menu_order',
                'posts_per_page' => -1
        ));
        if( $query_pages )
        {
            foreach( $query_pages as $pg ) { 
                $image = wp_get_attachment_image_src( get_post_thumbnail_id( $pg->ID ), 'single-post-thumbnail', $thumbsize[0] ); ?>
                <li>
                <img src="<?php echo $image[0]; ?>">
                </li><?php 
            } 
        } ?>
    </ul>   
</div>

参考:什么时候应该使用 WP_Query vs query_posts() vs get_posts()?