如果您检查源。。。
1361 /**
1362 * Allows a theme to register its support of a certain feature
1363 *
1364 * Must be called in the theme\'s functions.php file to work.
1365 * If attached to a hook, it must be after_setup_theme.
1366 * The init hook may be too late for some features.
1367 *
1368 * @since 2.9.0
1369 * @param string $feature the feature being added
1370 */
1371 function add_theme_support( $feature ) {
1372 global $_wp_theme_features;
1373
1374 if ( func_num_args() == 1 )
1375 $args = true;
1376 else
1377 $args = array_slice( func_get_args(), 1 );
1378
1379 switch ( $feature ) {
https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/theme.php#L1361
... 很明显
add_theme_support()
为
$feature
参数它不会检查或循环一个值数组,因此每次需要时都必须调用此函数。
当然,你可以创建自己的循环来缓解疼痛,这就是我要做的:
$tsup = array(
\'post-thumbnails\' => false,
\'html5\' => array( \'comment-list\', \'comment-form\', \'search-form\' )
);
foreach ($tsup as $k => $v) {
add_theme_support($k,$v);
}
Note: 该代码没有经过彻底测试,但不会抛出
Notice
当我运行它并阅读源代码时,我认为它应该可以正常工作。
那个func_num_args()
顺便说一下,第1354行到第1377行的一部分是如何根据Codex有两个参数,但在函数定义中只有一个参数。例如(对于好奇的人):
function test_params($a) {
if ( func_num_args() == 1 )
$args = true;
else
$args = array_slice( func_get_args(), 1 );
var_dump($args);
}
test_params(\'test\',\'Oh\',\'I\',\'have\',\'been\',\'to\',\'Ludlow\',\'Fair\');