Commit Graph

117 Commits

Author SHA1 Message Date
Nestor Soriano d691692dcd Fix: "Create variations from all attributes" on numeric attribute values
When "Create variations from all attributes" is used to create
variations it generates term relationship entries for all the generated
variations, however that doesn't happen when the term can be interpreted
as a numeric value. This is because in that case product->get_attributes
returns the attribute values as numbers, but the code that generates
the term relationships expect those to always be strings.
When manually adding a given variation this doesn't happen.

The fix is to simply strval-ize the value before using it, but it might
be worth investigating why this is happening.
2020-08-28 11:49:31 +02:00
Nestor Soriano 9c6c0d73d8 Record attribute terms for product variations in wp_term_relationships.
Product attributes are currently recorded as terms in
wp_term_relationships (product attributes are actually taxonomies).
In the case of variable products this is true for the main product,
but not for the variations. The attributes used to define variations
are stored as post meta, but nothing is recorded in the term
relationships table.

This is a problem when using the layered nav filtering plugin,
since the attribute counters displayed are calculated based solely
on the contents of the term relationships table. Adding meta queries
would be really messy (especially when the widget is configured
with AND operator) and would probably also hurt performance.

This commit adds a change to store the attributes for variations
as term relationships, additionally to storing them as post meta.
Terms are stored on variation creation, and updated/deleted together
with the variation as appropriate. "Any" variations (stored in meta
as empty values) are not stored as terms.

Additionally, a database upgrade is included in order to backfill
terms for already existing products.
2020-07-28 08:55:55 +02:00
Christopher Allford 1d1413b4ee Replaced direct access of many constants with the Constants library 2020-01-31 22:18:47 -08:00
Claudio Sanches 3ebda4a431 Use WC_Data_Exception in WC_Product_Variation_Data_Store_CPT 2020-01-06 21:35:23 -03:00
Rodrigo Primo 27915dd696 Exception when WC_Product_Variation is instantiated with the wrong type
This commits changes WC_Product_Variation to raise an exception when the
class is instantiated with an ID that belongs to a post object that is
not a product variation.

