我将如何向WP REST API添加自定义表/端点?

时间:2016-03-26 作者:codescribblr

我为产品、购物车和通知的性能原因创建了自定义表。我想通过WP REST API v2使这些表及其数据可用于普通CRUD。如何将自定义表(及其列)添加到API中,以便获取/更新这些记录?

3 个回复
SO网友:Simon H

我终于想出了解决问题的办法restaurants 桌子,位于wp_* 我的WP数据库中的表。希望这有帮助

add_action( \'rest_api_init\', function () {
  register_rest_route( \'restos/v1\', \'/all\', array(
    \'methods\' => \'GET\',
    \'callback\' => \'handle_get_all\',
    \'permission_callback\' => function () {
      return current_user_can( \'edit_others_posts\' );
    }
  ) );
} );

function handle_get_all( $data ) {
    global $wpdb;
    $query = "SELECT qname, rname, recommendation FROM `restaurants`";
    $list = $wpdb->get_results($query);
    return $list;
}
对于我需要的所有CRUD操作,我都有关于此主题的变体

SO网友:Kosso

与其创建自定义数据库表,不如创建自己的自定义帖子类型(在Wordpress中-自4.7.+)以及所需的任何自定义字段(以及分类法)。

所有这些都可以作为插件或通过functions.php 在主题中。

这里有一个非常简单但彻底的例子来说明如何做到这一点。

它展示了如何创建自定义帖子类型(称为“acme\\u products”)及其具有自定义分类(categories)功能的自定义字段。所有这些都内置了REST API支持。它还将向您展示如何为WP管理表单和列表页面的列自定义输入(元)框。

https://gist.github.com/kosso/47004c9fa71920b441f3cd0c35894409

SO网友:lortschi

我刚刚使用了RESTAPI v1。v2拒绝了选择表结果的回调权限。下面是一个从自定义db表中提取数据的端点示例:domain。com/wp-json/test/v1/testing

add_action( \'rest_api_init\', function () {
        $namespace = \'test/v1\';
        $route     = \'/testing\';

        register_rest_route($namespace, $route, array(
            \'methods\'   => WP_REST_Server::READABLE,
            \'callback\'  => function () {
                global $wpdb;
                $table = $wpdb->prefix . \'test\';
                $query = "SELECT name, color, etc.. FROM $table";
                $results = $wpdb->get_results($query);
                return $results;
            },
            \'permission_callback\' => \'__return_true\',
            \'args\' => array()
        ));
    });