WP REST API : 카테고리 1 및 카테고리 2로 필터링


12

REST API를 사용하고 있는데이 문제가 발생했습니다. cat1과 cat2 모두에서 게시물을 어떻게 필터링 할 수 있습니까?

현재 ?categories[]=45&categories[]=50카테고리 ID 45 OR 50의 반품-45 AND 50의 게시물은 어떻게 얻을 수 있습니까?

미리 감사드립니다.


이에 대한 해결책을 찾았습니까?
Corey

@Corey : 아뇨. 현재로서는 불가능하다고 생각합니다 (이를 주장하는 다른 플러그인 지원 게시물 참조) Ionic이있는 앱에 API를 사용하고 있었고 별도로로드하고 대신 교차했습니다. 내 학습이 불완전한 경우를 대비하여 열어 두십시오. 플러그인을 편집하기 위해 어딘가에서 읽었습니까?
Jesse P Francis

답변:


6

아래와 같이 여러 카테고리를 쉼표로 구분할 수 있습니다

http://example.com/wp-json/wp/v2/posts?categories=20,30

도움이 되었기를 바랍니다


AND 검색을 요청하면 OR이 제공됩니다.
Tom Woodward

6

@Jesse 참조 : WP-API / WP-API # 2990

WP 4.7 filter부터 WP-API에서 제거되었습니다.

이 플러그인을 사용해야합니다 : https://github.com/WP-API/rest-filter


1
견고한 유지 보수 테스트를 거친 대체 플러그인 github.com/bueltge/wp-rest-api-filter-items 가 있습니다.
bueltge

@bueltge, 흥미 롭습니다. 현재 rest-api-filter-fields 플러그인 github.com/svrooij/rest-api-filter-fields 를 사용하고 있습니다. 이것은 같은 일을하는 것으로 보입니다.
Austin Passy 2016 년

1

다음을 사용하여 여러 카테고리에 액세스 할 수 있어야합니다.

http://YOURSITE.DEV/wp-json/wp/v2/posts?categories=45+50

희망이 도움이됩니다!

건배


작동하지 않는 것 같습니다! :)
Jesse P Francis

1

Austin이 언급 한 필터 플러그인 ( https://github.com/WP-API/rest-filter )을 설치하고 시도하십시오 ?filter[categories]=cat_one_slug%2Bcat_two_slug.

그것이 기호 %2B와 동등한 코드 라는 것을 알았습니다 +.

일반적으로 +AND 연산자에 사용하지만 불행히도 공백으로 변환되므로 %2B대신 사용하십시오.


1

현재 버전의 API 에서이 작업을 수행하는 방법이없는 것 같습니다. 플러그인을 사용하지 않고 사용자 정의 엔드 포인트를 사용하거나 특정 게시물 유형에 대해 나머지 쿼리 필터 기능 을 사용하여 얻을 수 있습니다 .

다음은 매개 변수를 추가하는 대략적인 필터 함수입니다 cat_relation.

add_filter( 'rest_post_query', function( $args, $request ) {
    if($request['cat_relation'] == 'AND') {
        $args['category__and'] = $request['categories'];
    }
    return $args;
}, 10, 2);

따라서 요청 URL의 예는 다음과 같습니다.
http://example.com/wp-json/wp/v2/posts?categories=17,8&cat_relation=AND



-1

Rest API v3을 사용하는 사람들에게는 다음과 같이 작동합니다.

http://example.com/wp-json/wc/v3/products/?category=42,43

제품 및 제품 카테고리를위한 WooCommerce REST API입니다. 문제는 WordPress REST API의 게시물 및 게시물 범주에 관한 것입니다.
Jacob Peattie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.