是否有办法让Wordpress知道当我输入:Localhost/foo/bar
FOO是一个实际的页面(用我自己的脚本作为模板呈现)BAR被赋予VAR, FOO上显示的所有东西都依赖于它
?现在,当我输入localhost/foo得到页面时,一切正常。但是Localhost/foo/bar会产生404错误。
显然,没有BAR页面存在。如何将BAR从被渲染为页面渲染为变量?
我的解决方案是:
在functions.php
文件中添加以下代码:
add_action( 'init', 'custom_rewrite_rules' );
function custom_rewrite_rules() {
add_rewrite_rule(
'^(katalog)/([^/]+)/?$',
'index.php?pagename=$matches[1]&bar_variable_name=$matches[2]',
'top'
);
}
add_action( 'init', 'custom_rewrite_tags');
function custom_rewrite_tags() {
add_rewrite_tag( '%bar_variable_name%', '([^/]+)' );
}
注意:在上面的代码中,我将bar
变量命名为bar_variable_name
。如果您愿意,可以将变量名替换为更符合您需要的名称。
注#2:如果您需要将页面重命名为其他内容,则将katalog
替换为新页面的段塞。
完成后,你应该进入你的WordPress仪表板,在"设置/永久链接"中保存你使用的当前设置。这样你将刷新WordPress的重写规则。
然后在你的主题文件夹中,要么创建一个模板页面,要么在你的page.php
文件中,做以下测试,检查你是否在一个与bar
的页面中,bar
的值是什么:
global $wp_query;
if (
isset( $wp_query->query ) &&
key_exists( 'bar_variable_name', $wp_query->query ) &&
! empty( $wp_query->query['bar_variable_name'] )
) {
$image_path = $wp_query->query['bar_variable_name'];
echo "This is my folder name : " . $image_path;
die();
}
注意:如果您替换了预览代码块中的bar_variable_name
,那么也可以通过替换这里的bar_variable_name
来更新此代码。
如果一切顺利,当您访问katalog
页面时,URL中有一个额外的段,您应该在页面中看到段字符串。
例如:如果你访问/catalog/beers/页面,输出应该是:This is my folder name : beers
.
如果您需要的话,那么您可以使用$image_path
作为自定义页面中的变量来显示您喜欢的内容。