要在 WordPress 的選單修改結構,可以透過打開 functions.php 並加入 wp_nav_menu_objects。
像這樣就能調整每個 menu item 的 html:
function custom_menu_icons($items, $args) { foreach ($items as &$item) { // 對每個選單進行修改 } return $items; } add_filter('wp_nav_menu_objects', 'custom_menu_icons');
比如我這樣就能夠把每個 menu 前面加上一個 <span class="menu-item-icon"></span>
function custom_menu_icons($items, $args) {
foreach ($items as &$item) {
// 在菜单项标题前添加 <span> 元素
$item->title = '<span class="menu-item-icon"></span>' . $item->title;
}
return $items;
}
add_filter('wp_nav_menu_objects', 'custom_menu_icons', 10, 2);
如果我想判斷近期有新文章,我先設定是七天內,可以再加上這個 function:
function has_new_posts_in_category($category_id) { $args = array( 'cat' => $category_id, 'date_query' => array( array( 'after' => '7 days ago', ), ), 'posts_per_page' => 1, 'orderby' => 'date', 'order' => 'DESC', ); $query = new WP_Query($args); return $query->have_posts(); }
再把這段跟 wp_nav_menu_objects 結合,會變成這樣:
function custom_menu_icons($items) {
foreach ($items as &$item) {
if(has_new_posts_in_category($item->object_id)){
$item->title = '<span class="menu-item-icon"><img src="icon.png"></span>' . $item->title;
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'custom_menu_icons');
這樣就能判斷如果該分類七天內有新文章,就會顯示圖示提醒了。