woogc/ps/synchronize_product/ignore_meta_key
Name: woogc/ps/synchronize_product/ignore_meta_key
Type: Filter
Arguments: $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID
Filter being used to exclude specific properties, meta keys, or core post fields from being applied to a child product during the product synchronization process.
By default, the synchronization routine applies every property and meta key found on the remote (main) product object onto the local child product. To prevent one or more of these fields from being overwritten on the child — for example, to preserve a locally customized SEO description, or to stop a child product’s stock status from being overridden — a callback can be registered through the ‘woogc/ps/synchronize_product/ignore_meta_key’ filter, returning TRUE for any key that should be skipped. The following sample code snippets demonstrate common scenarios, including skipping a single meta key, skipping the core post_title, post_status, post_content and post_excerpt fields, and applying conditional logic based on the origin blog or the child product’s current state.
Sample Usage
Skip syncing a specific meta key entirely:
add_filter('woogc/ps/synchronize_product/ignore_meta_key', 'my_woogc_ignore_seo_metadesc', 10, 6);
function my_woogc_ignore_seo_metadesc( $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID )
{
if ( '_yoast_wpseo_metadesc' === $prop_title )
return TRUE;
return $ignore;
}
Skip syncing the product name/title:
add_filter('woogc/ps/synchronize_product/ignore_meta_key', 'my_woogc_ignore_product_title', 10, 6);
function my_woogc_ignore_product_title( $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID )
{
if ( 'post_title' === $prop_title )
return TRUE;
return $ignore;
}
Skip syncing status and short description together:
add_filter('woogc/ps/synchronize_product/ignore_meta_key', 'my_woogc_ignore_status_and_excerpt', 10, 6);
function my_woogc_ignore_status_and_excerpt( $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID )
{
$ignored_fields = array( 'post_status', 'post_excerpt' );
if ( in_array( $prop_title, $ignored_fields, TRUE ) )
return TRUE;
return $ignore;
}
Conditionally ignore, based on which blog the data originated from:
add_filter('woogc/ps/synchronize_product/ignore_meta_key', 'my_woogc_ignore_price_unless_blog_three', 10, 6);
function my_woogc_ignore_price_unless_blog_three( $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID )
{
$price_keys = array( '_price', '_regular_price', '_sale_price' );
if ( in_array( $prop_title, $price_keys, TRUE ) && $origin_product_blog_ID !== 3 )
return TRUE;
return $ignore;
}
Inspect $child_product before deciding:
add_filter('woogc/ps/synchronize_product/ignore_meta_key', 'my_woogc_preserve_outofstock_status', 10, 6);
function my_woogc_preserve_outofstock_status( $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID )
{
if ( '_stock_status' === $prop_title && $child_product->get_stock_status() === 'outofstock' )
return TRUE;
return $ignore;
}
Using a class method instead of a standalone function:
class My_Woogc_Sync_Customizations {
public function __construct() {
add_filter( 'woogc/ps/synchronize_product/ignore_meta_key', array( $this, 'ignore_product_title' ), 10, 6 );
}
public function ignore_product_title( $ignore, $prop_title, $value, $child_product, $main_product_data, $origin_product_blog_ID ) {
if ( 'post_title' === $prop_title )
return TRUE;
return $ignore;
}
}
new My_Woogc_Sync_Customizations();

No Comments