gpt4 book ai didi

Wordpress - 将查询字符串作为基于斜杠的 URL 传递

转载 作者:行者123 更新时间:2023-12-04 17:08:54 28 4
gpt4 key购买 nike

我正在尝试将参数传递给 wordpress 页面。我不想将它作为查询字符串传递。我想作为基于斜杠的 url 传递。

例子:

http://localhost/mysite/pagename?user=myname

进入
http://localhost/mysite/pagename/myname

如何使用我的 functions.php 实现此目的? wordpress 自定义主题中的文件?

最佳答案

正在经历 rewrite_rules_array 似乎不需要 - 重写规则杀死/删除比添加规则更多......

使用 functions.php
使用 WordPress 主题函数 ( functions.php ),有 2 个步骤将基于斜杠的 url 传递为 GET任何重写规则更改后的页面参数:
刷新重写规则 == 在管理员中重新保存永久链接设置!

第 1 步 - add_rewrite_rule(...)

当试图让它工作时,这可能有点令人困惑,因为 add_rewrite_rule(...) 的文档不太清楚重写的目标位置以及如何通过 slug 定位页面...只有一个 重要 请注意,每次更改类似内容时都需要刷新重写规则...

这对我有用(WP 4.3.3)

add_action('init', function(){
add_rewrite_rule(
'^yourPageSlug/([^/]+)([/]?)(.*)',
//!IMPORTANT! THIS MUST BE IN SINGLE QUOTES!:
'index.php?pagename=yourPageSlug&user=$matches[1]',
'top'
);
});

参数/参数:
  • 正则表达式(“regexp”)匹配特定的 url 结构
  • 重写你应该定位到的模板index.php (如果它不是外部链接),因为 WordPress 中所有的 url 重写都是通过它来的
  • 使用 pagename GET参数设置为您的页面 slug
  • 使用占位符 $matches[indexStartingFrom1]对于正则表达式匹配 - 真正的 只是一个占位符! ==> 使用单引号包裹这个字符串!
  • 'top' or 'bottom'. 'top' will take precedence over WordPress's existing rules, where 'bottom' will check all other rules match first. Default: "bottom"


  • 第 2 步 - add query_vars

    上面的步骤只是一个目标,而不是传递变量本身......

    由于 WordPress 会清除 $_GET参数“按原样”扔掉(因为它找不到任何适合它的东西),我们需要通过添加我们的 custom query_vars 来告诉 WordPress 我们想要使用它们。 .

    我们仍然无法通过 $_GET 检索它们超全局, 但是,我们将能够使用 get_query_var(...) 获取它们

    我们告诉 WordPress 我们想要使用那些 GET通过添加 参数query_vars 筛选
    add_filter('query_vars', function( $vars ){
    $vars[] = 'pagename';
    $vars[] = 'user';
    return $vars;
    });

    最后一步:刷新重写规则 == 保存永久链接设置!

    用法

    然后得到 GET 的值参数“用户”使用:
    get_query_var( 'user' ) 

    使用 .htaccess
    如果可以,也可以使用 .htaccess规则(考虑到 /mysite/ 是您的重写基础)
    RewriteRule ^pagename/([^/]+)$  pagename?user=$1

    关于Wordpress - 将查询字符串作为基于斜杠的 URL 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29076665/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com