Wordpress pods io - Rest API,用于获取自定义帖子类型的字段信息

时间:2017-06-28 08:02:58

标签: wordpress wordpress-rest-api

您好我使用pods io创建了自定义帖子类型。每当我点击自定义帖子类型的其余API时,我都会获得使用该帖子类型创建的所有帖子的数据。但我需要从rest API中获得该帖子类型的配置。

那就是我需要为该帖子类型获取标签和字段类型(例如纯文本,文件/视频/图像,wysiwyg)。 enter image description here

如上图所示,我需要获取特定自定义帖子类型的所有字段信息。

使用Rest API在wordpress中是否可行。或者是否有任何插件可以做到这一点。

我的要求是我想配置不同类型的字段,我想获取该页面的字段信息。任何这样做的插件都会有所帮助。

1 个答案:

答案 0 :(得分:4)

您可以使用Pods::fields()来获取广告连播字段的详细信息(例如标签和类型)。例如:

let addMany = function(arr){
  this.addTwo = function () {
    console.log('array', arr);

    return arr.reduce((acc,cur) => acc+cur,0)
  };
}

现在,如果您希望能够使用WordPress REST API来获取字段详细信息,则可以创建自定义REST API路由。

下面是一个有效的示例,它基于示例here

  • 我使用的自定义路由为$pod = pods( 'apc_information' ); // Get all fields. $fields = $pod->fields(); foreach ( $fields as $field ) { echo $field['label'] . ' (' . $field['type'] . ')<br>'; } // Get a specific field. $field = $pod->fields( 'apc_title' ); echo $field['label']; ,它具有一个/my-plugin/v1/fields/<pod>端点:GET,这是获取pod字段详细信息的回调。

  • 要获取广告连播中所有字段的详细信息,请向prefix_get_pods_fields()发送请求,其中/wp-json/my-plugin/v1/fields/<pod>是广告连播 name / slug (例如{{1 }})。

  • 要仅获取特定字段的详细信息,请向<pod>发送请求,其中apc_information是字段名称/字段(例如,“标题”为/wp-json/my-plugin/v1/fields/<pod>?field=<name>字段)。

    <name>

如果您需要对上述代码的任何部分进行澄清,请与我联系。但基本上,您希望将前缀(apc_title)(或整个函数名称)和路由名称空间(// The endpoint callback. function prefix_get_pods_fields( WP_REST_Request $request ) { // Get the pod. $pod = pods( $request['pod'], null, true ); // Check if the pod exists and valid. if ( empty( $pod ) || ! $pod->valid() ) { return new WP_Error( 'rest_pods_invalid', 'The pod does not exist.', array( 'status' => 404 ) ); } // Now return the fields array/data. $field = isset( $request['field'] ) ? $request['field'] : null; return rest_ensure_response( $pod->fields( $field ) ); } // Callback for validating a parameter value. function prefix_data_arg_validate_callback( $value, WP_REST_Request $request, $param ) { if ( 'field' === $param && ! preg_match( '/^[a-z0-9\-_]+$/', $value ) ) { return new WP_Error( 'rest_invalid_param', 'Invalid field name.', array( 'status' => 400 ) ); } return true; } // Callback for sanitizing a parameter value. function prefix_data_arg_sanitize_callback( $value, WP_REST_Request $request, $param ) { if ( 'field' === $param ) { return sanitize_text_field( $value ); } return $value; // .. please make your own logic for sanitizing other fields, if any. } // Parameters for the /fields endpoint. function prefix_get_data_arguments() { $args = array(); $args['field'] = array( 'description' => 'Field name.', 'type' => 'string', 'validate_callback' => 'prefix_data_arg_validate_callback', 'sanitize_callback' => 'prefix_data_arg_sanitize_callback', ); return $args; } // Register our routes. function prefix_register_routes() { register_rest_route( 'my-plugin/v1', '/fields/(?P<pod>[a-z0-9\-_]+)', array( 'method' => WP_REST_Server::READABLE, 'callback' => 'prefix_get_pods_fields', 'args' => prefix_get_data_arguments(), ) ); } add_action( 'rest_api_init', 'prefix_register_routes' ); )更改为更有意义的内容。