WordPress函数文档add_theme_support()
允许主题去支持特定的主题功能 描述 允许主题去支持特定的主题功能。 这个函数必须在主题的 functions….
允许主题去支持特定的主题功能
描述
允许主题去支持特定的主题功能。
这个函数必须在主题的 functions.php 文件中去调用,如果想通过 hook 调用,则必须使用 after_setup_theme 这个 hook,因为 init hook 对于一些功能来说,已经太迟了。
用法
<?php add_theme_support( $feature, $arguments ); ?>
Support should be added on the ‘after_setup_theme’ or ‘init’ action, but no later than that. It does not accept any further arguments.
1
2
3
4
|
/* ———————————-
* wordpress函数 kim收集
* ———————————- */
function custom_theme_setup() { add_theme_support( $feature, $arguments );}add_action( ‘after_setup_theme’, ‘custom_theme_setup’ );
|
参数
$feature
(string) (必填) 要添加的主题功能的名称。
目前主题支持的功能列表:
默认值: None
$args
(array) (可选) Optional arguments (see below). If not passed it defaults to true.
默认值: true
示例
Post Formats
这个功能让主题支持 Post Formats 功能,这个功能是 3.1 版本引进的,当使用子主题(Child Themes)的时候,注意 add_theme_support( ‘post-formats’ ) 会覆盖父主题(Parent Themes)定义的 Formats,而不是额外增加。
让主题支持特定的 Post Formats,使用:
1
2
3
4
|
/* ———————————-
* wordpress函数 kim收集
* ———————————- */
add_theme_support( ‘post-formats’, array( ‘aside’, ‘gallery’ ) );
|
检查一个主题是否给 post 指定了 ‘quote’ 这类 post format:
1
2
3
4
5
6
|
/* ———————————-
* wordpress函数 kim收集
* ———————————- */
if ( has_post_format( ‘quote’ ) ) {
echo ‘This is a quote.’;
}
|
Post Thumbnails
这个功能让主题支持特色图片(Post Thumbnails),这个功能是 2.9 版本引进的,我们可以将日志类型(Post Type)数组作为第二个参数,来指定哪些日志类型要启用这个功能。
1
2
3
4
|
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 hook 之前调用,所以必须在主题的 functions.php
文件或者在 ‘after_setup_theme
‘ hook 中调用。
对于自定义日志类型(custom post types),我们可以在使用 register_post_type()
注册新的日志类型的时候,添加 post thumbnails 的支持。
显示日志缩略图:
1
|
the_post_thumbnail();
|
使用之前检查是否已经设置日志缩略图:
1
2
3
|
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
|
Custom Background
3.4 版本引进的功能,让主题支持定义背景。
1
|
add_theme_support( ‘custom-background’ );
|
设置默认背景的参数:
1
2
3
4
5
6
7
8
|
$defaults = array(
‘default-color’ => ”,
‘default-image’ => ”,
‘wp-head-callback’ => ‘_custom_background_cb’,
‘admin-head-callback’ => ”,
‘admin-preview-callback’ => ”
);
add_theme_support( ‘custom-background’, $defaults );
|
Custom Header
也是 3.4 版本引进的,让主图支持自定义头图。
1
|
add_theme_support( ‘custom-header’ );
|
设置默认的头图参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$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’ => ”,
);
add_theme_support( ‘custom-header’, $defaults );
|
Feed Links
这个功能让 WordPress 自动在主题 head 添加 日志和留言的 RSS feed links。这个功能是在 3.0 版本引进的。
1
|
add_theme_support( ‘automatic-feed-links’ );
|
Multisite
To show the “Featured Image” meta box in multisite installation, make sure you update the allowed upload file types, in Network Admin, Network Admin Settings SubPanel#Upload_Settings, Media upload buttons options. Default is jpg jpeg png gif mp3 mov avi wmv midi mid pdf.
注意
The following parameters are read only, and should only be used in the context of current_theme_supports():
- sidebars: Use register_sidebar() or register_sidebars() instead.
- menus: Use register_nav_menu() or register_nav_menus() instead.
- editor-style: Use add_editor_style() instead.
源文件
add_theme_support() 函数的代码位于 wp-includes/theme.php
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
/* ———————————-
* wordpress函数 kim收集
* ———————————- */
/**
* Allows a theme to register its support of a certain feature
*
* Must be called in the theme’s functions.php file to work.
* If attached to a hook, it must be after_setup_theme.
* The init hook may be too late for some features.
*
* @since 2.9.0
*
* @global array $_wp_theme_features
*
* @param string $feature The feature being added.
* @return void|bool False on failure, void otherwise.
*/
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-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-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’ => ”,
);
$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 backwards 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-repeat’ => ‘repeat’,
‘default-position-x’ => ‘left’,
‘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’ );
return false;
}
}
$_wp_theme_features[ $feature ] = $args;
}
|
相关
Theme Support:
add_theme_support(),
remove_theme_support(),
current_theme_supports()
Theme Features:
sidebar,
menus,
post-formats,
title-tag,
custom-background,
custom-header,
post-thumbnails,
automatic-feed-links,
html5,
editor-style,
content_width
- 原文:http://codex.wordpress.org/Function_Reference/add_theme_support
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
评论功能已经关闭!