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

Navigation: Add post format variation to navigation link block #30403

Merged
merged 8 commits into from
Apr 1, 2021

Conversation

talldan
Copy link
Contributor

@talldan talldan commented Mar 31, 2021

Description

Assists with #29793.

Adds a Post Format variation to that navigation link block.

#22600 added the ability to search for a post format, but it appears this was never turned into a block variation, so post formats can only be created as custom links.

This new variation needs an icon. At the moment it just shows the custom post type icon. But I think it's fine to merge like this and add the icon later.

How has this been tested?

  1. Use a theme with post formats. I use Twenty Fourteen.
  2. Create a post and assign it a post format (the UI for this is underneath the publish date in the sidebar of the post editor). Remember the type of post format you used.
  3. Give the post a memorable title and publish it
  4. Create another post
  5. Add the navigation block
  6. Add a Post Format to the navigation block
  7. Search for and use the post format assigned in step 2 (it will probably be shown without you needing to type anything)
  8. Set this as the link
  9. Preview the post
  10. Click the link to the post format
  11. The post formats screen should be displayed showing posts of the format you assigned.

Screenshots

Screenshot 2021-03-31 at 6 50 52 pm

Types of changes

New feature (non-breaking change which adds functionality)

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@talldan talldan added [Type] Enhancement A suggestion for improvement. [Block] Navigation Affects the Navigation Block [Feature] Block Variations Block variations, including introducing new variations and variations as a feature labels Mar 31, 2021
@talldan talldan requested a review from ajitbohra as a code owner March 31, 2021 08:52
@talldan talldan self-assigned this Mar 31, 2021
Comment on lines 236 to 239
$custom_variation_names = array(
'post_tag' => 'tag',
'post_format' => 'format',
);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This kind of thing makes me think the variations could be called the same thing as the the entity names.

@github-actions
Copy link

github-actions bot commented Mar 31, 2021

Size Change: +625 B (0%)

Total Size: 1.42 MB

