You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress:如何为自定义文章类型分配页面模板

为自定义文章类型「services」实现单条目自定义模板的方案

方法一:按文章别名(Slug)创建专属模板

WordPress支持针对自定义文章类型的单条目模板,命名规则为:
single-{自定义文章类型名}-{文章别名}.php

比如你的自定义文章类型是services,某条服务的别名是web-development,只需创建名为single-services-web-development.php的文件,写入你需要的页面结构与代码即可。访问该服务条目时,WordPress会自动优先加载这个专属模板,而非默认的single-services.php。

方法二:按文章ID创建专属模板

若习惯用ID区分条目,可遵循以下命名规则:
single-{自定义文章类型名}-{ID}.php

比如某条服务的ID是123,创建single-services-123.php文件后,WordPress访问该条目时会自动加载此模板。

方法三:添加模板选择器(灵活切换模板)

如果不想为每个服务单独创建文件,可在后台编辑服务条目时添加模板选择下拉框,步骤如下:

  1. 在主题的functions.php中添加代码,为services类型启用模板选择功能:
add_filter('theme_page_templates', 'add_services_templates');
add_filter('template_include', 'load_services_template');

function add_services_templates($templates) {
    // 注册自定义模板,键为模板文件名,值为后台显示的模板名称
    $templates['services-custom-1.php'] = '服务自定义模板1';
    $templates['services-custom-2.php'] = '服务自定义模板2';
    return $templates;
}

function load_services_template($template) {
    global $post;
    // 仅对services类型的文章生效
    if ($post->post_type == 'services') {
        $selected_template = get_post_meta($post->ID, '_wp_page_template', true);
        if ($selected_template && file_exists(get_stylesheet_directory() . '/' . $selected_template)) {
            return get_stylesheet_directory() . '/' . $selected_template;
        }
    }
    return $template;
}
  1. 在主题目录下创建对应的模板文件(比如services-custom-1.php),编写你需要的页面结构。
  2. 编辑服务条目时,在右侧「页面属性」面板(未显示可在右上角选项中勾选)的「模板」下拉框选择对应模板,更新文章后即可生效。

模板加载优先级说明

WordPress加载模板的优先级顺序为:
single-{自定义文章类型名}-{ID}.php > single-{自定义文章类型名}-{slug}.php > single-{自定义文章类型名}.php > single.php

通过以上方法,你可以完全控制每条服务页面的结构与内容,无需依赖文章编辑器内的默认内容。

内容的提问来源于stack exchange,提问作者Maryando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 14:45:56