WordPress json API分类索引方法

时间:2011-09-12 作者:B.S.

本帖版次如下:

wordpress json custom taxonomy problem

如何编写使用自定义分类法获取类别的方法,类似于方法:get_category_index 核心json api控制器中?

场景:我有一个名为-books的分类法,它有四个类别,我需要通过get\\u taxonomy\\u index输出这些类别。

像这样的http://example.com//api/get_taxonomy_index/?dev=1

1 个回复
最合适的回答,由SO网友:Hameedullah Khan 整理而成

在您的案例中列出自定义分类的术语books 我们需要为JSON API创建一个自定义控制器。

Step 1: 应将以下2个类粘贴到存储在主题目录中的php文件中(您可以将文件存储在任何您喜欢的地方,但您必须确保在中的代码中返回文件的正确路径Step 2). 此示例的文件名为:json-api-taxonomy-index.php

<?php
/**
 * JSON API custom taxonomy index
 **/

/**
 * Custom Taxonomy Controller for JSON API plugin
 *
 * This custom taxonomy controller enables json api to list all terms in specified taxonomy. 
 **/
class JSON_API_Taxonomy_Controller {

    public function get_taxonomy_index() {
        $terms = $this->get_terms();
        return array(
            \'count\' => count( $terms ),
            \'terms\' => $terms
        );
    }

    public function get_terms() {
        global $json_api;
        $taxonomy = $this->get_current_taxonomy();
        if (!$taxonomy) {
            $json_api->error("Not found.");
        }

        $wp_terms = get_terms( $taxonomy );
        $terms = array();
        foreach ( $wp_terms as $wp_term ) {
            if ( $wp_term->term_id == 1 && $wp_term->slug == \'uncategorized\' ) {
                continue;
            }
            $terms[] = new JSON_API_Term( $wp_term );
        }
        return $terms;
    }

    protected function get_current_taxonomy() {
        global $json_api;
        $taxonomy  = $json_api->query->get(\'taxonomy\');
        if ( $taxonomy ) {
            return $taxonomy;
        } else {
            $json_api->error("Include \'taxonomy\' var in your request.");
        }
        return null;
    }
}

// Generic rewrite of JSON_API_Tag class to represent any term of any type of taxonomy in WP
class JSON_API_Term {

  var $id;          // Integer
  var $slug;        // String
  var $title;       // String
  var $description; // String

  function JSON_API_Term($term = null) {
    if ($term) {
      $this->import_wp_object($term);
    }
  }

  function import_wp_object($term) {
    $this->id = (int) $term->term_id;
    $this->slug = $term->slug;
    $this->title = $term->name;
    $this->description = $term->description;
    $this->post_count = (int) $term->count;
  }

}
?>
Step 2: 在函数中粘贴以下过滤器。php文件。如果尚未将文件存储在主题目录中,请在中更改文件的路径set_taxonomy_controller_path 作用

function add_taxonomy_controller($controllers) {
  $controllers[] = \'Taxonomy\';
  return $controllers;
}
add_filter(\'json_api_controllers\', \'add_taxonomy_controller\');

function set_taxonomy_controller_path() {
  return get_stylesheet_directory() . \'/json-api-taxonomy-index.php\';
}
add_filter(\'json_api_taxonomy_controller_path\', \'set_taxonomy_controller_path\');
Step 3: 转到Settings->JSON API 并激活分类控制器。

就这样,你完了!现在,您可以使用json api访问自定义分类法的术语。示例:http://example.com/api/Taxonomy/get_taxonomy_index/?taxonomy=books

结束

相关推荐