mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-14 05:40:30 +00:00
Add Site Editor and PHP changes from Gutenberg 10.1 - 11.9
- First pass at adding the site editor from the Gutenberg plugin to wp-admin/site-editor.php. - Adds miscellaneous PHP changes from Gutenberg 10.1 - 11.9. Follows [52042]. See #54337. Props youknowriad, aristath, hellofromtonya, gziolo. git-svn-id: https://develop.svn.wordpress.org/trunk@52069 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -311,6 +311,12 @@ class WP_REST_Users_Controller extends WP_REST_Controller {
|
||||
$prepared_args['has_published_posts'] = get_post_types( array( 'show_in_rest' => true ), 'names' );
|
||||
}
|
||||
|
||||
if ( ! empty( $request['has_published_posts'] ) ) {
|
||||
$prepared_args['has_published_posts'] = ( true === $request['has_published_posts'] )
|
||||
? get_post_types( array( 'show_in_rest' => true ), 'names' )
|
||||
: (array) $request['has_published_posts'];
|
||||
}
|
||||
|
||||
if ( ! empty( $prepared_args['search'] ) ) {
|
||||
$prepared_args['search'] = '*' . $prepared_args['search'] . '*';
|
||||
}
|
||||
@@ -1580,6 +1586,15 @@ class WP_REST_Users_Controller extends WP_REST_Controller {
|
||||
),
|
||||
);
|
||||
|
||||
$query_params['has_published_posts'] = array(
|
||||
'description' => __( 'Limit result set to users who have published posts.' ),
|
||||
'type' => array( 'boolean', 'array' ),
|
||||
'items' => array(
|
||||
'type' => 'string',
|
||||
'enum' => get_post_types( array( 'show_in_rest' => true ), 'names' ),
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Filters REST API collection parameters for the users controller.
|
||||
*
|
||||
|
||||
@@ -99,6 +99,29 @@ class WP_REST_Widget_Types_Controller extends WP_REST_Controller {
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
register_rest_route(
|
||||
$this->namespace,
|
||||
'/' . $this->rest_base . '/(?P<id>[a-zA-Z0-9_-]+)/render',
|
||||
array(
|
||||
array(
|
||||
'methods' => WP_REST_Server::CREATABLE,
|
||||
'permission_callback' => array( $this, 'get_item_permissions_check' ),
|
||||
'callback' => array( $this, 'render' ),
|
||||
'args' => array(
|
||||
'id' => array(
|
||||
'description' => __( 'The widget type id.', 'default' ),
|
||||
'type' => 'string',
|
||||
'required' => true,
|
||||
),
|
||||
'instance' => array(
|
||||
'description' => __( 'Current instance settings of the widget.', 'default' ),
|
||||
'type' => 'object',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -559,6 +582,78 @@ class WP_REST_Widget_Types_Controller extends WP_REST_Controller {
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a single Legacy Widget and wraps it in a JSON-encodable array.
|
||||
*
|
||||
* @since 5.9.0
|
||||
*
|
||||
* @param WP_REST_Request $request Full details about the request.
|
||||
*
|
||||
* @return array An array with rendered Legacy Widget HTML.
|
||||
*/
|
||||
public function render( $request ) {
|
||||
return array(
|
||||
'preview' => $this->render_legacy_widget_preview_iframe(
|
||||
$request['id'],
|
||||
isset( $request['instance'] ) ? $request['instance'] : null
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a page containing a preview of the requested Legacy Widget block.
|
||||
*
|
||||
* @since 5.9.0
|
||||
*
|
||||
* @param string $id_base The id base of the requested widget.
|
||||
* @param array $instance The widget instance attributes.
|
||||
*
|
||||
* @return string Rendered Legacy Widget block preview.
|
||||
*/
|
||||
private function render_legacy_widget_preview_iframe( $id_base, $instance ) {
|
||||
if ( ! defined( 'IFRAME_REQUEST' ) ) {
|
||||
define( 'IFRAME_REQUEST', true );
|
||||
}
|
||||
|
||||
ob_start();
|
||||
?>
|
||||
<!doctype html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="profile" href="https://gmpg.org/xfn/11" />
|
||||
<?php wp_head(); ?>
|
||||
<style>
|
||||
/* Reset theme styles */
|
||||
html, body, #page, #content {
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body <?php body_class(); ?>>
|
||||
<div id="page" class="site">
|
||||
<div id="content" class="site-content">
|
||||
<?php
|
||||
$registry = WP_Block_Type_Registry::get_instance();
|
||||
$block = $registry->get_registered( 'core/legacy-widget' );
|
||||
echo $block->render(
|
||||
array(
|
||||
'idBase' => $id_base,
|
||||
'instance' => $instance,
|
||||
)
|
||||
);
|
||||
?>
|
||||
</div><!-- #content -->
|
||||
</div><!-- #page -->
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the query params for collections.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user