wordpress rest api v2 분류법 용어를 나열하는 방법?
v2는 처음이고, v1은 오랫동안 사용하고 있으며, 현재 v2로 업그레이드하고 있으며, 특정 사용자 지정 분류법에 속하는 모든 용어를 가져오려고 합니다.
v1에서는 /taxonomies/location_category/terms를 얻기 위해 이 작업을 수행할 수 있습니다.
그러나 v2 i try / taxonomies / terms 에서는 json 오류 "code" ""rest_no_route" "message" "URL 및 요청 메서드에 일치하는 경로를 찾을 수 없습니다." "data":{"상태":404}
/companies/location_category/만 있으면 분류법에 속하는 용어가 표시되지 않습니다.
구글에서 몇 시간 동안 질문을 검색해도 아무 결과도 나오지 않았습니다. 아무나 도와주십시오. 감사합니다.
결국 여기에 커스텀 코드를 작성하게 된다
블로우 코드를 함수에 추가합니다.php
class all_terms
{
public function __construct()
{
$version = '2';
$namespace = 'wp/v' . $version;
$base = 'all-terms';
register_rest_route($namespace, '/' . $base, array(
'methods' => 'GET',
'callback' => array($this, 'get_all_terms'),
));
}
public function get_all_terms($object)
{
$return = array();
// $return['categories'] = get_terms('category');
// $return['tags'] = get_terms('post_tag');
// Get taxonomies
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies = get_taxonomies($args, $output, $operator);
foreach ($taxonomies as $key => $taxonomy_name) {
if($taxonomy_name = $_GET['term']){
$return = get_terms($taxonomy_name);
}
}
return new WP_REST_Response($return, 200);
}
}
add_action('rest_api_init', function () {
$all_terms = new all_terms;
});
url을 입력합니다.http://youdomain.com/wp-json/wp/v2/all-terms?term=you_taxonomy
따라서 용어 = you_category는 job_category에 속하는 용어를 가져옵니다.
분류법 용어는 간단히 다음과 같이 불립니다.
https://yoursite.com/wp-json/wp/v2/the-taxonomy-slug
예를 들어, 질문에 답하려면:
https://yoursite.com/wp-json/wp/v2/location_category
터미널에서:
curl -X GET -i http://www.example.com/wp-json/wp/v2/location_category
커스텀 분류법에서는 콜에서 'show_in_rest' 인수를 true로 설정합니다(기본값은 false).
그register_taxonomy()
call은 'rest_base' 인수를 설정할 수도 있습니다(기본값은 분류법 이름입니다)./location_category/
를 참조해 주세요).
TLDR
분류법을 등록할 때 플래그를 사용합니다.그게 다예요.
세부 사항
사용 가능한 분류법 모두 나열
모든 기본 분류법은 REST API를 통해 사용할 수 있습니다.다음 엔드포인트를 사용하여 사용 가능한 모든 분류법 목록을 가져옵니다.
https://exmaple.org/wp-json/wp/v2/taxonomies
그러면 의 각 분류법에 대한 올바른 엔드포인트가 표시됩니다.wp:items
태그를 지정합니다(예:
..., "wp:items":[{"href":"https://example.com/wp-json/wp/v2/categories"}], ...
..., "wp:items":[{"href":"https://example.com/wp-json/wp/v2/tags"}], ...
REST 끝점에 새 분류법 추가
분류법이 이 분류법 개요에 없는 경우 호출할 때 REST 엔드포인트를 활성화해야 합니다.인수를 추가하여 이 작업을 수행할 수 있습니다.'show_in_rest' => true
:
<php
register_taxonomy( 'location_category', 'post', [
// ...
'show_in_rest' => true, // ← make sure you have this line in the taxonomy args!
] );
주의: 를 사용하지 않는 경우show_in_rest
그러면 분류법을 블록 편집기("Gutenberg")에서 사용할 수 없습니다.
내장된 로직을 복제하기 위해 커스텀 REST 엔드포인트를 생성하지 않는 것이 좋습니다.
즉, 이러지도 저러지도 말고
받아들여진 답변이 내게는 대부분 효과가 있었다.이게 내가 가진 거야
<?php
// your_theme/functions.php
/**
* how to list all taxonomy terms
*/
class all_terms
{
public function __construct()
{
$version = '2';
$namespace = 'wp/v' . $version;
$base = 'all-terms';
register_rest_route($namespace, '/' . $base, array(
'methods' => 'GET',
'callback' => array($this, 'get_all_terms'),
));
}
public function get_all_terms($object)
{
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies = get_taxonomies($args, $output, $operator);
foreach ($taxonomies as $key => $taxonomy_name) {
if ($taxonomy_name = $_GET['term']) {
$return[] = get_terms(array(
'taxonomy' => $taxonomy_name,
'hide_empty' => false,
));
}
}
return new WP_REST_Response($return, 200);
}
}
add_action( 'rest_api_init', get_all_terms);
?>
문서와 보다 밀접하게 일치합니다.https://developer.wordpress.org/reference/functions/get_terms/
앞으로 이것을 읽고 있는 사람이 있다면, 나는 기본 WP 카테고리가 각 용어 오브젝트에 대해 0, 1, 2 등의 부모 키를 출력하고 있다는 문제에 부딪혔는데, 그 자체도 문제지만 커스텀 분류법에 오브젝트에 이 부모 값이 없을 경우 더 큰 문제가 된다.
이 문제를 해결하려면 다음과 같이 체크 표시 예를 수정합니다.
foreach ($taxonomies as $key => $taxonomy_name) {
if($taxonomy_name = $_GET['term']){
$return = get_terms( array(
'taxonomy' => $taxonomy_name,
'hide_empty' => false,
));
}
}
어떤 병사들은 혼란스러운 것 같아 나조차도 마찬가지야
올바른 URL은 https://example.com/wp-json/wp/v2/ {your_buff}입니다.
https://example.com/wp-json/wp/v2/taxonomies/이 아닙니다.{ your _ parames }
"/filecies"는 필수가 아닙니다.
언급URL : https://stackoverflow.com/questions/42462187/wordpress-rest-api-v2-how-to-list-taxonomy-terms
'it-source' 카테고리의 다른 글
spring에서 2개 이상의 데이터베이스를 사용하는 방법 (0) | 2023.02.12 |
---|---|
SQL*PLUS for Oracle을 대체할 수 있는 좋은 방법이 있습니까? (0) | 2023.02.12 |
UI WebViewDelegate가 XMLHttpRequest를 감시하고 있지 않습니까? (0) | 2023.02.12 |
범위 true를 사용하여 Angular Directive에서 상위 범위를 업데이트할 수 있습니까? (0) | 2023.02.12 |
범용 브라우저를 지원하는 Clip-Path를 대체하는 방법 (0) | 2023.02.12 |