Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Query Loop: Default to querying posts when on singular content #65067

Merged
merged 19 commits into from
Sep 18, 2024

Conversation

mikachan
Copy link
Member

@mikachan mikachan commented Sep 4, 2024

What?

An attempt to try and fix the issue described in #64746.

Why?

To align the default/inherit query results between the Editor and the front end, and also hopefully make this block more intuitive and easier to understand.

How?

This adds a check for is_singular() to check if the block has been added to a single post or page (i.e. within content), and if so, defaults to querying the post post type.

It also hides the Query Type control when editing a single page/post/CPT, as these blocks will always default to a custom query type that queries posts. The Query Type control is still used when editing a template, where it makes more sense to default to inheriting the global query.

Testing Instructions

  1. Insert a Query Loop block inside a single page, post, or CPT.
  2. Ensure that the Default query ("inherit") shows posts from the 'post' post type in both the Editor and the front-end.
  3. Insert a Query Loop block inside a template.
  4. Ensure that the "Query Type" control is only shown when editing a template and that it is hidden when editing a single page, post, or CPT.

Screenshots or screencast

Front-end (posts should now render by default)

Before After
image image

Editor (shouldn't be any change)

Before After
image image

Query Type control changes (currently, the Query Type control is always shown)

Editing a template Editing content (e.g. page)
image image

@mikachan mikachan added [Type] Bug An existing feature does not function as intended [Block] Query Loop Affects the Query Loop Block labels Sep 4, 2024
@mikachan mikachan self-assigned this Sep 4, 2024
Copy link

github-actions bot commented Sep 4, 2024

Size Change: +178 B (+0.01%)

Total Size: 1.77 MB

Filename Size Change
build-module/a11y/index.min.js 482 B -416 B (-46.33%) 🎉
build-module/interactivity-router/index.min.js 3 kB +202 B (+7.21%) 🔍
build-module/interactivity/debug.min.js 16.4 kB -160 B (-0.97%)
build-module/interactivity/index.min.js 13.2 kB -150 B (-1.13%)
build/a11y/index.min.js 952 B +3 B (+0.32%)
build/blob/index.min.js 594 B +15 B (+2.59%)
build/block-editor/index.min.js 258 kB +234 B (+0.09%)
build/block-editor/style-rtl.css 15.7 kB -332 B (-2.07%)
build/block-editor/style.css 15.7 kB -330 B (-2.06%)
build/block-library/blocks/form/view.min.js 484 B +14 B (+2.98%)
build/block-library/blocks/gallery/editor-rtl.css 946 B -9 B (-0.94%)
build/block-library/blocks/gallery/editor.css 951 B -7 B (-0.73%)
build/block-library/blocks/post-title/style-rtl.css 162 B -64 B (-28.32%) 🎉
build/block-library/blocks/post-title/style.css 162 B -64 B (-28.32%) 🎉
build/block-library/blocks/site-title/style-rtl.css 143 B -63 B (-30.58%) 🎉
build/block-library/blocks/site-title/style.css 143 B -63 B (-30.58%) 🎉
build/block-library/editor-rtl.css 11.7 kB -10 B (-0.09%)
build/block-library/editor.css 11.7 kB -9 B (-0.08%)
build/block-library/index.min.js 219 kB +283 B (+0.13%)
build/block-library/style-rtl.css 14.9 kB -120 B (-0.8%)
build/block-library/style.css 14.9 kB -119 B (-0.79%)
build/blocks/index.min.js 52.3 kB +18 B (+0.03%)
build/components/index.min.js 225 kB +328 B (+0.15%)
build/components/style-rtl.css 12.3 kB +181 B (+1.49%)
build/components/style.css 12.3 kB +181 B (+1.49%)
build/core-data/index.min.js 73.4 kB +218 B (+0.3%)
build/edit-post/index.min.js 13.6 kB +488 B (+3.72%)
build/edit-post/style-rtl.css 2.54 kB -34 B (-1.32%)
build/edit-post/style.css 2.54 kB -34 B (-1.32%)
build/edit-site/index.min.js 217 kB -300 B (-0.14%)
build/edit-site/style-rtl.css 12.6 kB +29 B (+0.23%)
build/edit-site/style.css 12.6 kB +26 B (+0.21%)
build/edit-widgets/index.min.js 17.7 kB -3 B (-0.02%)
build/edit-widgets/style-rtl.css 4.19 kB -11 B (-0.26%)
build/edit-widgets/style.css 4.19 kB -11 B (-0.26%)
build/editor/index.min.js 102 kB +114 B (+0.11%)
build/editor/style-rtl.css 9.33 kB +55 B (+0.59%)
build/editor/style.css 9.34 kB +54 B (+0.58%)
build/url/index.min.js 3.93 kB +25 B (+0.64%)
build/widgets/index.min.js 7.21 kB +19 B (+0.26%)
ℹ️ View Unchanged
Filename Size
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/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/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/freeform/editor-rtl.css 2.6 kB
build/block-library/blocks/freeform/editor.css 2.6 kB
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/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/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/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/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/commands/index.min.js 16.1 kB
build/commands/style-rtl.css 955 B
build/commands/style.css 952 B
build/compose/index.min.js 12.7 kB
build/core-commands/index.min.js 2.82 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-site/posts-rtl.css 7.3 kB
build/edit-site/posts.css 7.3 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/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/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

// @wordpress/block-library should not depend on @wordpress/editor.
// However, we need to get the current post type in order to inherit the correct query.
// eslint-disable-next-line @wordpress/data-no-store-string-literals
const { getCurrentPostType } = select( 'core/editor' );
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we need to access the current postType we should be able to get it via the block context by setting usesContext to include postType.

However I'm not sure this approach is solving the problem described 🤔

Instead of showing the posts of the current post type I do think the default state for the inherit option should still be that is always renders posts of the posts posts type.

The issue is that today it doesn't do that when the query loop is inserted inside content rather than inside a template.

Rather than this I think it might be a better route to add a check in PHP to check whether something like whether the inherit option is set to true and the is_singular check resolves to true.

In that case we change the default params to set the post type to post

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @fabiankaegy!

If we need to access the current postType we should be able to get it via the block context by setting usesContext to include postType.

Ah thank you, that's helpful.

Instead of showing the posts of the current post type I do think the default state for the inherit option should still be that is always renders posts of the posts posts type.

I agree - I was focused on making the Editor and the front end consistent, and assumed the front end was correct. But now I think it makes more sense for the query loop to default to querying posts, as this seems to be the safest assumption for most users. I've tried out is_singular() here: 51f9383

This new behavior also matches the block description:

image

@mikachan mikachan changed the title Query Loop: Add check for current post type Query Loop: Default to querying posts Sep 5, 2024
Copy link

github-actions bot commented Sep 5, 2024

Flaky tests detected in 7447863.
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/10929161840
📝 Reported issues:

@mikachan mikachan marked this pull request as ready for review September 9, 2024 15:28
Copy link

github-actions bot commented Sep 9, 2024

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.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @alaczek, @autumnfjeld.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Unlinked contributors: alaczek, autumnfjeld.

Co-authored-by: mikachan <mikachan@git.wordpress.org>
Co-authored-by: fabiankaegy <fabiankaegy@git.wordpress.org>
Co-authored-by: creativecoder <grantmkin@git.wordpress.org>
Co-authored-by: jameskoster <jameskoster@git.wordpress.org>
Co-authored-by: noisysocks <noisysocks@git.wordpress.org>
Co-authored-by: richtabor <richtabor@git.wordpress.org>
Co-authored-by: jasmussen <joen@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@creativecoder
Copy link
Contributor

I'm not sure that it always makes sense to default to the post post type.

If you're on a single page, I can see the logic of doing that. However, if I'm on a single template for a custom post type, defaulting to posts is unexpected--most of the time, I'd expect to see a list of posts of the same post type.

What do you think of defaulting the query block to the post type that matches the currently viewed post?

@jameskoster
Copy link
Contributor

We should check how the Default setting behaves in different contexts. For instance what happens if that query appears in search results, or a category archive? Or if there's a custom query in a template to load in the content of a post/page that contains such a default Query.

"Default" is potentially a bit misleading because it suggests the global default, which isn't how the option works. We can force it to work that way, but won't that involve adding a lot of logic to account for scenarios like the ones I mentioned above?

As an alternative, I still think it might be worth exploring the idea of forcing Query Loops inside Content blocks to be custom, and hiding the 'Query Type' control altogether. The values for controls in the custom query set up could inherit from the global query as a default.

@fabiankaegy
Copy link
Member

Yeah this should never override a global query if one exists. If you are on an archive of a custom post type, or on the search template it should just inherit the global as a default.

The crux of the issue is that created is that when there is no global query, like on single templates. It should default to posts.

@creativecoder
Copy link
Contributor

The crux of the issue is that created is that when there is no global query, like on single templates. It should default to posts.

@fabiankaegy That makes sense to me for page and post post types.

On single templates for custom post types (like a custom book, movie, news, or location post type), would you still expect the query to default to the post post type? For me that would be unexpected--I would expect it to show me other posts from the same custom post type that I'm currently viewing.

@fabiankaegy
Copy link
Member

@creativecoder from my perspective I would prefer the predictability of it defaulting to posts on all single templates unless you choose custom.

We simply don’t have enough insights into what a CPT is used for to determine whether it should query other items.

And even today when you insert a query loop on a single page of some CPT it displays the most recent posts in the editor. It just doesn’t on the frontend today.

@mikachan mikachan changed the title Query Loop: Default to querying posts Query Loop: Default to querying posts when on singular content Sep 17, 2024
Copy link
Member

@fabiankaegy fabiankaegy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This teste well for me and I'm in favor of getting this in for 6.7. yes it is a bug so we have more time. But I think we can even merge it now and get it in before the deadline.

@jameskoster
Copy link
Contributor

What am I doing wrong, I still see the option when editing a page? 🤔

Screenshot 2024-09-18 at 17 02 12

@mikachan
Copy link
Member Author

What am I doing wrong, I still see the option when editing a page?

Good spot - I think it's because you're testing a page within the Editor, rather than via wp-admin -> Pages. I've added a check for editing singular content within the Editor which I think should cover this. Thanks @jameskoster!

@jameskoster
Copy link
Contributor

That fixed it :)