Filename Size Change
build/api-fetch/index.js 3.42 kB +1 B (0%)
build/autop/index.js 2.81 kB -6 B (0%)
build/block-directory/index.js 8.63 kB -2 B (0%)
build/block-editor/index.js 127 kB +13 B (0%)
build/block-library/common-rtl.css 1.31 kB +212 B (+19%) ⚠️
build/block-library/common.css 1.31 kB +211 B (+19%) ⚠️
build/block-library/index.js 151 kB +39 B (0%)
build/block-library/reset-rtl.css 503 B +128 B (+34%) 🚨
build/block-library/reset.css 504 B +128 B (+34%) 🚨
build/block-library/style-rtl.css 9.25 kB +141 B (+2%)
build/block-library/style.css 9.25 kB +143 B (+2%)
build/block-serialization-default-parser/index.js 1.87 kB +1 B (0%)
build/components/index.js 284 kB -231 B (0%)
build/customize-widgets/index.js 7.28 kB -51 B (-1%)
build/data-controls/index.js 836 B -2 B (0%)
build/edit-navigation/index.js 17.3 kB -113 B (-1%)
build/edit-post/index.js 307 kB -97 B (0%)
build/edit-post/style-rtl.css 7.13 kB +78 B (+1%)
build/edit-post/style.css 7.12 kB +77 B (+1%)
build/edit-site/index.js 27.4 kB -100 B (0%)
build/edit-site/style-rtl.css 4.58 kB +73 B (+2%)
build/edit-site/style.css 4.57 kB +72 B (+2%)
build/edit-widgets/index.js 15.6 kB -110 B (-1%)
build/editor/index.js 42.7 kB +32 B (0%)
build/format-library/index.js 6.75 kB -2 B (0%)
build/keyboard-shortcuts/index.js 2.54 kB +1 B (0%)
build/list-reusable-blocks/index.js 3.19 kB -1 B (0%)
build/media-utils/index.js 5.38 kB -5 B (0%)
build/notices/index.js 1.85 kB -1 B (0%)
build/nux/index.js 3.42 kB -2 B (0%)
build/plugins/index.js 2.95 kB -1 B (0%)
build/react-i18n/index.js 1.45 kB -2 B (0%)
build/reusable-blocks/index.js 3.79 kB +1 B (0%)
build/rich-text/index.js 13.5 kB -1 B (0%)
build/token-list/index.js 1.27 kB +1 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.78 kB 0 B
build/blob/index.js 664 B 0 B
build/block-directory/style-rtl.css 1 kB 0 B
build/block-directory/style.css 1.01 kB 0 B
build/block-editor/style-rtl.css 12.4 kB 0 B
build/block-editor/style.css 12.4 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 112 B 0 B
build/block-library/blocks/audio/style.css 112 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 551 B 0 B
build/block-library/blocks/button/style.css 551 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 315 B 0 B
build/block-library/blocks/buttons/editor.css 315 B 0 B
build/block-library/blocks/buttons/style-rtl.css 370 B 0 B
build/block-library/blocks/buttons/style.css 370 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 436 B 0 B
build/block-library/blocks/columns/style.css 435 B 0 B
build/block-library/blocks/cover/editor-rtl.css 605 B 0 B
build/block-library/blocks/cover/editor.css 605 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.24 kB 0 B
build/block-library/blocks/cover/style.css 1.24 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 401 B 0 B
build/block-library/blocks/embed/style.css 400 B 0 B
build/block-library/blocks/file/editor-rtl.css 175 B 0 B
build/block-library/blocks/file/editor.css 174 B 0 B
build/block-library/blocks/file/style-rtl.css 248 B 0 B
build/block-library/blocks/file/style.css 248 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 704 B 0 B
build/block-library/blocks/gallery/editor.css 705 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.11 kB 0 B
build/block-library/blocks/gallery/style.css 1.1 kB 0 B
build/block-library/blocks/group/editor-rtl.css 160 B 0 B
build/block-library/blocks/group/editor.css 160 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 476 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 281 B 0 B
build/block-library/blocks/latest-comments/style.css 282 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/legacy-widget/editor-rtl.css 398 B 0 B
build/block-library/blocks/legacy-widget/editor.css 399 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 191 B 0 B
build/block-library/blocks/media-text/editor.css 191 B 0 B
build/block-library/blocks/media-text/style-rtl.css 535 B 0 B
build/block-library/blocks/media-text/style.css 532 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 597 B 0 B
build/block-library/blocks/navigation-link/editor.css 597 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 957 B 0 B
build/block-library/blocks/navigation-link/style.css 955 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.13 kB 0 B
build/block-library/blocks/navigation/editor.css 1.13 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 204 B 0 B
build/block-library/blocks/navigation/style.css 205 B 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 170 B 0 B
build/block-library/blocks/page-list/editor.css 170 B 0 B
build/block-library/blocks/page-list/style-rtl.css 167 B 0 B
build/block-library/blocks/page-list/style.css 167 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B 0 B
build/block-library/blocks/paragraph/editor.css 157 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 247 B 0 B
build/block-library/blocks/paragraph/style.css 248 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 250 B 0 B
build/block-library/blocks/post-comments-form/style.css 250 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 100 B 0 B
build/block-library/blocks/post-featured-image/style.css 100 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 103 B 0 B
build/block-library/blocks/preformatted/style.css 103 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 318 B 0 B
build/block-library/blocks/pullquote/style.css 318 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 83 B 0 B
build/block-library/blocks/query-loop/editor.css 82 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query-title/editor-rtl.css 86 B 0 B
build/block-library/blocks/query-title/editor.css 86 B 0 B
build/block-library/blocks/query/editor-rtl.css 795 B 0 B
build/block-library/blocks/query/editor.css 794 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 165 B 0 B
build/block-library/blocks/search/editor.css 165 B 0 B
build/block-library/blocks/search/style-rtl.css 342 B 0 B
build/block-library/blocks/search/style.css 344 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 251 B 0 B
build/block-library/blocks/separator/style.css 251 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 512 B 0 B
build/block-library/blocks/shortcode/editor.css 512 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 201 B 0 B
build/block-library/blocks/site-logo/editor.css 201 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 115 B 0 B
build/block-library/blocks/site-logo/style.css 115 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 776 B 0 B
build/block-library/blocks/social-links/editor.css 776 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB 0 B
build/block-library/blocks/social-links/style.css 1.33 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 317 B 0 B
build/block-library/blocks/spacer/editor.css 317 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/table/editor-rtl.css 478 B 0 B
build/block-library/blocks/table/editor.css 478 B 0 B
build/block-library/blocks/table/style-rtl.css 402 B 0 B
build/block-library/blocks/table/style.css 402 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 552 B 0 B
build/block-library/blocks/template-part/editor.css 551 B 0 B
build/block-library/blocks/term-description/editor-rtl.css 90 B 0 B
build/block-library/blocks/term-description/editor.css 90 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/editor-rtl.css 50 B 0 B
build/block-library/blocks/verse/editor.css 50 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 504 B 0 B
build/block-library/blocks/video/editor.css 503 B 0 B
build/block-library/blocks/video/style-rtl.css 187 B 0 B
build/block-library/blocks/video/style.css 187 B 0 B
build/block-library/editor-rtl.css 9.53 kB 0 B
build/block-library/editor.css 9.52 kB 0 B
build/block-library/theme-rtl.css 692 B 0 B
build/block-library/theme.css 693 B 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.4 kB 0 B
build/components/style-rtl.css 16.2 kB 0 B
build/components/style.css 16.2 kB 0 B
build/compose/index.js 11.2 kB 0 B
build/core-data/index.js 16.6 kB 0 B
build/customize-widgets/style-rtl.css 676 B 0 B
build/customize-widgets/style.css 677 B 0 B
build/data/index.js 8.89 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 787 B 0 B
build/dom-ready/index.js 576 B 0 B
build/dom/index.js 5.08 kB 0 B
build/edit-navigation/style-rtl.css 2.86 kB 0 B
build/edit-navigation/style.css 2.86 kB 0 B
build/edit-widgets/style-rtl.css 2.98 kB 0 B
build/edit-widgets/style.css 2.98 kB 0 B
build/editor/style-rtl.css 3.96 kB 0 B
build/editor/style.css 3.96 kB 0 B
build/element/index.js 4.62 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 2.28 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 4.02 kB 0 B
build/is-shallow-equal/index.js 699 B 0 B
build/keycodes/index.js 1.96 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/nux/style-rtl.css 731 B 0 B
build/nux/style.css 727 B 0 B
build/primitives/index.js 1.42 kB 0 B
build/priority-queue/index.js 791 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 0 B
build/server-side-render/index.js 2.6 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/url/index.js 3.02 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

