“我有一个自定义的帖子类型”;出版物;在我的mu插件中;出版物插件;,我想包括一个可选的页面模板,用于此CPT以及常规帖子和页面。
我的模板包含必需的内容:
<?php
/*
Template Name: Publication special
Template Post Type: publication, page, post
*/
我使用的是;“theme\\u page\\u templates”主题;筛选以向我的插件的可选页面模板添加路径:
function wp234234_theme_page_templates( $theme_templates ) {
$theme_templates[\'/absolute/path/to/template-publication-special.php\'] = \'Publication special\'
return $theme_templates;
}
如果var\\u转储$theme\\u templates变量,我将看到如下内容
[archive-chart.search.php] => Search Page
[template-bootstrap.php] => Bootstrap
[template-donate.php] => Donation Page
[template-fullpage.php] => Full Page
[template-page-staff.php] => Staff Page
[template-search.php] => Search Page
[template-signup.php] => Signup Page
[template-publication-special.php] => Publication Special
但如果我创建一个新的;出版物“;我无法在中看到模板;“页面属性”;但是,它可用于页面。如果我将模板文件从插件移动到主题tho,它现在将在页面和;出版物;
我是否还需要运行另一个过滤器,以便我的CPT和常规ol页面都可以使用这个过滤器?
最合适的回答,由SO网友:Sally CJ 整理而成
您使用的过滤器挂钩是theme_<post type>_templates
, 这意味着<post type>
part是动态的,它是您希望将自定义模板添加到模板下拉列表中的帖子类型。因此,由于模板已为三种帖子类型启用,您可以这样做以将模板添加到下拉列表中:
add_filter( \'theme_publication_templates\', \'wp234234_theme_page_templates\' ); // publication CPT
add_filter( \'theme_page_templates\', \'wp234234_theme_page_templates\' ); // regular Pages
add_filter( \'theme_post_templates\', \'wp234234_theme_page_templates\' ); // regular Posts
或者您可以使用
theme_templates
hook:
(注意:此挂钩在上述挂钩之前运行。)add_filter( \'theme_templates\', \'wpse_387479_theme_templates\', 10, 4 );
function wpse_387479_theme_templates( $post_templates, $theme, $post, $post_type ) {
if ( in_array( $post_type, array( \'publication\', \'page\', \'post\' ) ) ) {
$post_templates[\'/absolute/path/to/template-publication-special.php\'] = \'Publication special\';
}
return $post_templates;
}
附言:只需更改;出版物“;如果我使用的是错误的,请输入正确的帖子类型?