我正在使用WordPress,我已经将此函数添加到我的主题中的functions.php(基本的21):
function custom_rewrite_rule() {
add_rewrite_rule('^profile/([^/]+)/(\d+)/?', 'index.php?page_id=104&name=$matches[1]&age=$matches[2]', 'top');
flush_rewrite_rules(); // Flush rewrite rules to test the changes immediately
}
add_action('init', 'custom_rewrite_rule');
function display_profile_content() {
$name = sanitize_text_field(get_query_var('name'));
$age = intval(get_query_var('age'));
echo 'Name: ' . $name . '<br>';
echo 'Age: ' . $age . '<br>';
}
add_shortcode('profile_content', 'display_profile_content');
</code>
在特定的页面中,我正确地添加了简码,我的意图是,例如,如果转到
Website.com/page/Poul/21
应显示:
Name:life's a game
年龄:21岁
但无论我在URL中输入什么,它总是显示:
Name:zhang cheng
年龄:0
故障排除到目前为止:
我已经保存了永久链接页面以刷新该高速缓存。禁用所有插件更改为这个基本的主题,但似乎没有什么工作。
我该怎么办?
1条答案
按热度按时间pinkon5k1#
WP_Query不允许任何url参数,它有白名单参数列表,您可以使用钩子
query_vars
更改这些参数。链接到query_vars
现在为了让它像这样工作。
此外,您可能误解了正则表达式,因此rewrite_rules采用配置文件/{name}/{age}
所以你的URL应该是
Website.com/profile/Poul/21
你可以在你的主题的index.php中添加这段代码来测试。