¿Qué hace extract (shortcode_atts (array (do?

22

El códice dice

  

shortcode_atts() combina atributos de código de acceso del usuario con atributos conocidos y rellena por defecto cuando sea necesario. El resultado contendrá todas las claves de los atributos conocidos, combinadas con valores de los atributos de shortcode.

No tiene mucho sentido para mí (soy un novato).

Aquí hay un ejemplo:

function wps_trend($atts) {
extract( shortcode_atts( array(
'w' => '500', 
'h' => '330',
'q' => '',
'geo' => 'US',
), $atts));
$h = (int) $h;
$w = (int) $w;
$q = esc_attr($geo);
ob_start();  

Por favor, ¿puedes explicar?

    
pregunta mattnewbie 15.05.2013 - 21:51

1 respuesta

30

shortcode_atts() funciona como array_merge() : fusiona la segunda lista de Argumentos en el primero. La diferencia es: combina solo las claves presentes en el primer argumento ( $default ).

extract() luego toma las claves de la matriz, las establece como nombres de variables y sus valores como valores variables. 'w' => '500' en su ejemplo se convierte en $w = '500' .

No utilice extract() . Este estilo de código muy malo. Su uso fue en desuso incluso en el núcleo , y eso significa algo ... :)

Tu ejemplo debe escribirse como:

$args = shortcode_atts( 
    array(
        'w'   => '500',
        'h'   => '330',
        'q'   => '',
        'geo' => 'US',
    ), 
    $atts
);
$w = (int) $args['w'];
$h = (int) $args['h'];
$q = esc_attr( $args['q'] );
    
respondido por el fuxia 15.05.2013 - 21:57

Lea otras preguntas en las etiquetas