如何將自定義項目添加到特定的WordPress菜單


WordPress菜單令人讚嘆。 拖放界面使WordPress主題開發人員和用戶都非常容易。 過去,我們向您展示瞭如何在WordPress中添加自定義菜單以及如何設置自定義菜單的樣式。 菜單的可視界面上的限制之一是,您只能添加鏈接(頁面,類別或自定義鏈接)。 如果要在WordPress菜單中添加自定義項目怎麼辦? 也許您想添加搜索欄或登錄/註銷鏈接,今天的日期或WordPress菜單中的其他任何內容。 僅僅因為沒有視覺界面,並不意味著不可能。 在本文中,我們將向您展示如何利用 wp_nav_menu_items 勾將自定義項添加到所有或特定的WordPress菜單。

注意:本教程是為WordPress主題開發人員準備的,因此希望您了解基本的html / css以及對WordPress主題的工作原理有一定的了解。

顯然,您需要先在主題中啟用自定義菜單,然後才能繼續進行操作。

讓我們從基礎開始。 我們需要將自己的過濾器添加到 wp_nav_menu_items 鉤。 一個示例如下所示:

add_filter( 'wp_nav_menu_items', 'your_custom_menu_item', 10, 2 );
function your_custom_menu_item ( $items, $args ) {
    if (is_single() && $args->theme_location == 'primary') {
        $items .= '
  • Show whatever
  • '; } return $items; }

    現在您可以看到,可以將條件語句與參數theme_location一起使用。 這使您可以根據需要的任何條件來定位特定的菜單位置。 如果您不想要條件語句,則不必使用它。 只需將其添加到特定的菜單位置,反之亦然。

    既然您已經看到了一個基本示例,那麼讓我們為您展示一些具體示例。

    將登錄/註銷鏈接添加到特定的WordPress菜單

    如果要使用戶能夠登錄/註銷,則可以在自定義菜單中添加鏈接的一個位置。 下面的代碼段將在菜單位置“主要”上適當顯示用戶的登錄/註銷鏈接。 您可以根據需要更改菜單位置。

    add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
    function add_loginout_link( $items, $args ) {
        if (is_user_logged_in() && $args->theme_location == 'primary') {
            $items .= '
  • Log Out
  • '; } elseif (!is_user_logged_in() && $args->theme_location == 'primary') { $items .= '
  • Log In
  • '; } return $items; }

    將搜索欄添加到特定菜單

    是否要向特定菜單添加搜索欄? 好吧,不要再進一步了。 您可以通過粘貼以下代碼段來實現:

    add_filter('wp_nav_menu_items','add_search_box_to_menu', 10, 2);
    function add_search_box_to_menu( $items, $args ) {
        if( $args->theme_location == 'primary' )
            return $items."";
    
        return $items;
    }

    將今天的日期添加到特定的WordPress菜單

    下面的代碼段會將今天的日期添加到WordPress菜單中。 您可以根據需要使用“今日日期”手冊來調整代碼。

    add_filter('wp_nav_menu_items','add_todaysdate_in_menu', 10, 2);
    function add_todaysdate_in_menu( $items, $args ) {
        if( $args->theme_location == 'primary')  {
    		
    		$todaysdate = date('l jS F Y');
            $items .=  '
  • ' . $todaysdate . '
  • '; } return $items; }

    我們希望本文將允許開發人員擴展其主題的功能。