前一版的程式,其實跟用小工具的方式差不多
小工具是一個分類一個選單
程式碼也是一樣,有幾個分類就要重複幾次
原本的方式是 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.參考資料
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> |