PluginProbe
Parse.ly / 3.24.2
Parse.ly v3.24.2
3.24.3 3.24.2 3.24.1 3.24.0 3.23.7 3.23.6 3.23.5 3.23.4 3.23.3 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.17.0 3.18.0 3.18.1 3.19.0 3.19.1 3.19.2 3.19.3 3.2.0 3.2.1 3.20.0 3.20.1 All 107 releases
← All changes | src/rest-api/class-base-endpoint.php +20 -6 3.24.1 → 3.24.2 View file →
@@ -127,15 +127,23 @@
127 127 /**
128 128 * Registers a REST route.
129 129 *
130 130 * @since 3.17.0
131 + * @since 3.24.2 Added the `$permission_callback` parameter.
131 132 *
132 - * @param string $route The route to register.
133 - * @param string[] $methods Array with the allowed methods.
134 - * @param callable $callback Callback function to call when the endpoint is hit.
135 - * @param array<mixed> $args The endpoint arguments definition.
133 + * @param string $route The route to register.
134 + * @param string[] $methods Array with the allowed methods.
135 + * @param callable $callback Callback function to call when the endpoint is hit.
136 + * @param array<mixed> $args The endpoint arguments definition.
137 + * @param callable|null $permission_callback Permission callback to use instead of the default one.
136 138 */
137 - public function register_rest_route( string $route, array $methods, callable $callback, array $args = array() ): void {
139 + public function register_rest_route(
140 + string $route,
141 + array $methods,
142 + callable $callback,
143 + array $args = array(),
144 + ?callable $permission_callback = null
145 + ): void {
138 146 // Trim any possible slashes from the route.
139 147 $route = trim( $route, '/' );
140 148
141 149 // Store the route for later reference.
@@ -151,9 +159,10 @@
151 159 array(
152 160 array(
153 161 'methods' => $methods,
154 162 'callback' => $callback,
155 - 'permission_callback' => array( $this, 'is_available_to_current_user' ),
163 + 'permission_callback' => $permission_callback ??
164 + array( $this, 'is_available_to_current_user' ),
156 165 'args' => $args,
157 166 'show_in_index' => ! is_wp_error( $this->is_available_to_current_user() ),
158 167 ),
159 168 )
@@ -241,8 +250,13 @@
241 250 * applied capability filters.
242 251 *
243 252 * The default access capability is not passed here by default, to allow for
244 253 * a more explicit declaration in child classes.
254 + *
255 + * The result is checked with current_user_can(), so a capability such as
256 + * `exist` makes the endpoint available to everyone, unless other checks
257 + * apply: post-specific routes also require edit access to the post, and
258 + * Content Intelligence routes also check the user's role.
245 259 *
246 260 * @since 3.14.0
247 261 * @since 3.17.0 Moved to the new API structure.
248 262 *