wp_parse_args()
Об’єднує два масиви, так що параметри першого масиву (передані) замінюють при збігу параметри другого масиву (за замовчуванням). Параметри можна вказати рядком.
Зазвичай у функцію передається масив із новими параметрами та масив із параметрами за замовчуванням та функція їх об’єднує. У першому аргументі можна передати параметри у вигляді рядка: text=текст&foo=нечто
, вони будуть перетворені на масив.
Ця функція часто використовується в інших функціях WordPress, в яких маються на увазі параметри за замовчуванням і параметри, що передаються, до таких функцій можна віднести get_terms() .
Функцію рекомендується використовувати у функціях, що створюються, в які передається список параметрів. Якщо визначати кожен параметр окремо як це прийнято під час реєстрації функції, список параметрів може бути дуже довгим і незручним. У разі зручніше вказати для функції один параметр $args і всередині функції в масиві вказати параметри за замовчуванням. Потім обробити параметр, що передається за допомогою wp_parse_args() , тим самим об’єднавши передані параметри з дефолтними (див. перший приклад).
wp_parse_str()
register_rest_field()
(дуже швидко) | 50000 разів – 0.08 сек
(швидкість світла) |
PHP 7.1.5, WP 4.8.2
Хуків немає.
Повертає
Массив
.
Використання
$ args = wp_parse_args ($ args, $ defaults);
-
$args
(рядок/масив/об’єкт) (обов’язковий) Масив параметрів або рядок параметрів, які перезапишуться при збігу параметрів за промовчанням.
Рядок передається у форматі рядка запиту УРЛ:
$args = 'type=post&posts_per_page=5&cat=1';
Масив передається як завжди:
$args = array( 'type'=>'post', 'posts_per_page'=>5, 'cat'=>'1' )
Якщо передати якийсь об’єкт, то функція отримає всі властивості. Властивості стануть масивом властивостей.
$args = (object) array( 'type'=>'post', 'posts_per_page'=>5, 'cat'=>'1' )
-
$defaults
(масив) Масив параметрів за замовчуванням, які будуть замінені на параметри, що передаються в $args .
За замовчуванням: array()’
Приклади
#1 Демонстрація передачі параметрів у вигляді рядка
$args = wp_parse_args( 'foo=val & bar=222' ); /* $args = array { foo => string(4) "val " bar => string(2) "222" } */ $args = wp_parse_args( 'foo=val & bar=222', [ 'bar' => 555, 'baz' => 999 ] ); var_dump($args); /* $args = array { bar => string(3) "222" baz => int(999) foo => string(4) "val " } */
#2 Передача параметрів функції та встановлення дефолтних
Цей приклад показує як за допомогою функції wp_parse_args() вказати параметри функції за замовчуванням і замінювати їх, якщо передано параметр з таким же ключем.
function foo( $args ){ // Визначимо параметри за замовчуванням $defaults = array( 'param1' => 'значення', 'param2' => true, 'param3' => 3, ); $ args = wp_parse_args ($ args, $ defaults); print_r ($ args); } foo( 'param1=значення¶m2=0'); /* отримаємо Array( [param1] => значення [param2] => 0 [param3] => 3 ) */ foo ([ 'param1' => 'щось', 'param2' => 0, ]); /* отримаємо Array( [param1] => щось [param2] => 0 [param3] => 3 ) */
#3 Приклад використання wp_parse_args
wp_parse_args() використовується всередині функції, для визначення параметрів, що передаються в функцію. Цей приклад показує як параметри, що передаються, поєднуються з параметрами за замовчуванням:
// Визначимо параметри за замовчуванням $defaults = array( 'type' => 'post', 'before' => "<p>", 'after' => "</p> n", 'echo' => TRUE ); // об'єднаємо передані параметри $args з параметрами за замовчуванням $ args = wp_parse_args ($ args, $ defaults);
#4 Демонстрація роботи
У цьому прикладі створимо функцію, яка використовує wp_parse_args() та викличемо її в різних варіантах:
/** * Визначимо нову функцію */ function explain_parse_args( $args ) { $defaults = array( 'text' => 'wp_parse_args() об'єднаємо $args і $defaults', 'before' => "<p>", 'after' => "</p> n", 'echo' => TRUE ); // Отримаємо вхідні параметри та порівняємо їх з базовими $ args = wp_parse_args ($ args, $ defaults); $output = $args['before'] . $args['text'] . $args['after']; if (! $ echo) return $output; echo $output; } /** * Викликаємо функцію без параметрів * В результаті отримаємо: * <p>wp_parse_args() об'єднаємо $args і $defaults</p> n */ explain_parse_args(); /** * Викликаємо функцію та вкажемо параметри у вигляді масиву * Отримаємо: * <p class='specialclass'>Краща пропозиція</p> n */ explain_parse_args(array ( 'text' => "Краща пропозиція", 'before' => "<p class='specialclass'>" ))); /** * Викликаємо функції та передамо параметри рядком * Отримаємо: * <p></p> n */ explain_parse_args( 'echo=1&text=0' );
список змін
З версії 2.2.0 | Введено. |
З версії 2.3.0 | $args can now also be an object. |
Код wp_parse_args() wp parse args WP 6.0.2
function wp_parse_args( $args, $defaults = array() ) { if ( is_object( $args ) ) { $parsed_args = get_object_vars($args); } elseif ( is_array ( $ args ) ) { $parsed_args =& $args; } else { wp_parse_str($args, $parsed_args); } if ( is_array( $defaults ) && $defaults ) { return array_merge( $defaults, $parsed_args ); } return $parsed_args; }