WordPress4.7增加文章模板以支持更多文章类型
WordPress在4.7版本之前,可以为文章类型“页面”设置特定的模板,其他文章类型想要使用特定的模板,只能依靠代码或插件来实现。此次WordPress 4.7版本的模板功能更加灵活,更新增加了文章模板功能,可以方便的更多文章类型指定特定的模板。
WordPress 文章模板使用方法
先来看看模板文件头部包含的两个参数,如下:
<?php /* Template Name: Full-width layout Template Post Type: post, page, event */ // Page code here...
这是模板文件固定的头部参数,如此便可以在后台 post(文章)、page(页面)、event(事件)、product(产品)等各文章类型中选择使用名称为 Full-width layout(全宽布局)的文章模板。
只要主题定义了一个文章使用的模板,在后台文章编辑页面就会出现 Post Attributes(页面属性)的选项框,后续 “Post Attributes” 标题还可以在注册文章类型的时候进行定义。
文章模板各版本兼容处理方案
如果你的主题公开给更多的同学使用,那么就要考虑WordPress 4.7之前的版本会忽略其中的 Template Post Type 参数,这时可能仅支持 post 或 product 的模板都会显示在“页面”类型的文章中,因此使用 theme_{$post_type}_templates 过滤器,把仅支持 post 或 product 的模板排除在外,这样才能兼容更多的Wordpress版本。
参考一段示例代码,以 page 为例:
/** * Hides the custom post template for pages on WordPress 4.6 and older * * @param array $post_templates Array of page templates. Keys are filenames, values are translated names. * @return array Filtered array of page templates. */ function makewp_exclude_page_templates( $post_templates ) { if ( version_compare( $GLOBALS['wp_version'], '4.7', '<' ) ) { unset( $post_templates['templates/my-full-width-post-template.php'] ); } return $post_templates; } add_filter( 'theme_page_templates', 'makewp_exclude_page_templates' );
上述代码中的 theme_page_templates 是 theme_{$post_type}_templates 过滤器的一个示例。其中 $post_type 是模板支持的文章类型,比如 theme_product_themplates 表示过滤 product 文章类型的模板。
了解 WordPress 4.7 文章模板功能更多信息:
https://developer.wordpress.org/themes/template-files-section/page-templates/