私はしばらくWordpressウィジェットを構築しており、常に次のようなコードを使用しています:
$instance = wp_parse_args( (array) $instance);
問題が発生したことはなく、いくつかの場所で推奨されています (Justin Tadlock、私が持っている 2 冊の Wordpress の本など)。
では、これは実際に何をするのでしょうか? また、省略した場合はどうなるでしょうか?
簡単に言えば、配列をマージすることです。
コードを乱雑に見せることなく、関数が複数の引数を受け入れることができるため、頻繁に使用されます。次に、開発者がデフォルト値を設定できるようにすることで、次のステップに進みます。
そこで wp_parse_args の出番です。渡された値をデフォルトとマージします。
$args = wp_parse_args($passed_in_args, $default_values);
また、URL クエリ文字列を配列に変換します。
お役に立てれば
https://developer.wordpress.org/reference/functions/wp_parse_args/
wp_parse_args は、引数の配列とデフォルト値の配列をマージするための汎用ユーティリティです。また、配列に変換される URL クエリ タイプ文字列を指定することもできます (つまり、"id=5&status=draft")。
これは WordPress 全体で使用され、デフォルトと入力のロジックについて心配する必要がなくなり、引数を渡すための安定したパターンを生成します。query_posts、wp_list_comments、get_terms などの関数は、wp_parse_args の単純化機能の一般的な例です。
$args ベースの設定を持つ関数は、潜在的に渡すことができる値の数を無限に拡張することができ、追跡する引数が多すぎて、その多くが唯一の関数であるため、非常に長い関数呼び出しの煩わしさを回避できます。まれに、通常は適切なデフォルトを上書きすることです。
一般に、引数として渡された変数の外観/存在とデフォルト値をチェックする長いコードを避けるために、関数呼び出しを簡素化しています
wp-includes/functions.php
これはワードプレスのファイルのコードです:
/**
* Merge user defined arguments into defaults array.
*
* This function is used throughout WordPress to allow for both string or array
* to be merged into another array.
*
* @since 2.2.0
*
* @param string|array $args Value to merge with $defaults
* @param array $defaults Array that serves as the defaults.
* @return array Merged user defined values with defaults.
*/
function wp_parse_args( $args, $defaults = '' ) {
if ( is_object( $args ) )
$r = get_object_vars( $args );
elseif ( is_array( $args ) )
$r =& $args;
else
wp_parse_str( $args, $r );
if ( is_array( $defaults ) )
return array_merge( $defaults, $r );
return $r;
}