当前浏览:首页 / WordPress函数 / add_theme_support()

add_theme_support( string $feature, mixed $args )

注册给定功能的主题支持

addmore...

support 支持

theme 主题more...


描述

必须在主题的functions.php文件中调用。如果要附加到钩子上,则必须是‘after_setup_theme’。对于某些功能来说,‘init’钩子可能太晚了。

示例用法:

add_theme_support( 'title-tag' );
add_theme_support( 'custom-logo', array(
    'height' => 480,
    'width'  => 720,
) );

参数

$feature

(string) (必填) 要被添加的功能,可能的核心值包括:

  • 'admin-bar'
  • 'align-wide'
  • 'automatic-feed-links'
  • 'core-block-patterns'
  • 'custom-background'
  • 'custom-header'
  • 'custom-line-height'
  • 'custom-logo'
  • 'customize-selective-refresh-widgets'
  • 'custom-spacing'
  • 'custom-units'
  • 'dark-editor-style'
  • 'disable-custom-colors'
  • 'disable-custom-font-sizes'
  • 'editor-color-palette'
  • 'editor-gradient-presets'
  • 'editor-font-sizes'
  • 'editor-styles'
  • 'featured-content'
  • 'html5'
  • 'menus'
  • 'post-formats'
  • 'post-thumbnails'
  • 'responsive-embeds'
  • 'starter-content'
  • 'title-tag'
  • 'wp-block-styles'
  • 'widgets'
  • 'widgets-block-editor'
$args

(mixed) (可选) 与某些功能一起传递的额外参数。


返回

(void|false) 成功时无返回,失败时为false。


说明

功能

文章格式

此功能让主题启用文章格式支持。使用子主题时,请注意

add_theme_support( 'post-formats' )

将覆盖父主题定义的格式,而不是添加到父主题中。

要启用特定格式(请参阅文章格式中支持的格式),请使用:

add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

要检查是否有给文章分配“quote”格式,请使用has_post_format()

// In your theme single.php, page.php or custom post type
if ( has_post_format( 'quote' ) ) {
    echo 'This is a quote.';
}

文章缩略图

此功能让主题启用文章缩略图支持。注意,您可以选择传递第二个参数$args,其中包含一个文章类型数组,是您希望为其启用此功能的类型。

add_theme_support( 'post-thumbnails' );
add_theme_support( 'post-thumbnails', array( 'post' ) );          // Posts only
add_theme_support( 'post-thumbnails', array( 'page' ) );          // Pages only
add_theme_support( 'post-thumbnails', array( 'post', 'movie' ) ); // Posts and Movies

必须在触发‘init’钩子之前调用此功能。这意味着需要将其直接放入functions.php或附加到‘after_setup_theme’钩子的函数内。对于自定义文章类型,也可以使用register_post_type()功能添加文章缩略图。

在主题index.php或single.php或自定义模板中显示缩略图,请使用:

the_post_thumbnail();

要在显示之前检查是否有文章缩略图,请使用:

if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}

自定义背景

此功能让主题启用自定义背景支持。

add_theme_support( 'custom-background' );

请注意,可以使用以下命令添加默认参数:

$defaults = array(
    'default-image'          => '',
    'default-preset'         => 'default', // 'default', 'fill', 'fit', 'repeat', 'custom'
    'default-position-x'     => 'left',    // 'left', 'center', 'right'
    'default-position-y'     => 'top',     // 'top', 'center', 'bottom'
    'default-size'           => 'auto',    // 'auto', 'contain', 'cover'
    'default-repeat'         => 'repeat',  // 'repeat-x', 'repeat-y', 'repeat', 'no-repeat'
    'default-attachment'     => 'scroll',  // 'scroll', 'fixed'
    'default-color'          => '',
    'wp-head-callback'       => '_custom_background_cb',
    'admin-head-callback'    => '',
    'admin-preview-callback' => '',
);
add_theme_support( 'custom-background', $defaults );

自定义页眉

此功能让主题启用自定义页眉支持。

add_theme_support( 'custom-header' );

请注意,可以使用以下命令添加默认参数:

