WP_Query 또는 'get' 함수에서 반환된 워드프레스 필드 제한
WP 쿼리의 반환 필드를 제한하여 서버로부터의 응답을 고속화하고 취득하는 데이터의 양을 줄이는 데 도움이 되는 것을 검토하고 있습니다.사용하고 있는 쿼리의 경우 최대 3필드까지의 데이터만 필요하며 나머지는 루프의 ACF get_field_object를 통해 입력됩니다.get_filters 또는 get_filters와 같은 다른 함수는 필드 옵션이 있지만, 'filters' only' 또는 'id => slug'와 같은 소수의 함수로 제한됩니다.
저는 CakePHP에서 개발하는 데 익숙합니다.CakePHP는 모든 필드를 반환할 수 있는 옵션을 가지고 있지만, 프로젝트에서는 다른 기능을 위해 워드프레스를 필요로 하기 때문에 매우 제한적입니다.
TL;DR은 Wordpress에서 게시물을 빠르게 가져올 필요가 있다.
쿼리에서 필드 파라미터를 사용하여 이 쿼리에서 get posts를 실행했습니다.예를 들어 다음과 같습니다.제 경우 여러 카테고리의 Post ID만 취득하면 되기 때문에 다음과 같은 쿼리를 작성했습니다.
$the_query = new WP_Query( array( 
                        'ignore_sticky_posts' => 1,
                        'posts_per_page'      => -1,
                        'cat'                 => '2,6,7' ,
                        'fields'              => 'ids',
                        'post_type'           => 'post',
                        'post_status'         => 'publish', 
                                ) 
                        );
 
다음 쿼리에서 get_posts를 실행합니다.
$posts = $the_query->get_posts();
 
$posts는 특정 카테고리의 게시물 ID만 가져옵니다.
또는 표준적이고 일반적인 방법으로, 즉 have_posts의 루프를 실행하여 실행할 수도 있습니다.
if ( $the_query->have_posts() ) {
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            $post_id_array[] = get_the_ID(); 
        }           
    }
 
서버로부터의 응답을 고속화하는 것과 취득하는 데이터의 양을 줄이는 2가지 방법이 있습니다.
WP_Query개체를 반환합니다...꽤 빨라요.그러나 반환되는 항목을 제한하려면 다음 반환 필드 매개 변수를 사용하여 제한할 수 있습니다.WP_Query.
얼마나 도움이 될지는 모르겠지만 CPT에서 평탄한 어레이를 얻는 방법은 다음과 같습니다.가장 빠르지는 않지만 더 나쁠 수도 있어요.커스텀 필드를 취득하기 위해서 ACF를 사용하고 있습니다만, 슬래그만 반환하거나 복수의 필드를 반환하거나 할 수 있습니다.
// Query Jobs Args
$query_args = array(
    'post_type' => 'job',
    'posts_per_page' => -1,
    'fields' => 'ids'
);
// Get Jobs Query
$query = new WP_Query($query_args);
// Loop Persistent Vars
$job_ids = array();
// Loop Over Jobs
foreach($query->posts as $post_id) {
    $job_ids[] = get_field('job_id', $post_id);
}
// Do stuff with flattened array of job ids
이것은 특히 json_encode하고 싶을 때 WP_Query에서 필드를 제한하기 위해 수행되었습니다.그$returnvariable에는, 에 리스트 되고 있는 필드만을 포함한 투고 배열이 포함되어 있습니다.$fields어레이를 설정합니다.
    $query = new WP_Query( array( 'post_type' => 'my_custom_type' ) );
    $return = array();  
    $fields = array('post_title', 'ID');  //list of fields I want in $return
    $posts = $query->get_posts();
    foreach($posts as $post) {
        $newPost = array();
        foreach($fields as $field) {
            $newPost[$field] = $post->$field;
        }
        $return[] = $newPost;
    }
흥미롭게도 _fields 파라미터를 사용하여 WP Rest API를 사용할 수 있습니다.
https://yoursite.com/wp-json/wp/v2/posts?_fields=author,id,excerpt,title,link
 
API에 대한 자세한 내용은 https://developer.wordpress.org/rest-api/를 참조하십시오.
언급URL : https://stackoverflow.com/questions/26420726/limiting-returned-wordpress-fields-from-wp-query-or-get-functions
'sourcecode' 카테고리의 다른 글
| WordPress에 체크박스 메타박스를 저장하는 방법 (0) | 2023.02.15 | 
|---|---|
| ES6 모듈 구현, json 파일 로드 방법 (0) | 2023.02.15 | 
| 연장기에서 단일 항목을 선택하는 방법 (0) | 2023.02.11 | 
| 어떻게 하면 spring boot 어플리케이션에서 letsencrypt SSL 증명서를 설정하고 사용할 수 있습니까? (0) | 2023.02.11 | 
| Avro 스키마에 옵션 필드를 포함할 수 있습니까(즉, 필드가 .json 파일에 전혀 표시되지 않음). (0) | 2023.02.11 |