問題描述

可以將 current-menu-item 作為 php 變量嗎?

我通過菜單項目 「我們支持的博物館」 列出類別博物館,所以我想要得到我們支持的博物館,並將其顯示在某個地方?

任何幫助讚賞!

最佳解決方案

這是可以通過過濾 wp_nav_menu_objects,這是檢查哪個項目是當前菜單項的最簡單的地方,因為 WordPress already added the classes for you

add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
    foreach ( $sorted_menu_items as $menu_item ) {
        if ( $menu_item->current ) {
            $GLOBALS['wpse16243_title'] = $menu_item->title;
            break;
        }
    }
    return $sorted_menu_items;
}

您現在可以使用這個新的全局變量,而不是正常的標題。簡單的例子:

add_filter( 'single_cat_title', 'wpse16243_single_cat_title' );
function wpse16243_single_cat_title( $cat_title )
{
    if ( isset( $GLOBALS['wpse16243_title'] ) ) {
        return $GLOBALS['wpse16243_title'];
    }
    return $cat_title;
}

當然這隻有在顯示標題之前顯示菜單才有用。如果你以前需要它 (也許在<title> 元素中),你應該是 first render the menu and then display it later

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。