$defaults = array(
    'default-image'          => '',
    'random-default'         => false,
    'width'                  => 0,
    'height'                 => 0,
    'flex-height'            => false,
    'flex-width'             => false,
    'default-text-color'     => '',
    'header-text'            => true,
    'uploads'                => true,
    'wp-head-callback'       => '',
    'admin-head-callback'    => '',
    'admin-preview-callback' => '',
    'video'                  => false,
    'video-active-callback'  => 'is_front_page',
);
add_theme_support( 'custom-header', $defaults );

此功能首次在Version 4.5中引入,让主题启用自定义Logo支持。

add_theme_support( 'custom-logo' );

请注意,可以使用以下命令添加默认参数:

add_theme_support( 'custom-logo', array(
    'height'               => 100,
    'width'                => 400,
    'flex-height'          => true,
    'flex-width'           => true,
    'header-text'          => array( 'site-title', 'site-description' ),
    'unlink-homepage-logo' => true,
) );

此功能在页头启用文章和评论的自动Feed链接。这应该用来代替不推荐使用的automatic_feed_links()函数。

add_theme_support( 'automatic-feed-links' );

HTML5

此功能允许在搜索表单、评论表单、评论列表、图库和标题使用HTML5 标记

add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script' ) );

Title标签

此功能使插件和主题能够管理页面的title标签。这应该用来代替wp_title()函数。

add_theme_support( 'title-tag' );

自定义选择性刷新小工具

此功能支持对自定义中管理的小工具进行选择性刷新。此功能在WordPress 4.5中可用。有关选择性刷新的原因及方式的更多信息,请阅读选择性刷新:快速、准确的更新

add_theme_support( 'customize-selective-refresh-widgets' );

多站点

要在多站点安装中显示“特色图像”选择框,请确保在网络管理设置子面板#Upload_Settings媒体上载按钮选项中更新允许的上载文件类型。默认值为jpg jpeg png gif mp3 mov avi wmv midi mid pdf

其他注意事项

以下参数是只读的,只能在current_theme_supports()的上下文中使用:



源码

查看源码 官方文档


更新日志

版本描述
5.8.0widgets-block-editor功能启用小工具区块编辑器
5.6.0如果没有传递数组,post-formats功能会发出警告
5.5.0custom-logo功能现在也接受“unlink-homepage-logo”
5.3.0通过将现有和已记录的...$args参数添加到函数签名中,将其形参化
5.0.0添加了responsive-embedsalign-widedark-editor-styledisable-custom-colorsdisable-custom-font-sizeseditor-color-paletteeditor-font-sizeseditor-styleswp-block-styles功能
4.7.0添加了starter-content功能
4.5.0添加了customize-selective-refresh-widgets功能
4.1.0添加了title-tag功能
3.9.0html5功能现在也接受“gallery”和“caption”
3.6.0添加了html5功能
3.4.0custom-header-uploads功能被弃用
2.9.0开始引入

