15

私はしばらくWordpressウィジェットを構築しており、常に次のようなコードを使用しています:

$instance = wp_parse_args( (array) $instance);

問題が発生したことはなく、いくつかの場所で推奨されています (Justin Tadlock、私が持っている 2 冊の Wordpress の本など)

では、これは実際に何をするのでしょうか? また、省略した場合はどうなるでしょうか?

4

3 に答える 3

13

簡単に言えば、配列をマージすることです。

コードを乱雑に見せることなく、関数が複数の引数を受け入れることができるため、頻繁に使用されます。次に、開発者がデフォルト値を設定できるようにすることで、次のステップに進みます。

そこで wp_parse_args の出番です。渡された値をデフォルトとマージします。

$args = wp_parse_args($passed_in_args, $default_values);

また、URL クエリ文字列を配列に変換します。

お役に立てれば

于 2012-08-21T18:15:41.110 に答える
8

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 ベースの設定を持つ関数は、潜在的に渡すことができる値の数を無限に拡張することができ、追跡する引数が多すぎて、その多くが唯一の関数であるため、非常に長い関数呼び出しの煩わしさを回避できます。まれに、通常は適切なデフォルトを上書きすることです。

一般に、引数として渡された変数の外観/存在デフォルト値をチェックする長いコードを避けるために、関数呼び出しを簡素化しています

于 2011-09-11T15:01:52.333 に答える
5

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;
}
于 2011-09-11T15:03:19.510 に答える