WooCommerce Code Reference

WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT
in package
implements WC_Object_Data_Store_Interface

WC Variation Product Data Store: Stored in CPT.

Tags
version
3.0.0

Interfaces, Classes and Traits

WC_Object_Data_Store_Interface
Object Data Store Interface

Table of Contents

$extra_data_saved  : bool
If we have already saved our extra data, don't do automatic / default handling.
$internal_meta_keys  : array
Data stored in meta keys, but not considered "meta" for an object.
$meta_type  : string
Meta type. This should match up with the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
$must_exist_meta_keys  : array
Meta data which should exist in the DB, even if empty.
$object_id_field_for_meta  : string
This only needs set if you are using a custom metadata type (for example payment tokens.
$updated_props  : array
Stores updated props.
add_meta()  : int
Add new piece of meta.
create()  : mixed
Create a new product.
create_all_product_variations()  : int
Creates all possible combinations of variations from the attributes, without creating duplicates.
delete()  : bool
Method to delete a product from the database.
delete_from_lookup_table()  : mixed
Delete lookup table data for an ID.
delete_meta()  : mixed
Deletes meta based on meta ID.
find_matching_product_variation()  : int
Find a matching (enabled) variation within a variable product.
get_ending_sales()  : array
Returns an array of IDs of products that have sales which are due to end.
get_featured_product_ids()  : array
Returns a list of product IDs ( id as key => parent as value) that are featured. Uses get_posts instead of wc_get_products since we want some extra meta queries and ALL products (posts_per_page = -1).
get_internal_meta_keys()  : array
Return list of internal meta keys.
get_on_sale_products()  : array
Returns an array of on sale products, as an array of objects with an ID and parent_id present. Example: $return[0]->id, $return[0]->parent_id.
get_product_id_by_sku()  : int
Return product ID based on SKU.
get_product_type()  : bool|string
Get the product type based on product ID.
get_products()  : array|object
Returns an array of products.
get_related_products()  : array
Return a list of related products (using data like categories and IDs).
get_related_products_query()  : array
Builds the related posts query.
get_shipping_class_id_by_slug()  : int|false
Get shipping class ID by slug.
get_starting_sales()  : array
Returns an array of IDs of products that have sales starting soon.
is_existing_sku()  : bool
Check if product sku is found for any other product IDs.
parse_date_for_wp_query()  : array
Map a valid date query var to WP_Query arguments.
query()  : array|object
Query for Products matching specific criteria.
read()  : mixed
Reads a product from the database and sets its data to the class.
read_meta()  : array
Returns an array of meta for an object.
read_stock_quantity()  : mixed
Re-reads stock from the DB ignoring changes.
reviews_allowed_query_where()  : string
Add ability to get products by 'reviews_allowed' in WC_Product_Query.
search_products()  : array
Search product data for a term and return ids.
sort_all_product_variations()  : mixed
Make sure all variations have a sort order set so they can be reordered correctly.
update()  : mixed
Updates an existing product.
update_average_rating()  : mixed
Update a products average rating meta.
update_meta()  : mixed
Update meta.
update_post_meta()  : mixed
Helper method that updates all the post meta for a product based on it's settings in the WC_Product class.
update_product_sales()  : mixed
Update a product's sale count directly.
update_product_stock()  : int|float
Update a product's stock amount directly.
update_rating_counts()  : mixed
Update a products rating counts.
update_review_count()  : mixed
Update a products review count meta.
clear_caches()  : mixed
Clear any caches.
exclude_internal_meta_keys()  : bool
Callback to remove unwanted meta data.
generate_attribute_summary()  : string
Generates attribute summary for the variation.
generate_product_title()  : string
Generates a title with attribute information for a variation.
get_data_for_lookup_table()  : array
Get data to save to a lookup table.
get_db_info()  : array
Table structure is slightly different between meta types, this function will return what we need to know.
get_primary_key_for_lookup_table()  : string
Get primary key name for lookup table.
get_props_to_update()  : array
Gets a list of props and meta keys that need updated based on change state or if they are present in the database or not.
get_search_stopwords()  : array
Retrieve stopwords used when parsing search terms.
get_term_ids()  : array
Get and store terms from a taxonomy.
get_valid_search_terms()  : array
Check if the terms are suitable for searching.
get_wp_query_args()  : array
Get valid WP_Query args from a WC_Object_Query's query variables.
handle_updated_props()  : mixed
Handle updated meta props after updating meta data.
prefix_key()  : string
Internal meta keys we don't want exposed as part of meta_data. This is in addition to all data props with _ prefix.
read_attributes()  : mixed
Read attributes from post meta.
read_downloads()  : mixed
Read downloads from post meta.
read_extra_data()  : mixed
Read extra data associated with the product, like button text or product URL for external products.
read_product_data()  : mixed
Read post data.
read_visibility()  : mixed
Convert visibility terms to props.
set_product_stock()  : mixed
Update a product's stock amount directly in the database.
update_attributes()  : mixed
Update attribute meta values.
update_downloads()  : bool
Update downloads.
update_guid()  : mixed
Update product variation guid.
update_lookup_table()  : null
Update a lookup table for an object.
update_or_delete_post_meta()  : bool
Update meta data in, or delete it from, the database.
update_terms()  : mixed
For all stored terms in all taxonomies, save them to the DB.
update_version_and_type()  : mixed
Make sure we store the product version (to track data changes).
update_visibility()  : mixed
Update visibility terms based on props.

Properties

$meta_type

Meta type. This should match up with the types available at https://developer.wordpress.org/reference/functions/add_metadata/.

protected string $meta_type = 'post'

WP defines 'post', 'user', 'comment', and 'term'.

$object_id_field_for_meta

This only needs set if you are using a custom metadata type (for example payment tokens.

protected string $object_id_field_for_meta = ''

This should be the name of the field your table uses for associating meta with objects. For example, in payment_tokenmeta, this would be payment_token_id.

Methods

create_all_product_variations()

Creates all possible combinations of variations from the attributes, without creating duplicates.

public create_all_product_variations(WC_Product $product[, int $limit = -1 ]) : int
Parameters
$product : WC_Product

Variable product.

$limit : int = -1

Limit the number of created variations.

Tags
since
3.6.0
todo

Add to interface in 4.0.

Return values
intNumber of created variations.

delete_from_lookup_table()

Delete lookup table data for an ID.

public delete_from_lookup_table(int $id, string $table) : mixed
Parameters
$id : int

ID of object to update.

$table : string

Lookup table name.

Tags
since
3.6.0
Return values
mixed

find_matching_product_variation()

Find a matching (enabled) variation within a variable product.

public find_matching_product_variation(WC_Product $product[, array $match_attributes = array() ]) : int
Parameters
$product : WC_Product

Variable product.

$match_attributes : array = array()

Array of attributes we want to try to match.

Tags
since
3.0.0
Return values
intMatching variation ID or 0.

Returns a list of product IDs ( id as key => parent as value) that are featured. Uses get_posts instead of wc_get_products since we want some extra meta queries and ALL products (posts_per_page = -1).

public get_featured_product_ids() : array
Tags
since
3.0.0
Return values
array

get_on_sale_products()

Returns an array of on sale products, as an array of objects with an ID and parent_id present. Example: $return[0]->id, $return[0]->parent_id.

public get_on_sale_products() : array
Tags
since
3.0.0
Return values
array

get_products()

Returns an array of products.

public get_products([array $args = array() ]) : array|object
Parameters
$args : array = array()

Args to pass to WC_Product_Query().

Tags
see
wc_get_products
Return values
array|object

Return a list of related products (using data like categories and IDs).

public get_related_products(array $cats_array, array $tags_array, array $exclude_ids, int $limit, int $product_id) : array
Parameters
$cats_array : array

List of categories IDs.

$tags_array : array

List of tags IDs.

$exclude_ids : array

Excluded IDs.

$limit : int

Limit of results.

$product_id : int

Product ID.

Tags
since
3.0.0
Return values
array

Builds the related posts query.

public get_related_products_query(array $cats_array, array $tags_array, array $exclude_ids, int $limit) : array
Parameters
$cats_array : array

List of categories IDs.

$tags_array : array

List of tags IDs.

$exclude_ids : array

Excluded IDs.

$limit : int

Limit of results.

Tags
since
3.0.0
Return values
array

get_shipping_class_id_by_slug()

Get shipping class ID by slug.

public get_shipping_class_id_by_slug(string $slug) : int|false
Parameters
$slug : string

Product shipping class slug.

Tags
since
3.0.0
Return values
int|false

parse_date_for_wp_query()

Map a valid date query var to WP_Query arguments.

public parse_date_for_wp_query(mixed $query_var, string $key[, array $wp_query_args = array() ]) : array

Valid date formats: YYYY-MM-DD or timestamp, possibly combined with an operator from $valid_operators. Also accepts a WC_DateTime object.

Parameters
$query_var : mixed

A valid date format.

$key : string

meta or db column key.

$wp_query_args : array = array()

WP_Query args.

Tags
since
3.2.0
Return values
arrayModified $wp_query_args

reviews_allowed_query_where()

Add ability to get products by 'reviews_allowed' in WC_Product_Query.

public reviews_allowed_query_where(string $where, WP_Query $wp_query) : string
Parameters
$where : string

Where clause.

$wp_query : WP_Query

WP_Query instance.

Tags
since
3.2.0
Return values
string

search_products()

Search product data for a term and return ids.

public search_products(string $term[, string $type = '' ][, bool $include_variations = false ][, bool $all_statuses = false ][, null|int $limit = null ][, null|array $include = null ][, null|array $exclude = null ]) : array
Parameters
$term : string

Search term.

$type : string = ''

Type of product.

$include_variations : bool = false

Include variations in search or not.

$all_statuses : bool = false

Should we search all statuses or limit to published.

$limit : null|int = null

Limit returned results. @since 3.5.0.

$include : null|array = null

Keep specific results. @since 3.6.0.

$exclude : null|array = null

Discard specific results. @since 3.6.0.

Return values
arrayof ids

sort_all_product_variations()

Make sure all variations have a sort order set so they can be reordered correctly.

public sort_all_product_variations(int $parent_id) : mixed
Parameters
$parent_id : int

Product ID.

Return values
mixed

update_product_sales()

Update a product's sale count directly.

public update_product_sales(int $product_id[, int|null $quantity = null ][, string $operation = 'set' ]) : mixed

Uses queries rather than update_post_meta so we can do this in one query for performance.

Parameters
$product_id : int

Product ID.

$quantity : int|null = null

Quantity.

$operation : string = 'set'

set, increase and decrease.

Tags
since
3.0.0

this supports set, increase and decrease.

Return values
mixed

update_product_stock()

Update a product's stock amount directly.

public update_product_stock(int $product_id_with_stock[, int|float|null $stock_quantity = null ][, string $operation = 'set' ]) : int|float

Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues). Ignores manage stock setting on the product and sets quantities directly in the db: post meta and lookup tables. Uses locking to update the quantity. If the lock is not acquired, change is lost.

Parameters
$product_id_with_stock : int

Product ID.

$stock_quantity : int|float|null = null

Stock quantity.

$operation : string = 'set'

Set, increase and decrease.

Tags
since
3.0.0

this supports set, increase and decrease.

Return values
int|floatNew stock level.

get_data_for_lookup_table()

Get data to save to a lookup table.

protected get_data_for_lookup_table(int $id, string $table) : array
Parameters
$id : int

ID of object to update.

$table : string

Lookup table name.

Tags
since
3.6.0
Return values
array

get_db_info()

Table structure is slightly different between meta types, this function will return what we need to know.

protected get_db_info() : array
Tags
since
3.0.0
Return values
arrayArray elements: table, object_id_field, meta_id_field

get_primary_key_for_lookup_table()

Get primary key name for lookup table.

protected get_primary_key_for_lookup_table(string $table) : string
Parameters
$table : string

Lookup table name.

Tags
since
3.6.0
Return values
string

get_props_to_update()

Gets a list of props and meta keys that need updated based on change state or if they are present in the database or not.

protected get_props_to_update(WC_Data $object, array $meta_key_to_props[, string $meta_type = 'post' ]) : array
Parameters
$object : WC_Data

The WP_Data object (WC_Coupon for coupons, etc).

$meta_key_to_props : array

A mapping of meta keys => prop names.

$meta_type : string = 'post'

The internal WP meta type (post, user, etc).

Return values
arrayA mapping of meta keys => prop names, filtered by ones that should be updated.

get_term_ids()

Get and store terms from a taxonomy.

protected get_term_ids(WC_Data|int $object, string $taxonomy) : array
Parameters
$object : WC_Data|int

WC_Data object or object ID.

$taxonomy : string

Taxonomy name e.g. product_cat.

Tags
since
3.0.0
Return values
arrayof terms

get_valid_search_terms()

Check if the terms are suitable for searching.

protected get_valid_search_terms(array $terms) : array

Uses an array of stopwords (terms) that are excluded from the separate term matching when searching for posts. The list of English stopwords is the approximate search engines list, and is translatable.

Parameters
$terms : array

Terms to check.

Tags
since
3.4.0
Return values
arrayTerms that are not stopwords.

get_wp_query_args()

Get valid WP_Query args from a WC_Object_Query's query variables.

protected get_wp_query_args(array $query_vars) : array
Parameters
$query_vars : array

query vars from a WC_Object_Query.

Tags
since
3.1.0
Return values
array

prefix_key()

Internal meta keys we don't want exposed as part of meta_data. This is in addition to all data props with _ prefix.

protected prefix_key(string $key) : string
Parameters
$key : string

Prefix to be added to meta keys.

Tags
since
2.6.0
Return values
string

set_product_stock()

Update a product's stock amount directly in the database.

protected set_product_stock(int $product_id_with_stock, int|float|null $stock_quantity) : mixed

Updates both post meta and lookup tables. Ignores manage stock setting on the product.

Parameters
$product_id_with_stock : int

Product ID.

$stock_quantity : int|float|null

Stock quantity.

Return values
mixed

update_lookup_table()

Update a lookup table for an object.

protected update_lookup_table(int $id, string $table) : null
Parameters
$id : int

ID of object to update.

$table : string

Lookup table name.

Tags
since
3.6.0
Return values
null

update_or_delete_post_meta()

Update meta data in, or delete it from, the database.

protected update_or_delete_post_meta(WC_Data $object, string $meta_key, mixed $meta_value) : bool

Avoids storing meta when it's either an empty string or empty array. Other empty values such as numeric 0 and null should still be stored. Data-stores can force meta to exist using must_exist_meta_keys.

Note: WordPress get_metadata function returns an empty string when meta data does not exist.

Parameters
$object : WC_Data

The WP_Data object (WC_Coupon for coupons, etc).

$meta_key : string

Meta key to update.

$meta_value : mixed

Value to save.

Tags
since
3.6.0

Added to prevent empty meta being stored unless required.

Return values
boolTrue if updated/deleted.