extract (shortcode_atts (array ()는 무엇을합니까?


28

코덱은 말한다

shortcode_atts()사용자 단축 코드 속성을 알려진 속성과 결합하고 필요한 경우 기본값을 채 웁니다. 결과에는 알려진 속성의 모든 키가 짧은 코드 속성의 값과 병합됩니다.

그것은 나에게별로 이해가되지 않습니다 (나는 초보자입니다).

예를 들면 다음과 같습니다.

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();  

설명해 주시겠습니까?

답변:


35

shortcode_atts()작동 방식 array_merge(): 두 번째 인수 목록을 첫 번째 인수로 병합합니다. 차이점은 다음과 같습니다 $default. 첫 번째 인수 ( ) 에있는 키만 병합합니다 .

extract()그런 다음 배열 키를 사용하여 변수 이름으로 값을 설정하고 해당 값을 변수 값으로 설정합니다. 'w' => '500'귀하의 예에서 $w = '500'.

사용하지 마십시오 extract(). 이것은 매우 나쁜 코드 스타일입니다. 코어에서도 사용법이 더 이상 사용되지 않으며 이는 무엇인가를 의미합니다 ... :)

귀하의 예는 다음과 같이 작성되어야합니다.

$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'] );

1
고맙습니다. 에 대해 몰랐 extract으므로 감사합니다!
mattnewbie

5
extract()또한 WP 코딩 표준에 의해 권장되지 않습니다. make.wordpress.org/core/handbook/best-practices/…
alexg

경고! 사용자 입력과 같이 신뢰할 수없는 데이터에는 extract ()를 사용하지 마십시오. 안전하지 않으며 많은 충돌을 일으킬 수 있으며 이전의 코드를 덮어 쓸 수도 있습니다. 그것은 예상되는 것과 필요한 것을 알 수있는 현실적이고 실제로 보호되는 코드 부분에서만 사용할 수 있습니다.
Ivijan Stefan Stipić
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.