wordpress登陸前登陸后顯示不同的頂部菜單

在WordPress中讓“未登錄”和“已登錄”用戶看到不同的頂部菜單,最干凈、最安全、最可維護的做法是:

在同一個菜單位置(themelocation)里,根據is_user_logged_in()動態切換菜單。

下面給出三種常見實現方式,按推薦程度排序。任選其一即可,不要混用。

方案一:在主題或子主題里用filter切換(推薦)

為你的頂部菜單在主題里注冊一個菜單位置(如果還沒注冊):

// functions.php
add_action( 'after_setup_theme', function () {register_nav_menus( ['primary' => __( '頂部菜單', 'your-textdomain' ),] );
} );

用wp_nav_menu_args過濾器在渲染前判斷是否登錄,并替換菜單:

// functions.php
add_filter( 'wp_nav_menu_args', function ( $args ) {// 只針對前端、只針對我們關心的菜單位置if ( ! is_admin() && 'primary' === $args['theme_location'] ) {// 未登錄時顯示哪個菜單$guest_menu = get_term_by( 'slug', 'guest-menu', 'nav_menu' ); // 也可以用 id// 已登錄時顯示哪個菜單$user_menu  = get_term_by( 'slug', 'user-menu',  'nav_menu' );if ( ! is_user_logged_in() && $guest_menu ) {$args['menu'] = $guest_menu->term_id;} elseif ( is_user_logged_in() && $user_menu ) {$args['menu'] = $user_menu->term_id;}}return $args;
} );

在后臺“外觀→菜單”里分別建好兩個菜單,并記錄它們的別名(slug)或ID,對應到上面的$guest_menu、$user_menu即可。

注意:這兩個菜單都不要勾選任何菜單位置,完全由代碼接管。

模板里照常調用:

wp_nav_menu( [ 'theme_location' => 'primary' ] );

優點

不依賴插件,邏輯集中,可版本控制。

菜單本身仍由WordPress管理,客戶日后改菜單不用改代碼。

方案二:用同一個菜單+條件標簽隱藏/顯示條目

如果你兩個菜單80%都一樣,只是個別條目不同,可以只建一個菜單,然后:

在“外觀→菜單”給需要隱藏的條目加CSS類:

未登錄條目加hide-logged-in,已登錄條目加hide-logged-out。

在主題額外輸出一段CSS:

add_action( 'wp_head', function () {if ( is_user_logged_in() ) {echo '<style>.hide-logged-in{display:none!important}</style>';} else {echo '<style>.hide-logged-out{display:none!important}</style>';}
} );

優點:只有一個菜單,維護簡單。

缺點:條目其實仍在HTML里,只是display:none,安全性/SEO略差。

方案三:用插件(不想寫代碼時)

“ConditionalMenus”

“UserMenus”

安裝后可在菜單位置里給不同角色/登錄狀態指派不同菜單。

缺點:多一個插件,代碼控制權低。

常見坑

緩存插件/全頁緩存

如果站點啟用了全頁緩存(WPSuperCache、WPRocket、CloudflareAPO等),需要把登錄cookie設為不緩存或者緩存分用戶組,否則訪客會相互看到對方的菜單。

WPRocket:開啟“為登錄用戶單獨緩存”。

Cloudflare:用BypassCacheonCookie規則匹配wordpress_logged_in_*。

使用了頁面構建器(Elementor、Bricks等)

這些構建器往往用自己的Nav組件,需要在其設置里找“Visibility”或“DisplayCondition”,把上述條件標簽is_user_logged_in()填進去即可。

一句話總結

最推薦方案一:注冊一個菜單位置,用wp_nav_menu_args過濾器根據is_user_logged_in()把$args[‘menu’]換成不同的菜單ID。

原文

http://www.dulizhan.bj.cn/wordpress/239.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91699.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91699.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91699.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【昇騰推理PaddleOCR】生產級部署方式

已知的在昇騰上推理Paddle OCR有三種方法&#xff1a; 概要&#xff1a; PyTorch官方提供了昇騰插件包&#xff0c;安裝后雖然可以支持PytorchOCR和PaddlePaddle的推理任務&#xff0c;但性能較低。換句話說&#xff0c;PaddlePaddle框架層面支持了昇騰&#xff0c;但具體到某個…

