Μετάβαση στο περιεχόμενο

Early-bird άδεια εφ’ όρου ζωής: $199 εφάπαξ, μόνο για τους πρώτους 200 αγοραστές. Δείτε την προσφορά

rest_api_init

Εκτελείται όταν στήνεται το REST API. Εδώ καταχωρίζετε δικές σας διαδρομές και πεδία REST με τη register_rest_route().

  • Τύπος Action
  • Προέλευση WordPress
  • Από την έκδοση 4.4.0
  • Καλείται στο wp-includes/rest-api.php

Πότε εκτελείται

Το rest_api_init εκτελείται όταν το WordPress στήνει τον REST server, κάτι που κανονικά γίνεται μόνο σε αιτήματα REST API (διευθύνσεις κάτω από /wp-json/). Αν καταχωρίζετε διαδρομές εδώ και όχι στο init, η δουλειά γίνεται μόνο όταν χρειάζεται.

Μπορεί να εκτελεστεί και σε άλλα αιτήματα όταν κάποιος κώδικας καλεί τη rest_do_request(), για παράδειγμα όταν ο επεξεργαστής μπλοκ προφορτώνει δεδομένα.

Παράμετροι

Παράμετροι
$wp_rest_serverWP_REST_Server Το αντικείμενο του server.

Παράδειγμα: Endpoint μόνο για ανάγνωση με το τελευταίο άρθρο

PHP
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 αν δεν έχετε «όμορφους» μόνιμους συνδέσμους.

Μεταφέρετε τα snippets σας μέσα σε ένα απόγευμα.

Η εισαγωγή δεν αλλάζει τίποτα μέχρι να κάνετε τη μετάβαση, και τα παλιά σας shortcodes συνεχίζουν να λειτουργούν.