預設情況下,您的 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"> 標籤,加入以下內容:
<pre class='brush:php;toolbar:false;'><?php
$categories = get_categories();
foreach ( $categories as $category ) {
}
?>
</pre>
<p>這使用 <code class="inline">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中文網其他相關文章!

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的作用是通過標籤和屬性定義網頁的結構和內容。 1.HTML通過到、等標籤組織內容,使其易於閱讀和理解。 2.使用語義化標籤如、等增強可訪問性和SEO。 3.優化HTML代碼可以提高網頁加載速度和用戶體驗。

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代碼” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代碼”代碼“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何設計菜單中的虛線分割效果?在設計菜單時,菜名和價格的左右對齊通常不難實現,但中間的虛線或點如何...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。