LangChain摘要記憶組件的使用與解析

01. 摘要記憶組件的類型 在 LangChain 中使用緩沖記憶組件要不就保存所有信息&#xff08;占用過多容量&#xff09;&#xff0c;要不就保留最近的記憶信息&#xff08;丟失太多重要信息&#xff09;&#xff0c;那么有沒有一種情況是既要又要呢&#xff1f; 所以折中方案就出…

NAT與智能選路

1、NAT 基礎概念核心作用&#xff1a;私網地址無法在 Internet 上直接使用和分配&#xff0c;NAT 通過將私有地址與公有地址及端口進行轉換&#xff0c;實現私網與公網的通信。轉換示例&#xff1a;內網用戶&#xff08;10.1.1.1&#xff09;訪問外網 FTP Server&#xff08;12…

【05】VisionMaster入門到精通——圓查找

文章目錄1 運行參數先檢測出多個邊緣點然后擬合成圓形&#xff0c;可用于圓的定位與測量 1 運行參數 先檢測出多個邊緣點然后擬合成圓形&#xff0c;可用于圓的定位與測量——運行參數 扇環半徑——圓環ROI的內外圓半經&#xff1b; 邊綠類型 最強——只檢測掃描范圍內梯度最…

p5.js 用 beginGeometry () 和 endGeometry () 打造自定義 3D 模型

點贊 關注 收藏 學會了 在 p5.js 的 3D 繪圖中&#xff0c;這兩個函數是一對 “黃金搭檔”&#xff1a; beginGeometry()&#xff1a;像一個 “3D 模型的開關”&#xff0c;調用它之后&#xff0c;你畫的所有簡單 3D 形狀&#xff08;比如球體、圓錐&#xff09;都會被 “…

(9)NMPC非線性模型預測控制及機械臂ROS控制器實現

前言 本篇介紹Nonlinear Model Predictive Control&#xff0c;非線性模型預測控制&#xff0c;MPC是一種現代先進的控制方法&#xff0c;而NMPC特指對非線性模型的控制&#xff0c;其核心思想是在每個控制周期內利用系統的非線性模型及損失函數&#xff0c;預測未來一段時間內…

達夢數據庫備份與還原終極指南:從基礎到增量策略實戰

第一部分&#xff1a;備份與還原核心原理 一、備份還原本質解析數據存儲機制 數據存儲在物理文件頁中&#xff08;最小單位4K-32K&#xff09;有效數據頁 文件描述頁 已分配使用頁日志優先原則&#xff1a;操作先寫REDO日志再更新數據文件三大核心操作操作作用關鍵特性備份復…

設計模式篇:在前端,我們如何“重構”觀察者、策略和裝飾器模式

設計模式篇&#xff1a;在前端&#xff0c;我們如何“重構”觀察者、策略和裝飾器模式 引子&#xff1a;代碼里“似曾相識”的場景 作為開發者&#xff0c;我們總會遇到一些“似曾相識”的場景&#xff1a; “當這個數據變化時&#xff0c;我需要通知其他好幾個地方都更新一…

Node.js 服務可以實現哪些功能

以下是 Node.js 服務可以實現的 100 個功能&#xff0c;涵蓋 Web 開發、工具鏈、系統集成、自動化等方向&#xff0c;按類別分類整理&#xff1a;一、Web 開發相關 RESTful API 服務GraphQL 服務實時聊天應用&#xff08;WebSocket/Socket.IO&#xff09;博客/CMS 系統電子商務…

如何安裝和使用 Cursor AI 編輯器

在軟件開發領域&#xff0c;幾乎每天都有新工具涌現&#xff0c;找到最適合您工作流程的工具可能會改變游戲規則。Cursor 是一款 AI 驅動的代碼編輯器&#xff0c;其革命性的 API 管理插件 EchoAPI 就是其中的代表。它們強強聯手&#xff0c;承諾在一個強大的平臺內簡化您的編碼…

