WordPress開發入門06:條件判斷與迴圈
任何語言都會有條件判斷語句,PHP也不例外。條件語句可以讓你測試某個條件是否為真,然後執行條件為真的程式碼。WordPress中最簡單,最常見的條件語句是 if 語句,或者 **if else **語句。
WordPress中條件語句的常見用途是:檢測是否有可用的釋出文章。虛擬碼就像這樣:
IF (There are posts)
Echo post title
Echo post content
ELSE
Echo “Sorry no posts are available”
如果有,那麼我們可以編寫程式碼來顯示這些文章。
如果沒有,則執行條件語句的else部分,並輸出一條訊息,提示沒有可用的釋出文章。
這個簡單的虛擬碼例子只適用於檢查和顯示單篇文章。但是大多數時候,在WordPress中,我們會把條件語句和迴圈語句結合起來,因為我們要顯示的是文章的列表。
如何將條件語句與簡單迴圈語句相結合
在WordPress中找到的最簡單的迴圈是WHILE迴圈。虛擬碼就像這樣:
IF (There are posts)
WHILE(Have post)
Echo post title
Echo post content
ELSE
Echo “Sorry no posts are available”
只要給定的條件為真,while迴圈就會重複執行相同的程式碼。 所以,如果想要使用迴圈,可以像這樣使用WHILE迴圈。 之前的程式碼只能判斷一篇文章。 而現在的程式碼,只要有文章,我們就會通過程式碼不斷的顯示出來。
不過,這些只是虛擬碼,可能大家還沒有完全理解。 所以讓我們來結合WordPress主題中的一些實際程式碼,看看條件語句和WHILE迴圈是如何結合在一起的。
結合WordPress主題中的條件判斷與迴圈
所以,首先,可以登入WordPress後臺,來到主題,我們切換到 Twenty Fifteen 主題。
然後,我們來到對應的程式碼中,index.php是控制WordPress主頁面的模板。
預設情況下,它將控制部落格的主頁顯示的文章數目。
所以開啟這個檔案,來看看控制它的迴圈是如何工作的:
可以看到這裡以 if 條件語句和 have_posts 模板標籤開頭:
<?php if ( have_posts() ) : ?> /***if 條件語句和 have_posts 模板標籤開頭***/
<?php if ( is_home() && ! is_front_page() ) : ?>
<header>
<h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
</header>
<?php endif; ?>
<?php
// Start the loop.
while ( have_posts() ) : the_post();
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
// End the loop.
endwhile;
// Previous/next page navigation.
the_posts_pagination( array(
'prev_text' => __( 'Previous page', 'twentyfifteen' ),
'next_text' => __( 'Next page', 'twentyfifteen' ),
'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyfifteen' ) . ' </span>',
) );
// If no content, include the "No posts found" template.
else :
get_template_part( 'content', 'none' );
endif; /***endif:表示條件判斷語句的結束***/
?>
拖到最下面,有一個endif:,表示條件語句的結束。所以這是最外層的if條件語句。
在程式碼之間我們可以看到也有else語句。
所以這段程式碼的大致意思是:
如果有文章資料
那麼,這裡會執行到else之前的所有程式碼。
<?php if ( is_home() && ! is_front_page() ) : ?>
<header>
<h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
</header>
<?php endif; ?>
我們可以看到另外一個條件語句是在這裡執行的,如果是home主頁並且不是front page,那麼輸出提示資訊。
// Start the loop.
while ( have_posts() ) : the_post();
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
// End the loop.
endwhile;
然後,可以看到啟動迴圈。當有文章時,則執行以下操作。
所以這個while迴圈語句只是檢查是否有文章。只要我們有顯示的文章,while語句將繼續執行。
然而,可以看到while迴圈中只有一行程式碼:
get_template_part( 'content', get_post_format() );
這行程式碼實際上會把:將要執行的操作放在不同的模板檔案中,該模板檔案將被命名為“content”,後面跟上Post格式。如果進入主題檔案中,可以看到有content-link。content-none,content-page,content-search,還有常規的content:
You must be logged in to view the hidden contents.
所以這裡將根據不同的格式來執行不同型別的檔案。
如果沒有文章資料
那麼就執行這個 get_template_part 找到一個名為(’content’,’none’)的檔案,也就是說,它會執行content-none這個模板檔案。
while語句詳解
為了講解while語句,我們需要在我們的網站上新增了三篇部落格文章。
建立完文章後,進入儀表盤,在“設定”下面的“閱讀”下,我們將部落格文章至多顯示更改為:1
來到部落格首頁,這裡只看到一篇文章,其實,這3篇文章被分開到不同的頁面顯示。
同樣地,如果我改回為10,來到部落格首頁,你會看到部落格首頁會顯示全部的3篇文章。
這就剛好說明了這個while迴圈是如何工作的。
沒有文章資料的情況
如果刪除所有的文章,我們可以首頁提示:未找到
對應程式碼中,就是如果失敗,它將執行else中的語句。其中包括get_template_part(’content’,’none’)。也就是會執行content-none.php。
如果我們開啟了 content-none.php 檔案,我們可以看到它顯示“Nothing Found”(因為我的是中文版,所以會翻譯為“未找到”):
<header class="page-header">
<h1 class="page-title"><?php _e( 'Nothing Found', 'twentyfifteen' ); ?></h1>
</header><!-- .page-header -->
get_template_part()模板標籤
如果你要開發自己的主題,你可能不會在這裡使用 get_template_part 附加模板,你可能會直接放置迴圈所需的實際程式碼。
但是WordPress還是建議大家使用模板檔案包含,而不是將所有程式碼直接包含在主迴圈中。這樣程式碼的結構將會簡單清晰。
相關文章
- python條件判斷與迴圈Python
- Python基礎:條件判斷 & 迴圈Python
- javascript快速入門3--分支判斷與迴圈JavaScript
- 豬行天下之Python基礎——4.1 條件判斷與迴圈Python
- PbootCMS判斷第一個迴圈項,並新增 class條件判斷和標籤boot
- WordPress開發入門07:WP_Query 自定義迴圈
- javascript新手入門之條件語句,迴圈JavaScript
- 人人都能學會的python程式設計教程8:條件判斷與迴圈Python程式設計
- JS的判斷語句:判斷、迴圈JS
- Swift,迴圈及判斷Swift
- Python條件語句與迴圈Python
- Sass學習筆記–初步瞭解函式、運算、條件判斷及迴圈筆記函式
- C語言中迴圈語句while 中判斷條件出現 || 和 && 的區別C語言While
- 六、Vue條件判斷Vue
- Grovvy-條件判斷
- 5.判斷和迴圈
- AWK if(條件)語句與迴圈簡介
- Python 分支、迴圈、條件與列舉Python
- 條件分支與迴圈結構學習
- C語言學習【3】——判斷與迴圈C語言
- 寫給.NET開發者的Python教程(三):運算子、條件判斷和迴圈語句Python
- PHP 條件迴圈鞏固PHP
- JS迴圈和條件分支JS
- lisp 裡的條件判斷Lisp
- Shell 條件判斷總結
- vue.js第四課 條件與迴圈Vue.js
- 前端筆記之JavaScript(三)關於條件判斷語句、迴圈語句那點事前端筆記JavaScript
- Scala與Java差異(二)之條件控制與迴圈Java
- thinkphp-條件判斷-範圍判斷-range標籤PHP
- Laravel 5 判斷條件是否存在Laravel
- mysql 插入時帶判斷條件MySql
- python3.0 -條件判斷Python
- shell迴圈判斷某一目錄下所有檔案大小,並清空滿足條件檔案
- 【小知識】QueryWrapper迴圈or條件APP
- SqlServer中迴圈和條件語句SQLServer
- makefile--if條件判斷語句的語法與使用
- MySQL函式-條件判斷函式MySql函式
- thinkphp-條件判斷-if標籤2PHP