Ich habe einen benutzerdefinierten Post-Typ, card
, den ich über die WP-REST-API verfügbar mache.WP REST API-Set-Berechtigung für vorhandene Endpunkte
function register_card_post_type() {
$labels = array(
"name" => __('Cards', ''),
"singular_name" => __('Card', ''),
);
$args = array(
"label" => __('Cards', ''),
"labels" => $labels,
"description" => "",
"public" => true,
"publicly_queryable" => true,
"show_ui" => true,
"show_in_rest" => true, // ADD TO REST API
"rest_base" => "cards", // ADD TO REST API
"has_archive" => false,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array("slug" => "card", "with_front" => true),
"query_var" => true,
"menu_position" => 5,
"supports" => array("title"),
);
register_post_type("card", $args);
}
add_action('init', 'register_card_post_type');
Es scheint, als ob die Endpunkte standardmäßig öffentlich sind. Wie lege ich die Authentifizierungsanforderungen für den Endpunkt fest, sodass GET /cards/
entweder einen Authentifizierungs-Cookie oder einen Header benötigt?
Im API-Handbuch wird gezeigt, wie man einen benutzerdefinierten Endpunkt schreibt, aber im Idealfall gibt es einen Filter oder einen Hook, mit dem ich die automatisch generierten Endpunkte erweitern kann?
add_action('rest_api_init', function() {
register_rest_route('myplugin/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
'args' => array(
'id' => array(
'validate_callback' => 'is_numeric'
),
),
'permission_callback' => function() {
return current_user_can('edit_others_posts');
}
));
});