Нужен для объединения массива с аргументами, переданными в функцию (под функцией в данном случае подразумевается не сам wp_parse_args()
, а вообще какая-нибудь левая функция, используемая нами) и массивом аргументов, установленных по умолчанию. Массивы с параметрами могут быть также переданы в виде строки URL-вида, например orderby=rand&order=asc
.
Функция wp_parse_args()
сопоставляет оба массива и замещает все соответствующие элементы массива $defaults
элементами массива $args
. Если же соответствующего элемента в массиве $args
не нашлось, то берется значение из $defaults
.
Описание оказалось слишком грозным, а на деле все очень и очень просто, достаточно глянуть пример.
wp_parse_args( $args, $defaults = '' )
Функция wp_parse_args()
– это широкоиспользуемая в ядре WordPress утилита для объединения параметров по умолчанию с пользовательскими параметрами, причём возможность передачи строки в виде урл типа id=5&status=draft
– это одна из ключевых её особенностей, с которой вы уже могли столкнуться в таких функциях как query_posts(), get_terms(), wp_list_comments().
Для примера возьмем функцию, выводящую строку с текстом, предварительно добавляющую по краям ещё две строки (например открывающие и закрывающие HTML-теги).
/* * предположим, где-то в начале кода была задана функция 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>
Как вариант, последние строчки в коде можно заменить на:
true_my_function( 'before=<strong>&after=</strong>' );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.