是否通过unctions.php创建页面模板?

时间:2021-05-07 作者:Drewdavid

我想为用户创建一个新的可选页面模板,允许他们识别网站上的哪些页面是;“服务”;页码(如管道、燃气配件等)。模板是页面的精确副本。php,但包含一些JSON LD(schema.org代码),用于;“服务”;他们网站上的页面。

我真的不想要一个全新的服务页面。php文件,这只是一个页面的复写副本。php。

(如何)我只能使用函数来执行此操作。php?添加新插件目前不是一个选项。

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

您之前的问题,Possible to create a "variant" page template that only contains differences and is therefore resilient to updates of original (ie page.php)?, 为这个问题提供了更好的背景。

正如您Sally CJ在您使用的评论中所指出的theme_page_templates 要将自定义模板添加到模板选择列表中,请执行以下操作。要跳过为模板添加单独的文件,请使用template_include 要选择的筛选器page.php 作为实际模板文件。将前端的模板对准template_redirect 与的操作is_page_template() 添加数据打印功能的条件wp_head.

比如像这样,

function my_service_template_slug() {
    return \'my-service-template.php\';
}

function my_service_template_name() {
    return __( \'My Service Template\', \'my-textdomain\' );
}

// Add custom template to the template list
add_filter(
    \'theme_page_templates\',
    function( $page_templates, $theme, $post ){
        $page_templates[my_service_template_slug()] = my_service_template_name();
        return $page_templates;
    },
    11,
    3
);

// Use default page.php as servcie template
add_filter(
    \'template_include\',
    function( $template ) {
        return my_service_template_slug() === $template ? \'page.php\' : $template;
    },
    11,
    1
);

// Add data to service template head
add_action(
    \'template_redirect\',
    function(){
        if ( is_page_template( my_service_template_slug() ) ) {
            add_action( \'wp_head\', \'my_service_template_head_data\');
        }
    }
);

function my_service_template_head_data() {
    // print something
}

相关推荐

在unctions.php文件adminside中使用POST ID

对于函数,我需要函数中的post ID。php文件。如果编辑页处于活动状态,我必须具有ID。到目前为止我所做的<?php //method 1 global $post; my_function($post->ID); //method 2 my_function($post_id); //method 3 my_function(get_queried_object_id()); ?> 如果我