使用REST或GraphQL为定制发布类型和定制查询创建API

时间:2020-09-29 作者:Danish Mohammed

我想为网站(zoetalentsolutions.com)创建一个使用RESTAPI的跨平台应用程序。该网站位于WordPress中,具有自定义的帖子类型、字段和;自定义查询。

此应用程序将没有任何用户身份验证。

我想要的是在REST&;中获得自定义的post类型(在我的示例中为:courses);需要运行自定义查询(自定义元查询)。

所以我需要一些指导:

如何为自定义帖子类型创建REST API如何为自定义查询创建端点如果您对此有任何帮助,我们将不胜感激。我并不期待一个彻底的,但详细的步骤与简短的将是有益的。我认为第二个问题需要单独提出,但我只需要简单了解一下。

非常感谢。

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

自己回答问题。我希望这能帮助一些人。

1。如何为自定义帖子类型创建REST API如果要创建新的自定义帖子类型,请确保在参数数组中将此选项设置为true:

show_in_rest\' => true,
如果您的自定义帖子来自主题或插件,并且您希望为其启用rest api,则将此代码添加到子主题函数中。php

/**
 * Add REST API support to an already registered post type.
 */
add_filter( \'register_post_type_args\', \'my_post_type_args\', 10, 2 );
 
function my_post_type_args( $args, $post_type ) {
 
    if ( \'course\' === $post_type ) {
        $args[\'show_in_rest\'] = true;
 
        // Optionally customize the rest_base or rest_controller_class
        $args[\'rest_base\']             = \'course\';
        $args[\'rest_controller_class\'] = \'WP_REST_Posts_Controller\';
    }
 
    return $args;
}

2。如何为自定义查询创建端点

假设您要运行一些wp查询,需要发送一个自定义参数&;从rest API访问该查询

        add_action(\'rest_api_init\', function () {
          register_rest_route( \'namespace/v2\', \'events/(?P<id>\\d+)\',array(
                        \'methods\'  => \'GET\',
                        \'callback\' => \'get_events_from_id\'
              ));
        });
        
        //Now create a function to return your custom query results
        
        function get_events_from_id($request){
           $id = $request[\'id\']; 
// Custom WP query query
    $args_query = array(
        \'post_type\' => array(\'events\'),
        \'order\' => \'DESC\',
    );
    
    $query = new WP_Query( $args_query );
    
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            
            $data = //do your stuff like
        }
    } else {
    
    }
    return $data;
    wp_reset_postdata();
        }