要在 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');
這樣就能判斷如果該分類七天內有新文章,就會顯示圖示提醒了。