3 回答

TA貢獻1863條經驗 獲得超2個贊
剛剛在我的本地環境中嘗試了這段代碼,唯一的變化是數組post_type
中的值$args
,它似乎工作正常。
我建議做什么,如下所示:
仔細檢查該值是否
post_type
與帖子類型的 slug 相匹配。這可能只是一個拼寫錯誤的情況,多年來,這件事讓我絆倒的次數比我愿意承認的還要多。
您可以通過查找functions.php
函數register_post_type
調用來找到它。檢查該帖子類型下是否確實有已發布的帖子。再說一遍,我也曾多次遇到過這種情況。
此外,您可能需要考慮稍微整理一下代碼,以防止可能丟失某些內容并使其在將來更易于管理。
循環訪問可用的帖子類型數組,然后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_Query
,wp_reset_query()
在這種情況下有點多余。

TA貢獻1966條經驗 獲得超4個贊
我找到了解決辦法!事實上,并不是 WP_Query() 循環導致了問題,而是保存正在顯示的帖子的輪播。每個循環都會將自定義帖子放入輪播中,并且我為頁面上的每個輪播重復使用相同的 id。這對 JavaScript 來說效果不佳。
為了糾正這個問題,我在主 js 文件中復制了 JavaScript 函數,但將 #original-name 更改為 #other-name。我還將 carousel id 更改為 other-name。
現在一切都按預期進行。
- 3 回答
- 0 關注
- 204 瀏覽
添加回答
舉報