每個類別顯示最新的帖子
預設情況下,您的 WordPress 主部落格頁面會依日期降序顯示您最近的貼文。但是,如果您在網站上使用類別,並且您的讀者想要查看每個類別中的新內容,您可能希望您的部落格頁面看起來有所不同。
在本教程中,我將向您展示如何做到這一點。我將演示如何:
- 識別您部落格上的所有類別
- 顯示每個帖子的最新帖子,如果帖子有一個,則顯示特色圖片
- 確保多個類別的貼文不會重複
- 添加一些樣式使其看起來不錯
您需要什麼
要學習本教程,您需要:
- WordPress 的開發安裝。
- 已設定一些貼文和類別。我使用了 WordPress 主題單元測試資料中的資料範例。
- 一個主題。我將創建「二十四」主題的子主題。
- 程式碼編輯器。
設定主題
第一步是設定主題。我將創建「二十四」主題的子主題,只包含兩個檔案:style.css
和 index.php
。
這是我的樣式表:
/* Theme Name: Display the Most Recent Post in Each Category Theme URI: http://code.tutsplus.com/tutorials/display-the-most-recent-post-in-each-category--cms-22677 Version: 1.0.0 Description: Theme to accompany tutorial on displaying the most recent post fort each term in a taxonomy for Tutsplus, at http://bitly.com/14cm0yb Author: Rachel McCollin Author URI: http://rachelmccollin.co.uk License: GPL-3.0+ License URI: http://www.gnu.org/licenses/gpl-3.0.html Domain Path: /lang Text Domain: tutsplus Template: twentyfourteen */ @import url('../twentyfourteen/style.css');
我稍後會返回此文件來添加樣式,但現在 WordPress 只需要識別子主題。
建立索引檔案
由於我希望我的主部落格頁面顯示每個類別中的最新帖子,因此我將在我的子主題中建立一個新的 index.php
檔案。
建立一個空的index.php檔
首先,我將複製 24 中的 index.php
文件,並編輯掉循環和其他內容,使其看起來像這樣:
<?php /** * The main template file. * * Based on the `index.php` file from TwentyFourteen, with an edited version of the `content.php` include file from that theme included here. */ ?> <?php get_header(); ?> <div id="main-content" class="main-content"> <?php if ( is_front_page() && twentyfourteen_has_featured_posts() ) { // Include the featured content template. get_template_part( 'featured-content' ); } ?> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> </div> </div> <?php get_sidebar( 'content' ); ?> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
識別類別
第一步是確定部落格中的類別。緊接著打開 <div id="content">
標籤,加入以下內容:
<?php $categories = get_categories(); foreach ( $categories as $category ) { } ?>
這使用 get_categories()
函數來取得部落格中的類別清單。預設情況下,這將按字母順序獲取,並且不會包含任何空類別。這對我有用,所以我不會添加任何額外的參數。
然後我使用 foreach ( $categories as $category ) {}
# 告訴 WordPress 依序執行每個類別並執行大括號內的程式碼。下一步將建立一個針對每個類別執行的查詢。
定義查詢參數
現在您需要定義查詢的參數。在大括號內加入以下內容:
$args = array( 'cat' => $category->term_id, 'post_type' => 'post', 'posts_per_page' => '1', );
這只會取得目前類別中的一篇貼文。
執行查詢
接下來,使用 WP_Query
類別插入查詢:
$query = new WP_Query( $args ); if ( $query->have_posts() ) { ?> <section class="<?php echo $category->name; ?> listing"> <h2 id="Latest-in-php-echo-category-name">Latest in <?php echo $category->name; ?>:</h2> <?php while ( $query->have_posts() ) { $query->the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class( 'category-listing' ); ?>> <?php if ( has_post_thumbnail() ) { ?> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail( 'thumbnail' ); ?> </a> <?php } ?> <h3 class="entry-title"> <a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a> </h3> <?php the_excerpt( __( 'Continue Reading <span class="meta-nav">→</span>', 'twentyfourteen' ) ); ?> </article> <?php } // end while ?> </section> <?php } // end if // Use reset to restore original query. wp_reset_postdata();
這將輸出每篇文章的特色圖片、標題和摘錄,並且每一個都包含在一個連結中。
讓我們看看現在的樣子:
如您所見,有問題。我的頁面顯示每個類別中的最新帖子,但它是重複的帖子,因為有時一個帖子會是多個類別中的最新帖子。讓我們解決這個問題。
避免重複貼文
在新增 get_categories()
函數的行上方,加入以下行:
$do_not_duplicate = array();
這會建立一個名為 $do_not_duplicate
的空數組,我們將使用它來儲存每個貼文輸出的 ID,然後檢查稍後查詢的任何貼文的 ID 是否在其中該陣列。
接下來,在查詢選項下方新增一行,因此前兩行如下所示:
<?php while ( $query->have_posts() ) { $query->the_post(); $do_not_duplicate[] = $post->ID; ?>
這會將目前貼文的 ID 加到 $do_not_duplicate
陣列。
最後,在查詢參數中新增一個參數,以避免輸出此陣列中的任何貼文。您的論點現在如下所示:
$args = array( 'cat' => $category->term_id, 'post_type' => 'post', 'posts_per_page' => '1', 'post__not_in' => $do_not_duplicate );
這使用 'post__not_in'
參數來尋找貼文 ID 陣列。
儲存您的 index.php
檔案並再次查看您的部落格頁面:
這樣更好了!現在您的貼文不再重複。
#新增樣式
目前,內容有點分散,特色圖片位於貼文標題和摘錄上方。讓我們添加一些樣式以使圖像向左浮動。
在主題的 style.css
檔案中,加入以下內容:
.listing h2 { margin-left: 10px; } .category-listing img { float: left; margin: 10px 2%; } .category-listing .entry-title { clear: none; }
現在內容更適合頁面且佈局更好:
使此技術適應不同的內容類型
您可以調整此技術以處理不同的內容類型或分類法。例如:
- 如果您想要使用自訂分類術語來取代類別,則可以將
get_categories()
替換為get_terms()
並變更'cat'
查詢參數來查找分類術語。 - 如果您使用不同的貼文類型,您可以將類似的程式碼新增至範本檔案中,以顯示該貼文類型,取代
'post_type' => 'post'
參數您的查詢參數與您的貼文類型。 - 如果您想在部落格主頁面中建立一個單獨的頁面來顯示給定分類的任何帖子類型的最新帖子,您可以建立一個分類存檔範本並向其中添加此程式碼的改編版本。 李>
- 您可以更進一步,將此技術用於多個分類法或多個帖子類型,使用嵌套的
foreach
語句來運行多個循環。 - 您可以將上面的程式碼新增至您的
single.php
頁面,以便在貼文內容之後顯示每個類別中最新貼文的連結。如果執行此操作,您需要將目前顯示頁面的 ID 新增至$do_not_duplicate
陣列中。
摘要
有時,以其他方式(而不是簡單地按時間順序)顯示部落格上的最新貼文會很有幫助。在這裡,我演示了一種技術,用於顯示部落格上每個類別中的最新帖子,確保帖子在多個類別中不會重複。
以上是每個類別顯示最新的帖子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java實現的提取關鍵字演算法和應用實例隨著互聯網時代的到來,海量的文本資料對人們的獲取和分析造成了很大的困難,因此需要進行關鍵字提取等自然語言處理技術的研究和應用。關鍵字提取是指從一段文本中提取出最能代表該文本主題的單字或片語,為文本分類、檢索、聚類等任務提供支援。本文介紹了Java實作的幾種關鍵字擷取演算法和應用實例。一、TF-IDF演算法TF-IDF是一種從

win10登入的時候用pin碼也能登陸,但是很多用戶總是容易忘記也不知道該怎麼去關閉,今天就為你們帶來了win10pin碼關閉方法,有需要的小伙伴就快來學習一下吧。 win10pin碼怎麼關閉:1、按下「win+i」開啟windows設置,點選「帳號」。 2.隨後點選左側的「登入選項」再點選右側的「忘記了我的PIN碼」隨後進行微軟帳號驗證。 3.在彈出的視窗點擊「取消」即可關閉PIN碼。

在Go中實作程式碼復用有兩種主要方法:函數:將重複任務封裝在函數中,並在整個專案中重複使用。套件:將相關的程式碼組織在套件中,允許在程式的不同部分重複使用程式碼。

遵循Golang函數命名約定的好處有:確保函數命名一致,提高可讀性。增強可預測性,方便理解函數用途。支援IDE自動補全,節省時間。簡化調試,方便隔離問題。

PHP開發中如何實現百度文心一言隨機語句的關鍵字擷取功能?百度文心一言是一種隨機展示的句子,常用於網站的首頁、登入頁等地方,電影《你的名字》中也應用了這個功能。而其中的關鍵字擷取功能,可以讓展示的句子與網站的內容更相關,增加使用者的閱讀體驗。接下來,我們將介紹如何使用PHP開發來實現這項功能。首先,我們需要取得百度文心一言的API。在百度開放雲端平台(http

ECharts詞雲圖:如何展示資料關鍵字,需要具體程式碼範例引言:隨著大數據時代的來臨,我們面臨的一個重要問題就是如何有效地從海量資料中提取出有用的資訊。而關鍵字的提取就是其中一種常用的方法。在展示關鍵字時,詞雲圖是一種非常直觀且具有藝術性的方式,可以讓人們一眼就能快速理解資料的特徵和關鍵字的重要性。本文將介紹如何使用ECharts來實現詞雲圖的展示,並提供

Go語言中的os.Rename函數可方便地重新命名檔案或目錄,更新檔案或目錄名稱而不遺失資料。它需要兩個參數:oldpath(目前路徑)和newpath(新路徑)。此函數會覆寫現有目標,且只能重新命名相同檔案系統中的檔案或目錄。

C語言是一種被廣泛應用於軟體開發和系統程式設計的高階程式設計語言。它被設計成一種通用的、過程導向的語言,以其簡單易學、執行速度快以及可移植性強而著稱。 C語言有著豐富的構成成分,這些成分相互配合,組成了一個完整的程序。在C語言程式中,最基本的單位是字元和識別符。字元是構成程式文字的最小單位,它可以是字母、數字、符號等。而標識符則是由字母、數字和底線組成的命名,用
