-
Notifications
You must be signed in to change notification settings - Fork 215
Use wp_post table instead wp_option to store patterns data generated by AI #11659
Conversation
|
The release ZIP for this PR is accessible via: Script Dependencies ReportThere is no changed script dependency between this branch and trunk. This comment was automatically generated by the TypeScript Errors Report
🎉 🎉 This PR does not introduce new TS errors. |
|
Size Change: +308 B (0%) Total Size: 1.54 MB
ℹ️ View Unchanged
|
src/Patterns/PatternsHelper.php
Outdated
| ); | ||
| wp_insert_post( $patterns_ai_data_post ); | ||
| } | ||
| } catch ( \WP_Error $e ) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I'm understanding the docs correctly, the wp_insert_post and the wp_update_post returns 0 or WP_Error on failure, but it does not throw the error, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, nice catch!
I updated the code 100070a. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
albarin
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work! 🙌
I left a comment about error handling.
…by AI (#11659) * Use wp_post table instead wp_option to store patterns data generated by AI * avoid crash when there isn't any patterns_ai_data post type * restore check * remove unnecessary constant * catch error * pass boolean to return WP_Error
* Empty commit for release pull request * Add readme and testing notes * Bump versions to 11.5.1 * Fix Single Product Classic Template block not showing on the front-end (#11455) In WordPress 6.4, it appears that the global `have_posts` is `false` in the context of the full site editing single product template. This breaks the Classic Template block. In this commit, we are creating a custom query using the available id instead of relying on the global query. This might be a temporary workaround as we are waiting to see if that's an issue that core is willing to fix, as it might affect backwards-compatibility for other vendors. (cherry picked from commit d9e8809) * Update testing notes with new zip file * Add protection against wrong params in get_block_template_fallback() (#11690) * Add protection towards wrong params in get_block_template_fallback() * Improve protection * Update WC Blocks 11.5.1 changelog and testing steps with new fix * bump version * [CYS] Fix decoding issue and pattern (#11681) * Fix pattern description * Decode the actual file content, not the filepath * Use wp_post table instead wp_option to store patterns data generated by AI (#11659) * Use wp_post table instead wp_option to store patterns data generated by AI * avoid crash when there isn't any patterns_ai_data post type * restore check * remove unnecessary constant * catch error * pass boolean to return WP_Error * Rename Centered Header Menu with Search pattern (#11637) * Rename Centered Header Menu with Search pattern Since the search bar has been removed from this pattern, this PR renames the pattern title and slug to reflect that change. * Rename file to reflect search removal. Remove `search` from the filename, as this no longer reflects the pattern. * Add missing condition to avoid a php warning when 'plugins' is not set (#11652) * Fix pattern route performance (#11535) * fix pattern route performance * update namespace * improve middleware * improve ProductSchema * improve error handling * update identifier * fix middleware * update description * use schema to return the response * Break down the generate_content method and create the new fetch_dummy_products_to_update method for handling the fetch of dummy products to be updated. * Ensure the Product endpoint relies on the fetch_dummy_products_to_update method for fetching dummy products to avoid code repetition and add safety checks and handle errors in case certain properties are not available. * Add error handling for the Products endpoint. * Remove memory limit increase and update docblocks. * re-add set_time_limit --------- Co-authored-by: Patricia Hillebrandt <[email protected]> * Empty commit for release pull request * add testing instructions * add zip link --------- Co-authored-by: github-actions <[email protected]> Co-authored-by: Lucio Giannotta <[email protected]> Co-authored-by: Albert Juhé Lluveras <[email protected]> Co-authored-by: Luigi <[email protected]> Co-authored-by: Alba Rincón <[email protected]> Co-authored-by: Daniel W. Robert <[email protected]> Co-authored-by: Patricia Hillebrandt <[email protected]>
* Empty commit for release pull request * Add readme and testing notes * Bump versions to 11.5.1 * Fix Single Product Classic Template block not showing on the front-end (#11455) In WordPress 6.4, it appears that the global `have_posts` is `false` in the context of the full site editing single product template. This breaks the Classic Template block. In this commit, we are creating a custom query using the available id instead of relying on the global query. This might be a temporary workaround as we are waiting to see if that's an issue that core is willing to fix, as it might affect backwards-compatibility for other vendors. (cherry picked from commit d9e8809) * Update testing notes with new zip file * Add protection against wrong params in get_block_template_fallback() (#11690) * Add protection towards wrong params in get_block_template_fallback() * Improve protection * Update WC Blocks 11.5.1 changelog and testing steps with new fix * bump version * [CYS] Fix decoding issue and pattern (#11681) * Fix pattern description * Decode the actual file content, not the filepath * Use wp_post table instead wp_option to store patterns data generated by AI (#11659) * Use wp_post table instead wp_option to store patterns data generated by AI * avoid crash when there isn't any patterns_ai_data post type * restore check * remove unnecessary constant * catch error * pass boolean to return WP_Error * Rename Centered Header Menu with Search pattern (#11637) * Rename Centered Header Menu with Search pattern Since the search bar has been removed from this pattern, this PR renames the pattern title and slug to reflect that change. * Rename file to reflect search removal. Remove `search` from the filename, as this no longer reflects the pattern. * Add missing condition to avoid a php warning when 'plugins' is not set (#11652) * Fix pattern route performance (#11535) * fix pattern route performance * update namespace * improve middleware * improve ProductSchema * improve error handling * update identifier * fix middleware * update description * use schema to return the response * Break down the generate_content method and create the new fetch_dummy_products_to_update method for handling the fetch of dummy products to be updated. * Ensure the Product endpoint relies on the fetch_dummy_products_to_update method for fetching dummy products to avoid code repetition and add safety checks and handle errors in case certain properties are not available. * Add error handling for the Products endpoint. * Remove memory limit increase and update docblocks. * re-add set_time_limit --------- Co-authored-by: Patricia Hillebrandt <[email protected]> * Empty commit for release pull request * add testing instructions * add zip link * [CYS] Fix decoding issue and pattern (#11681) * Fix pattern description * Decode the actual file content, not the filepath * bump version * add changelog * add zip link * add link to the readme --------- Co-authored-by: github-actions <[email protected]> Co-authored-by: Lucio Giannotta <[email protected]> Co-authored-by: Albert Juhé Lluveras <[email protected]> Co-authored-by: Luigi <[email protected]> Co-authored-by: Alba Rincón <[email protected]> Co-authored-by: Daniel W. Robert <[email protected]> Co-authored-by: Patricia Hillebrandt <[email protected]>


What
In some circumstances, we noticed that the content of
wc_blocks_patterns_contentin wp_option is cached before a value is set. This causes theget_optionreturns an empty value even if the value was set in the database.We decided to migrate from the wp_option approach to register a new post_type called
patterns_ai_datato store the data generated by the AI.We expect that for each WordPress website, there will exist only ONE entry of this post_type.
Why
Testing Instructions
Please consider any edge cases this change may have, and also other areas of the product this may impact.
/wp-admin/tools.php?page=woocommerce-admin-test-helperand enablecustomize-storefeature flag:Test the AI-managed images
Performance
During my investigation, I noticed that the query runs only one time (this means that the result is cached)
Futhermore, this approach is used from WordPress for custom_css and global_styles: documentation.
Screenshots or screencast
WooCommerce Visibility
Required:
Checklist
Required:
[type]label or a[skip-changelog]label.Conditional:
[skip-changelog]label is not present).Changelog