看WordPress的官網的主題開發資料總結
循環loop
- Loop是WordPress用來顯示文章的PHP代碼,使用The Loop,WordPress會處理每個文章以顯示在目前頁面上
- 循環的概念
循環是面向對象和全局變量的組合
循環的兩個重要全局變量是:
$ wp_query,它是類WP_Query的一個對象,持有一個WP資料庫查詢結果,其中$ wp_query-> posts,一個單獨的WP_Post數組。
$ post是 WP_Post類的目前對象
檢視WP_Post類的時候,post對象就是儲存在資料庫裡的post日志對象,對象的參數就是資料庫的元素:
關于wp_post對象的詳細參數:https://codex.wordpress.org/Class_Reference/WP_Post#Member_Variables_of_WP_Post
PS:
預設情況下,所有模闆标簽都依賴于$ post全局變量,并且$ post全局變量由_post()設定/修改,後者從$ wp_query全局變量擷取其資料。$ post也由WP_Query :: the_post()設定/修改,如在輔助循環中使用的那樣。
- 使用循環(全部顯示):
請務必在主題模闆的頂部包含對标題模闆的調用。如果您在自己的設計中使用The Loop(并且您自己的設計不是模闆),請将WP_USE_THEMES設定為false:
<?php define('WP_USE_THEMES',false); get_header(); ?>
在首頁模闆中輸入:
<?php if(have_posts()) :while (have_posts()) :the_post();?>
//隻顯示日志的标題
<?php the_title()?>
<?php endwhile;?>
<?php endif;?>
- 使用循環從某些類别中排除文章(選擇顯示)
排除了類别3和8的文章:直接使用内部查詢函數,修改查詢參數,對查詢本身做出修改:
//直接聲明查詢類WP_Query的對象,并初始化對象,排除3、8類别
<?php $ query = new WP_Query('cat = -3,-8'); ?>
<?php if($ query-> have_posts()):while($ query-> have_posts()):$ query-> the_post(); ?>
<?php th_title()?>
<?php the_content(); ?>
<?php endwhile?>
<?php endif; ?>
PS:WordPress将排除類别3和類别8中的所有文章,即使在檢視類别存檔時!
多重循環Multiple Loops
- 執行個體
<?php rewind_posts(); ?>
<?php while(have_posts()):the_post(); ?>
<! - ...... - >
<?php endwhile; ?>
或者
//擷取special_cat類别中的最後10篇文章。
<?php query_posts('category_name = special_cat&posts_per_page = 10'); ?>
<?php while(have_posts()):the_post(); ?>
<! - ...... - >
<?php endwhile; ?>
嵌套循環(不太了解)
eg:
$ my_query = new WP_Query('cat = 3');
if($ my_query-> have_posts()){
while($ my_query-> have_posts()){
$ my_query-> the_post();
内容();
}
}
wp_reset_postdata();
幫助了解循環過程的一張圖

關于模闆
- 一個簡單的WordPress網頁由三個部分組成:頭部結構、内容結構、底部結構。這些結構都是由你目前使用的WordPress主題模闆檔案生成的。
-
基本模闆檔案index.php是開始檔案。這個檔案有兩個主要功能:
包含或者調用其它模闆檔案;
包含WordPress主循環以從資料庫擷取資訊(日志、頁面、分類等等資訊)。
-
網頁中的内容是由各個模闆檔案在背景生成的。主題檔案和樣式表存儲在一起就成為了一個WordPress主題(如header.php 、footer.php、searchform.php等模闆檔案)
ps:像header.php 這樣WordPress的标準模闆檔案,導入的時候直接使用WordPress的内部函數get_header(); 像sidebar.php自定義的模闆檔案需要使用PHP的include(‘src’)将外部代碼包含進來(或者使用include_once()一次調用外部代碼)
-
特殊模闆:single.php、page.php、archive.php模闆檔案
URL的尋找規則:
例如,當使用者點選日志标題的時候,WordPress會認為使用者希望在單獨日志頁面上打開文檔。于是WordPress的模闆分級模式會優先使用single.php模闆檔案生成頁面(如果你的主題裡有single.php的話),而不是使用index.php模闆檔案生成。同樣,如果使用者點選了特别分類的連結,WordPress将使用category.php模闆檔案來顯示,如果這個模闆檔案不存在,WordPress将尋找archive.php模闆檔案,如果這個模闆檔案也不存在,WordPress将使用主模闆index.php來顯示頁面。
自己通過設定page.php頁面,當通路某個頁面的URL的時候,WordPress會優先加載page.php的頁面而不是index的頁面,如果使用搜尋部落格,放回的頁面是會将結果放回加載到search.php頁面中,還在研究看關于模闆層次結構的跳轉的問題
關于模闆層次結構:https://developer.wordpress.org/themes/basics/template-hierarchy/