所以我有一个简单的 WordPress 插件,它只允许我使用自定义页面模板。这是代码:
我的特殊模板.php
<?php
/**
* Plugin Name: My Special Template
* Description: Awesome description.
**/
function my_template_array()
{
$temps = [];
$temps['john.php'] = 'John';
$temps['jack.php'] = 'Jack';
return $temps;
}
function my_template_register($page_templates,$theme,$post)
{
$templates = my_template_array();
foreach ($templates as $tk => $tv)
{
$page_templates[$tk] = $tv;
}
return $page_templates;
}
add_filter('theme_page_templates','my_template_register',10,3);
function my_template_select($template)
{
global $post, $wp_query, $wpdb;
if (isset($post->ID))
{
$page_temp_slug = get_page_template_slug($post->ID);
$templates = my_template_array();
if (isset($templates[$page_temp_slug]))
{
$template = plugin_dir_path(__FILE__).'templates/'.$page_temp_slug;
}
}
//echo '<pre>Preformatted:';print_r($page_temp_slug);echo '</pre>';
return $template;
}
add_filter('template_include', 'my_template_select', 99)
?>
还有模板:
<?php
/* Template Name: Jack */
?>
Jack
<?php
/* Template Name: John */
?>
John
当我使用 Hello Elementor 或 Simple Persona 等主题时,可以从模板下拉列表中选择自定义模板,并且该插件可以完美运行:
但是,如果我使用 WordPress 预装的主题(例如“二十二十四”),那么我会得到以下结果:
我实际上无法选择我的插件模板。什么给?我该如何解决这个问题?我的 WordPress 是 6.6.1,还是目前最新的。
我检查过这个,发现这个插件不适用于二十四,因为二十四是块主题,为此有一个不同的机制来添加模板。
您可以将
.html
模板添加到主题的 templates 文件夹中,然后需要将它们注册到 theme.json
文件的 customTemplates对象中。
您的要求将在即将发布的 WordPress 6.7 版本中得到解决,还有关于相同内容的详细帖子。