Intereting Posts
WordPress для бизнес-сайта Измените css для боковых панелей, если присутствует на веб-странице? Где я могу найти код, как WordPress анализирует сообщение? get_attachment_id () получает только идентификатор первого прикрепленного изображения после сообщения обновления Правильный способ использования get_template_part () и get_post_format () с пользовательскими типами сообщений? Как удалить «Без рубрики» из сообщений с более чем одной категорией? Отображать пункт меню навигации на основе пользовательских возможностей как я могу встроить backpress в iframe add_filter для встраивания youtube? как переместить определенную функциональность на промежуточный сервер Как получить сообщения категории детей из пользовательского типа сообщений? Как реализовать три формы (например, контактную форму) в wordpress Кнопка внутри пользовательского метабокса, запускающая кнопку обновления Перенаправление на домашнюю страницу при сохранении любого отредактированного кода Изменения в .htaccess не обновляют файл (старые правила все же вступают в силу)

Форматирование нескольких аргументов add_theme_support

В моих 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' ) );

Solutions Collecting From Web of "Форматирование нескольких аргументов add_theme_support"

Для каждой функции необходимо использовать один add_theme_support() . В кодексе правильный вызов функции:

 add_theme_support( $feature, $arguments ); 

add_theme_support( $feature, $arguments ); как вы можете видеть, есть два параметра: $feature и $arguments . $feature – это $feature , для которой вам необходимо добавить поддержку темы. Этот параметр не принимает массив, а только строку.

Таким образом, вам нужно добавить add_theme_support для каждой функции, которую вы хотели бы включить в свою тему. В вашем вопросе правильно использовать и правильный способ использования двух отдельных экземпляров add_theme_support .

Точка зрения, я всегда использую add_theme_support внутри моей функции настройки темы, а затем добавляю эту функцию в after_setup_theme .

Если вы проверите источник …

 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); } 

Примечание. Этот код не проверен полностью, но не вызывает никаких Notice когда я запускаю его, и чтение источника заставляет меня думать, что он должен работать без проблем.

func_num_args() эта 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');