首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为自定义post类型创建API&使用REST或Graphql进行自定义查询

为自定义post类型创建API&使用REST或Graphql进行自定义查询
EN

WordPress Development用户
提问于 2020-09-29 09:27:21
回答 1查看 158关注 0票数 0

我想要创建一个跨平台的应用程序使用rest的网站(zoetalentsolutions.com)。该网站在WordPress,并有自定义的帖子类型,字段和自定义查询.

这个应用程序不会有任何用户。

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

所以我需要一点指导:

  1. 如何为自定义post类型创建REST
  2. 如何为自定义查询创建终结点。

如果能提供任何帮助,我们将不胜感激。我不期待一个彻底的,但一个细节的步骤和简短将是有帮助的。我认为第二个问题需要单独提出来,但我只需要一个简短的概念。

谢谢。

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2020-10-20 19:16:30

自己回答问题。我希望这会对一些人有所帮助。

1.如何为自定义post类型

创建REST

如果要创建新的自定义post类型,请确保在参数数组中将此选项设置为true:

代码语言:javascript
复制
show_in_rest' => true,

如果您的自定义文章来自主题或插件,并且希望为其启用rest-api,则将此代码添加到您的子主题functions.php中。

代码语言:javascript
复制
/**
 * 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访问该查询。

代码语言:javascript
复制
        add_action('rest_api_init', function () {
          register_rest_route( 'namespace/v2', 'events/(?P\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();
        }
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/375607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档