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

Fix Template Part auto-drafting to support sub-directories. #25063

Merged

Conversation

Addison-Stavlo
Copy link
Contributor

Description

Currently, template part auto-drafting is only done for template parts directly in the block-template-parts directory of a theme. This change updates this to handle template parts included in subdirectories of block-template-parts.

How has this been tested?

In your themes block-template-parts folder, create a new template part .html file in a sub-directory. Load the editor, and verify the auto draft for this new template part is found in the template part placeholder's selection/preview popover.

Screenshots

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • 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.

@github-actions
Copy link

github-actions bot commented Sep 4, 2020

Size Change: 0 B

Total Size: 1.2 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.67 kB 0 B
build/api-fetch/index.js 3.41 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 8.5 kB 0 B
build/block-directory/style-rtl.css 953 B 0 B
build/block-directory/style.css 952 B 0 B
build/block-editor/index.js 128 kB 0 B
build/block-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.64 kB 0 B
build/block-library/editor.css 8.64 kB 0 B
build/block-library/index.js 138 kB 0 B
build/block-library/style-rtl.css 7.6 kB 0 B
build/block-library/style.css 7.6 kB 0 B
build/block-library/theme-rtl.css 754 B 0 B
build/block-library/theme.css 754 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.7 kB 0 B
build/components/index.js 200 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 9.67 kB 0 B
build/core-data/index.js 12.3 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.55 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.48 kB 0 B
build/edit-navigation/index.js 11.7 kB 0 B
build/edit-navigation/style-rtl.css 1.16 kB 0 B
build/edit-navigation/style.css 1.16 kB 0 B
build/edit-post/index.js 305 kB 0 B
build/edit-post/style-rtl.css 6.26 kB 0 B
build/edit-post/style.css 6.25 kB 0 B
build/edit-site/index.js 17.1 kB 0 B
build/edit-site/style-rtl.css 3.06 kB 0 B
build/edit-site/style.css 3.06 kB 0 B
build/edit-widgets/index.js 12 kB 0 B
build/edit-widgets/style-rtl.css 2.46 kB 0 B
build/edit-widgets/style.css 2.45 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/index.js 45.6 kB 0 B
build/editor/style-rtl.css 3.81 kB 0 B
build/editor/style.css 3.81 kB 0 B
build/element/index.js 4.64 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.71 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@Addison-Stavlo Addison-Stavlo changed the title Fix Template Part auto-drafting to supported nested directories. Fix Template Part auto-drafting to supported sub-directories. Sep 4, 2020
@Addison-Stavlo Addison-Stavlo changed the title Fix Template Part auto-drafting to supported sub-directories. Fix Template Part auto-drafting to support sub-directories. Sep 4, 2020
Copy link
Member

@noahtallen noahtallen left a comment

Choose a reason for hiding this comment

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

This works for me locally 👍

I'm curious, do you know when this is run? Curious if it happens every page load (which would probably be bad performance wise), but I'm guessing it's only at a different time?

$child_template_part_files = glob( get_template_directory() . '/block-template-parts/*.html' );
$child_template_part_files = is_array( $child_template_part_files ) ? $child_template_part_files : array();
$template_part_files = array_merge( $template_part_files, $child_template_part_files );
$template_part_files = get_template_part_paths( get_template_directory(), $template_part_files );
Copy link
Member

Choose a reason for hiding this comment

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

Could we concatenate the arrays outside of the function instead of passing it in to modify? I like how that would make the function "more pure," if that makes sense

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, that makes sense. As in b86514f?

Copy link
Member

Choose a reason for hiding this comment

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

yep thanks!

@Addison-Stavlo
Copy link
Contributor Author

Addison-Stavlo commented Sep 4, 2020

I'm curious, do you know when this is run? Curious if it happens every page load (which would probably be bad performance wise), but I'm guessing it's only at a different time?

This runs on the rest_wp_template_part_query filter when the query specifies a theme name that correspond to the currently activated theme.

Copy link
Member

@aristath aristath left a comment

Choose a reason for hiding this comment

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

Code looks good. Great addition and finally gets rid of those glob() calls, they were never pretty 😆
Tested locally and it works 👍

Copy link
Contributor

@jeyip jeyip left a comment

Choose a reason for hiding this comment

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

Hmmm 🤔

I was trying to test this locally and there are duplicate template part previews for the new template part .html file I've created. Any hunch as to why?

  • I'm creating files in the seedlet blocks theme
  • I have distinct names for each new html file (nested within a subdirectory)
  • I've tried cleaning up all the data in the WordPress instance npx wp-env clean all
  • I double-checked the template parts view in wp-admin to make sure these are auto-drafted. The view is empty, so it seems like these are auto drafts.

@Addison-Stavlo
Copy link
Contributor Author

I was trying to test this locally and there are duplicate template part previews for the new template part .html file I've created. Any hunch as to why?

If the duplicates are showing up for the TP in the subdirectory, it is probably because I didn't rebase since @noahtallen's fix for that in #25030 😁 .

@Addison-Stavlo Addison-Stavlo force-pushed the fix/template-part-auto-drafting-from-nested-files branch from 5d4e0eb to 21c803b Compare September 4, 2020 17:40
@Addison-Stavlo
Copy link
Contributor Author

Just rebased so that should be fixed here as well.

@jeyip
Copy link
Contributor

jeyip commented Sep 4, 2020

If the duplicates are showing up for the TP in the subdirectory, it is probably because I didn't rebase since @noahtallen's fix for that in #25030 😁

Beat me to the punch! I was about to rebase as well. Thanks, I'll test the PR again 🙂

Copy link
Contributor

@jeyip jeyip left a comment

Choose a reason for hiding this comment

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

The rebase does it! 🎉 The code looks good to me as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants