WP url: localhost / page / variable


WP url: localhost / page / variable

是否有办法让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作为自定义页面中的变量来显示您喜欢的内容。