Comment on lines 53 to 59
{
name: 'format',
icon: formatIcon,
title: __( 'Post Format Link' ),
description: __( 'A link to a post format.' ),
attributes: { type: 'format' },
},
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I can't seem to make this work without the fallback 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah, I see what's happening. First, I need to be on trunk for core. Now after that I have two Tag Link variations. 😕

Wait, so it looks like Post Formats have the same item_link and item_link_description as tags 🤯

Someone copied and pasted it years ago and nobody ever noticed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm, ok, so I think there are some defaults in core for tags or categories:
https://github.com/WordPress/wordpress-develop/blob/0df28171ed9c3c31ebc93add82b64df8f690f87c/src/wp-includes/taxonomy.php#L597-L629

Seems unusual.

Copy link
Contributor

Choose a reason for hiding this comment

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

I can't seem to make this work without the fallback

Right any WP instances running 5.7 and below will be using the fallback.

We'll want to update hooks.js or similar to only add this value when post-formats are supported by the theme:

// Fallback handling may be deleted after supported WP ranges understand the `variations`
// property when passed to register_block_type_from_metadata in index.php
if ( ! settings.variations ) {
return {
...settings,
variations: fallbackVariations,
};
}

Shows up in TT1 / WP 5.7 No Search Results
Screen Shot 2021-03-31 at 8 54 01 AM Screen Shot 2021-03-31 at 8 53 41 AM

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Irrelevant, but I think TT1 does support formats, but the search only shows results when one is added to a published post

Copy link
Contributor Author

Choose a reason for hiding this comment

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

disablePostFormats is an editor setting from the wordpress/editor package, so this is tricky to use. The navigation editor doesn't use the editor package, and those settings aren't really relevant to it.

Tempted to either remove it, or keep it as is. The impact is quite low either way.

I think I'll remove it for now.

@talldan talldan requested review from gwwar and draganescu March 31, 2021 09:45
Copy link
Contributor

@gwwar gwwar left a comment

Choose a reason for hiding this comment

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

Thanks for taking this one @talldan!

I'm giving tentative approval. One thing that needs to be updated before merge is making sure we don't show the format variations when using the variations fallback. (Eg folks using this on WP <=5.7 with a theme that does not support post formats).

Feel free to land this after that behavior is fixed.

<5.7 Fallback, we see the post format variation when we shouldn't 5.7+ behavior is good
Screen Shot 2021-03-31 at 8 54 01 AM TT1 correct

