rest_api_init
Εκτελείται όταν στήνεται το REST API. Εδώ καταχωρίζετε δικές σας διαδρομές και πεδία REST με τη register_rest_route().
Πότε εκτελείται
Το rest_api_init εκτελείται όταν το WordPress στήνει τον REST server, κάτι που κανονικά γίνεται μόνο σε αιτήματα REST API (διευθύνσεις κάτω από /wp-json/). Αν καταχωρίζετε διαδρομές εδώ και όχι στο init, η δουλειά γίνεται μόνο όταν χρειάζεται.
Μπορεί να εκτελεστεί και σε άλλα αιτήματα όταν κάποιος κώδικας καλεί τη rest_do_request(), για παράδειγμα όταν ο επεξεργαστής μπλοκ προφορτώνει δεδομένα.
Παράμετροι
$wp_rest_serverWP_REST_Server |
Το αντικείμενο του server. |
|---|
Παράδειγμα: Endpoint μόνο για ανάγνωση με το τελευταίο άρθρο
add_action( 'rest_api_init', function () {
register_rest_route(
'my-snippets/v1',
'/latest-post',
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => '__return_true',
'callback' => function () {
$posts = get_posts( array( 'numberposts' => 1 ) );
if ( ! $posts ) {
return new WP_Error( 'no_posts', __( 'No posts found.', 'my-snippets' ), array( 'status' => 404 ) );
}
return array(
'title' => get_the_title( $posts[0] ),
'link' => get_permalink( $posts[0] ),
);
},
)
);
} );
Καλό να ξέρετε
- Ορίζετε πάντα permission_callback. Το '__return_true' μόνο για δημόσια δεδομένα μόνο για ανάγνωση· για οτιδήποτε άλλο, έλεγχος με current_user_can().
- Χρησιμοποιήστε δικό σας namespace με έκδοση, όπως 'my-snippets/v1', ώστε οι διαδρομές σας να μη συγκρούονται με άλλες.
- Δοκιμάστε το στο /wp-json/my-snippets/v1/latest-post, ή στο /?rest_route=/my-snippets/v1/latest-post αν δεν έχετε «όμορφους» μόνιμους συνδέσμους.