網站 / 客製化”近期文章” 版本2

前一版的程式,其實跟用小工具的方式差不多

小工具是一個分類一個選單

程式碼也是一樣,有幾個分類就要重複幾次

原本的方式是 ul 底下的li 進行foreach迴圈

既然都要重複

那其實整體的架構也是可以用foreach迴圈的方式來取得每一層所需的資料

備註一下用到的PHP的語法

1.陣列宣告

跟JavaScript差不多,但是有細節上的差異,而且變數符號$不能省略

$a=array("第一個値","第二個値","第三個値");

$a[0]=第一個値、$a[1]=第二個値、$a[2]=第三個値。

2.foreach迴圈

foreach ( 陣列 as $value )
 ...some code...

foreach ( 陣列 as $key => $value )
 ...some code...

3.參考資料

JS 創建與宣告陣列 Array

PHP Array() 陣列函數用法

PHP 字串連接

PHP foreach

JavaScript foreach

4.修正版本的近期文章程式碼

#2-#5 增加了分類資料的陣列,然後進行#6-#23的迴圈

原本的程式碼帶入兩個變數

$cONE,$cList進行foreach所產生的每一筆資料=分類名稱,

$cID ,透過 get_cat_ID($cONE)取得類別的ID,這是之後要帶入wp_get_recent_posts()裡的參數

#16-#19 再進行一次迴圈來建構 li的資料,這是沿用前一版的程式碼

備註:後來在”在WordPress开发中使用esc_html()等函数转义输出,提高安全性“看到輸出的資料要轉譯,可以保證輸出資料跟原本網頁內容不會產生衝突

因此將文字類型的字串利用esc_html()轉譯輸出;超連結的字串則是用esc_url()進行轉譯

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<ul>
<?php
$cList =array('君子不器','我的相機','自學玩玩','隨手寫寫');
//echo $cList[0];

foreach( $cList as $cONE ){ ?>
<li class="cat-item"><a href="/category/<?php echo esc_html($cONE)?>"><?php echo esc_html($cONE)?></a>
		<ul class='children'>
			<?php
			$cID = get_cat_ID($cONE);
			$recent_posts = wp_get_recent_posts(array(
			 'numberposts' => 4, // Number of recent posts thumbnails to display
			 'category' => $cID,
			 'post_status' => 'publish' // Show only the published posts
			));
			foreach( $recent_posts as $post_item ){ ?>
			<li class="cat-item">
				<a href="<?php echo esc_url(get_permalink($post_item['ID'])) ?>"><?php echo esc_html($post_item['post_title']) ?></a>
			</li>
			<?php } //end foreach ?>
		</ul>
</li>
<?php } //end foreach ?>
</ul>