Some behavior screenshots for future 👀 :

2014 2014 + post format results
Screen Shot 2021-03-31 at 10 01 09 AM Screen Shot 2021-03-31 at 10 20 49 AM

'name' => 'format',
// The item_link and item_link_description for post formats is the
// same as for tags, so need to be overriden.
'title' => __( 'Post Format Link' ),
Copy link
Contributor

Choose a reason for hiding this comment

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

We can also update the registration here to add the post labels. I didn't realize we wanted to show this one, so I missed it in the last PR.

https://github.com/WordPress/wordpress-develop/blob/f7d5b2bca6083a22eb4ebadb4b68a0e683bc49c4/src/wp-includes/taxonomy.php#L164-L167

And for folks 👀 changes here, the reason why we added new post labels was because if we combine strings from two translated items, it will generate poor translations.

Example from swissspidy:

In German the translation for A link to a %s. changes depending on the post type.
A link to a post -> Ein Link zu einem Beitrag
A link to a page -> Ein Link zu einer Seite
sprintf( __( 'A link to a %s.' ), $entity->labels->singular_name ) doesn't allow for that.

WP 5.8 is planned for July so I think we can safely make it. (Variation changes aren't present in WP 5.7 and below)

It's okay if we miss the date and need a fallback override, but I'd maybe leave a comment on when it can be removed.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

👍 I'll push a PR to do that.

The thing I was referring to is how the title and description for tag and category are used as fallbacks by core for any taxonomy that doesn't provide certain labels.

On trunk I'm seeing two Tag Link variations:
Screenshot 2021-04-01 at 4 55 45 pm

The second seems to be post format taxonomy being added as variation but using the title and description of the tag taxonomy (as fallback text).

Comment on lines 53 to 59
{
name: 'format',
icon: formatIcon,
title: __( 'Post Format Link' ),
description: __( 'A link to a post format.' ),
attributes: { type: 'format' },
},
Copy link
Contributor

Choose a reason for hiding this comment

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

I can't seem to make this work without the fallback

Right any WP instances running 5.7 and below will be using the fallback.

We'll want to update hooks.js or similar to only add this value when post-formats are supported by the theme:

// Fallback handling may be deleted after supported WP ranges understand the `variations`
// property when passed to register_block_type_from_metadata in index.php
if ( ! settings.variations ) {
return {
...settings,
variations: fallbackVariations,
};
}

Shows up in TT1 / WP 5.7 No Search Results
Screen Shot 2021-03-31 at 8 54 01 AM Screen Shot 2021-03-31 at 8 53 41 AM

'title' => __( 'Post Format Link' ),
'description' => __( 'A link to a post format' ),
'attributes' => array(
'type' => 'format',
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't have strong feelings on this one, but since post_format is a less used feature, I think it'd be okay to prefer the slug name of post_format for storing the type value.

This field isn't exposed to the user unless they're editing the code view directly.

For context, I had to keep the tag/post_tag exception in the past due to the value being saved in earlier navigation link versions.

@@ -117,6 +117,8 @@ function getSuggestionsQuery( type, kind ) {
return { type: 'term', subtype: 'category' };
case 'tag':
return { type: 'term', subtype: 'post_tag' };
case 'format':
return { type: 'post-format' };
Copy link
Contributor

Choose a reason for hiding this comment

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

For folks wondering about the kebab case:

if ( ! disablePostFormats && ( ! type || type === 'post-format' ) ) {

FYI on behavior, it also looks like we removed the labels in search results if all results are the same:
#24839

So this is expected behavior:

Custom Link Search No labels with all post formats
custom link search mixed types post format same types

@talldan
Copy link
Contributor Author

talldan commented Apr 1, 2021

Thanks for the review @gwwar!

@talldan talldan merged commit 0cbab3a into trunk Apr 1, 2021
@talldan talldan deleted the add/post-format-variation branch April 1, 2021 10:58
@github-actions github-actions bot added this to the Gutenberg 10.4 milestone Apr 1, 2021
@gziolo gziolo changed the title Add post format variation to navigation link block Navigation: Add post format variation to navigation link block Apr 6, 2021
@gziolo gziolo added the [Type] Experimental Experimental feature or API. label Apr 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Navigation Affects the Navigation Block [Feature] Block Variations Block variations, including introducing new variations and variations as a feature [Type] Enhancement A suggestion for improvement. [Type] Experimental Experimental feature or API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants