rest_api_init is run on every rest call to endpoint

This is the expected behaviour. When you register routes with the REST API you’re registering them for the current request. This is the standard pattern for WordPress. It’s the same behaviour with register_post_type(), register_taxonomy(), register_setting(), register_nav_menu(), register_widget() and so on. Actions and filters registered with add_action() and add_filter() are also registered — and fire — … Read more

Get Block Attributes in JSON REST API

Answering my own question. Since register_meta() actually appends to meta, not blocks, in the JSON output, I just added a new (redundant) attribute to my block using source:meta where I can manually manage outside the attributes I use to display the block. attributes: { api_coordinates: { type: ‘string’, source: ‘meta’, meta: ‘api_coordinates’, }, //… }

Is there a way to identify a user in a custom REST API method? [duplicate]

I spent two days searching for a simple way without adding plugins. first in function.php where you define your api //enqueue the script which will use the api function api_callings_scripts() { wp_enqueue_script(‘score-script’, get_template_directory_uri() . ‘/js/ScoreSaving.js’, [‘jquery’], NULL, TRUE); // Pass nonce to JS. wp_localize_script(‘score-script’, ‘ScoreSettings’, [ ‘nonce’ => wp_create_nonce(‘wp_rest’), ]); } add_action( ‘wp_enqueue_scripts’, ‘api_callings_scripts’ ); … Read more

wp_remote_get() returns 403 while file_get_contents() does not

Why do you have curly brackets in there? Maybe sanitize/process the query string with htmlspecialchars() first. The error is complaining about non-standard characters…which is what your curly brackets are doing. Build the query string with the $ip value, convert with htmlspecialchars(), then add the URL to the query string. Pass that variable to the wp_remote_get() … Read more