Y'all may consider this an edge case not worth catering to, but how do you think we should handle Query Loops that have set inherit: true, either via the code editor, or when pasted into the editor? I noticed some quirks in the current UX, best illustrated with a video...

query.mp4
  • Manually changing the inherit value marks the page as dirty; I can save that change.
  • When I select Query Loop inherit seems to be reset to false behind the scenes.

I wonder if we should consider disabling the Query Type option in some templates like 404 as well. It doesn't make much sense there given there's no query to inherit.

@fabiankaegy
Copy link
Member

I wonder if we should consider disabling the Query Type option in some templates like 404 as well. It doesn't make much sense there given there's no query to inherit.

I think this is a great follow up 👍 But I don't think it should block this PR

Y'all may consider this an edge case not worth catering to, but how do you think we should handle Query Loops that have set inherit: true, either via the code editor, or when pasted into the editor? I noticed some quirks in the current UX, best illustrated with a video...

We may be able to solve for this via an effect that runs on the template change which can then use the markNextChangeAsNonPersistent stuff to update the value away from inherit

Comment on lines +96 to +99
const updateQuery = useCallback(
( newQuery ) => setAttributes( { query: { ...query, ...newQuery } } ),
[ query, setAttributes ]
);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was from fixing a lint warning.

@mikachan
Copy link
Member Author

