메타 데이터가있는 게시물을 많이 가져와야합니다. 물론 표준 게시물 쿼리로는 메타 데이터를 얻을 수 없으므로 일반적으로 get_post_custom()
각 게시물마다을 수행해야합니다 .
다음과 같이 하나의 사용자 지정 쿼리를 사용하려고합니다.
$results = $wpdb->get_results("
SELECT p.ID,
p.post_title,
pm1.meta_value AS first_field,
pm2.meta_value AS second_field,
pm3.meta_value AS third_field
FROM $wpdb->posts p LEFT JOIN $wpdb->postmeta pm1 ON (
pm1.post_id = p.ID AND
pm1.meta_key = 'first_field_key'
) LEFT JOIN $wpdb->postmeta pm2 ON (
pm2.post_id = p.ID AND
pm2.meta_key = 'second_field_key'
) LEFT JOIN $wpdb->postmeta pm3 ON (
pm3.post_id = p.ID AND
pm3.meta_key = 'third_field_key'
)
WHERE post_status = 'publish'
");
작동하는 것 같습니다. 동일한 게시물에서 여러 메타 값을 허용하는 방식으로 해당 메타 필드를 사용하면 트립됩니다. 나는 그것을 할 조인을 생각할 수 없습니다.
따라서 질문 1 : 다중 값 메타 필드를 가져올 수있는 조인, 하위 쿼리 또는 기타가 있습니까?
그러나 질문 2 : 그만한 가치가 있습니까? postmeta
2 쿼리 접근 방식이 선호되기 전에 몇 개의 테이블 조인을 추가합니까? 하나의 쿼리에서 모든 게시물 데이터를 가져온 다음 다른 관련 postmeta를 다른 쿼리에서 가져 와서 메타의 게시물 데이터와 PHP의 한 결과 집합을 결합 할 수 있습니다. 가능하다면 더욱 복잡한 단일 SQL 쿼리보다 더 빠를까요?
저는 항상 "데이터베이스에 최대한 많은 작업을 수행하십시오"라고 생각합니다. 확실하지 않습니다!
get_posts()
그 다음, get_post_meta()
그 모든 하나? @MannyFleurmond, WP의 내장 캐싱에 대한 하드 정보를 찾기는 어렵지만 AFAIK는 요청마다 물건을 캐시합니다. 이 데이터를 가져 오기 위해 서버에 전화하는 것은 AJAX 호출이며, 그 전에는 물건을 잡을 것이라고 생각하지 않습니다.