You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress新手求助:同一页面如何按菜单来源显示不同文本?

解决WordPress同一页面根据入口菜单显示不同内容的问题

嘿,很高兴能帮到你这个WordPress新手!你的需求完全可以实现,而且确实需要用到一点PHP来处理,核心思路就是通过URL参数追踪用户的入口来源,再根据参数判断显示对应文本,下面给你一步步讲具体实现方法:

步骤1:修改菜单链接,添加URL参数

首先你需要给两个菜单链接加上不同的URL参数,用来区分入口:

  • 打开WordPress后台的「外观」→「菜单」
  • 找到你的两个菜单链接(菜单链接1、菜单链接2),分别编辑它们的URL:
    • 菜单链接1的URL改成:你的目标页面URL?source=link1(比如原来的URL是/about-us,就改成/about-us?source=link1)
    • 菜单链接2的URL改成:你的目标页面URL?source=link2

步骤2:添加PHP代码判断并显示对应文本

这里有两种常用方法,你可以根据自己的情况选择:

方法一:直接修改页面模板文件

如果你熟悉主题模板编辑,可以找到目标页面对应的模板文件(比如page.php或者你为该页面创建的自定义模板),在需要显示文本的位置插入以下代码:

<?php
// 获取URL中的source参数并清洗,提升安全性
$source = isset($_GET['source']) ? sanitize_text_field($_GET['source']) : '';

// 根据参数值显示对应内容
if ($source === 'link1') {
    echo '<p>This is link 1</p>';
} elseif ($source === 'link2') {
    echo '<p>This is link 2</p>';
} else {
    // 用户直接访问页面时的默认内容
    echo '<p>Welcome to this page!</p>';
}
?>

注意:建议使用子主题来修改模板,避免主题更新时丢失自定义代码。

方法二:创建短代码(更适合新手)

如果你不想修改模板文件,可以通过短代码来实现:

  1. 打开WordPress后台的「外观」→「主题文件编辑器」,找到并编辑functions.php文件(同样建议用子主题的functions.php)
  2. 在文件末尾添加以下代码:
function source_based_text_shortcode() {
    // 获取并清洗URL参数,提升安全性
    $source = isset($_GET['source']) ? sanitize_text_field($_GET['source']) : '';
    
    // 根据参数返回对应文本
    switch($source) {
        case 'link1':
            return '<p>This is link 1</p>';
        case 'link2':
            return '<p>This is link 2</p>';
        default:
            return '<p>Welcome to this page!</p>';
    }
}
// 注册短代码
add_shortcode('dynamic_source_text', 'source_based_text_shortcode');
  1. 保存修改后,回到目标页面的编辑器,在需要显示文本的位置插入短代码 [dynamic_source_text] 即可。

补充说明

  • 这里用到的sanitize_text_field()是为了清洗参数,避免潜在的安全问题,建议加上
  • 参数名(source)和参数值(link1/link2)可以根据你的喜好自定义,只要菜单链接和代码里的参数保持一致就行
  • 如果用户直接访问目标页面(没有通过任何菜单链接),会显示默认的欢迎文本,你可以根据需要修改默认内容

这样就能完美实现你的需求啦!

内容的提问来源于stack exchange,提问作者Black Widow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:48:33