2个模板1个自定义帖子类型根据url

时间:2021-03-23 作者:Linkref

假设我有一个自定义的帖子类型名称“;“项目”;,是否可以有两个模板,如:

最小模板(包含有关项目的一些信息)完整模板(所有信息),模板根据url选择:

地点com/minimal template/project-1orsite。com/完整模板/项目-1

有可能吗?谢谢

1 个回复
SO网友:nmr

使用query_vars 筛选以添加新的查询变量以存储模板版本(minimal/complete)。

add_filter( \'query_vars\', \'se385568_query_vars\' );
function se385568_query_vars( $vars )
{
    $vars[] = \'tpl\';
    return $vars;
} 
添加重写规则(codex) 识别新的链接格式并设置新创建的查询变量

add_action( \'init\', \'se385568_rewrite_rules\' );
function se385568_rewrite_rules()
{
    $cpt_slug = \'projects\';
    add_rewrite_rule(
        "^(minimal|complete)-template/([^/]+)(?:/([0-9]+))?/?$",
        \'index.php?\'. $cpt_slug .\'=$matches[2]&tpl=$matches[1]&page=$matches[3]\',
        \'top\'
    );
}
使用template_include 筛选以根据查询变量更改加载的模板。

add_filter( \'template_include\', \'se385568_project_template\', 90 );
function se385568_project_template()
{
    $qv = get_query_var(\'tpl\', null);
    if ( empty($qv)  )
        return $template;
    
    //
    // check $qv and return path to the appropriate file
    //
    $template =  dirname(__FILE__) . \'/se385568_minimal_project.php\';

    return $template;
}
请记住在添加代码后刷新重写规则(Dashboard->;Settings->;Permalinks->;Save)。

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?