This is necessary to avoid problems like the one described in #24956
where passing a variable product ID to WC_Product_Variation would result
in transparently modifying the variable product title and excerpt.
2019-12-05 15:45:48 -03:00
Rodrigo Primo 61a843679a Fix WPCS violations automatically using phpcbf 2019-12-05 15:45:12 -03:00
Mike Jolley e354bb90aa Pass objects to new/update actions 2019-04-17 12:50:46 +01:00
Peter Fabian fb0f112c6d Update the db only once if both title and attributes got updated. 2019-03-12 12:55:15 +01:00
Peter Fabian d3dfee7353 Updated docs. 2019-03-09 12:09:50 +01:00
Peter Fabian ec0767b3ce Added attribute summary prop getters and setters. 2019-03-09 12:09:09 +01:00
Peter Fabian 4e177d264d Corrected comment. 2019-02-26 11:15:16 +01:00
Peter Fabian 06118db3d5 Added lazy-update of post_excerpt for variations to avoid the need for db update routine. 2019-02-26 11:11:45 +01:00
Peter Fabian 618355bcab Merge branch 'master' into feature/variation-search
# Conflicts:
#	includes/class-wc-install.php
#	includes/wc-update-functions.php
2019-02-18 17:18:44 +01:00
Mike Jolley 893b33973c Merge branch 'fix/22147' 2019-02-04 13:05:40 +00:00
Mike Jolley e31b35597a Slash meta values to preserve slashes on save 2019-01-08 13:28:26 +00:00
Ron Rennick 1a02e9f64a update variation guid with the id after creation 2019-01-02 14:26:08 -04:00
Peter Fabian 9389cf4089 Added storing attribute values as post_excerpt for variations.
This allows searching for variations by their attributes without cluttering the Variation's title.
2018-11-29 17:33:16 +01:00
Rodrigo Primo 6ec2b26972 Update WordPress.DB.PreparedSQL.NotPrepared sniff name
The latest version of WPCS that was added to WC last week, changed the name of some sniffs. This commit updates the name of one of those sniffs from WordPress.WP.PreparedSQL.NotPrepared to WordPress.DB.PreparedSQL.NotPrepared.
2018-11-23 15:10:52 -02:00
Rodrigo Primo 57f44798cb Fix phpcs violations automatically using phpcbf 2018-11-23 12:57:51 -02:00
Joey cd8416122f removed low stock options for variations, and addressed changes 2018-06-19 12:40:27 +01:00
Joey b08b55a651 added changes for low stock notifications per product 2018-05-27 05:40:58 +01:00
Mike Jolley 2ed018d542 Trigger post modified update when saving products and variations, but no other product data
Closes #19562
2018-04-03 12:51:58 +01:00
Rodrigo Primo 26b5524df1 PHPCS fixes in includes/data-stores/class-wc-product-variation-data-store-cpt.php 2018-03-08 15:33:15 -03:00
Rodrigo Primo 2b5103c849 Fix phpcs violations using phpcbf 2018-03-08 14:30:43 -03:00
Mike Jolley 472e64270a Check parent status when seeing if variation is purchasable. 2018-02-20 12:34:33 +00:00
Mike Jolley 5587ff6874 Variation data store should remove product_type term on save
Closes #16409
2017-08-11 12:32:12 +01:00
Mike Jolley 6421b2a0be Fix rtrim for non - separators 2017-07-12 15:17:48 +01:00
Mike Jolley 8dcbf9aa8d Force date created on update if not set.
Closes #15834
2017-06-28 12:25:23 +01:00
Claudiu Lodromanean 5ebc4a4010 Merge pull request #15740 from woocommerce/update/prime-term-caches
Update/prime term caches for product queries
2017-06-22 08:18:55 -07:00
Mike Jolley 67bc729ea5 update_post_caches for all posts at once 2017-06-22 13:39:17 +01:00
Mike Jolley 74cb2965b3 Ensure we have a parent
Fixes #15737
2017-06-22 12:06:10 +01:00
Mike Jolley e06aa6f60a Prime term cache before read 2017-06-21 17:09:39 +01:00
claudiulodro 57c5bab731 Space 2017-06-14 09:58:15 -07:00
Mike Jolley cb34cb8d81 Made variations more lenient so that they can be created whilst a parent does not yet exist 2017-06-14 16:37:46 +01:00
Mike Jolley 012f251e42 Update variation outofstock term on save. 2017-06-12 13:09:47 +01:00
Mike Jolley e0a64ad36a Variations to inherit catalog_visibility 2017-06-06 14:49:32 +01:00
Mike Jolley fc4a9d185e Move changes after set name 2017-05-31 16:28:55 +01:00
Claudio Sanches bc3c7f6bbd Merge branch 'master' into fix/15315 2017-05-31 11:59:49 -03:00
Mike Jolley 6883b49e81 Atom sucks 2017-05-31 15:57:49 +01:00
Mike Jolley 21300951f1 Fix tests due to generated names 2017-05-31 13:48:28 +01:00
Mike Jolley 532ddfa6b0 Merge conflicts 2017-05-31 12:23:52 +01:00
Mike Jolley 2346af1816 Update title if changed
This could be the result of a term name changing, parent changing etc.

Fixes #15315

May degrade performance if reading many variations.
2017-05-30 13:20:36 +01:00
Mike Jolley f1d718d38a Format parent stock qty on read
Fixes #14759
2017-05-29 10:03:35 +01:00
Mike Jolley 2e5053633b CRUD should update post type on update so it matches expected value. 2017-05-25 12:09:59 +01:00
Mike Jolley c16acc6b51 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	assets/css/wc-setup-rtl.css
#	assets/css/wc-setup.css
2017-05-23 19:00:24 +01:00
Mike Jolley d3666738d8 Merge branch 'pr/15069' 2017-05-23 18:56:58 +01:00
Mike Jolley 00e5189a05 Merge pull request #15070 from rasmusbe/phpdoc-missing-return-throws
Phpdoc: Add missing return and throws
2017-05-23 18:50:58 +01:00
Mike Jolley 2383799409 A single multi-word attribute is fine for variation titles
Closes #15225
2017-05-23 10:52:44 +01:00
Mike Jolley fc8100877c Undo change 2017-05-22 12:19:54 +01:00
Mike Jolley 2082d84e4d Always sync incorrect titles on variation read regardless of version
For #15158
2017-05-19 11:28:13 +01:00