使用示例

  • 示例1
    /**
     * Essential theme supports
     * */
    function theme_setup(){
        /** automatic feed link*/
        add_theme_support( 'automatic-feed-links' );
    
        /** tag-title **/
        add_theme_support( 'title-tag' );
    
        /** post formats */
        $post_formats = array('aside','image','gallery','video','audio','link','quote','status');
        add_theme_support( 'post-formats', $post_formats);
    
        /** post thumbnail **/
        add_theme_support( 'post-thumbnails' );
    
        /** HTML5 support **/
        add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption' ) );
    
        /** refresh widgest **/
        add_theme_support( 'customize-selective-refresh-widgets' );
    
        /** custom background **/
        $bg_defaults = array(
            'default-image'          => '',
            'default-preset'         => 'default',
            'default-size'           => 'cover',
            'default-repeat'         => 'no-repeat',
            'default-attachment'     => 'scroll',
        );
        add_theme_support( 'custom-background', $bg_defaults );
    
        /** custom header **/
        $header_defaults = array(
            'default-image'          => '',
            'width'                  => 300,
            'height'                 => 60,
            'flex-height'            => true,
            'flex-width'             => true,
            'default-text-color'     => '',
            'header-text'            => true,
            'uploads'                => true,
        );
        add_theme_support( 'custom-header', $header_defaults );
    
        /** custom log **/
        add_theme_support( 'custom-logo', array(
            'height'      => 60,
            'width'       => 400,
            'flex-height' => true,
            'flex-width'  => true,
            'header-text' => array( 'site-title', 'site-description' ),
        ) );
    
    
    
    }
    add_action('after_setup_theme','theme_setup');
    
  • 示例2

    启用区块编辑器的“完全对齐”和“宽对齐”选项的主题支持,请使用
    add_theme_support( 'align-wide' );

  • 示例3

    在WP 5.3中,add_theme_support('html5', ['script', 'style']);删除引入脚本和样式的type="text/javascript"type="text/css"

    参见https://make.wordpress.org/core/2019/10/15/miscellaneous-developer-focused-changes-in-5-3/–HTML5支持脚本和样式标记的参数

  • 示例4

    从5.9版起,区块主题中默认启用以下功能:

    post-thumbnails
    responsive-embeds
    editor-styles
    html5
    automatic-feed-links

    #35593source

  • 示例5

    要确定主题支持是否存在(并检索其参数),请使用get_theme_support( $feature )

  • 示例6

    注意,您必须单独调用其中的每一个,组成数组调用也不行
    add_theme_support( array( 'editor-styles', 'align-wide' ) )

    您必须单独调用:

    add_theme_support( 'editor-styles' );
    add_theme_support( 'align-wide' );
  • 示例7

    声明支持导航小工具标记。

    add_theme_support( 'html5', array( 'navigation-widgets' ) );

    “我们强烈鼓励主题开发者在他们的主题中利用这一改进。这一新的主题支持功能是一种简单的方法,可以改善使用主题的所有网站的语义和可访问性。”

  • 示例8

    初始内容#

    定义并注册初始内容,以在新网站上展示主题。

    add_theme_support( 'starter-content', array(
        // Place widgets in the desired locations (such as sidebar or footer).
        // Example widgets: archives, calendar, categories, meta, recent-comments, recent-posts, 
        //                  search, text_business_info, text_about
        'widgets'     => array( 'sidebar-1' => array( 'search', 'categories', 'meta'), ),
        // Specify pages to create, and optionally add custom thumbnails to them.
        // Note: For thumbnails, use attachment symbolic references in {{double-curly-braces}}.
        // Post options: post_type, post_title, post_excerpt, post_name (slug), post_content, 
        //               menu_order, comment_status, thumbnail (featured image ID), and template
        'posts'       => array( 'home', 'about', 'blog' => array( 'thumbnail' => '{{image-cafe}}' ), ),
        // Create custom image attachments used as post thumbnails for pages.
        // Note: You can reference these attachment IDs in the posts section above. Example: {{image-cafe}}
        'attachments' => array( 'image-cafe' => array( 'post_title' => 'Cafe', 'file' => 'assets/images/cafe.jpg' ), ),
        // Assign options defaults, such as front page settings.
        // The 'show_on_front' value can be 'page' to show a specified page, or 'posts' to show your latest posts.
        // Note: Use page ID symbolic references from the posts section above wrapped in {{double-curly-braces}}.
        'options'     => array( 'show_on_front'  => 'page', 'page_on_front' => '{{home}}', 'page_for_posts' => '{{blog}}', ),
    	// Set the theme mods.
        'theme_mods'  => array( 'panel_1' => '{{about}}' ),
    	// Set up nav menus.
        'nav_menus'   => array( 'top' => array( 'name' => 'Top Menu', 'items' => array( 'link_home', 'page_about', 'page_blog' )), ),
    ) );
    

    有关每个选项的完整示例,您可以参考Twenty Seventeen主题的functions.php

  • 示例9

    自定义背景的“default-color”不起作用

    解决方案是定义自己的样式表类,并将CSS类添加到body标记中。

  • 示例10

    声明对区块样式的支持。

    add_theme_support( 'wp-block-styles' );

    这些将支持主题中的默认古腾堡区块样式。

  • 示例11

    停用新的区块编辑器小工具并激活旧编辑器小工具

    remove_theme_support( 'widgets-block-editor' );