Manually changing the inherit value marks the page as dirty; I can save that change.
When I select Query Loop inherit seems to be reset to false behind the scenes.

Ah, I think I was checking for isTemplate too late. This check automatically sets inherit to false when editing a page/post/CPT. I've moved this logic higher up into QueryContent in 47c84a7 and this seems to work better, as the value seems to be set to false more reliably when switching between editing modes. It also means we can use markNextChangeAsNonPersistent after resetting the value, as @fabiankaegy mentioned.

I also fixed some lint warnings in QueryContent in 7447863, since I was editing the code around them.

I wonder if we should consider disabling the Query Type option in some templates like 404 as well. It doesn't make much sense there given there's no query to inherit.

Yeah that sounds like a good plan, although I agree with @fabiankaegy in that this might be better in a follow-up.

This is ready for another review. Thanks both 🙏

@noisysocks
Copy link
Member

About to publish GB 19.3 and I see an approval here so just going to merge 😇

@noisysocks noisysocks merged commit 623f268 into trunk Sep 18, 2024
62 checks passed
@noisysocks noisysocks deleted the fix/query-loop-posttype branch September 18, 2024 23:31
@github-actions github-actions bot added this to the Gutenberg 19.3 milestone Sep 18, 2024
@dlh01
Copy link
Contributor

