您好我使用pods io创建了自定义帖子类型。每当我点击自定义帖子类型的其余API时,我都会获得使用该帖子类型创建的所有帖子的数据。但我需要从rest API中获得该帖子类型的配置。
那就是我需要为该帖子类型获取标签和字段类型(例如纯文本,文件/视频/图像,wysiwyg)。
如上图所示,我需要获取特定自定义帖子类型的所有字段信息。
使用Rest API在wordpress中是否可行。或者是否有任何插件可以做到这一点。
我的要求是我想配置不同类型的字段,我想获取该页面的字段信息。任何这样做的插件都会有所帮助。
答案 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' );
)更改为更有意义的内容。