WordPress có một số API tích hợp:
theo mặc định, họ không trả về các loại bài đăng tùy chỉnh hoặc các khóa meta được bảo vệ.
Tôi muốn truy cập các trường meta được bảo vệ của một plugin. Tôi đã cố gắng làm theo các ví dụ được đưa ra ở đây và ở đây .
Tôi đã quản lý rằng API wp-json sẽ trả về các loại bài đăng tùy chỉnh bằng cách thêm mã này:
/**
* Add REST API support to an already registered post type.
*/
add_action( 'init', 'my_custom_post_type_rest_support', 25 );
function my_custom_post_type_rest_support() {
global $wp_post_types;
// be sure to set this to the name of your post type!
$post_type_name = 'tribe_venue';
if( isset( $wp_post_types[ $post_type_name ] ) ) {
$wp_post_types[$post_type_name]->show_in_rest = true;
$wp_post_types[$post_type_name]->rest_base = $post_type_name;
$wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller';
}
$post_type_name2 = 'tribe_events';
if( isset( $wp_post_types[ $post_type_name2 ] ) ) {
$wp_post_types[$post_type_name2]->show_in_rest = true;
$wp_post_types[$post_type_name2]->rest_base = $post_type_name2;
$wp_post_types[$post_type_name2]->rest_controller_class = 'WP_REST_Posts_Controller';
}
}
Nhưng tôi không thể bao gồm các khóa meta được bảo vệ trong phản hồi.
Tôi đã thử đoạn mã sau:
add_filter( 'is_protected_meta', function ( $protected, $key, $type ) {
if ( $type === 'tribe_venue' && $key === '_VenueVenue' ) {
return true;
}
return $protected;
}, 10, 3 );
add_filter( 'rae_include_protected_meta', '__return_true' );
và mã sau đây:
function custom_rest_api_allowed_public_metadata($allowed_meta_keys){
$allowed_meta_keys[] = '_VenueVenue';
$allowed_meta_keys[] = '_VenueAddress';
$allowed_meta_keys[] = '_VenueCity';
return $allowed_meta_keys;
}
add_filter( 'rest_api_allowed_public_metadata', 'custom_rest_api_allowed_public_metadata' );
Nhưng không hoạt động.
Có ai biết những gì cần thiết để làm cho các trường được bảo vệ như vậy có thể truy cập được thông qua bất kỳ API nào không? Có một ví dụ làm việc ở bất cứ đâu?