插件中的自定义页面模板不适用于 WordPress 2024 中预装的主题

问题描述 投票:0回答:1

所以我有一个简单的 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 等主题时,可以从模板下拉列表中选择自定义模板,并且该插件可以完美运行:

enter image description here

但是,如果我使用 WordPress 预装的主题(例如“二十二十四”),那么我会得到以下结果:

enter image description here

我实际上无法选择我的插件模板。什么给?我该如何解决这个问题?我的 WordPress 是 6.6.1,还是目前最新的。

php wordpress wordpress-theming wordpress-plugin-creation
1个回答
0
投票

我检查过这个,发现这个插件不适用于二十四,因为二十四是块主题,为此有一个不同的机制来添加模板。

您可以将

.html
模板添加到主题的 templates 文件夹中,然后需要将它们注册到 theme.json 文件的
customTemplates
对象中。

您的要求将在即将发布的 WordPress 6.7 版本中得到解决,还有关于相同内容的详细帖子

© www.soinside.com 2019 - 2024. All rights reserved.