亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Wordpress 頁面上的第二個循環不起作用

Wordpress 頁面上的第二個循環不起作用

PHP
DIEA 2024-01-19 15:58:24
免責聲明:我正在嘗試幫助某人向他們的 WordPress 網站添加另一個部分。這段代碼的大部分內容都不是我寫的。我為每個 WP_Query 循環使用不同的自定義帖子類型。兩個循環本身都可以正常工作,但是當我嘗試在同一頁面上運行它們時,第二個循環不顯示任何帖子。我嘗試過的事情:wp_reset_query();wp_reset_postdata();更改 $query 和 $args 的名稱,使每個名稱都是唯一的將重置函數移至 if() 內部(但仍在 while 循環外部)我查看了我能找到的關于該主題的所有帖子并嘗試了所有建議,但沒有任何效果。我肯定錯過了一些東西..也許另一雙眼睛可以幫助我找到問題。我在下面發布了相關代碼。/* ---- First Loop ---- */<?php    $args = array(        'post_type'      => 'casestudies',        'post_status'    => 'publish',        'order'          => 'ASC',        'posts_per_page' => -1    );                            $query = new WP_Query( $args );    if ( $query->have_posts() ) :        while ( $query->have_posts() ) :             $query->the_post();            /* ---- Do Stuff ---- */        endwhile;                   endif;    wp_reset_query();?>/* ---- Second Loop ---- */<?php    $args = array(        'post_type'      => 'whitepages',        'post_status'    => 'publish',        'order'          => 'ASC',        'posts_per_page' => -1    );                            $query = new WP_Query( $args );    if ( $query->have_posts() ) :        while ( $query->have_posts() ) :             $query->the_post();            /* ---- Do Stuff ---- */                                            endwhile;    endif;    wp_reset_query();?>編輯:我在已接受答案的幫助下找到了解決方案。我在下面的另一個答案中發布了我所做的修復所有內容的操作。
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

剛剛在我的本地環境中嘗試了這段代碼,唯一的變化是數組post_type中的值$args,它似乎工作正常。

我建議做什么,如下所示:

  1. 仔細檢查該值是否post_type與帖子類型的 slug 相匹配。這可能只是一個拼寫錯誤的情況,多年來,這件事讓我絆倒的次數比我愿意承認的還要多。
    您可以通過查找functions.php函數register_post_type調用來找到它。

  2. 檢查該帖子類型下是否確實有已發布的帖子。再說一遍,我也曾多次遇到過這種情況。

此外,您可能需要考慮稍微整理一下代碼,以防止可能丟失某些內容并使其在將來更易于管理。
循環訪問可用的帖子類型數組,然后WP_Query為每個可用的帖子類型構造一個數組,這是我首選執行您所描述的任務,它看起來像這樣:

<?php

? ? $post_types? ? ? ?= array( 'yourposttype', 'yourotherposttype' );

? ? $common_arguments = array(

? ? ? ? 'post_status'? ? => 'publish',

? ? ? ? 'order'? ? ? ? ? => 'ASC',

? ? ? ? 'posts_per_page' => -1,

? ? );

?>


<?php foreach ( $post_types as $post_type ): ?>

? ? <?php

? ? ? ? $post_type_argument = array( 'post_type' => $post_type );

? ? ? ? $arguments? ? ? ? ? = array_merge( $common_arguments, $post_type_argument );

? ? ? ? $query? ? ? ? ? ? ? = new WP_Query( $arguments );

? ? ?>


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

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


? ? ? ? ? ? <?php // Example output ?>

? ? ? ? ? ? <?php the_title(); ?>


? ? ? ? <?php endwhile; ?>

? ? ? ? <?php wp_reset_postdata(); ?>

? ? <?php endif; ?>

? ??

<?php endforeach; ?>

這樣,如果您需要顯示另一種帖子類型,您可以將其添加到$post_types數組中,而無需復制代碼塊。

最后,當您使用時,您是正確的wp_reset_postdata(),這是在循環自定義之后運行的推薦函數WP_Querywp_reset_query()在這種情況下有點多余。


查看完整回答
反對 回復 2024-01-19
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

使用<?php wp_reset_postdata(); ?>while 循環后解決了這個問題。



查看完整回答
反對 回復 2024-01-19
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

我找到了解決辦法!事實上,并不是 WP_Query() 循環導致了問題,而是保存正在顯示的帖子的輪播。每個循環都會將自定義帖子放入輪播中,并且我為頁面上的每個輪播重復使用相同的 id。這對 JavaScript 來說效果不佳。

為了糾正這個問題,我在主 js 文件中復制了 JavaScript 函數,但將 #original-name 更改為 #other-name。我還將 carousel id 更改為 other-name。

現在一切都按預期進行。


查看完整回答
反對 回復 2024-01-19
  • 3 回答
  • 0 關注
  • 204 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號