WordPress为所有子页面设置静态页面/模板

时间:2022-02-16 作者:jmcgrory

我有一个wordpress安装,我想为任何到达某个页面的子页面的人提供一个静态页面/模板,例如。

https://example.com/products/*
将在Wordpress中提供一个php模板(甚至只是一个静态文件),而无需更改slug,因此如下所示:

https://example.com/products/some-product-slug
https://example.com/products/another-product-slug
都将提供相同的文件,而不更改/重定向URL。

该模板还可以在内部处理404,因此类似于slug的:

https://example.com/products/does-not-exist
仍将提供相同的静态模板。

这可以在wordpress中配置吗?

假设重定向到的页面/模板与帖子类型或层次结构完全无关,因为它基于slug提供外部资源。

2 个回复
最合适的回答,由SO网友:jmcgrory 整理而成

好的,我通过结合几个不同的wordpress功能解决了这个问题:

捕获模板有条件地包含add_filter( \'template_include\', \'...\' );, 在我的例子中,基于预期URI模式的正则表达式匹配locate_template(\'example-template.php\') 然后解析我的(基本上)静态模板example-template.php 从外部检索资源这必须在内部处理404,因为响应总是假设找不到帖子,我总是设置标题响应(之前get_header 在模板中202 找到资源的位置if ($resource) { @header($_SERVER[\'SERVER_PROTOCOL\'] . \' 202 Accepted\', true, 202); }有点复杂,但对于我所需要的工作来说,真的没有太多。

SO网友:serhumanos

在函数中。php我有以下代码:

add_filter( \'template_include\', \'template_subpage\', 99 );
function template_subpage( $template ) {

    global $post;
    if($post->post_parent == $selected_parent_id){ // the id of the parent

        $template = get_template_directory() . \'/template-subpage.php\'; // template to assign to subpages
    }
    return $template;
}

相关推荐

如何设置PHPUnit PolyFill以在Mac上进行测试?

通过brew安装了带有PHP的mac开发机器。我正在尝试设置测试工具。我成功地搭建了测试脚手架wp cli并管理以获取bin/install-wp-tests.sh 做自己的事。但我有个错误phpunit tests/test-sample.php:Error: The PHPUnit Polyfills library is a requirement for running the WP test suite. If you are trying to run plugin/theme int