LangChain框架概念及簡單的使用案例

一、LangChain介紹LangChain是一個強大的用于開發大模型應用程序的框架&#xff0c;為開發提供豐富的工具和組件&#xff0c;使得構造復雜的自然語言處理變得更加高效和便捷。它允許開發者將大語言模型與其他數據源工具集成&#xff0c;從而創建出能處理各種任務的智能體應用&a…

安卓audio 架構解析

audio_port_handle_t ? 定義&#xff1a;audio_port_handle_t標識音頻設備&#xff08;如揚聲器、耳機&#xff09;或虛擬端口&#xff08;如遠程 submix&#xff09;。它在設備連接或策略路由時由AudioPolicyManager分配&#xff0c;例如通過setDeviceConnectionState()動態注…

GitHub 上 Star 數量前 8 的開源 MCP 項目

原文鏈接&#xff1a;https://www.nocobase.com/cn/blog/github-open-source-mcp-projects。 MCP 這個詞真正被廣泛提起&#xff0c;是在 2025 年年初&#xff0c;尤其是在 AI 工具開發圈。3 月&#xff0c;一場圍繞 “MCP 是否能成為未來標準協議” 的爭論徹底點燃了討論熱度…

【數據結構與算法】數據結構初階:排序內容加餐(二)——文件歸并排序思路詳解(附代碼實現)

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 &#x1f349;學習方向&#xff1a;C/C方向 ??人生格言&#xff1a;為天地立心&#xff0c;為生民立命&#xff0c;為…

Jetson Orin NX/NANO+ubuntu22.04+humble+MAVROS2安裝教程

MAVROS2目前不是官方提供的標準&#xff0c;主要區別還是通信機制的不同&#xff0c;以及API接口的區別&#xff0c;在使用的過程中&#xff0c;根據對應的版本安裝即可&#xff0c;此處進提供簡易的二進制安裝方法&#xff0c;源碼安裝暫不提供&#xff0c;前去使用mavros即可…

Ubuntu 安裝 ns-3 教程

Ubuntu 安裝 ns-3最全 教程 1. 環境更新 sudo apt update sudo apt install git2. Ns3 最低依賴要求 2.1 安裝依賴 安裝依賴網址&#xff1a;根據自己安裝的版本安裝對應依賴。 https://www.nsnam.org/wiki/Installation Ubuntu/Debian/Mint 以下軟件包列表在 Ubuntu 22.…

《林景媚與命運解放者》

《林景媚與命運解放者》——當數據庫成為命運的主宰&#xff0c;誰將成為人類自由意志的解放者&#xff1f;《林景媚數據庫宇宙》系列第十二部第一章&#xff1a;解放者的召喚公元 2098 年&#xff0c;隨著“命運終結者”的威脅被解除&#xff0c;PostgreSQL Quantum Engine&am…

linux編譯基礎知識-頭文件標準路徑

&#x1f4c2; ??1. 系統路徑結構差異?? 要查看 GCC 的默認頭文件搜索路徑&#xff0c;可通過以下方法操作&#xff08;以 Linux 環境為例&#xff09;&#xff1a; ??1. 查看 C 語言頭文件路徑?? gcc -v -E -xc - < /dev/null 2>&1 | grep -A 100 "#in…

離線語音芯片有哪些品牌和型號?

離線語音芯片的品牌有很多&#xff0c;型號也有很多&#xff0c;因為離線語音芯片的市場很大&#xff0c;幾乎所有的想要語音控制的產品都可以通過增加一顆離線語音芯片來實現語音控制的能力&#xff0c;今天主要提到的就是離線語音芯片品牌廠家之一的唯創知音。唯創知音發展歷…

Linux 軟件包管理

Linux 軟件包管理 分析 RPM 包 Linux 發行版本以 RHEL 為代表的發行版本&#xff0c;使用rpm包管理系統&#xff1a; RHEL (Red Hat Enterprise Linux&#xff09;Fedora&#xff08;由原來的RedHat桌面版本發展而來&#xff0c;免費版本&#xff09;CentOS&#xff08;RHEL的…