WP_REST_Posts_Controller::get_available_actions( WP_Post $post, WP_REST_Request $request ): array

In this article

Gets the link relations available for the post and current user.

Parameters

$postWP_Postrequired
Post object.
$requestWP_REST_Requestrequired
Request object.

Return

array List of link relations.

Source

protected function get_available_actions( $post, $request ) {

	if ( 'edit' !== $request['context'] ) {
		return array();
	}

	$rels = array();

	$post_type = get_post_type_object( $post->post_type );

	if ( 'attachment' !== $this->post_type && current_user_can( $post_type->cap->publish_posts ) ) {
		$rels[] = 'https://api.w.org/action-publish';
	}

	if ( current_user_can( 'unfiltered_html' ) ) {
		$rels[] = 'https://api.w.org/action-unfiltered-html';
	}

	if ( 'post' === $post_type->name ) {
		if ( current_user_can( $post_type->cap->edit_others_posts ) && current_user_can( $post_type->cap->publish_posts ) ) {
			$rels[] = 'https://api.w.org/action-sticky';
		}
	}

	if ( post_type_supports( $post_type->name, 'author' ) ) {
		if ( current_user_can( $post_type->cap->edit_others_posts ) ) {
			$rels[] = 'https://api.w.org/action-assign-author';
		}
	}

	$taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) );

	foreach ( $taxonomies as $tax ) {
		$tax_base   = ! empty( $tax->rest_base ) ? $tax->rest_base : $tax->name;
		$create_cap = is_taxonomy_hierarchical( $tax->name ) ? $tax->cap->edit_terms : $tax->cap->assign_terms;

		if ( current_user_can( $create_cap ) ) {
			$rels[] = 'https://api.w.org/action-create-' . $tax_base;
		}

		if ( current_user_can( $tax->cap->assign_terms ) ) {
			$rels[] = 'https://api.w.org/action-assign-' . $tax_base;
		}
	}

	return $rels;
}

Changelog

VersionDescription
4.9.8Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.