[\d]+)', array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_attachment_image' ),
'permission_callback' => array( $this, 'get_attachment_image_permission' ),
)
);
}
/**
* Get attachment image
tag permissions.
*
* @param WP_REST_Request $request request object.
*
* @return bool
*/
public function get_attachment_image_permission( WP_REST_Request $request ) {
$id = $request->get_param( 'id' );
if ( ! $id ) {
return $this->error( 'no_id_found', __( 'Provide image ID.', 'advanced-backgrounds' ) );
}
return true;
}
/**
* Get attachment image
tag.
*
* @param WP_REST_Request $request request object.
*
* @return mixed
*/
public function get_attachment_image( WP_REST_Request $request ) {
$id = $request->get_param( 'id' );
$size = $request->get_param( 'size' );
$icon = $request->get_param( 'icon' );
$attr = $request->get_param( 'attr' );
$div_tag = $request->get_param( 'div_tag' );
if ( $div_tag ) {
$image_url = wp_get_attachment_image_url( $id, $size, $icon );
$attr = isset( $attr ) && $attr && is_array( $attr ) ? $attr : array();
if ( ! isset( $attr['style'] ) ) {
$attr['style'] = '';
}
$attr['style'] .= 'background-image: url("' . esc_url( $image_url ) . '");';
$attr = array_map( 'esc_attr', $attr );
$image = ' $value ) {
$image .= " $name=" . '"' . $value . '"';
}
$image .= '>
';
} else {
$image = wp_get_attachment_image( $id, $size, $icon, $attr );
}
if ( $image ) {
return $this->success( $image );
} else {
return $this->error( 'no_image_found', __( 'Image not found.', 'advanced-backgrounds' ) );
}
}
/**
* Success rest.
*
* @param mixed $response response data.
* @return mixed
*/
public function success( $response ) {
return new WP_REST_Response(
array(
'success' => true,
'response' => $response,
), 200
);
}
/**
* Error rest.
*
* @param mixed $code error code.
* @param mixed $response response data.
* @return mixed
*/
public function error( $code, $response ) {
return new WP_REST_Response(
array(
'error' => true,
'success' => false,
'error_code' => $code,
'response' => $response,
), 401
);
}
}