Wordpress REST API V2가 모든 게시물을 반환합니다.
를 사용하여 모든 게시물(또는 CPT)을 가져오는 기능이 없습니다.
example.com/wp-json/wp/v2/country/?per_page=-1
또는 비슷한 것이라도.이 문서에는 다음과 같은 정보가 기재되어 있습니다.
per_page: 결과 집합에서 반환되는 최대 항목 수입니다.
디폴트: 10
per_page에 관한 다른 질문에서는 1 ~100 의 범위에서 사용할 수 있습니다.
저 같은 경우 필요한 투고는 한정되어 있습니다만, 200~300개 정도 됩니다.모든 페이지를 페이지별로 가져와 하나로 연결하는 것 외에 모든 것을 얻기 위한 해결 방법이 있습니까?
중요한 경우 추가 정보:angular.js를 사용하고 있습니다.
페이지 번호 매기기 대신 이것을 사용해 보세요.제 사이트의 모든 게시물이 반환됩니다.
http://example.com/wp-json/wp/v2/posts/?filter[category_name]=country&filter[posts_per_page]=-1
그렇게 입력하면 100점 이상의 반품을 받고 111점 등으로 상한할 수 있습니다. http://example.com/wp-json/wp/v2/posts/?filter[category_name]=country&filter[posts_per_page]=111
최신 WP 시나리오의 경우 다음 기능을 통해 99보다 더 큰 수익을 얻을 수 있습니다.
add_filter( 'rest_post_collection_params', 'big_json_change_post_per_page', 10, 1 );
function big_json_change_post_per_page( $params ) {
if ( isset( $params['per_page'] ) ) {
$params['per_page']['maximum'] = 200;
}
return $params;
}
WP 4.7에서 WP REST API 요청의 상한을 다음 필터에 후크하여 늘릴 수 있습니다.
rest_{$this->post_type}_collection_params
이 스니펫은 투고에 도움이 됩니다.
add_filter( 'rest_post_query', 'se35728943_change_post_per_page', 10, 2 );
function se35728943_change_post_per_page( $args, $request ) {
$max = max( (int) $request->get_param( 'custom_per_page' ), 200 );
$args['posts_per_page'] = $max;
return $args;
}
참고: standard는 사용할 수 없습니다.per_page요청 인수(100보다 큰 값) -wp api는 즉시 에러와 함께 응답합니다(따라서 후크는 도움이 되지 않습니다).위 코드에 있습니다.custom_per_page(다른 단어를 사용할 수 있습니다).
분류법에 대한 유사한 필터:
예:
add_filter( 'rest_tags_query', 'se35728943_change_terms_per_page', 2, 10 );
function se35728943_change_terms_per_page( $prepared_args, $request ){
$max = max( 200, (int) $request->get_param( 'custom_per_page' ) );
$prepared_args['number'] = $max;
return $prepared_args;
}
해당 구문을 사용하여 10개 이상 가져올 수 없습니다.시험을 마친http://example.com/wp-json/wp/v2/posts?per_page=100100까지 일했어요.
벨로우 어프로치는 나에게 효과가 있었다.79개의 246개의 투고가 있는 사이트에서 투고를 취득할 수 있었습니다.페이지 번호 매개 변수를 사용했습니다.루프 내에서는 1부터 TotalPages를 사용할 수 있습니다.문서에 대한 링크를 참조하십시오.
http://mydomain/wp-json/wp/v2/posts?_embed&per_page=100&page=793
per_page = 100 : 페이지당 최대 100개의 게시물을 가져옵니다.
page = 793 : 페이지당 100개의 투고가 있는 793페이지가 있음을 의미합니다.마지막 페이지에는 46개의 게시물만 있었다
루프를 선택한 언어로 사용할 수 있습니다.
프로토콜을 준수하는 보다 간단한 방법은 모든 응답을 순서대로 수집하고 단일 응답을 수행하는 것입니다. setState()call. 다음과 같습니다. (가독성을 위해 오류 처리 생략)
componentDidMount() {
var uri = "http://your-server";
var totalPages = 0;
var allResults = [];
fetch(uri)
.then(response => {
totalPages = response.headers.get('X-WP-TotalPages');
return response.json()})
.then(results => {
allResults = results;
//console.log('Got results from server', results.length);
for (let i = 2; i <= totalPages ; i++){
fetch(uri + "?page=" + i)
.then(response => {return response.json()})
.then( moreresults => {
allResults = allResults.concat( moreresults );
});
}
this.setState({responses: allResults });
});
}
WordPress 4.9.6에서는
/* change amount of posts returned by REST API to 100 */
function rest_posts_per_page( $args, $request ) {
$max = max( (int)$request->get_param( 'per_page' ), 100 );
$args['posts_per_page'] = $max;
return $args;
}
add_filter( 'rest_post_query', 'rest_posts_per_page', 10, 2 );
도움이 됐으면 좋겠는데, 난 악리를 쓰고 있지만, 다른 것도 마찬가지야.
async multipleRequests() {
let npage = 1;
let url = `/sites/mysite.com/wp-json/wp/v2/posts?page=${npage}&per_page=10`;
let { data } = await axios.get(url);
let tempdata = data;
while (tempdata.length > 0) {
npage++;
let url = `/sites/mysyte.com/wp-json/wp/v2/media?page=${npage}&per_page=10`;
let { data } = await axios.get(url);
tempdata = data;
}
}
다른 매개변수를 사용하여 이 작업을 수행할 계획인 경우 카테고리 등을 추가할 수도 있습니다.EG:
https://www.website.com/wp-json/wp/v2/posts?categories=61&per_page=100
100개 이상의 투고나 용어(태그, 카테고리)를 얻을 수 있습니다.
하면 됩니다.rest_{$this->post_type}_query (투고용)rest_{$this->taxonomy}_query건을만만만만만만
하지만 알아둬야 할 건 합격하는 건 불가능하다는 거야per_page의 arg 에 있는 에 있는 아르그GET100 을 100 100 100 을 100 100 100 100 。 WP API는 즉시 에러를 발생시킵니다(훅은 도움이 되지 않습니다. per_page must be between 1 (inclusive) and 100 (inclusive)(400 http 'syslog').
하려면 , 을 .per page 값get and 。이에 이 합니다.그 후에 후크에서 이 값을 추적합니다.
암호는 다음과 같습니다.
투고용
add_filter( 'rest_post_query', 's976_rest_post_per_page', 2, 10 );
function s976_rest_post_per_page( array $args, WP_REST_Request $request ) {
$post_per_page = $request->get_param('s976_per_page') ? $request->get_param('s976_per_page') : 10;
$args['posts_per_page'] = $post_per_page;
return $args;
}
조건의 경우
add_filter( 'rest_category_query', 's976_rest_cats_per_page', 2, 10 );
function s976_rest_cats_per_page( array $prepared_args, WP_REST_Request $request ){
$cats_per_page = $request->get_param('s976_per_page') ? $request->get_param('s976_per_page') : 10;
$prepared_args['number'] = $cats_per_page;
return $prepared_args;
}
이렇게.s976_per_page등 ) (500, 99999 등)GET탁한한다
's976_per_page' 입니다.이렇게 '아주먹다', '주먹다', '주먹다', '주먹이다.
이것이 ALL할 수 있을까요할 수 요?또한 상태의 세트/서브셋만 취득할 수도 있습니다.
감사합니다.
JMB
javascript를 사용한 이 솔루션은 나에게 효과가 있었다.
서류상으로는 최대 100개까지 받을 수 있다.필요한 경우 오프셋과 여러 요청을 사용합니다.예:
$i = 0;
$check_for_more = true;
while ( $check_for_more ) {
$offset = $i * 100;
$url = network_site_url( "/wp-json/wp/v2/office?order=asc&orderby=title&per_page=100&offset={$offset}" );
$offices = json_decode( wp_remote_retrieve_body( wp_remote_get( $url ) ) );
if ( $offices ) {
if ( count( $offices ) < 100 ) {
$check_for_more = false;
}
foreach ( $offices as $key => $office ) {
// Do what you want
}
} else {
$check_for_more = false;
}
$i ++;
}
이것을 사용해 보세요.이거는 정상적으로 동작합니다(WP 5.8.1).
add_filter( 'rest_{YOU_CPT}_collection_params', function ( $params, WP_Post_Type $post_type ) {
if ( '{YOU_CPT}' === $post_type->name && isset( $params['per_page'] ) ) {
$params['per_page']['maximum'] = PHP_INT_MAX;
}
return $params;
}, 10, 2 );
언급URL : https://stackoverflow.com/questions/35728943/wordpress-rest-api-v2-return-all-posts
'programing' 카테고리의 다른 글
| JSON 데이터에서 JSON 스키마를 생성하는 도구 (0) | 2023.04.01 |
|---|---|
| @pathparam 및 @requestmapping을 사용하여 null을 가져오는 중 (0) | 2023.04.01 |
| Linux용 JSON 명령줄 포맷 도구 (0) | 2023.04.01 |
| Flask의 jsonify를 사용할 때 datetime.date를 'yyy-mm-d' 형식으로 유지합니다. (0) | 2023.04.01 |
| 도커 컨테이너의 디스크 사용량을 분석하는 방법 (0) | 2023.04.01 |