格式化多个ADD_THEME_SUPPORT参数

时间:2014-04-08 作者:Henrik

在我的functions.php 我有以下几点:

add_theme_support( \'post-thumbnails\', \'html5\', array( \'comment-list\', \'comment-form\', \'search-form\' ) );

…WP 3.8.1中禁用了特征图像(例如。post-thumbnails).

我的问题是如何在add_theme_support 作用添加两个单独的函数调用是对还是错?

add_theme_support( \'post-thumbnails\' ); add_theme_support( \'html5\', array( \'comment-list\', \'comment-form\', \'search-form\' ) );

3 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

你需要用一个add_theme_support() 调用每个功能。Per the Codex, 正确的函数调用是:

add_theme_support( $feature, $arguments );

SO网友:Pieter Goosen

add_theme_support( $feature, $arguments ); 如您所见,有两个参数,$feature$arguments. $feature 是您需要添加主题支持的feaure。此参数不接受数组,只接受字符串。

因此,您必须添加add_theme_support 对于您希望包含在主题中的每一件作品。在您的问题中,使用和正确的方式使用add_theme_support.

值得注意的是,我总是使用addadd_theme_support 在我的主题设置函数中,然后将该函数添加到after_setup_theme 行动挂钩。

SO网友:s_ha_dum

如果您检查源。。。

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\');

结束

相关推荐

从Functions.php中导入WordPress XML文件

我正在开发一个主题,它有不同的添加内容的方法,因此,Wordpress的默认安装不会显示任何内容。我想知道在主题被激活后,是否可以通过内部函数和/或挂钩自动导入XML文件?User installs theme > User activates theme > Code behind the scenes loads up an XML file and performs a silent import of its contents当前要导入XML文件,您必须为Wordpress