wp_parse_args() — объединение массива заданных параметров и массива параметров по умолчанию

Нужен для объединения массива с аргументами, переданными в функцию (под функцией в данном случае подразумевается не сам wp_parse_args(), а вообще какая-нибудь левая функция, используемая нами) и массивом аргументов, установленных по умолчанию. Массивы с параметрами могут быть также переданы в виде строки URL-вида, например orderby=rand&order=asc.

Функция wp_parse_args() сопоставляет оба массива и замещает все соответствующие элементы массива $defaults элементами массива $args. Если же соответствующего элемента в массиве $args не нашлось, то берется значение из $defaults.

Описание оказалось слишком грозным, а на деле все очень и очень просто, достаточно глянуть пример.

wp_parse_args( $args, $defaults = '' )
$args
(строка|массив) набор параметров, переданных в произвольную функцию
$defaults
(строка|массив) набор параметров по умолчанию

Пример

Для примера возьмем функцию, выводящую строку с текстом, предварительно добавляющую по краям ещё две строки (например открывающие и закрывающие HTML-теги).

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
/*
 * предположим, где-то в начале кода была задана функция true_my_function()
 */
function true_my_function( $args ) {
 
	// массив значений по умолчанию
	$defaults = array (
		'text' => 'это текст по умолчанию',
		'before' => "<em>",
		'after' => "</em>",
		'echo' => true
	);
 
	// используем wp_parse_args() для сопоставления массивов
	$args = wp_parse_args( $args, $defaults );
 
	$out = $args['before'] . $args['text'] . $args['after'];
 
	if (!$args['echo']) 
		return $out;
 
	echo $out;
}
 
/*
 * а чуть дальше в коде мы вызовем эту функцию, сделаем так, чтобы текст при выводе был не наклонным, а жирным
 */
$args = array(
	'before' => '<strong>',
	'after' => '</strong>'
);
true_my_function( $args ); // выведет: <strong>это текст по умолчанию</strong>

Как вариант, последние строчки в коде можно заменить на:

28
true_my_function( 'before=<strong>&after=</strong>' );

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Vladislav: Подправил имеющийся у меня код, по вашим рекомендациям, миниатюры начали отображаться, но они стали очень огромными, что...

  • Миша: Лишь предложил решение. Думаю можно нашаманить и так, чтобы чисто для рубрик было, не уверен только, что обойдётся без и...

  • Алексей: так надо комментарии в рубриках, а не на страницах в category.php а не в page.php

  • Миша: Здравствуйте! Сам WordPress это не поддерживает, но можно пойти хитрым путём. Первое, что пришло мне в голову, это:...

  • Алексей: Миша, здравствуйте! Подскажите, пожалуйста, что нужно, чтобы сделать комментарии на страницах рубрик. Я когда то давно...