WordPress Rest API按ID或slug名称

时间:2017-05-30 12:48:11

标签: php wordpress rest api wordpress-rest-api

我在WordPress中遇到了过滤分类法。 首先我在function.php中有这个 - >我制作了自定义帖子类型和自定义分类:

function create_post_types() {
register_post_type( 'skole',
    array(
        'labels' => array(
            'name' => _( 'Skole' ),
            'singular_name' => _( 'Skola' )
        ),
        'public' => true,
        'menu_icon' => 'dashicons-welcome-learn-more',
        'has_archive' => true,
        'show_in_rest' => true,
        'rest_base' => 'skole',
        'rest_controler_class' => 'WP_REST_Post_Controller'

    )
);
}
add_action( 'init', 'create_post_types');

function create_custom_taxonomies() {
register_taxonomy(
    'tip_skole',
    'skole',
    array(
        'label' => 'Tip skole',
        'hierarchical' => true,
        'show_in_rest'       => true,
        'rest_base'          => 'tip_skole',
        'rest_controller_class' => 'WP_REST_Terms_Controller',
    )
);
add_action( 'init', 'create_custom_taxonomies');

我安装了WP REST API插件,现在我为此创建了.js文件:

 var test = jQuery('#test');
 if (test) {
 test.on('click', function() {
    var ourRequest = new XMLHttpRequest();
    ourRequest.open('GET', 'http://localhost/skola/wp-json/wp/v2/tip_skole/');
    ourRequest.onload = function () {
        if (ourRequest.status >= 200 && ourRequest.status < 400) {
            var data = JSON.parse(ourRequest.responseText);
            console.log(data);
            createHtml(data);
        } else {
            console.log("We conected to the server, but error");
        }
    }
    ourRequest.onerror = function() {
        console.log('Connection error');
    }
    ourRequest.send();
});
 }
function createHtml(postData) {
var ourHTMLString = '';
for (var i = 0; i < postData.length; i++) {
    ourHTMLString += '<a href="' +postData[i].link +  '"><h2>' + postData[i].name + '</h2></a>';
    console.log(postData);
}
var x = jQuery('.skole__single');
// x.innerHTML = ourHTMLString;
jQuery('.skole__single').append(ourHTMLString);

console.log(ourHTMLString);

 }

所以在这个.js文件中我得到了正确的结果,但是当我想看到这个分类中的所有帖子时,我不知道如何。所以在分类学'tip_skole'中我有“A”,“B”,“C”和“D”。 所以这就是我的尝试:

http://localhost/skola/wp-json/wp/v2/tip_skole?filter[id]=2
http://localhost/skola/wp-json/wp/v2/tip_skole?id=2
http://localhost/skola/wp-json/wp/v2/tip_skole?[name]=A
http://localhost/skola/wp-json/wp/v2/tip_skole?filter[name]=A
http://localhost/skola/wp-json/wp/v2/tip_skole?filter[slug]=A

有任何帮助吗?

2 个答案:

答案 0 :(得分:1)

要按ID进行过滤,您可以简单地通过以下方式进行操作:

http://localhost/skola/wp-json/wp/v2/tip_skole/2

tip_skole是分类法,“ 2”是分类法的ID。

答案 1 :(得分:0)

首先,WordPress不支持4.7+版本的过滤器,所以我得到https://github.com/WP-API/rest-filter插件,而不是我需要的是

http://localhost/skola/wp-json/wp/v2/skole/?filter[tip_skole]=skole-stranih-jezika

所以它得到我的自定义帖子类型并按分类标准过滤它! 希望这对某人有所帮助!