WP_GET_THEME警告:偏移类型非法

时间:2013-03-09 作者:PrivateUser

我正在使用Post templates 插件。但它非常过时。

我正在Warning: Illegal offset type 在这条线上

$templates = $themes[$theme][\'Template Files\'];
这是我的全部功能代码。

function get_post_templates() {
    $themes = wp_get_themes();
    $theme = wp_get_theme();
    $templates = $themes[$theme][\'Template Files\'];
    $post_templates = array();

    $base = array(trailingslashit(get_template_directory()), trailingslashit(get_stylesheet_directory()));

    foreach ((array)$templates as $template) {
        $template = WP_CONTENT_DIR . str_replace(WP_CONTENT_DIR, \'\', $template); 
        $basename = str_replace($base, \'\', $template);

        // don\'t allow template files in subdirectories
        if (false !== strpos($basename, \'/\'))
            continue;

        $template_data = implode(\'\', file( $template ));

        $name = \'\';
        if (preg_match( \'|Single Post Template:(.*)$|mi\', $template_data, $name))
            $name = _cleanup_header_comment($name[1]);

        if (!empty($name)) {
            if(basename($template) != basename(__FILE__))
                $post_templates[trim($name)] = $basename;
        }
    }

    return $post_templates;

}
有人能告诉我怎么修吗?

2 个回复
最合适的回答,由SO网友:fischi 整理而成

生产线

$theme = wp_get_theme();
返回aWP_Theme 对象,并且不能在Array 像这样。

使用

$templates = $themes[$theme->template][\'Template Files\'];
获取Array 模板文件的。为了使此函数再次运行,您还必须更改Single Post TemplateTemplate Name:

if (preg_match( \'|Template Name:(.*)$|mi\', $template_data, $name))
由于您没有指定要对结果执行的操作,因此我无法进一步帮助您,但您应该可以通过这种方式使用此函数。

SO网友:fuxia

wp_get_theme() 返回一个对象。对象不能是数组的键。

使用$theme->get_stylesheet() 对于键,如果要从子主题获取模板$theme->get_template() 如果您想要父主题中的文件。

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php