Avoid using auto-drafts for theme templates and template parts#27910
Avoid using auto-drafts for theme templates and template parts#27910youknowriad merged 49 commits intomasterfrom
Conversation
|
Size Change: -870 B (0%) Total Size: 1.3 MB
ℹ️ View Unchanged
|
TimothyBJacobs
left a comment
There was a problem hiding this comment.
Left feedback mainly on the REST API controllers. A number of issues apply to both, I only commented on the template parts controller since that was first.
I also wonder if we should instead be using the correct edit_post etc... caps here and setting up the CPT to use edit_theme_options when registering. That way developers can give more fine-grained capabilities if needed. Cc @peterwilsoncc, @swissspidy.
Can templates / template parts not be deleted?
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
lib/full-site-editing/class-wp-rest-template-parts-controller.php
Outdated
Show resolved
Hide resolved
For me, |
I'll add this. I just didn't use it initially. |
I agree that's what Core should use under the hood. But if the controller itself uses |
packages/block-library/src/template-part/edit/placeholder/index.js
Outdated
Show resolved
Hide resolved
packages/block-library/src/template-part/edit/placeholder/index.js
Outdated
Show resolved
Hide resolved
|
The REST API bits are looking good to me! Can we get some tests on this please? |
5d664da to
34b0c07
Compare
|
About the tests, this is actually already well covered with the e2e tests which is what allowed me to have confidence in such a big refactor. That said, some additional PHP specific tests won't hurt. I'll see what I can do. |
Yes, you will also need to:
|
|
Can I get a ✅ here? I'd like to land this before the next RC so it can be tested properly. There are still a few things to consider in follow-ups and specifically the removal of the "theme" attribute from the template and template parts files. |
ntsekouras
left a comment
There was a problem hiding this comment.
Great work here Riad! I agree that this PR is in good shape to land, so it can be tested better.
Thanks!
|
I hope I didn't miss anything, that's a big PR with a lot of reviews :P |
closes #27321
borrows ideas from #27624
This PR borrows some ideas from #27624 and tries to avoid using auto-drafts for the template and template-parts that come from the theme (unmodified). It is based on the following principle:
Based on this premise, it provides two abstraction layers: the
full-site-editing/block-templates.phpprovides simple functions to retrieve templates (or template parts) given a simple query, or an id. This abstract away the fact that template can come from a file or from a CPT depending on whether it's customized or not.On top of this "PHP" layer, it overrides the REST Controllers to provide endpoints for the templates and template parts. The client uses these endpoints similarly to how it's done today, the difference is that instead of using regular IDs, the actual ids are "theme+slug".
This proved to have a lot of advantages: