사후 메타 필드에 대한 색인 [0]은 무엇입니까?


10

테스트를 통해 PHP 지식을 향상 시키려고 노력합니다! WordPress PHP 코드를 따를 때 [0] 인수에 혼동됩니다

global $post;
$custom = get_post_custom($post->ID);
$price = $custom['price'][0];
$coMake = $custom['coMake'][0];

echo $custom['price'][0];

페이지의 입력 색인화 / 참조 용입니까? 그렇다면 왜 같은가요?! 왜 그리고 언제 사용해야하는지 알려주시겠습니까?

답변:


17

각 사후 메타 키는 여러 값을 가질 수 있습니다. 따라서 기본적으로 값을 배열로 얻습니다. 첫 번째 항목 ( 0)이 가장 오래된 항목 입니다.

get_post_custom()모든 메타 키를 값으로 가져옵니다. 다음을 사용하여 코드를 단순화 할 수 있습니다.

$price  = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );

에 대한 마지막 매개 변수 get_post_meta()TRUE이면 WordPress는 단일 키, 즉 주어진 키에 대한 사후 메타 값의 첫 번째 항목을 반환합니다.

첫 번째 호출 은 백그라운드에서 해당 게시물 ID의 모든 메타 값을 get_post_meta()가져오고 캐시 하므로 나중에 호출하면 추가 데이터베이스 쿼리가 발생하지 않습니다.

예를 들어, 이름이 지정된 게시물 메타 키 color를 작성하여 게시물에 대해 세 개의 다른 값으로 채 웁니다 . 그런 다음 키를 사용하여 동일한 작업을 수행합니다 age.

add_action( 'wp_loaded', function() {

    foreach ( array ( 'blue', 'red', 'yellow' ) as $color )
        add_post_meta( 561, 'color', $color, FALSE );

    foreach ( array ( '14', '40', '104' ) as $age )
        add_post_meta( 561, 'age', $age, FALSE );
});

마지막 매개 변수는 FALSE워드 프레스는 알 수 없는 이 메타 키를 만들기 위해 독특한 대신 하나의 키에 대해 여러 값을 허용하는 -.

postmeta테이블 의 결과 구조 는 다음과 같습니다.

표

각 행은 고유 meta_id하지만 각 post_id은 여러 개 를 가질 수 meta_key있고 각 meta_key은 여러 개를 가질 수 있습니다 meta_value.

이제 포스트 561에 대한 모든 사용자 정의 값을 가져옵니다.

add_action( 'shutdown', function(){

    $custom = get_post_custom( 561 );
    print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});

결과:

array (
  '_edit_last' => 
  array (
    0 => '1',
  ),
  '_edit_lock' => 
  array (
    0 => '1367617428:1',
  ),
  'color' => 
  array (
    0 => 'blue',
    1 => 'red',
    2 => 'yellow',
  ),
  'age' => 
  array (
    0 => '14',
    1 => '40',
    2 => '104',
  ),
)

_edit_last그리고 _edit_lock워드 프레스의 내부는, 우리는 잠시 그 무시합니다. 단 하나의 값이 있지만 이러한 값도 배열로 가져옵니다.
color그리고 age모든 포스트 메타 값과 같은 배열입니다.
$custom['color'][0]입니다 blue.

이제 다음과 같이 색상 만 가져옵니다 get_post_meta().

add_action( 'shutdown', function(){

    $color = get_post_meta( 561, 'color' );
    print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});

결과:

array (
  0 => 'blue',
  1 => 'red',
  2 => 'yellow',
)

여기서 메타 값 중 하나만 얻습니다. $color[0]아직 blue입니다. 뒤에서 WordPress는 이미 모든 사용자 정의 값을 가져 왔 으므로 다음 히트 age는 캐시에서 제공됩니다.
성능의 관점에서 get_post_custom()get_post_meta()동일하다.

마지막 시도 : get_post_meta()단일 값으로 색상을 가져옵니다 .

add_action( 'shutdown', function(){

    $color = get_post_meta( 561, 'color', TRUE );
    print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});

결과 : blue.

WordPress는 코드에서 수행 한 작업을 수행했습니다. 배열 키를 가져 와서 0값을 문자열로 반환했습니다.

가장 읽기 쉬운 옵션입니다. 이해하기 쉬운 코드를 작성하는 데 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.