WP_REST_Posts_Controller::get_available_actions()protectedWP 4.9.8

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

Method of the class: WP_REST_Posts_Controller{}

No Hooks.

Return

Array. List of link relations.

Usage

// protected - for code of main (parent) or child class
$result = $this->get_available_actions( $post, $request );
$post(WP_Post) (required)
Post object.
$request(WP_REST_Request) (required)
Request object.

Changelog

Since 4.9.8 Introduced.

WP_REST_Posts_Controller::get_available_actions() code WP 6.5.2

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;
}