¿Qué hace wp_parse_args?

3 minutos de lectura

He estado creando widgets de WordPress por un tiempo y siempre he usado un código como este:

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

Nunca ha causado problemas y se recomienda en varios lugares (por Justin Tadlock, dos libros de WordPress que tengo, etc.), pero ninguna de estas fuentes explica realmente por qué.

Entonces, ¿qué hace esto realmente y qué sucedería si se omitiera?

En términos sencillos, se trata de fusionar matrices.

Se usa con frecuencia porque permite que una función acepte múltiples argumentos sin que el código se vea desordenado. Luego continúa con el siguiente paso al permitir que el desarrollador configure los valores predeterminados.

Ahí es donde entra en juego wp_parse_args, fusiona los valores pasados ​​con los valores predeterminados.

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

También convierte una cadena de consulta de URL en una matriz.

Espero que esto ayude

avatar de usuario
marek sebera

https://developer.wordpress.org/reference/functions/wp_parse_args/

wp_parse_args es una utilidad genérica para fusionar una matriz de argumentos y una matriz de valores predeterminados. También se le puede dar una cadena de tipo de consulta de URL que se convertirá en una matriz (es decir, “id=5&status=borrador”).

Se usa en todo WordPress para evitar tener que preocuparse por la lógica de los valores predeterminados y la entrada, y produce un patrón estable para pasar argumentos. Funciones como query_posts, wp_list_comments y get_terms son ejemplos comunes del poder simplificador de wp_parse_args.

Las funciones que tienen una configuración basada en $args pueden expandir infinitamente la cantidad de valores que potencialmente se les pueden pasar, evitando la molestia de las llamadas a funciones muy largas porque hay demasiados argumentos para realizar un seguimiento, muchos de los cuales solo funcionan. es anular los valores predeterminados generalmente buenos en raras ocasiones.

En general, está simplificando la llamada a la función, para evitar la verificación de códigos largos. apariencia/existencia y valores predeterminados de variables pasadas como argumentos

avatar de usuario
steve

este es el codigo en wordpress wp-includes/functions.php expediente:

/**
 * 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;
}

  • Esta no es una respuesta verdadera tal como está. El código puede valerse por sí mismo, pero, sin embargo, se debe agregar alguna explicación. Al menos ponga algo como los comentarios de funciones anteriores, que los desarrolladores inexpertos podrían pasar por alto.

    – SunnyRed

    1 oct 2013 a las 19:15

  • entonces esto no tiene valor para ser señalado, sin explicaciones..

    – Maxime Culea

    30 de junio de 2021 a las 15:33

¿Ha sido útil esta solución?