In WordPress sind mehrere APIs integriert:
Standardmäßig geben sie keine benutzerdefinierten Beitragstypen oder geschützten Metaschlüssel zurück.
Ich möchte auf die geschützten Metafelder eines Plugins zugreifen. Ich habe versucht, den hier und hier gegebenen Beispielen zu folgen .
Ich habe es geschafft, dass die wp-json-API benutzerdefinierte Beitragstypen zurückgibt, indem ich diesen Code hinzufüge:
/**
* 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';
}
}
Ich konnte jedoch keine geschützten Metaschlüssel in die Antwort aufnehmen.
Ich habe den folgenden Code ausprobiert:
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' );
und den folgenden Code:
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' );
aber beides funktioniert nicht.
Weiß jemand, was benötigt wird, um solche geschützten Felder über eine der APIs zugänglich zu machen? Gibt es irgendwo ein funktionierendes Beispiel?
Antworten:
Für mich wäre die einfachste Lösung, ein zusätzliches Feld in der JSON-Antwort zu erstellen und es mit ausgewählten Post-Meta zu füllen:
Sie sollten Ihre Meta - Daten in der Lage sein zu sehen , sowohl in
/wp-json/wp/v2/tribe_venue/
und/wp-json/wp/v2/tribe_venue/{POST_ID}
quelle
Mit der REST-API gibt es einen
rest_query_vars
Filter, den Sie verwenden können:Auf diese Weise können Sie eine Route wie diese verwenden, um ein Metafeld abzufragen:
wp-json/wp/v2/posts?filter[meta_key]=MY-KEY&filter[meta_value]=MY-VALUE
Es gibt auch komplexere Möglichkeiten, wie Sie dies tun können. Überprüfen Sie den Quelllink unten.
Quelle: https://1fix.io/blog/2015/07/20/query-vars-wp-api/
quelle