在插件中使用Add_Theme_Support

时间:2011-07-23 作者:Ian Dunn

我创建了一个自定义帖子类型作为插件,并将其发布到存储库中。其中一个核心功能涉及使用特征图像。我添加了thumbnail$supports 在里面register_post_type(), 因此,元框显示在管理面板中。我也迷上了after_setup_theme 和呼叫add_theme_support( \'post-thumbnails\' ), 但我认为它没有起作用。

法典上说you have to call it from the theme\'s functions.php file, 但如果这是真的,那么只有当用户的主题调用add_theme_support( \'post-thumbnails\' ) (这将涵盖所有帖子类型。如果主题不调用它,或者只调用特定类型,那么它将不起作用。

有人能找到解决这个问题的方法吗?

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

核心代码中有一些注释认为这应该得到改进,但它们已经存在了一段时间。基本上,没有本机函数来添加或删除某个功能的一部分,只有整个功能。

手动执行将在主题完成后运行类似的操作(稍后after_setup_theme 挂钩):

function add_thumbnails_for_cpt() {

    global $_wp_theme_features;

    if( empty($_wp_theme_features[\'post-thumbnails\']) )
        $_wp_theme_features[\'post-thumbnails\'] = array( array(\'your-cpt\') );

    elseif( true === $_wp_theme_features[\'post-thumbnails\'])
        return;

    elseif( is_array($_wp_theme_features[\'post-thumbnails\'][0]) )
        $_wp_theme_features[\'post-thumbnails\'][0][] = \'your-cpt\';
}

SO网友:Ian Dunn

这就是我最终使用的,这是对Rarst答案的修改版本

public function addFeaturedImageSupport()
{
    $supportedTypes = get_theme_support( \'post-thumbnails\' );

    if( $supportedTypes === false )
        add_theme_support( \'post-thumbnails\', array( self::POST_TYPE ) );               
    elseif( is_array( $supportedTypes ) )
    {
        $supportedTypes[0][] = self::POST_TYPE;
        add_theme_support( \'post-thumbnails\', $supportedTypes[0] );
    }
}
add_action( \'after_setup_theme\',    array( $this, \'addFeaturedImageSupport\' ), 11 );

结束

相关推荐