簡體   English   中英

2 WP_Query在同一頁面上循環自定義帖子類型

[英]2 WP_Query loops for custom post types on the same page

我很難解決這個問題,因為我無法解決這個問題。 我在同一頁面上使用2個WP_Query循環來自定義帖子類型(滑塊和組合)。 我還為自定義帖子類型創建了一個自定義元框。

所以這里是index.php的代碼,我使用它作為Home模板來顯示滑塊和項目組合項:

<?php
/*

    Template Name: Home

*/
?>
<?php get_header(); ?>

    <div id="header-container">
        <div id="header">

            <?php rm_slider(); ?> // This is where Im calling slider function to display the slider.

        </div>
    </div>

    <div id="content">
        <div class="container">

            <?php $loop = new WP_Query(

                array(
                    'post_type' => 'portfolio',
                    'posts_per_page' => -1
                ));
            ?>

            <?php if ($loop->have_posts()) { ?>

            <ul class="services">

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

                    <li>
                        <?php if (has_post_thumbnail()) : the_post_thumbnail(); ?>

                            <?php else: ?>

                                <p>No portfolio image</p>

                        <?php endif; ?>

                        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

                        <p>Client: <?php echo get_post_meta($post->ID, '_project_client', true); ?></p>
                        <p>Client website: <?php echo get_post_meta($post->ID, '_project_client_url', true); ?></p>
                    </li>

                <?php endwhile; } ?>

                <?php wp_reset_query(); ?>

    <?php get_footer(); ?>

這是slider.php的代碼:

<?php

// create slider markup
function rm_slider() {

    $slider_loop = new WP_Query(

        array(
            'post_type' => 'slider',
            'posts_per_page' => -1
        ));

    if ($slider_loop->have_posts()) { ?>

        <div id="slider">
            <div class="slider-container">

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

                       <div>

                            <?php if (has_post_thumbnail()) : the_post_thumbnail(); ?>

                            <?php else: ?>

                                <p>No slider image</p>

                            <?php endif; ?>

                                <div class="slide-info">
                                    <h2><?php the_title(); ?></h2>
                                    <?php the_content(); ?>
                                </div>

                            <?php

                                $slide_url = get_post_meta($post->ID, '_slide_url', true);

                                if ($slide_url != '') { ?>

                                    <a href="<?php echo $slide_url; ?>" class="more-info"><?php echo $slide_url; ?></a>

                                <?php } else { echo 'empty?'; ?>

                            <?php

                                }

                            ?>

                        </div>

                <?php endwhile; ?>

            </div><!-- .slider-container -->
        </div><!-- #slider -->

    <?php }

    wp_reset_query();
}

?>

我確定自定義元框的實際內容是存在的,因為當我只使用1個循環時,它會完美顯示。 但是當使用兩個循環時,它僅顯示投資組合部分的自定義后期元。 我整天都在努力解決這個問題,請幫助我! 謝謝 :)

奇怪,嘗試改變這個:

$slide_url = get_post_meta($post->ID, '_slide_url', true);
echo get_post_meta($post->ID, '_project_client', true);

為了這:

$slide_url = get_post_meta(get_the_ID(), '_slide_url', true);
echo get_post_meta(get_the_ID(), '_project_client', true);

您也可以嘗試獲取所有post meta只是為了看看它是否全部存在。

$meta = get_post_meta( get_the_ID( ) );
print_r($meta); // prints the meta array to the screen, check your data is there.

據我所知,在每個WP_Query()你應該使用:

wp_reset_postdata();

wp_reset_query(); 嘗試一下這個。

wp_reset_query()$wp_query和全局發布數據恢復到原始主查詢。 如果必須使用該函數,則應在query_posts( )之后調用此函數。 如下面的示例所示,強烈建議pre_get_posts查詢之前使用pre_get_posts過濾器來更改查詢參數。

wp_reset_postdata()用於在使用新WP_Query的輔助查詢循環之后恢復主查詢循環的全局$post變量。 它將$ post變量恢復到主查詢中的當前帖子。

我還建議你嘗試將可能的冗余變量名稱(如$loop更改$portfoliowLoop等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM