友好的URL结构中添加参数的WordPress方法
P粉019353247
P粉019353247 2024-01-16 16:14:09
0
1
442

我建立了一个 Wordpress 网站,其中有一个名为“Nieuwsberichten”的页面。 网址看起来像

https://www.example.com/newsitems

此页面是动态的,我需要一个名为“news_page”的额外参数

https://www.example.com/news/?news_page=recent

上面的 URL 不友好,因此我为此创建了一个重写规则,并添加了变量“news_page”。

functions.php

function add_query_vars($vars){   
    $vars[] = 'news_page';     
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars', 10, 1 );

function rewrite_paged(){
    add_rewrite_rule('^nieuwsberichten/([0-9]+)/?', 'nieuwsberichten?news_page=$matches[1]', 'top');
}
add_action('init', 'rewrite_paged');

此后我刷新了永久链接 菜单 -> 设置 -> 永久链接 -> 保存

如果我浏览到

https://www.example.com/news/recent/

它将重定向到

https://www.example.com/newsmessages/

我的代码中遗漏了什么?

希望有人能帮我解决这个问题

P粉019353247
P粉019353247

全部回复(1)
P粉541551230

在正则表达式部分,您仅指定数字条目,但在网址中传递“最近”等文本。也许错误就在这里。请检查它是否适用于数字输入,如果是问题,请编辑您的表达式。另外,您指定的 url 结构似乎不太正确。

无论如何,我不确定我的答案,所以如果您能在检查后确认,我将不胜感激。

https://developer.wordpress.org/reference/functions/add_rewrite_tag/一个> 这可能是您应该用于添加参数的函数。该函数也不需要 query_var 函数。所以我认为你不需要使用其他功能。

我现在无法检查或测试。如果您的问题没有解决,我会详细研究一下。

你可以像这样使用它:

function rewrite_paged(){
        add_rewrite_tag('%news_page%', '([^/]+)');
        add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'nieuwsberichten?news_page=$matches[1]', 'top');
}
add_action('init', 'rewrite_paged');

此外,如果您指向一个页面,则需要使用页面 ID 或页面名称。博客或产品等。如果是,仍然会有您需要使用的参数,您应该将此网址重定向到index.php。我留下一个例子供您理解我在说什么,并且为了便于您查看,您可以查看您网站上的重写内容,如下所示:

查看示例:

global $wp_rewrite;
print_r($wp_rewrite);

示例:

匹配页面名称:

add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?pagename=nieuwsberichten&news_page=$matches[1]', 'top');

匹配页面 ID:

add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?page_id=10000&news_page=$matches[1]', 'top');

如果您在 WordPress 之外安装,您的示例是正确的,但如果它在 WordPress 内部,则所有请求都应定向到 index.php。因此,您可能需要像这些示例一样编辑我给出的代码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!