wordpress rest api v2如何列出分类术语?

Xia*_*nqi 6 wordpress wordpress-rest-api

我是v2的新手,我长时间使用v1,目前升级到v2,我试图让所有条款都属于特定的自定义分类.

在v1中,我可以这样做以获得术语/分类/ location_category/terms

但在v2中我尝试/分类/条款它返回json错误"代码":"rest_no_route","消息":"找不到匹配URL和请求方法的路由","数据":{"状态":404}}

如果只是/ taxonomies/location_category /它没有显示任何属于分类法的术语.

我在谷歌搜索问题几个小时没有显示任何结果,任何人都可以帮助,谢谢

Xia*_*nqi 10

最后在这里写自定义代码

将函数添加到functions.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;
});
Run Code Online (Sandbox Code Playgroud)

并输入网址 http://youdomain.com/wp-json/wp/v2/all-terms?term=you_taxonomy

所以term = you_taxonomy,将获得属于job_category的术语.


Mar*_*Gee 6

分类术语简称为:

https://yoursite.com/wp-json/wp/v2/the-taxonomy-slug
Run Code Online (Sandbox Code Playgroud)

例如,要回答您的问题:

https://yoursite.com/wp-json/wp/v2/location_category
Run Code Online (Sandbox Code Playgroud)

从终端:

curl -X GET -i http://www.example.com/wp-json/wp/v2/location_category
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案。接受的答案是重新创建一个本来就存在的函数。需要注意的一件事是,如果您想要超过 10 个结果,则应在 URL 末尾添加 `?per_page=100`。如果您有超过 100 个结果。您需要使用一些分页,即获取第二页:`/wp-json/wp/v2/priority-tags?per_page=100&page=2` (3认同)

Ste*_*ell 5

对于自定义分类,确保你设置“show_in_rest”的说法是正确的(默认为false)在您的register_taxonomy()通话

register_taxonomy()您还可以在该调用中设置“ rest_base”参数(/location_category/在您的示例中,默认名称为分类名称)。


Phi*_*ipp 5

总长DR

\n

show_in_rest注册分类法时使用该标志。就这样。

\n

细节

\n

列出所有可用的分类法

\n

所有默认分类法均可通过 REST API 获得。使用以下端点获取所有可用分类法的列表:

\n
https://exmaple.org/wp-json/wp/v2/taxonomies\n
Run Code Online (Sandbox Code Playgroud)\n

它会告诉您标签中每个分类的正确端点wp:items,例如

\n
..., "wp:items":[{"href":"https://example.com/wp-json/wp/v2/categories"}], ...\n..., "wp:items":[{"href":"https://example.com/wp-json/wp/v2/tags"}], ...\n
Run Code Online (Sandbox Code Playgroud)\n

向 REST 端点添加新分类法

\n

如果您的分类未在此分类概述中列出,您需要在调用 时启用 REST 端点register_taxonomy。您可以通过添加参数来做到这一点\'show_in_rest\' => true

\n
https://exmaple.org/wp-json/wp/v2/taxonomies\n
Run Code Online (Sandbox Code Playgroud)\n

注意:如果您不使用show_in_rest,则分类法在块编辑器(“古腾堡”)中不可用。

\n
\n

我强烈建议不要创建自定义 REST 端点来重复内置逻辑。
\n即 不要这样做这个

\n