가능한 방법 중 하나는 WPDB 클래스의 도우미 메소드 중 하나를 사용하여보다 세련된 메타 기반 쿼리를 수행하는 것입니다. 그러나 이러한 함수 중 일부를 사용하는 경우 한 가지 열이나 행만 호출하더라도 일반적으로 간단한 데이터 배열을 다시 가져 오지 않고 일반적으로 객체 속성을 불필요하게 참조해야한다는 점에주의해야합니다.
물론, 모든 함수가 동일하고 동일한 것은 아니며 , 의도적 인 언급은 WPDB 메소드로 보내집니다.이 메소드 get_col
는 쿼리 된 데이터의 단순한 평면 배열을 반환합니다. 다음 예제는이 메소드를 호출하기 때문에 특별히 언급합니다. .
WordPress-WPDB 데이터 열 선택
$ wpdb-> get_col ()
다음은 선택된 게시물 유형, 게시물 상태 및 특정 메타 키 (또는 기술적으로 신경 쓰지 않는 사용자 정의 필드)의 모든 게시물에 대해 데이터베이스를 쿼리하는 함수 예제입니다.
function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = %s
AND p.post_status = %s
AND p.post_type = %s
", $key, $status, $type ) );
return $r;
}
예를 들어, 메타 유형 이 rating 인 게시물, 영화 유형에 대해 해당 정보를 변수에 저장하려는 경우 이러한 호출의 예는 다음과 같습니다.
$movie_ratings = get_meta_values( 'rating', 'movies' );
해당 데이터를 화면에 인쇄하는 것 이상의 작업을 수행하지 않으려는 경우 PHP의 implode 함수는 간단한 배열을 데이터 행으로 빠르게 스플 라이스 할 수 있습니다.
// Print the meta values seperate by a line break
echo implode( '<br />', get_meta_values( 'YOURKEY' ));
예를 들어 반환 된 데이터를 사용하여 반환 된 데이터에 대해 간단한 루프를 수행하고 개수의 배열을 작성하여 이러한 메타 값을 갖는 게시물 수를 계산할 수 있습니다.
$movie_ratings = get_meta_values( 'rating', 'movies' );
if( !empty( $movie_ratings ) ) {
$num_of_ratings = array();
foreach( $movie_ratings as $meta_value )
$num_of_ratings[$meta_value] = ( isset( $num_of_ratings[$meta_value] ) ) ? $num_of_ratings[$meta_value] + 1 : 1;
}
/*
Result:
Array(
[5] => 10
[9] => 2
)
// ie. there are 10 movie posts with a rating of 5 and 2 movie posts with a rating of 9.
*/
이 논리는 다양한 종류의 데이터에 적용 할 수 있으며 다양한 방식으로 작동하도록 확장 할 수 있습니다. 그래서 내 예제가 도움이되고 간단하기를 바랍니다.