Skip to content

woocommerce/wc-smooth-generator

Repository files navigation

WooCommerce Smooth Generator

A super-smooth generator for products, orders, coupons, customers, and terms. WP-CLI is the preferred interface for using the plugin. There is also a WP Admin UI at Dashboard > Tools > WooCommerce Smooth Generator with (for now) more limited functionality.

Installation

  1. Download the latest release as a zip file from https://github.com/woocommerce/wc-smooth-generator/releases/
  2. Install in your WordPress site as you would any other plugin zip file.

WP-CLI Commands

You can see a summary of all available commands by running wp help wc generate, and more detailed guidance for each individual command is available by running wp help wc generate <command name>.

Products

Generate products based on the number of products parameter.

  • wp wc generate products <nr of products>

Generate products of the specified type. simple or variable.

  • wp wc generate products <nr of products> --type=simple

Orders

Generate orders from existing products based on the number of orders parameter, customers will also be generated to mimic guest checkout.

Generate orders for the current date

  • wp wc generate orders <nr of orders>

Generate orders with random dates between --date-start and the current date.

  • wp wc generate orders <nr of orders> --date-start=2018-04-01

Generate orders with random dates between --date-start and --date-end.

  • wp wc generate orders <nr of orders> --date-start=2018-04-01 --date-end=2018-04-24

Generate orders with a specific status.

  • wp wc generate orders <nr of orders> --status=completed

Apply coupons to a percentage of generated orders (0.0-1.0). If no coupons exist, 6 will be created automatically (3 fixed cart, 3 percentage). Note: --coupons flag is equivalent to --coupon-ratio=1.0.

Important: Decimal ratios are converted to percentages using integer rounding. For example, 0.505 becomes 50% (not 50.5%) because the random generation uses integer comparison. Use whole percentages like 0.50 for precise 50% ratios.

  • wp wc generate orders <nr of orders> --coupon-ratio=0.5

Refund a percentage of completed orders (0.0-1.0). Refunds will be split evenly between partial and full, and 25% of partial refunds will receive a second partial refund.

Note: The same decimal ratio behavior applies to refund ratios as described above for coupon ratios.

  • wp wc generate orders <nr of orders> --status=completed --refund-ratio=0.3

Order Attribution

Order Attribution represents the origin of data for an order. By default, random values are generated and assigned to the order. Orders with a creation date before 2024-01-09 will not have attribution metadata added, as the feature was not available in WooCommerce at that time.

Skip order attribution meta data genereation.

  • wp wc generate orders <nr of orders> --skip-order-attribution

Coupons

Generate coupons based on the number of coupons parameter.

  • wp wc generate coupons <nr of coupons>

Generate coupons with a minimum discount amount.

  • wp wc generate coupons <nr of coupons> --min=5

Generate coupons with a maximum discount amount.

  • wp wc generate coupons <nr of coupons> --max=50

Generate coupons with a specific discount type. Options are fixed_cart or percent. If not specified, defaults to WooCommerce default (fixed_cart).

  • wp wc generate coupons <nr of coupons> --discount_type=percent --min=5 --max=25

Customers

Generate customers based on the number of customers parameter.

  • wp wc generate customers <nr of customers>

Terms

Generate terms in the Product Categories taxonomy based on the number of terms parameter.

  • wp wc generate terms product_cat <nr of terms>

Generate hierarchical product categories with a maximum number of sub-levels.

  • wp wc generate terms product_cat <nr of terms> --max-depth=5

Generate product categories that are all child terms of an existing product category term.

  • wp wc generate terms product_cat <nr of terms> --parent=123

Generate terms in the Product Tags taxonomy based on the number of terms parameter.

  • wp wc generate terms product_tag <nr of terms>

Development

Requirements

  • Node.js v16
  • Composer v2+
  1. If you use Node Version Manager (nvm) you can run nvm use to ensure your current Node version is compatible.
  2. Run npm run setup to get started. This will install a pre-commit Git hook that will lint changes to PHP files before they are committed. It uses the same phpcs ruleset that's used by WooCommerce Core.

Releasing a new version

  1. Create a new branch with a name like release-x.x.x.
  2. Add a new entry to the changelog.txt file with all the changes since the last release. Follow the conventions of previous changelog entries.
  3. If necessary, update the Tested up to and WC tested up to values in the plugin header in wc-smooth-generator.php.
  4. Update the plugin version with the new value in the wc-smooth-generator.php and package.json files.
  5. Run npm run build to generate a production-ready zip file.
  6. Test the zip file by installing it in a WordPress instance and ensuring it has the expected version number and changes.
  7. Commit the changes to your release branch, and push to the repository. Create a pull request from the release branch.
  8. Merge the pull request.
  9. In GitHub, go to the Releases screen and click "Draft a new release".
  10. Set the release title as "Version x.x.x" (but with the actual version number). In the release description, add a brief summary of highlights, and then paste the new changelog entry below that. From the "Choose a tag" dropdown, type the new version number and then click "Create a new tag". Ensure the target is trunk.
  11. Upload the new zip file to the release where it says "Attach binaries".
  12. Publish the release!

After finishing the release, you may want to run npm run setup again, because the build script removes dev dependencies.

About

Smooth product, customer and order generation for WooCommerce

Topics

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 35