【问题标题】:Getting Wordpress to accept variable URLs让 Wordpress 接受可变 URL
【发布时间】:2014-04-28 18:07:44
【问题描述】:

几个月前,我用纯 PHP 构建了这个主要仪表板 (*)。

我的主要仪表板的一个关键特性是它的 URL 解析非常灵活。参数可以添加到 URL 的末尾,顺序或数量实际上并不重要。请参阅下面的示例。

我目前正在将我的仪表板移植到 Wordpress 系统并希望保持同样的灵活性,但我并不清楚在 Wordpress 中实施这种路由技术的好策略是什么。我应该选择基于.htaccess 的解决方案吗?我应该添加过滤器吗?我应该添加一个动作吗?哪个过滤器或操作看起来最合适?

关于如何正确执行此操作的任何建议?


示例网址 1:

http://www.johnslegers.com/lead-dashboard/

示例网址 2:

http://www.johnslegers.com/lead-dashboard/keyword:Stackoverflow

示例网址 3:

http://www.johnslegers.com/lead-dashboard/keyword:Stackoverflow/language:English

示例网址 4:

http://www.johnslegers.com/lead-dashboard/language:English,Dutch/keyword:Stackoverflow,problem

示例网址 5:

http://www.johnslegers.com/lead-dashboard/value:3500/percentage:5,15,30,50,70/language:English,French,German/keyword:Stackoverflow,problem

示例网址 6:

http://www.johnslegers.com/lead-dashboard/keyword:Stackoverflow,%20programming,%20code,%20Wordpress,%20problem/language:English/currency:US%20Dollars/percentage:5,10,20,50,85/cost:0.9,9,34,108/value:5400

编辑:

(*) Google 决定强加一个RMF policy,要求任何开发人员实现他们想要使用其 Adwords API 的一长串功能。因为我的应用只使用了 Adwords 的一些功能,因此不符合这项政策,Google 不再允许我访问他们的 API。这意味着该工具不再正常运行并且无法修复,除非 Google 决定更改其政策。由于该工具不再正常工作,我删除了该链接。

【问题讨论】:

  • 使用本机重写规则系统,添加自定义过滤器,阅读codex.wordpress.org/Rewrite_API/add_rewrite_rule,这是stackoverflow.com/questions/22115103/…的可能性示例
  • @MichalS :感谢您的链接,但这并没有真正的帮助。如何允许 (1) 在我的 URL 中使用任意数量的参数和 (2) 这些参数的完全随机顺序?
  • 当你总是有“/lead-dashboard/”时,这很容易,按照这个教程wpexplorer.com/the-wordpress-rewrite-api
  • @MichalS :您的教程仅说明了如何以固定顺序传递一个或两个参数。这对我的用例没有帮助。我需要知道如何以随机顺序传递随机数量的参数,如上面的示例所示。当我的 URL 是“leaddashboard/A/B/C/D/E”时,我需要传递“A/B/C/D/E”。当我的 URL 是“leaddashboard/C/D/E”时,我需要传递“C/D/E”。当我的 URL 是“leaddashboard/F/A/C”时,我需要传递“F/A/C”。等
  • 我明白了。我没有给出答案,只是方向。我希望它会有所帮助。如果没有,等我有时间,会写出完整的解决方案并进行测试(在简单的错误完成之后,我永远不会未经测试发布)。

标签: php wordpress .htaccess url-rewriting url-routing


【解决方案1】:

我最终自己解决了这个问题。

要解决我的问题,我只需将以下操作函数添加到我的主题的 functions.php 文件中:

function simulationpage_init() {
    // Remember to flush the rules once manually after you added this code!
    add_rewrite_rule(
            // The regex to match the incoming URL
            'simulatie/.*',
            // The resulting internal URL
            'index.php?pagename=simulatie&data=$matches[1]',
            // This is a rather specific URL, so we add it to the top of the list
            'top');

    flush_rewrite_rules();
}

add_action('init', 'simulationpage_init');

这正是我想要的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2017-04-07
    • 1970-01-01
    • 2014-01-11
    • 2023-03-21
    • 2022-08-05
    • 2011-07-30
    相关资源
    最近更新 更多