dlh01 commented Sep 19, 2024

Please pardon my quick, after-the-fact comment, but I wanted to flag the use of query_posts() in this PR, as I'm not sure that it's going to have the intended effect.

The comment just above that block of code begins:

If already in the main query loop, duplicate the query instance to not tamper with the main instance.

followed by a clone of the query object.

But query_posts() does "tamper" with the main query instance by replacing it. For example, I think if that call to query_posts() runs, any subsequent calls to is_singular() will return false because the global $wp_query has been replaced with the query for posts.

@mikachan
Copy link
Member Author

Ah I see, thanks @dlh01! I've just tried replacing query_posts( array( 'post_type' => 'post' ) ) with $query->set( 'post_type', 'post' ), which seems to work well in my testing. I've opened a PR here: #65483. Does this sound like a good alternative?

@dlh01
Copy link
Contributor

dlh01 commented Sep 20, 2024

Thanks for taking a look, @mikachan!

The change in #65483 looks OK to me as far as protecting the main query instance, but I'm not certain that it's actually having an effect. By the time the post template block is rendering, that query object has already executed, and changing the query parameters at that point (via set()) won't affect the query's results.

Taking a step back: If I'm following correctly, the changes in this PR have made it so that if a query block is inserted into post content, that query will always use inherit: false. If so, and if the query blocks being used for testing are affected by that logic, wouldn't they bypass the block of code that was altered here and in #65483? I would have thought that the $use_global_query variable would be false. Perhaps there wasn't any change needed on the PHP side at all now — the query_posts() call could be removed, and that's it?

@mikachan
Copy link
Member Author

By the time the post template block is rendering, that query object has already executed, and changing the query parameters at that point (via set()) won't affect the query's results.

I think I tested using set() when I first started working on this, and I saw the same results, so I couldn't understand why it was working now!

Perhaps there wasn't any change needed on the PHP side at all now — the query_posts() call could be removed, and that's it?

Yep, looks like this is the case. The forceful inherit change was all that was needed. I've removed the is_singular() check as part of the follow-up PR. Thanks so much for your help and explanations 🙇

select( coreStore ).__experimentalGetTemplateForLink()?.type;
const isInTemplate = 'wp_template' === currentTemplate;
const isInSingularContent = postType !== undefined;
return isInTemplate && ! isInSingularContent;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was isInSingularContent not enough? What conditions do I need to test?

const isTemplate = useSelect(
( select ) => {
const currentTemplate =
select( coreStore ).__experimentalGetTemplateForLink()?.type;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a valid call, it's missing the link argument. Without this argument it's essentially checking wither we are in the site editor or not, because in the site editor this will always load the front page template, and in any other editor this will load nothing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for explaining this. Just closing the loop here that this was fixed in #65820.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Query Loop Affects the Query Loop Block [Type] Bug An existing feature does not function as intended
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Query Loop: Default settings don't render any items when inserted in content
7 participants