首页CMSWordPress学习——add_theme_support()详解

WordPress学习——add_theme_support()详解

时间2023-05-21 01:58:02发布访客分类CMS浏览456
导读:WordPress 默认隐藏了很多功能,我们可以通过 add_theme_support( 函数启用它们。该函数必须在主题的 functions.php 文件中调用,如果想通过钩子函数加载的话则必须使用 after_setup_theme...

WordPress 默认隐藏了很多功能,我们可以通过 add_theme_support() 函数启用它们。该函数必须在主题的 functions.php 文件中调用,如果想通过钩子函数加载的话则必须使用 after_setup_theme 这个钩子,因为 init 对于一些功能来说,已经太迟了。该函数语法如下:

add_theme_support( string $feature )

$feature:字符串(必填)。将要添加的功能名称。


$args,…:混合(可选)。额外参数用以指定具体功能。


目前支持的功能参数主要有:


post-thumbnails:特色图片。

post-formats:文章形式。

html5:HTML5支持。

custom-logo:自定义网站Logo图标。

custom-header-uploads:顶部图像上传。

custom-header:自定义网站顶部内容。

custom-background:自定义网站背景内容。

title-tag:自动生成页面标题信息,需调用?php wp_head(); ?> 。

customize-selective-refresh-widgets:小部件选择性更新。

starter-content:内容初始化。

responsive-embeds:自适应嵌入内容。

align-wide:配置块编辑器宽对齐。

dark-editor-style:配置暗风格块编辑器。

disable-custom-colors:禁用快编辑器自定义颜色。

disable-custom-font-sizes:禁用快编辑器自定义字体大小。

editor-color-pallete:配置块编辑器调色板。

editor-font-sizes:配置块编辑器字体大小。

editor-styles:配置块编辑器样式。

wp-block-styles:启用默认块编辑器样式。

该函数定义在 wp-includes/theme.php 文件中,具体代码如下:

function add_theme_support( $feature ) {
    global $_wp_theme_features;
     if ( func_num_args() == 1 )$args = true;
    else$args = array_slice( func_get_args(), 1 );
 switch ( $feature ) {
case 'post-thumbnails':// All post types are already supported.if ( true === get_theme_support( 'post-thumbnails' ) ) {
    return;
}
     /** Merge post types with any that already declared their support* for post thumbnails.*/if ( is_array( $args[0] ) &
    &
 isset( $_wp_theme_features['post-thumbnails'] ) ) {
    $args[0] = array_unique( array_merge( $_wp_theme_features['post-thumbnails'][0], $args[0] ) );
}
     break;
 case 'post-formats' :if ( is_array( $args[0] ) ) {
    $post_formats = get_post_format_slugs();
    unset( $post_formats['standard'] );
     $args[0] = array_intersect( $args[0], array_keys( $post_formats ) );
}
    break;
 case 'html5' :// You can't just pass 'html5', you need to pass an array of types.if ( empty( $args[0] ) ) {
    // Build an array of types for back-compat.$args = array( 0 =>
     array( 'comment-list', 'comment-form', 'search-form' ) );
}
 elseif ( ! is_array( $args[0] ) ) {
    _doing_it_wrong( "add_theme_support( 'html5' )", __( 'You need to pass an array of types.' ), '3.6.1' );
    return false;
}
     // Calling 'html5' again merges, rather than overwrites.if ( isset( $_wp_theme_features['html5'] ) )$args[0] = array_merge( $_wp_theme_features['html5'][0], $args[0] );
    break;
 case 'custom-logo':if ( ! is_array( $args ) ) {
    $args = array( 0 =>
     array() );
}
    $defaults = array('width' =>
     null,'height' =>
     null,'flex-width' =>
     false,'flex-height' =>
     false,'header-text' =>
     '',);
    $args[0] = wp_parse_args( array_intersect_key( $args[0], $defaults ), $defaults );
     // Allow full flexibility if no size is specified.if ( is_null( $args[0]['width'] ) &
    &
 is_null( $args[0]['height'] ) ) {
    $args[0]['flex-width'] = true;
    $args[0]['flex-height'] = true;
}
    break;
     case 'custom-header-uploads' :return add_theme_support( 'custom-header', array( 'uploads' =>
     true ) );
     case 'custom-header' :if ( ! is_array( $args ) )$args = array( 0 =>
     array() );
     $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',);
     $jit = isset( $args[0]['__jit'] );
    unset( $args[0]['__jit'] );
     // Merge in data from previous add_theme_support() calls.// The first value registered wins. (A child theme is set up first.)if ( isset( $_wp_theme_features['custom-header'] ) )$args[0] = wp_parse_args( $_wp_theme_features['custom-header'][0], $args[0] );
     // Load in the defaults at the end, as we need to insure first one wins.// This will cause all constants to be defined, as each arg will then be set to the default.if ( $jit )$args[0] = wp_parse_args( $args[0], $defaults );
     // If a constant was defined, use that value. Otherwise, define the constant to ensure// the constant is always accurate (and is not defined later, overriding our value).// As stated above, the first value wins.// Once we get to wp_loaded (just-in-time), define any constants we haven't already.// Constants are lame. Don't reference them. This is just for backward compatibility. if ( defined( 'NO_HEADER_TEXT' ) )$args[0]['header-text'] = ! NO_HEADER_TEXT;
    elseif ( isset( $args[0]['header-text'] ) )define( 'NO_HEADER_TEXT', empty( $args[0]['header-text'] ) );
     if ( defined( 'HEADER_IMAGE_WIDTH' ) )$args[0]['width'] = (int) HEADER_IMAGE_WIDTH;
    elseif ( isset( $args[0]['width'] ) )define( 'HEADER_IMAGE_WIDTH', (int) $args[0]['width'] );
     if ( defined( 'HEADER_IMAGE_HEIGHT' ) )$args[0]['height'] = (int) HEADER_IMAGE_HEIGHT;
    elseif ( isset( $args[0]['height'] ) )define( 'HEADER_IMAGE_HEIGHT', (int) $args[0]['height'] );
     if ( defined( 'HEADER_TEXTCOLOR' ) )$args[0]['default-text-color'] = HEADER_TEXTCOLOR;
    elseif ( isset( $args[0]['default-text-color'] ) )define( 'HEADER_TEXTCOLOR', $args[0]['default-text-color'] );
     if ( defined( 'HEADER_IMAGE' ) )$args[0]['default-image'] = HEADER_IMAGE;
    elseif ( isset( $args[0]['default-image'] ) )define( 'HEADER_IMAGE', $args[0]['default-image'] );
     if ( $jit &
    &
     ! empty( $args[0]['default-image'] ) )$args[0]['random-default'] = false;
 // If headers are supported, and we still don't have a defined width or height,// we have implicit flex sizes.if ( $jit ) {
    if ( empty( $args[0]['width'] ) &
    &
     empty( $args[0]['flex-width'] ) )$args[0]['flex-width'] = true;
    if ( empty( $args[0]['height'] ) &
    &
     empty( $args[0]['flex-height'] ) )$args[0]['flex-height'] = true;
}
     break;
     case 'custom-background' :if ( ! is_array( $args ) )$args = array( 0 =>
     array() );
     $defaults = array('default-image' =>
     '','default-preset' =>
     'default','default-position-x' =>
     'left','default-position-y' =>
     'top','default-size' =>
     'auto','default-repeat' =>
     'repeat','default-attachment' =>
     'scroll','default-color' =>
     '','wp-head-callback' =>
     '_custom_background_cb','admin-head-callback' =>
     '','admin-preview-callback' =>
     '',);
     $jit = isset( $args[0]['__jit'] );
    unset( $args[0]['__jit'] );
     // Merge in data from previous add_theme_support() calls. The first value registered wins.if ( isset( $_wp_theme_features['custom-background'] ) )$args[0] = wp_parse_args( $_wp_theme_features['custom-background'][0], $args[0] );
     if ( $jit )$args[0] = wp_parse_args( $args[0], $defaults );
     if ( defined( 'BACKGROUND_COLOR' ) )$args[0]['default-color'] = BACKGROUND_COLOR;
    elseif ( isset( $args[0]['default-color'] ) || $jit )define( 'BACKGROUND_COLOR', $args[0]['default-color'] );
     if ( defined( 'BACKGROUND_IMAGE' ) )$args[0]['default-image'] = BACKGROUND_IMAGE;
    elseif ( isset( $args[0]['default-image'] ) || $jit )define( 'BACKGROUND_IMAGE', $args[0]['default-image'] );
     break;
 // Ensure that 'title-tag' is accessible in the admin.case 'title-tag' :// Can be called in functions.php but must happen before wp_loaded, i.e. not in header.php.if ( did_action( 'wp_loaded' ) ) {
    /* translators: 1: Theme support 2: hook name */_doing_it_wrong( "add_theme_support( 'title-tag' )", sprintf( __( 'Theme support for %1$s should be registered before the %2$s hook.' ),'code>
    title-tag/code>
    ', 'code>
    wp_loaded/code>
    ' ), '4.1.0' );
     return false;
}
}
     $_wp_theme_features[ $feature ] = $args;
}
    


声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: WordPress学习——add_theme_support()详解
本文地址: https://pptw.com/jishu/40291.html
免费wordpress博客,学生搭建wordpress博客 同台服务器上多个 WordPress 站点怎么同时使用 Memcached

游客 回复需填写必要信息