-
Notifications
You must be signed in to change notification settings - Fork 219
Store Customization > Update products with AI generated content #11155
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: 0 B Total Size: 1.53 MB ℹ️ View Unchanged
|
…te_new_product method.
…f the ai generated content to ensure we wont override products modified by the store owner.
… of the media_sideload_image method outside the wp-admin area (via API) and other adjustments to the products generation and hashes
update to comply with DRY principles.update to comply with DRY principles.
woocommerce-blocks/src/Patterns/ProductUpdater.php Lines 133 to 144 in 11f6eb7
🚀 This comment was generated by the automations bot based on a
|
…the default image. Add a limit of 6 when quering the total products created by the store owner.
Thanks @tjcafferkey, regarding:
Those are unrelated to this PR indeed, the focus here is to ensure products are created and have AI-generated content assigned to them exclusively, but thanks for flagging. The prompts and additional fine-tuning for the AI-generated content are being worked on #11280 |
@nefeline I have just left a few comments. Once answered by you I will approve/request changes! 😄 thanks for working on this! 💪🏻 |
Thanks for the review, @tjcafferkey! All feedback addressed. FYI - there are a few additional optimizations being made for this feature on #11280, especially regarding performance and execution time: more details to be shared on that PR soon. |
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.
Thanks for addressing the changes @nefeline and for putting this PR together!
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.
Thanks for addressing the changes @nefeline and for putting this PR together!
* Introduce the ProductUpdater class. * Update the image assignment for the default products content. * Update the default products content. * Introduce the generate_content and get_placeholder_products methods. * Update the get_placeholder_products method and introduce the new create_new_product method. * Verify the hash of the product content and compare it with the hash of the ai generated content to ensure we wont override products modified by the store owner. * Add docblocks and update the structure for the ProductUpdater class. * Pass the vertical images as a param for the PatternUpdater and the ProductUpdater. * Update the provided variable to the PatternUpdater class. * Update the ProductUpdater class to include the requirements for usage of the media_sideload_image method outside the wp-admin area (via API) and other adjustments to the products generation and hashes * remove unnecessary calls to post/product images. * Update the loop for generating products. * Further adjustments to the Product Updater. * Provide the business_description as a param for the generate_content ProductUpdates * Update the default timeout for the AI connection; update the path to the default image. Add a limit of 6 when quering the total products created by the store owner. * Add new neutral placeholder images for products and patterns. * Update the prompt and the logic for the placeholder images. * Remove placeholder images. * Increase max execution time * Update the products query. * Move the media_sideload_image function dependencies to outside of the loop and add comment. * Update text content. * Address code review. * bail early if no business description provided. * Add an extra safety check in case of query errors. * Address CR.
* Empty commit for release pull request * Do a version bump to 11.4.1 * Add Instruction Notes and update the Changelog * Update the testing instructions and the changelog and the .zip link * Empty commit for release pull request * Remove the fontSize for the button (#11433) * [Store Customization MVP] Ensure the AI-generated content in patterns is updated on plugin update (#11210) * Update the patterns content after updating the plugin * Remove unused variable and use statement * Schedule action for updating the patterns content on plugin update (for both WooCommerce and WooCommerce Blocks.) * Update condition to remove the plugin folder name * Remove the update function from bootstrap.php * Remove unused use * Fix the condition, since $options['plugin'] is an array * Remove pattern file This was left empty by mistake in a merge, we need to remove the file or we get an error --------- Co-authored-by: Patricia Hillebrandt <[email protected]> * Fix outer space and title (#11434) * Store Customization > Update products with AI generated content (#11155) * Introduce the ProductUpdater class. * Update the image assignment for the default products content. * Update the default products content. * Introduce the generate_content and get_placeholder_products methods. * Update the get_placeholder_products method and introduce the new create_new_product method. * Verify the hash of the product content and compare it with the hash of the ai generated content to ensure we wont override products modified by the store owner. * Add docblocks and update the structure for the ProductUpdater class. * Pass the vertical images as a param for the PatternUpdater and the ProductUpdater. * Update the provided variable to the PatternUpdater class. * Update the ProductUpdater class to include the requirements for usage of the media_sideload_image method outside the wp-admin area (via API) and other adjustments to the products generation and hashes * remove unnecessary calls to post/product images. * Update the loop for generating products. * Further adjustments to the Product Updater. * Provide the business_description as a param for the generate_content ProductUpdates * Update the default timeout for the AI connection; update the path to the default image. Add a limit of 6 when quering the total products created by the store owner. * Add new neutral placeholder images for products and patterns. * Update the prompt and the logic for the placeholder images. * Remove placeholder images. * Increase max execution time * Update the products query. * Move the media_sideload_image function dependencies to outside of the loop and add comment. * Update text content. * Address code review. * bail early if no business description provided. * Add an extra safety check in case of query errors. * Address CR. * Patterns > Upload optimized version of placeholder image (#11441) * Improve vars name and remove duplicated user name (#11430) * Add overlay with 30% opacity (#11428) * [Store Customization] Update the "Footer with 3 Menus" (#11379) * Fix search bar, spacing and show text in one line * Set site log width * Adjust margins and search bar * Make the search bar fill space on mobile * Update column sizes * Remove width from site logo * [CYS Woo Express] Update large footer (#11413) * Update large footer * Update space between icons * Remove with from site logo * update changelog and testing instructions * bump to 11.4.2 version * [CYS Woo Express] Fix essential header (#11449) * Fix essential header * Fix spacing * update testing instructions * Make groups to adapt better to mobile views (#11463) * update testing instructions and changelog * Unify the search bar layout across patterns (#11445) * Unify the search bar layout across patterns * restore changes * [CYS Woo Express] Footer with simple menu and cart (#11409) * Update footer simple menu cart * Change structure to use rows not columns * Make search fill space * Fix spacing and switch mini-cart and menu * Unify the search bar * Remove mini cart * update testing instructions and changelog * Store Customization > Fetch product images from the Pexels API (#11280) * Introduce the ProductUpdater class. * Update the image assignment for the default products content. * Update the default products content. * Introduce the generate_content and get_placeholder_products methods. * Update the get_placeholder_products method and introduce the new create_new_product method. * Verify the hash of the product content and compare it with the hash of the ai generated content to ensure we wont override products modified by the store owner. * Add docblocks and update the structure for the ProductUpdater class. * Pass the vertical images as a param for the PatternUpdater and the ProductUpdater. * Update the provided variable to the PatternUpdater class. * Update the ProductUpdater class to include the requirements for usage of the media_sideload_image method outside the wp-admin area (via API) and other adjustments to the products generation and hashes * remove unnecessary calls to post/product images. * Update the loop for generating products. * Further adjustments to the Product Updater. * Provide the business_description as a param for the generate_content ProductUpdates * Update the default timeout for the AI connection; update the path to the default image. Add a limit of 6 when quering the total products created by the store owner. * Add new neutral placeholder images for products and patterns. * Update the prompt and the logic for the placeholder images. * Remove placeholder images. * Pass the AI connection as a param and update the get_images_for_pattern method to rely on the results returned from the Pexels API. * update the product updater class to rely on Pexels images and add the ai_connection as a param. * Remove the unused get_random_images method. * Update the patterns endpoint. * Delete unused ChatGPTClient class. * Introduce the new Pexels class. * Remove the Verticals references. * Update the reference for the alt description for images. * Update the scheduled action to populate patterns and products. * Remove unused Verticals classes. * Ensure the Pexels class already returns the array with the expected format for assignment to Patterns and Products. * Introduce the select_image_src_based_on_format method. * Increase max execution time * Increase max execution time * Update the request to rely on the WP.com external-media endpoint instead. * Improve performance for product content update. * Improve quality of images used in products and update queries. * Update the products query. * Move the media_sideload_image function dependencies to outside of the loop and add comment. * Update text content. * Merge base branch * Introduce the should_update_dummy_product method. * Update the method to be triggered on scheduled action to return true. * Change the image format for products to improve performance. * Make portrait the default fallback image format. * Address code review. * bail early if no business description provided. * Add an extra safety check in case of query errors. * Address CR. * Raise the default memory limit. * Update the prompt for the search term for images. * Make sure the 'woocommerce_blocks_allow_ai_connection' option is set to true if the site is connected to AI. * Update the prompt for AI generated content in patterns and initialize the images and alts for the patterns. * Update the prompt for products and introduce the update_dummy_products method. * Update the default number of images returned by Pexels. * Update the default fallback for the expected image format. * Update the prompt for selecting the images. * Add a character limit to the testimonials. * Increase timeout to fetch products data * Address code review. * update changelog * add zip link * fix markdown * remove duplicate testing instructions --------- Co-authored-by: github-actions <[email protected]> Co-authored-by: Daniel Dudzic <[email protected]> Co-authored-by: Alba Rincón <[email protected]> Co-authored-by: Patricia Hillebrandt <[email protected]> Co-authored-by: Tom Cafferkey <[email protected]> Co-authored-by: Luigi <[email protected]>
* Empty commit for release pull request * Add changelog entries to readme.txt * Update version numbers * Add testing instructions * Update the changelog with #11421 * Always show the `Enable the shipping calculator on the cart page` option in WC Admin (#11421) * Always show `Enable the shipping calculator ...` Always show the `Enable the shipping calculator on the cart page` option no matter of what is used for the cart page. * Update remove_shipping_settings docblock to accurately describe its purpose. --------- Co-authored-by: Mike Jolley <[email protected]> * Add a safe guard that the variable is set before accessing it (#11424) * Update zip package link * Modify the <main> HTML tag in the title to 'main' to ensure the title remains intact * Revert "Use the <header> element for the checkout header (#11222)" This reverts commit 045789e. * Remove #11222 from the Changelog and the Testing Notes * Remove #11190 from the Changelog and Testing Notes as it was never merged * Update .zip file with latest changes * Release: 11.4.2 (#11452) * Empty commit for release pull request * Do a version bump to 11.4.1 * Add Instruction Notes and update the Changelog * Update the testing instructions and the changelog and the .zip link * Empty commit for release pull request * Remove the fontSize for the button (#11433) * [Store Customization MVP] Ensure the AI-generated content in patterns is updated on plugin update (#11210) * Update the patterns content after updating the plugin * Remove unused variable and use statement * Schedule action for updating the patterns content on plugin update (for both WooCommerce and WooCommerce Blocks.) * Update condition to remove the plugin folder name * Remove the update function from bootstrap.php * Remove unused use * Fix the condition, since $options['plugin'] is an array * Remove pattern file This was left empty by mistake in a merge, we need to remove the file or we get an error --------- Co-authored-by: Patricia Hillebrandt <[email protected]> * Fix outer space and title (#11434) * Store Customization > Update products with AI generated content (#11155) * Introduce the ProductUpdater class. * Update the image assignment for the default products content. * Update the default products content. * Introduce the generate_content and get_placeholder_products methods. * Update the get_placeholder_products method and introduce the new create_new_product method. * Verify the hash of the product content and compare it with the hash of the ai generated content to ensure we wont override products modified by the store owner. * Add docblocks and update the structure for the ProductUpdater class. * Pass the vertical images as a param for the PatternUpdater and the ProductUpdater. * Update the provided variable to the PatternUpdater class. * Update the ProductUpdater class to include the requirements for usage of the media_sideload_image method outside the wp-admin area (via API) and other adjustments to the products generation and hashes * remove unnecessary calls to post/product images. * Update the loop for generating products. * Further adjustments to the Product Updater. * Provide the business_description as a param for the generate_content ProductUpdates * Update the default timeout for the AI connection; update the path to the default image. Add a limit of 6 when quering the total products created by the store owner. * Add new neutral placeholder images for products and patterns. * Update the prompt and the logic for the placeholder images. * Remove placeholder images. * Increase max execution time * Update the products query. * Move the media_sideload_image function dependencies to outside of the loop and add comment. * Update text content. * Address code review. * bail early if no business description provided. * Add an extra safety check in case of query errors. * Address CR. * Patterns > Upload optimized version of placeholder image (#11441) * Improve vars name and remove duplicated user name (#11430) * Add overlay with 30% opacity (#11428) * [Store Customization] Update the "Footer with 3 Menus" (#11379) * Fix search bar, spacing and show text in one line * Set site log width * Adjust margins and search bar * Make the search bar fill space on mobile * Update column sizes * Remove width from site logo * [CYS Woo Express] Update large footer (#11413) * Update large footer * Update space between icons * Remove with from site logo * update changelog and testing instructions * bump to 11.4.2 version * [CYS Woo Express] Fix essential header (#11449) * Fix essential header * Fix spacing * update testing instructions * Make groups to adapt better to mobile views (#11463) * update testing instructions and changelog * Unify the search bar layout across patterns (#11445) * Unify the search bar layout across patterns * restore changes * [CYS Woo Express] Footer with simple menu and cart (#11409) * Update footer simple menu cart * Change structure to use rows not columns * Make search fill space * Fix spacing and switch mini-cart and menu * Unify the search bar * Remove mini cart * update testing instructions and changelog * Store Customization > Fetch product images from the Pexels API (#11280) * Introduce the ProductUpdater class. * Update the image assignment for the default products content. * Update the default products content. * Introduce the generate_content and get_placeholder_products methods. * Update the get_placeholder_products method and introduce the new create_new_product method. * Verify the hash of the product content and compare it with the hash of the ai generated content to ensure we wont override products modified by the store owner. * Add docblocks and update the structure for the ProductUpdater class. * Pass the vertical images as a param for the PatternUpdater and the ProductUpdater. * Update the provided variable to the PatternUpdater class. * Update the ProductUpdater class to include the requirements for usage of the media_sideload_image method outside the wp-admin area (via API) and other adjustments to the products generation and hashes * remove unnecessary calls to post/product images. * Update the loop for generating products. * Further adjustments to the Product Updater. * Provide the business_description as a param for the generate_content ProductUpdates * Update the default timeout for the AI connection; update the path to the default image. Add a limit of 6 when quering the total products created by the store owner. * Add new neutral placeholder images for products and patterns. * Update the prompt and the logic for the placeholder images. * Remove placeholder images. * Pass the AI connection as a param and update the get_images_for_pattern method to rely on the results returned from the Pexels API. * update the product updater class to rely on Pexels images and add the ai_connection as a param. * Remove the unused get_random_images method. * Update the patterns endpoint. * Delete unused ChatGPTClient class. * Introduce the new Pexels class. * Remove the Verticals references. * Update the reference for the alt description for images. * Update the scheduled action to populate patterns and products. * Remove unused Verticals classes. * Ensure the Pexels class already returns the array with the expected format for assignment to Patterns and Products. * Introduce the select_image_src_based_on_format method. * Increase max execution time * Increase max execution time * Update the request to rely on the WP.com external-media endpoint instead. * Improve performance for product content update. * Improve quality of images used in products and update queries. * Update the products query. * Move the media_sideload_image function dependencies to outside of the loop and add comment. * Update text content. * Merge base branch * Introduce the should_update_dummy_product method. * Update the method to be triggered on scheduled action to return true. * Change the image format for products to improve performance. * Make portrait the default fallback image format. * Address code review. * bail early if no business description provided. * Add an extra safety check in case of query errors. * Address CR. * Raise the default memory limit. * Update the prompt for the search term for images. * Make sure the 'woocommerce_blocks_allow_ai_connection' option is set to true if the site is connected to AI. * Update the prompt for AI generated content in patterns and initialize the images and alts for the patterns. * Update the prompt for products and introduce the update_dummy_products method. * Update the default number of images returned by Pexels. * Update the default fallback for the expected image format. * Update the prompt for selecting the images. * Add a character limit to the testimonials. * Increase timeout to fetch products data * Address code review. * update changelog * add zip link * fix markdown * remove duplicate testing instructions --------- Co-authored-by: github-actions <[email protected]> Co-authored-by: Daniel Dudzic <[email protected]> Co-authored-by: Alba Rincón <[email protected]> Co-authored-by: Patricia Hillebrandt <[email protected]> Co-authored-by: Tom Cafferkey <[email protected]> Co-authored-by: Luigi <[email protected]> * Release: 11.4.3 (#11496) * bump to 11.4.3 * Empty commit for release pull request * Improve Hero Product Chessboard pattern (#11423) * improve pattern * remove hardcoded font-size * address feedback * update to h2 * Remove group and separator to get rid of the extra space (#11477) * [Store Customization] Update the design for the Product Gallery pattern (#11464) * Remove rating, show only title and price * Improve title spacing and level * Patterns with Search Bar: improve style (#11478) * "Product Collection X Columns" patterns: align "no reviews" text with the star (#11468) * improve line-height * use variable * add testing instructions * Rename pattern (#11487) * update readme * Store Customization > Enhance the Hero Product Split pattern (#11505) * Update the bottom margin for the Hero Product Split and the heading from h3 to h2. * Update heading comment * update testing instructions * Simplify the `Hero Product 3 Split` pattern design (#11495) * Simplify the pattern design * Add char limits to the AI generated content * Fix url * update testing instructions * Product Search Block: unify border-radius (#11515) * add testing instructions * [Store Customization] Update the Centered Header Menu with Search Pattern (#11304) * Fix hidden elements on mobile and margins * Increase navigation items spacing * Add site logo width * Improve search bar and title font weight * Remove width from site logo * Unify search bar * Remove search, improve margins * Use columns to improve the mobile view * add testing instructions * Large Header pattern: improve the layout on mobile view (#11490) * Improve Large header * improve large header * use lens * add padding * add testing instructions * Fix "Large footer" left spacing (#11520) * Fix large footer left spacing * Use esc_html_e * add testing instructions * add zip file * improve testing instructions * update testing instructions * update testing instructions --------- Co-authored-by: Luigi <[email protected]> Co-authored-by: github-actions <[email protected]> Co-authored-by: Alba Rincón <[email protected]> Co-authored-by: Patricia Hillebrandt <[email protected]> --------- Co-authored-by: github-actions <[email protected]> Co-authored-by: Daniel Dudzic <[email protected]> Co-authored-by: Saad Tarhi <[email protected]> Co-authored-by: Mike Jolley <[email protected]> Co-authored-by: Karol Manijak <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Alba Rincón <[email protected]> Co-authored-by: Patricia Hillebrandt <[email protected]> Co-authored-by: Tom Cafferkey <[email protected]>
What
This PR enables the feature for automatically generating dummy products and assigning them to AI-generated content. Up to six new dummy products are created if the store owner doesn't have any by the time the Customize Your Store feature is used. The dummy products will be updated with AI-generated content and managed images only if they were not edited by the store owner.
Conditions for Product Creation
Conditions for AI to update the Product
_headstart_post
post meta should be associated with the product. PS: it is mandatory for us to stick with this name for the postmeta as it coincides with what is already in use for the auto-generated products on Woo Express.Fixes #11142
Why
This change is required to ensure the store always has at least six products available whenever the CYS feature is used so users can properly preview the content associated with patterns powered by the Product Collection Block.
Testing Instructions
Please consider any edge cases this change may have, and also other areas of the product this may impact.
Initial Setup
Or alternatively, create a new WordPress install from scratch (make sure the install is a Jurassic Ninja install or equivalent. Otherwise you won't be able to connect with Jetpack to test this PR).
/wp-admin/tools.php?page=woocommerce-admin-test-helper
and enablecustomize-store
feature flag:Product generation within the CYS Experience
Test Scenario 1 - initial setup, ensure six new dummy products are created if none is available.
wp-admin/edit.php?post_type=product
) and delete all pre-existing products (if you have any).wp-admin/edit.php?post_type=product
) page again and notice six new products were created.Screen.Recording.2023-10-22-b.mov
Test Scenario 2 - Ensure additional dummy products are created if less than six are available.
wp-admin/edit.php?post_type=product
) and delete at least two of the pre-existing dummy products.wp-admin/edit.php?post_type=product
) page again and notice that additional dummy products were created and now you have a total of six available again.Screen.Recording.2023-10-22-c.mov
Test Scenario 3 - Ensure edited dummy products don't have their content updated by AI.
wp-admin/edit.php?post_type=product
) and edit one of the dummy products available.wp-admin/edit.php?post_type=product
) page again and notice the product you edited didn't have its content modified by AI.Screen.Recording.2023-10-22-d.mov
Test Scenario 4 - Ensure products created by the store owner don't have their content modified by AI.
wp-admin/edit.php?post_type=product
) and create one or two new products from scratch.wp-admin/edit.php?post_type=product
) page again and notice the product(s) you created didn't have its content modified by AI.Screen.Recording.2023-10-22-e.mov
wp-admin/edit.php?post_type=product
) and create one or two new products from scratch.wp-admin/edit.php?post_type=product
) page again and notice the product(s) you created didn't have its content modified by AI.Note
On rare occasions, you may notice that AI won't assign an image or generate content for a given product. This known issue is being investigated and worked on as part of a separate PR.
WooCommerce Visibility
Required:
Checklist
Required:
[type]
label or a[skip-changelog]
label.Conditional:
[skip-changelog]
label is not present).Changelog