WP JSON API META_QUERY不工作

时间:2015-04-23 作者:Jacksonkr

在下面的代码示例中,我使用帖子标题(名称)作为字段来存储电子邮件地址,而密码位于自定义字段中。以下查询将提取正确的用户,但不关心密码是否匹配。我已经搜了几个小时了,这是我迄今为止最好的一次,还缺什么?

$posts = $json_api->introspector->get_posts(array(
    \'post_type\'     => \'custom_user\',
    \'name\'          => \'[email protected]\',
    \'meta_query\'    => array(
        \'key\'               => \'password\',
        \'value\'             => \'pass123\'
    )
));
此外,我正在使用wp json plugin located here

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

根据@ialocin的评论,我从WP-JSON-API切换到WP-REST-API。rest api的文档要少得多,但可以使用本机wordpress函数进行自定义。而且,它有a nifty github plugin for allowing use with ACF custom fiends.

无论如何,定制wp rest api的文档非常糟糕,因此我将向您展示我在wp 4.2.0+wp rest api 1.2.1中所做的工作

第一件事是向插件中添加一个操作,以便它能够接收您的新rest操作。在wp内容/插件/[rest api文件夹]/插件中执行此操作。php。我个人在文件的底部添加了所有这些内容。

require_once( dirname( __FILE__ ) . \'/lib/class-myplugin-api-mytype.php\' );

function myplugin_api_init() {
    global $myplugin_api_mytype;

    $myplugin_api_mytype = new MyPlugin_API_MyType();
    add_filter( \'json_endpoints\', array( $myplugin_api_mytype, \'register_routes\' ) );
}
add_action( \'wp_json_server_before_serve\', \'myplugin_api_init\' );
现在是时候添加你的新类了,这就是肉所在的地方。创建文件wp-content/plugins/[RESTAPI文件夹]/lib/class-myplugin-api-mytype。php并将其放入其中:

<?php

class MyPlugin_API_MyType {
    public function register_routes( $routes ) {
        $routes[\'/test\'] = array(
            array( array( $this, \'test\'), WP_JSON_Server::READABLE ),
        );
        // $routes[\'/myplugin/mytypeitems\'] = array(
            // array( array( $this, \'get_posts\'), WP_JSON_Server::READABLE ),
            // array( array( $this, \'new_post\'), WP_JSON_Server::CREATABLE | WP_JSON_Server::ACCEPT_JSON ),
        // );
        // $routes[\'/myplugin/mytypeitems/(?P<id>\\d+)\'] = array(
        //  array( array( $this, \'get_post\'), WP_JSON_Server::READABLE ),
        //  array( array( $this, \'edit_post\'), WP_JSON_Server::EDITABLE | WP_JSON_Server::ACCEPT_JSON ),
        //  array( array( $this, \'delete_post\'), WP_JSON_Server::DELETABLE ),
        // );

        // Add more custom routes here

        return $routes;
    }

    public function test( $filter = array(), $context = \'view\', $type = \'post\', $page = 1 ) {
        return array("status" => "ok", "message" => "it worked!");
    }
}

?>
现在转到url末尾带有“/wp-json/test”的worpress页面(无查询字符串),您应该会看到

{"status":"ok","message":"it worked!"}
维奥拉!您还可以查看/libs/class wp-json帖子。php和复制机制。我希望这能节省我花了多少时间才弄明白的人!

结束

相关推荐