Query loop / Post template: Enable post format filter
What?
Enables filtering the query loop result by post format. Partial for https://github.com/WordPress/gutenberg/issues/53049
Props @justintadlock @SergeyBiryukov
Why?
This feature is often requested by users, see the linked issue.
How?
Description updated August 22 2024.
This PR attempts to enable filtering the post query by post format, but handles the post format separately from other taxonomies, as requested by reviewers.
Known limitations and issues include:
- I have ignored post formats for custom post types for now.
REST API changes:
Help is wanted with this part!
A new class Gutenberg_REST_Posts_Controller_6_7 that extends WP_REST_Posts_Controller is added to the 6.7 compatibility folder.
The intention of this new temporary class is to add 'format' to the Posts controller, so that it can be used to filter the query result per post format.
Updates are made to these class methods: get_item, get_item_schema. Earlier I also tried updating get_collection_params, but I was not able to make it work, so it is removed for now.
Query loop block:
- Adds a new parameter,
postFormat, to thequeryblock attribute in the query loop block. - Adds a new
PostFormatControlsthat uses a list of post formats in aSelectControl. The SelectControl usesmultipleto indicate to the user that they can select to show multiple formats in the query loop block. Help wanted: Using SelectControl may not be the best choice, I am very open to implementing other design ideas.
Post Template block:
- The new
postFormatparameter is passed from the query loop block to the post template block as part of thequery. - The post format is added to the
queryusing the newformatkey (as opposed to using the post format taxonomy).
Filtering query_loop_block_query_vars
Filter the query vars (tax_query) for the Query Loop block to support post formats on the front of the site.
Testing Instructions
Enable post formats in a theme by adding the theme support. Example:
function twentytwentyfour_setup(){
add_theme_support( 'post-formats', array( 'standard', 'aside', 'gallery', 'audio', 'video', 'link', 'image', 'chat', 'status', 'quote' ) );
}
add_action( 'after_setup_theme', 'twentytwentyfour_setup' );
Add some test content with different post formats. Test that there are no regressions with the query loop features, and that all filters work. The correct posts should show when the post format filter is used.
- Test with classic themes and block themes
- Test that there are no regressions if post formats are not enabled on the theme.
Screenshots or screencast
Size Change: +923 B (+0.05%)
Total Size: 1.77 MB
| Filename | Size | Change |
|---|---|---|
build/block-editor/index.min.js |
257 kB | +91 B (+0.04%) |
build/block-editor/style-rtl.css |
16 kB | -39 B (-0.24%) |
build/block-editor/style.css |
16 kB | -44 B (-0.27%) |
build/block-library/index.min.js |
219 kB | +694 B (+0.32%) |
build/edit-site/index.min.js |
217 kB | +221 B (+0.1%) |
ℹ️ View Unchanged
| Filename | Size |
|---|---|
build-module/a11y/index.min.js |
898 B |
build-module/block-library/file/view.min.js |
447 B |
build-module/block-library/image/view.min.js |
1.78 kB |
build-module/block-library/navigation/view.min.js |
1.16 kB |
build-module/block-library/query/view.min.js |
743 B |
build-module/block-library/search/view.min.js |
616 B |
build-module/interactivity-router/index.min.js |
2.8 kB |
build-module/interactivity/debug.min.js |
16.6 kB |
build-module/interactivity/index.min.js |
13.3 kB |
build/a11y/index.min.js |
949 B |
build/annotations/index.min.js |
2.26 kB |
build/api-fetch/index.min.js |
2.32 kB |
build/autop/index.min.js |
2.12 kB |
build/blob/index.min.js |
579 B |
build/block-directory/index.min.js |
7.11 kB |
build/block-directory/style-rtl.css |
1.01 kB |
build/block-directory/style.css |
1.01 kB |
build/block-editor/content-rtl.css |
4.65 kB |
build/block-editor/content.css |
4.64 kB |
build/block-editor/default-editor-styles-rtl.css |
394 B |
build/block-editor/default-editor-styles.css |
394 B |
build/block-library/blocks/archives/editor-rtl.css |
61 B |
build/block-library/blocks/archives/editor.css |
60 B |
build/block-library/blocks/archives/style-rtl.css |
90 B |
build/block-library/blocks/archives/style.css |
90 B |
build/block-library/blocks/audio/editor-rtl.css |
149 B |
build/block-library/blocks/audio/editor.css |
151 B |
build/block-library/blocks/audio/style-rtl.css |
132 B |
build/block-library/blocks/audio/style.css |
132 B |
build/block-library/blocks/audio/theme-rtl.css |
134 B |
build/block-library/blocks/audio/theme.css |
134 B |
build/block-library/blocks/avatar/editor-rtl.css |
115 B |
build/block-library/blocks/avatar/editor.css |
115 B |
build/block-library/blocks/avatar/style-rtl.css |
104 B |
build/block-library/blocks/avatar/style.css |
104 B |
build/block-library/blocks/button/editor-rtl.css |
265 B |
build/block-library/blocks/button/editor.css |
265 B |
build/block-library/blocks/button/style-rtl.css |
538 B |
build/block-library/blocks/button/style.css |
538 B |
build/block-library/blocks/buttons/editor-rtl.css |
291 B |
build/block-library/blocks/buttons/editor.css |
291 B |
build/block-library/blocks/buttons/style-rtl.css |
328 B |
build/block-library/blocks/buttons/style.css |
328 B |
build/block-library/blocks/calendar/style-rtl.css |
240 B |
build/block-library/blocks/calendar/style.css |
240 B |
build/block-library/blocks/categories/editor-rtl.css |
132 B |
build/block-library/blocks/categories/editor.css |
131 B |
build/block-library/blocks/categories/style-rtl.css |
152 B |
build/block-library/blocks/categories/style.css |
152 B |
build/block-library/blocks/code/editor-rtl.css |
53 B |
build/block-library/blocks/code/editor.css |
53 B |
build/block-library/blocks/code/style-rtl.css |
121 B |
build/block-library/blocks/code/style.css |
121 B |
build/block-library/blocks/code/theme-rtl.css |
122 B |
build/block-library/blocks/code/theme.css |
122 B |
build/block-library/blocks/columns/editor-rtl.css |
108 B |
build/block-library/blocks/columns/editor.css |
108 B |
build/block-library/blocks/columns/style-rtl.css |
420 B |
build/block-library/blocks/columns/style.css |
420 B |
build/block-library/blocks/comment-author-avatar/editor-rtl.css |
124 B |
build/block-library/blocks/comment-author-avatar/editor.css |
124 B |
build/block-library/blocks/comment-author-name/style-rtl.css |
72 B |
build/block-library/blocks/comment-author-name/style.css |
72 B |
build/block-library/blocks/comment-content/style-rtl.css |
120 B |
build/block-library/blocks/comment-content/style.css |
120 B |
build/block-library/blocks/comment-date/style-rtl.css |
65 B |
build/block-library/blocks/comment-date/style.css |
65 B |
build/block-library/blocks/comment-edit-link/style-rtl.css |
70 B |
build/block-library/blocks/comment-edit-link/style.css |
70 B |
build/block-library/blocks/comment-reply-link/style-rtl.css |
71 B |
build/block-library/blocks/comment-reply-link/style.css |
71 B |
build/block-library/blocks/comment-template/style-rtl.css |
200 B |
build/block-library/blocks/comment-template/style.css |
199 B |
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css |
122 B |
build/block-library/blocks/comments-pagination-numbers/editor.css |
121 B |
build/block-library/blocks/comments-pagination/editor-rtl.css |
228 B |
build/block-library/blocks/comments-pagination/editor.css |
217 B |
build/block-library/blocks/comments-pagination/style-rtl.css |
234 B |
build/block-library/blocks/comments-pagination/style.css |
231 B |
build/block-library/blocks/comments-title/editor-rtl.css |
75 B |
build/block-library/blocks/comments-title/editor.css |
75 B |
build/block-library/blocks/comments/editor-rtl.css |
832 B |
build/block-library/blocks/comments/editor.css |
832 B |
build/block-library/blocks/comments/style-rtl.css |
632 B |
build/block-library/blocks/comments/style.css |
631 B |
build/block-library/blocks/cover/editor-rtl.css |
641 B |
build/block-library/blocks/cover/editor.css |
642 B |
build/block-library/blocks/cover/style-rtl.css |
1.62 kB |
build/block-library/blocks/cover/style.css |
1.6 kB |
build/block-library/blocks/details/editor-rtl.css |
65 B |
build/block-library/blocks/details/editor.css |
65 B |
build/block-library/blocks/details/style-rtl.css |
86 B |
build/block-library/blocks/details/style.css |
86 B |
build/block-library/blocks/embed/editor-rtl.css |
331 B |
build/block-library/blocks/embed/editor.css |
331 B |
build/block-library/blocks/embed/style-rtl.css |
419 B |
build/block-library/blocks/embed/style.css |
419 B |
build/block-library/blocks/embed/theme-rtl.css |
133 B |
build/block-library/blocks/embed/theme.css |
133 B |
build/block-library/blocks/file/editor-rtl.css |
326 B |
build/block-library/blocks/file/editor.css |
326 B |
build/block-library/blocks/file/style-rtl.css |
278 B |
build/block-library/blocks/file/style.css |
279 B |
build/block-library/blocks/file/view.min.js |
324 B |
build/block-library/blocks/footnotes/style-rtl.css |
198 B |
build/block-library/blocks/footnotes/style.css |
197 B |
build/block-library/blocks/form-input/editor-rtl.css |
229 B |
build/block-library/blocks/form-input/editor.css |
229 B |
build/block-library/blocks/form-input/style-rtl.css |
357 B |
build/block-library/blocks/form-input/style.css |
357 B |
build/block-library/blocks/form-submission-notification/editor-rtl.css |
344 B |
build/block-library/blocks/form-submission-notification/editor.css |
341 B |
build/block-library/blocks/form-submit-button/style-rtl.css |
69 B |
build/block-library/blocks/form-submit-button/style.css |
69 B |
build/block-library/blocks/form/view.min.js |
470 B |
build/block-library/blocks/freeform/editor-rtl.css |
2.6 kB |
build/block-library/blocks/freeform/editor.css |
2.6 kB |
build/block-library/blocks/gallery/editor-rtl.css |
955 B |
build/block-library/blocks/gallery/editor.css |
958 B |
build/block-library/blocks/gallery/style-rtl.css |
1.83 kB |
build/block-library/blocks/gallery/style.css |
1.82 kB |
build/block-library/blocks/gallery/theme-rtl.css |
108 B |
build/block-library/blocks/gallery/theme.css |
108 B |
build/block-library/blocks/group/editor-rtl.css |
333 B |
build/block-library/blocks/group/editor.css |
333 B |
build/block-library/blocks/group/style-rtl.css |
103 B |
build/block-library/blocks/group/style.css |
103 B |
build/block-library/blocks/group/theme-rtl.css |
79 B |
build/block-library/blocks/group/theme.css |
79 B |
build/block-library/blocks/heading/style-rtl.css |
188 B |
build/block-library/blocks/heading/style.css |
188 B |
build/block-library/blocks/html/editor-rtl.css |
346 B |
build/block-library/blocks/html/editor.css |
347 B |
build/block-library/blocks/image/editor-rtl.css |
785 B |
build/block-library/blocks/image/editor.css |
787 B |
build/block-library/blocks/image/style-rtl.css |
1.59 kB |
build/block-library/blocks/image/style.css |
1.59 kB |
build/block-library/blocks/image/theme-rtl.css |
137 B |
build/block-library/blocks/image/theme.css |
137 B |
build/block-library/blocks/image/view.min.js |
1.65 kB |
build/block-library/blocks/latest-comments/style-rtl.css |
355 B |
build/block-library/blocks/latest-comments/style.css |
354 B |
build/block-library/blocks/latest-posts/editor-rtl.css |
179 B |
build/block-library/blocks/latest-posts/editor.css |
179 B |
build/block-library/blocks/latest-posts/style-rtl.css |
509 B |
build/block-library/blocks/latest-posts/style.css |
510 B |
build/block-library/blocks/list/style-rtl.css |
107 B |
build/block-library/blocks/list/style.css |
107 B |
build/block-library/blocks/loginout/style-rtl.css |
61 B |
build/block-library/blocks/loginout/style.css |
61 B |
build/block-library/blocks/media-text/editor-rtl.css |
321 B |
build/block-library/blocks/media-text/editor.css |
320 B |
build/block-library/blocks/media-text/style-rtl.css |
558 B |
build/block-library/blocks/media-text/style.css |
556 B |
build/block-library/blocks/more/editor-rtl.css |
427 B |
build/block-library/blocks/more/editor.css |
427 B |
build/block-library/blocks/navigation-link/editor-rtl.css |
644 B |
build/block-library/blocks/navigation-link/editor.css |
645 B |
build/block-library/blocks/navigation-link/style-rtl.css |
192 B |
build/block-library/blocks/navigation-link/style.css |
191 B |
build/block-library/blocks/navigation-submenu/editor-rtl.css |
295 B |
build/block-library/blocks/navigation-submenu/editor.css |
294 B |
build/block-library/blocks/navigation/editor-rtl.css |
2.19 kB |
build/block-library/blocks/navigation/editor.css |
2.2 kB |
build/block-library/blocks/navigation/style-rtl.css |
2.25 kB |
build/block-library/blocks/navigation/style.css |
2.23 kB |
build/block-library/blocks/navigation/view.min.js |
1.03 kB |
build/block-library/blocks/nextpage/editor-rtl.css |
392 B |
build/block-library/blocks/nextpage/editor.css |
392 B |
build/block-library/blocks/page-list/editor-rtl.css |
378 B |
build/block-library/blocks/page-list/editor.css |
378 B |
build/block-library/blocks/page-list/style-rtl.css |
175 B |
build/block-library/blocks/page-list/style.css |
175 B |
build/block-library/blocks/paragraph/editor-rtl.css |
236 B |
build/block-library/blocks/paragraph/editor.css |
236 B |
build/block-library/blocks/paragraph/style-rtl.css |
341 B |
build/block-library/blocks/paragraph/style.css |
340 B |
build/block-library/blocks/post-author-biography/style-rtl.css |
74 B |
build/block-library/blocks/post-author-biography/style.css |
74 B |
build/block-library/blocks/post-author-name/style-rtl.css |
69 B |
build/block-library/blocks/post-author-name/style.css |
69 B |
build/block-library/blocks/post-author/editor-rtl.css |
107 B |
build/block-library/blocks/post-author/editor.css |
107 B |
build/block-library/blocks/post-author/style-rtl.css |
188 B |
build/block-library/blocks/post-author/style.css |
189 B |
build/block-library/blocks/post-comments-form/editor-rtl.css |
96 B |
build/block-library/blocks/post-comments-form/editor.css |
96 B |
build/block-library/blocks/post-comments-form/style-rtl.css |
527 B |
build/block-library/blocks/post-comments-form/style.css |
528 B |
build/block-library/blocks/post-content/editor-rtl.css |
74 B |
build/block-library/blocks/post-content/editor.css |
74 B |
build/block-library/blocks/post-content/style-rtl.css |
79 B |
build/block-library/blocks/post-content/style.css |
79 B |
build/block-library/blocks/post-date/style-rtl.css |
62 B |
build/block-library/blocks/post-date/style.css |
62 B |
build/block-library/blocks/post-excerpt/editor-rtl.css |
71 B |
build/block-library/blocks/post-excerpt/editor.css |
71 B |
build/block-library/blocks/post-excerpt/style-rtl.css |
155 B |
build/block-library/blocks/post-excerpt/style.css |
155 B |
build/block-library/blocks/post-featured-image/editor-rtl.css |
729 B |
build/block-library/blocks/post-featured-image/editor.css |
726 B |
build/block-library/blocks/post-featured-image/style-rtl.css |
347 B |
build/block-library/blocks/post-featured-image/style.css |
347 B |
build/block-library/blocks/post-navigation-link/style-rtl.css |
215 B |
build/block-library/blocks/post-navigation-link/style.css |
214 B |
build/block-library/blocks/post-template/editor-rtl.css |
99 B |
build/block-library/blocks/post-template/editor.css |
98 B |
build/block-library/blocks/post-template/style-rtl.css |
399 B |
build/block-library/blocks/post-template/style.css |
398 B |
build/block-library/blocks/post-terms/style-rtl.css |
96 B |
build/block-library/blocks/post-terms/style.css |
96 B |
build/block-library/blocks/post-time-to-read/style-rtl.css |
70 B |
build/block-library/blocks/post-time-to-read/style.css |
70 B |
build/block-library/blocks/post-title/style-rtl.css |
226 B |
build/block-library/blocks/post-title/style.css |
226 B |
build/block-library/blocks/preformatted/style-rtl.css |
125 B |
build/block-library/blocks/preformatted/style.css |
125 B |
build/block-library/blocks/pullquote/editor-rtl.css |
134 B |
build/block-library/blocks/pullquote/editor.css |
134 B |
build/block-library/blocks/pullquote/style-rtl.css |
342 B |
build/block-library/blocks/pullquote/style.css |
342 B |
build/block-library/blocks/pullquote/theme-rtl.css |
167 B |
build/block-library/blocks/pullquote/theme.css |
167 B |
build/block-library/blocks/query-pagination-numbers/editor-rtl.css |
121 B |
build/block-library/blocks/query-pagination-numbers/editor.css |
118 B |
build/block-library/blocks/query-pagination/editor-rtl.css |
154 B |
build/block-library/blocks/query-pagination/editor.css |
154 B |
build/block-library/blocks/query-pagination/style-rtl.css |
237 B |
build/block-library/blocks/query-pagination/style.css |
237 B |
build/block-library/blocks/query-title/style-rtl.css |
64 B |
build/block-library/blocks/query-title/style.css |
64 B |
build/block-library/blocks/query/editor-rtl.css |
452 B |
build/block-library/blocks/query/editor.css |
451 B |
build/block-library/blocks/query/view.min.js |
958 B |
build/block-library/blocks/quote/style-rtl.css |
238 B |
build/block-library/blocks/quote/style.css |
238 B |
build/block-library/blocks/quote/theme-rtl.css |
233 B |
build/block-library/blocks/quote/theme.css |
236 B |
build/block-library/blocks/read-more/style-rtl.css |
138 B |
build/block-library/blocks/read-more/style.css |
138 B |
build/block-library/blocks/rss/editor-rtl.css |
101 B |
build/block-library/blocks/rss/editor.css |
101 B |
build/block-library/blocks/rss/style-rtl.css |
288 B |
build/block-library/blocks/rss/style.css |
287 B |
build/block-library/blocks/search/editor-rtl.css |
199 B |
build/block-library/blocks/search/editor.css |
199 B |
build/block-library/blocks/search/style-rtl.css |
672 B |
build/block-library/blocks/search/style.css |
671 B |
build/block-library/blocks/search/theme-rtl.css |
113 B |
build/block-library/blocks/search/theme.css |
113 B |
build/block-library/blocks/search/view.min.js |
475 B |
build/block-library/blocks/separator/editor-rtl.css |
100 B |
build/block-library/blocks/separator/editor.css |
100 B |
build/block-library/blocks/separator/style-rtl.css |
248 B |
build/block-library/blocks/separator/style.css |
248 B |
build/block-library/blocks/separator/theme-rtl.css |
195 B |
build/block-library/blocks/separator/theme.css |
195 B |
build/block-library/blocks/shortcode/editor-rtl.css |
286 B |
build/block-library/blocks/shortcode/editor.css |
286 B |
build/block-library/blocks/site-logo/editor-rtl.css |
806 B |
build/block-library/blocks/site-logo/editor.css |
803 B |
build/block-library/blocks/site-logo/style-rtl.css |
218 B |
build/block-library/blocks/site-logo/style.css |
218 B |
build/block-library/blocks/site-tagline/editor-rtl.css |
87 B |
build/block-library/blocks/site-tagline/editor.css |
87 B |
build/block-library/blocks/site-tagline/style-rtl.css |
65 B |
build/block-library/blocks/site-tagline/style.css |
65 B |
build/block-library/blocks/site-title/editor-rtl.css |
85 B |
build/block-library/blocks/site-title/editor.css |
85 B |
build/block-library/blocks/site-title/style-rtl.css |
206 B |
build/block-library/blocks/site-title/style.css |
206 B |
build/block-library/blocks/social-link/editor-rtl.css |
338 B |
build/block-library/blocks/social-link/editor.css |
338 B |
build/block-library/blocks/social-links/editor-rtl.css |
757 B |
build/block-library/blocks/social-links/editor.css |
756 B |
build/block-library/blocks/social-links/style-rtl.css |
1.51 kB |
build/block-library/blocks/social-links/style.css |
1.5 kB |
build/block-library/blocks/spacer/editor-rtl.css |
346 B |
build/block-library/blocks/spacer/editor.css |
346 B |
build/block-library/blocks/spacer/style-rtl.css |
48 B |
build/block-library/blocks/spacer/style.css |
48 B |
build/block-library/blocks/table-of-contents/style-rtl.css |
83 B |
build/block-library/blocks/table-of-contents/style.css |
83 B |
build/block-library/blocks/table/editor-rtl.css |
394 B |
build/block-library/blocks/table/editor.css |
394 B |
build/block-library/blocks/table/style-rtl.css |
640 B |
build/block-library/blocks/table/style.css |
639 B |
build/block-library/blocks/table/theme-rtl.css |
152 B |
build/block-library/blocks/table/theme.css |
152 B |
build/block-library/blocks/tag-cloud/editor-rtl.css |
144 B |
build/block-library/blocks/tag-cloud/editor.css |
144 B |
build/block-library/blocks/tag-cloud/style-rtl.css |
266 B |
build/block-library/blocks/tag-cloud/style.css |
265 B |
build/block-library/blocks/template-part/editor-rtl.css |
368 B |
build/block-library/blocks/template-part/editor.css |
368 B |
build/block-library/blocks/template-part/theme-rtl.css |
113 B |
build/block-library/blocks/template-part/theme.css |
113 B |
build/block-library/blocks/term-description/style-rtl.css |
126 B |
build/block-library/blocks/term-description/style.css |
126 B |
build/block-library/blocks/text-columns/editor-rtl.css |
95 B |
build/block-library/blocks/text-columns/editor.css |
95 B |
build/block-library/blocks/text-columns/style-rtl.css |
165 B |
build/block-library/blocks/text-columns/style.css |
165 B |
build/block-library/blocks/verse/style-rtl.css |
98 B |
build/block-library/blocks/verse/style.css |
98 B |
build/block-library/blocks/video/editor-rtl.css |
396 B |
build/block-library/blocks/video/editor.css |
397 B |
build/block-library/blocks/video/style-rtl.css |
192 B |
build/block-library/blocks/video/style.css |
192 B |
build/block-library/blocks/video/theme-rtl.css |
134 B |
build/block-library/blocks/video/theme.css |
134 B |
build/block-library/classic-rtl.css |
179 B |
build/block-library/classic.css |
179 B |
build/block-library/common-rtl.css |
1.1 kB |
build/block-library/common.css |
1.1 kB |
build/block-library/editor-elements-rtl.css |
75 B |
build/block-library/editor-elements.css |
75 B |
build/block-library/editor-rtl.css |
11.7 kB |
build/block-library/editor.css |
11.7 kB |
build/block-library/elements-rtl.css |
54 B |
build/block-library/elements.css |
54 B |
build/block-library/reset-rtl.css |
472 B |
build/block-library/reset.css |
472 B |
build/block-library/style-rtl.css |
15 kB |
build/block-library/style.css |
15 kB |
build/block-library/theme-rtl.css |
708 B |
build/block-library/theme.css |
712 B |
build/block-serialization-default-parser/index.min.js |
1.12 kB |
build/block-serialization-spec-parser/index.min.js |
2.87 kB |
build/blocks/index.min.js |
52.3 kB |
build/commands/index.min.js |
16.1 kB |
build/commands/style-rtl.css |
955 B |
build/commands/style.css |
952 B |
build/components/index.min.js |
224 kB |
build/components/style-rtl.css |
12.1 kB |
build/components/style.css |
12.1 kB |
build/compose/index.min.js |
12.7 kB |
build/core-commands/index.min.js |
2.82 kB |
build/core-data/index.min.js |
73.2 kB |
build/customize-widgets/index.min.js |
11 kB |
build/customize-widgets/style-rtl.css |
1.35 kB |
build/customize-widgets/style.css |
1.35 kB |
build/data-controls/index.min.js |
641 B |
build/data/index.min.js |
8.98 kB |
build/date/index.min.js |
18 kB |
build/deprecated/index.min.js |
458 B |
build/dom-ready/index.min.js |
325 B |
build/dom/index.min.js |
4.66 kB |
build/edit-post/classic-rtl.css |
578 B |
build/edit-post/classic.css |
580 B |
build/edit-post/index.min.js |
13.1 kB |
build/edit-post/style-rtl.css |
2.57 kB |
build/edit-post/style.css |
2.57 kB |
build/edit-site/posts-rtl.css |
7.3 kB |
build/edit-site/posts.css |
7.3 kB |
build/edit-site/style-rtl.css |
12.6 kB |
build/edit-site/style.css |
12.6 kB |
build/edit-widgets/index.min.js |
17.7 kB |
build/edit-widgets/style-rtl.css |
4.2 kB |
build/edit-widgets/style.css |
4.2 kB |
build/editor/index.min.js |
102 kB |
build/editor/style-rtl.css |
9.28 kB |
build/editor/style.css |
9.28 kB |
build/element/index.min.js |
4.83 kB |
build/escape-html/index.min.js |
537 B |
build/format-library/index.min.js |
8.11 kB |
build/format-library/style-rtl.css |
476 B |
build/format-library/style.css |
476 B |
build/hooks/index.min.js |
1.54 kB |
build/html-entities/index.min.js |
445 B |
build/i18n/index.min.js |
3.58 kB |
build/is-shallow-equal/index.min.js |
526 B |
build/keyboard-shortcuts/index.min.js |
1.31 kB |
build/keycodes/index.min.js |
1.46 kB |
build/list-reusable-blocks/index.min.js |
2.18 kB |
build/list-reusable-blocks/style-rtl.css |
846 B |
build/list-reusable-blocks/style.css |
846 B |
build/media-utils/index.min.js |
3.2 kB |
build/notices/index.min.js |
946 B |
build/nux/index.min.js |
1.61 kB |
build/nux/style-rtl.css |
749 B |
build/nux/style.css |
745 B |
build/patterns/index.min.js |
7.34 kB |
build/patterns/style-rtl.css |
687 B |
build/patterns/style.css |
685 B |
build/plugins/index.min.js |
1.81 kB |
build/preferences-persistence/index.min.js |
2.06 kB |
build/preferences/index.min.js |
2.9 kB |
build/preferences/style-rtl.css |
554 B |
build/preferences/style.css |
554 B |
build/primitives/index.min.js |
829 B |
build/priority-queue/index.min.js |
1.54 kB |
build/private-apis/index.min.js |
1.01 kB |
build/react-i18n/index.min.js |
630 B |
build/react-refresh-entry/index.min.js |
9.47 kB |
build/react-refresh-runtime/index.min.js |
6.76 kB |
build/redux-routine/index.min.js |
2.69 kB |
build/reusable-blocks/index.min.js |
2.55 kB |
build/reusable-blocks/style-rtl.css |
256 B |
build/reusable-blocks/style.css |
256 B |
build/rich-text/index.min.js |
10.1 kB |
build/router/index.min.js |
1.96 kB |
build/server-side-render/index.min.js |
1.94 kB |
build/shortcode/index.min.js |
1.4 kB |
build/style-engine/index.min.js |
2.04 kB |
build/token-list/index.min.js |
581 B |
build/url/index.min.js |
3.9 kB |
build/vendors/react-dom.min.js |
41.7 kB |
build/vendors/react-jsx-runtime.min.js |
560 B |
build/vendors/react.min.js |
4.02 kB |
build/viewport/index.min.js |
965 B |
build/warning/index.min.js |
250 B |
build/widgets/index.min.js |
7.19 kB |
build/widgets/style-rtl.css |
1.16 kB |
build/widgets/style.css |
1.16 kB |
build/wordcount/index.min.js |
1.03 kB |
The PR adds a temporary filter that sets show_in_rest to true. This is added to a new file in the 6.7 compatibility folder.
As a side effect, this also enabled Format Archives as an option in the template creation flow ( Site Editor > Templates > Add New Template.)
In the short video, I am creating an archive template for the video post format, which shows up since I have created a post that has this post format, but no other post formats are assigned.
https://github.com/user-attachments/assets/8906436e-641e-4ec7-9cc2-a502f8f7a852
Ok I think I know the answer to my question: The post format taxonomy has show_ui=false but this flag is only used for the document sidebar panels.
I think I see two action items here:
- Add the
show_uicheck to the taxonomies shown in the query loop filters. In other words, we should probably hide these taxonomies in this UI - Build a dedicated UI to filter per post format in the the query loop filter for post formats (like we have a custom UI for the document sidebar)
In other words, we can't treat this property as a taxonomy in one case but not the other, we should be consistent and I feel like historically, we don't treat this as a taxonomy, we only use the taxonomy as a storage mechanism.
The benefit of using the taxonomy filter like now is that it only requires a small code change. (Which also means less to maintain)
I think the control should still be under filters, and perhaps use a selectControl? It is not possible to register custom post formats, so selecting from a list of supported formats, rather than typing in a value makes sense.
What would need to be fixed for a first iteration though?
Ok, I have pushed changes on the editor side, moving the post formats out of the taxonomies.
Since the formats are no longer part of the tax_query, it will require changes to build_query_vars_from_query_block to work on the front.
I am still not sure that moving it out of the taxonomy is worth this amount of code.
Here is a new screenshot of the option, where formats is now separate from taxonomies:
Another question: Is it expected that only post formats that are used can be selected in the query loop option? I mean that I have registered theme support for multiple formats, but only assigned one post to the video format, and the video is the only format I can select in the query.
I am still not sure that moving it out of the taxonomy is worth this amount of code.
Maybe we can ask for other opinions. I agree it's more code, but I feel like we should be consistent (it's either a taxonomy all the way or not). I'm happy to be overruled if the consensus is leaning on the opposite direction.
Another question: Is it expected that only post formats that are used can be selected in the query loop option? I mean that I have registered theme support for multiple formats, but only assigned one post to the video format, and the video is the only format I can select in the query.
I would favour the idea of being able to select one of all registered post formats. If there is no video format post, the result of the query loop would be no posts found. But you would be able to design your site / video format query loop from scratch, even if no such posts exists yet.
I have pushed another update, but I really do not like these changes to post-template/edit.js.
The test failures are expected at this time.
For me the answer is probably no given how the "post" endpoint returns the format property for each post and allows editing the format as well by passing a string. cc @TimothyBJacobs for opinion as well.
This means to me that ideally the /posts endpoint would allow passing format as a string in the query rather than a list of ids.
Agreed on both counts here. I think this is also evident from a PHP API perspective where we have helper functions to interact with post formats like set_post_format.
Maybe we can ask for other opinions.
I’ve been using Post Formats since its introduction and with
- the slug /type/
- Twenty-Fourteen and the 'Ephemera' widget
- a code snippet / plugin to generate the ‚standard‘ post format
as a taxonomy. Why? I just wanted to separate blog posts from great food pictures or quotes I’ve just read.
And yes, post formats are also the tool to translate WordPress posts into ActivtyPub objects.
So going forward, when I make an aside post for the Fediverse, I want to be able to exclude it from my standard blog posts.
Flaky tests detected in 4b46ea2c813f09a8895e31257715917af7c2d1f5. Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.
🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/10772584409 📝 Reported issues:
- #44672 in
/test/e2e/specs/widgets/customizing-widgets.spec.js
I'm sorry if this has already been discussed, but maybe we should standardize post-format parameter names between the REST API and the editor.
The tags' taxonomy name also has a post prefix but is exposed via REST API as tags when listing a post or retrieving a single post. The post format is also provided via a format key.
How about using format and formats parameters?
There are some issues that I will need to leave for another day (likely Monday)
- [x] Displaying the "standard" format on the front.
- [x] Styling the select control.
- [ ] Updating onPostTypeChange.
- [x] Standardize post-format parameter names
Displaying the "standard" format on the front.
I think the limitation is in the blocks.php file, gutenberg_filter_query_loop_block_query_vars_post_format, since if the standard format is passed to it, it of course can't get that format from the database because it does not exist.
My intention is to only show posts that has no format in this case.
I have replaced the SelectControl with the FormTokenField, but I don't think it is the best control for this low number of set items. The small win with using it, is that it looks similar to the rest of the controls in the panel.
Todo:
- [x] Updating onPostTypeChange.
- [x] Learn if I need to add sanitization of the user input for the FormTokenField. I left this out today because of lack of time.
[ ] Consider giving feedback to the user when they enter an invalid format in the FormTokenField.- [ ] Update the PR description, media, and testing instructions.
How about using
formatandformatsparameters?
Is there a reason to use format instead of formats when an array for post formats is used for querying a post collection? It's not a blocker, but I've seen plural forms used in similar cases.
I do not understand when you are expecting which of the forms (singular or pluralI) to be used 😞
Now custom post types with formats are not filtered in the editor, only on the front, and I don't know what changed.
Now custom post types with formats are not filtered in the editor, only on the front, and I don't know what changed.
I suppose I will start by adding the get_item_schema back and see what happens.
Now custom post types with formats are not filtered in the editor, only on the front, and I don't know what changed.
Can you provide reproduction steps for this?
Now custom post types with formats are not filtered in the editor, only on the front, and I don't know what changed.
Can you provide reproduction steps for this?
I will add it to the testing description above.
Testing instructions have been updated.
So, I added an error_log inside Gutenberg_REST_Posts_Controller_6_7 that outputs $this->post_type and even if I select the custom post type in the editor, the log shows 'post'.
Update: rather it does not log anything until I switch the post type in the query loop setting to 'post'
I suppose I will start by adding the get_item_schema back and see what happens.
This made no change. I need help from someone who has a deeper understanding of how this all works together/ is supposed to work 😞
So that we can cover all the bases here, do the other post types you're testing support post formats?
P.S. I can have a better look later today.
I am only testing these post types: posts (has support by default, once the theme support is enabled, and is working correctly) pages (has no support by default, and that is working correctly) the custom post type (registered support as above)
I have not tried registering the support on the page post type.
I went back and tested old commits between now and 63bad0fd40 and the formats filter did not work for custom post types, the wrong posts were shown in the editor. So it probably never worked, my mind is just playing tricks.
Now custom post types with formats are not filtered in the editor
This has been resolved 🎉 , thank you @Mamaduka
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.
If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.
Co-authored-by: carolinan <[email protected]>
Co-authored-by: Mamaduka <[email protected]>
Co-authored-by: youknowriad <[email protected]>
Co-authored-by: ntsekouras <[email protected]>
Co-authored-by: dmsnell <[email protected]>
Co-authored-by: TimothyBJacobs <[email protected]>
Co-authored-by: nickbohle <[email protected]>
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.