gutenberg icon indicating copy to clipboard operation
gutenberg copied to clipboard

Query loop / Post template: Enable post format filter

Open carolinan opened this issue 1 year ago • 15 comments

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 the query block attribute in the query loop block.
  • Adds a new PostFormatControls that uses a list of post formats in a SelectControl. The SelectControl uses multiple to 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 postFormat parameter is passed from the query loop block to the post template block as part of the query.
  • The post format is added to the query using the new format key (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

carolinan avatar Aug 01 '24 10:08 carolinan

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

compressed-size-action

github-actions[bot] avatar Aug 01 '24 10:08 github-actions[bot]

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

carolinan avatar Aug 01 '24 12:08 carolinan

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_ui check 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.

youknowriad avatar Aug 01 '24 13:08 youknowriad

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?

carolinan avatar Aug 02 '24 04:08 carolinan

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: The query loop block filter settings

carolinan avatar Aug 02 '24 07:08 carolinan

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.

carolinan avatar Aug 02 '24 07:08 carolinan

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.

youknowriad avatar Aug 02 '24 09:08 youknowriad

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.

nickbohle avatar Aug 03 '24 10:08 nickbohle

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.

carolinan avatar Aug 05 '24 10:08 carolinan

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.

TimothyBJacobs avatar Aug 08 '24 01:08 TimothyBJacobs

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.

nickbohle avatar Aug 08 '24 07:08 nickbohle

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

github-actions[bot] avatar Aug 22 '24 04:08 github-actions[bot]

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?

Mamaduka avatar Aug 22 '24 12:08 Mamaduka

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

carolinan avatar Aug 22 '24 12:08 carolinan

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.

carolinan avatar Aug 27 '24 17:08 carolinan

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.

carolinan avatar Aug 30 '24 09:08 carolinan

How about using format and formats parameters?

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 😞

carolinan avatar Aug 30 '24 10:08 carolinan

Now custom post types with formats are not filtered in the editor, only on the front, and I don't know what changed.

carolinan avatar Sep 01 '24 10:09 carolinan

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.

carolinan avatar Sep 03 '24 04:09 carolinan

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?

Mamaduka avatar Sep 03 '24 04:09 Mamaduka

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.

carolinan avatar Sep 03 '24 04:09 carolinan

Testing instructions have been updated.

carolinan avatar Sep 03 '24 04:09 carolinan

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'.

carolinan avatar Sep 03 '24 05:09 carolinan

Update: rather it does not log anything until I switch the post type in the query loop setting to 'post'

carolinan avatar Sep 03 '24 05:09 carolinan

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 😞

carolinan avatar Sep 03 '24 06:09 carolinan

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.

Mamaduka avatar Sep 03 '24 06:09 Mamaduka

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.

carolinan avatar Sep 03 '24 06:09 carolinan

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.

carolinan avatar Sep 03 '24 18:09 carolinan

Now custom post types with formats are not filtered in the editor

This has been resolved 🎉 , thank you @Mamaduka

carolinan avatar Sep 05 '24 05:09 carolinan

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.

github-actions[bot] avatar Sep 05 '24 06:09 github-actions[bot]