[wp-trac] [WordPress Trac] #38900: Customize: Add REST API endpoints for changesets

WordPress Trac noreply at wordpress.org
Tue Feb 14 20:25:30 UTC 2017


#38900: Customize: Add REST API endpoints for changesets
-----------------------------+---------------------------
 Reporter:  westonruter      |       Owner:  valendesigns
     Type:  feature request  |      Status:  assigned
 Priority:  normal           |   Milestone:  4.8
Component:  Customize        |     Version:
 Severity:  normal           |  Resolution:
 Keywords:  needs-patch      |     Focuses:  rest-api
-----------------------------+---------------------------

Old description:

> In WordPress 4.7, the `customize_changeset` post type was introduce to
> persistently store the `customized` state until the staged changes are
> published (see #30937). In 4.7 the changesets were managed using the same
> `customzie_save` Admin Ajax request that has always been used to send
> customizer changes to WordPress. However, changesets are designed so that
> they needn't be used in the current “Customizer” app at all. A
> `customize_changeset` post can be created by any means (such as via WP-
> CLI) and as long as the HTTP request includes the
> `customize_changeset_uuid` query parameter, the changes stored within the
> changeset will be applied to preview in the response. As such, changesets
> for headless sites and apps consuming the REST API to also make use of
> WordPress's framework for previewing changes.
>
> In addition to an app being able to preview changes in read requests to
> the REST API, changesets must also be able to be written via the REST
> API. This is also relevant to creating new changesets for previewing
> changes on a site's frontend (frontend editing).
>
> The Customize Snapshots has some initial read-only endpoints for the REST
> API: https://github.com/xwp/wp-customize-snapshots/pull/63
> It did not yet implement support for writing changes:
> https://github.com/xwp/wp-customize-snapshots/issues/64
>
> A few points about what how the changeset endpoints could behave:
>
> - Allow changesets posts to be created and updated, ensuring that
> `content` is in the proper format as an object mapping setting IDs to
> setting params. The `content` could be the decoded contents of the
> `post_content`.
> - Prevent editing of `slug`, since the UUID should never change.
> - Allow making changes to the `content` via `PATCH` method updates.
> - Use the UUID (`post_name`) of the `customize_changeset` posts as the
> resource IDs as opposed to the underlying post ID. We really don't need
> regular post IDs since snapshots have UUIDs. Really a random `PUT`
> request could be made to create a snapshot if it just supplies a proper
> UUID.
> - Let the endpoint be `/changesets` as opposed to `/customize-
> changesets`.
>
> Ideally the `customize_save` Ajax requests initiated by
> `wp.customize.previewer.save()` and
> `wp.customize.requestChangesetUpdate()` could both make use of the
> changesets endpoints, replacing the use of the `customize_save` Admin
> Ajax request.
>
> Updates to a changeset should be invoking
> `WP_Customize_Manager::save_changeset_post()` to apply the changes to the
> post.

New description:

 In WordPress 4.7, the `customize_changeset` post type was introduce to
 persistently store the `customized` state until the staged changes are
 published (see #30937). In 4.7 the changesets were managed using the same
 `customzie_save` Admin Ajax request that has always been used to send
 customizer changes to WordPress. However, changesets are designed so that
 they needn't be used in the current “Customizer” app at all. A
 `customize_changeset` post can be created by any means (such as via WP-
 CLI) and as long as the HTTP request includes the
 `customize_changeset_uuid` query parameter, the changes stored within the
 changeset will be applied to preview in the response. As such, changesets
 for headless sites and apps consuming the REST API to also make use of
 WordPress's framework for previewing changes.

 In addition to an app being able to preview changes in read requests to
 the REST API, changesets must also be able to be written via the REST API.
 This is also relevant to creating new changesets for previewing changes on
 a site's frontend (frontend editing).

 The Customize Snapshots has some initial read-only endpoints for the REST
 API: https://github.com/xwp/wp-customize-snapshots/pull/63
 It did not yet implement support for writing changes:
 https://github.com/xwp/wp-customize-snapshots/issues/64

 A few points about what how the changeset endpoints could behave:

 - Allow changesets posts to be created and updated, ensuring that
 `content` is in the proper format as an object mapping setting IDs to
 setting params. The `content` could be the decoded contents of the
 `post_content`.
 - Prevent editing of `slug`, since the UUID should never change.
 - Allow making changes to the `content` via `PATCH` method updates.
 - Use the UUID (`post_name`) of the `customize_changeset` posts as the
 resource IDs as opposed to the underlying post ID. We really don't need
 regular post IDs since snapshots have UUIDs. Really a random `PUT` request
 could be made to create a snapshot if it just supplies a proper UUID.
 - Let the endpoint be `/changesets` as opposed to `/customize-changesets`.

 Ideally the `customize_save` Ajax requests initiated by
 `wp.customize.previewer.save()` and
 `wp.customize.requestChangesetUpdate()` could both make use of the
 changesets endpoints, replacing the use of the `customize_save` Admin Ajax
 request.

 Updates to a changeset should be invoking
 `WP_Customize_Manager::save_changeset_post()` to apply the changes to the
 post.

 Feature plugin repo: https://github.com/WP-API/wp-api-customize-endpoints

--

Comment (by westonruter):

 Feature plugin repo: https://github.com/WP-API/wp-api-customize-endpoints

--
Ticket URL: <https://core.trac.wordpress.org/ticket/38900#comment:5>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list