Last active
June 20, 2022 09:00
-
-
Save EricBusch/fbe9f7164ec0d4a85d70d0f430581e9a to your computer and use it in GitHub Desktop.
Examples of using the Dfrpswc_Attribute_Importer() class [dfrpswc][datafeedr]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Add the product's Size as an attribute. | |
* | |
* The attribute "Size" with a slug of "size" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_import_size_attribute( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'size', $value, $attribute, $product ); | |
$ai->add_field( [ 'size' ] ); | |
// If a field contains a comma "," split the field into multiple values. | |
$ai->field_delimiter = ','; | |
$ai->add_term( "Extra Small", [ "xs", "x-small" ] ); | |
$ai->add_term( "Small", [ "s", "sm" ], [ "x-small" ] ); | |
$ai->add_term( "Medium", [ "m", "md", "med" ] ); | |
$ai->add_term( "Large", [ "l", "lg" ], [ "x-large", "xx-large", "xxx-large" ] ); | |
$ai->add_term( "Extra Large", [ "x-large", "xl" ] ); | |
return $ai->result(); | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_size_attribute', 20, 6 ); | |
/** | |
* Add the product's Color as an attribute. | |
* | |
* The attribute "Color" with a slug of "color" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_import_color_attribute( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'color', $value, $attribute, $product ); | |
$ai->add_field( [ 'color' ] ); | |
$ai->add_field( [ 'description.tags.attribute5.name' ], 'color', "Multicolor" ); | |
$ai->field_delimiter = ','; | |
$ai->add_term( "Black", [ "ebony", "onyx", "obsidian" ] ); | |
$ai->add_term( "Blue", [ "navy", "indigo", "azure", "periwinkle", "lavender", "cobalt" ] ); | |
$ai->add_term( "Brown", [ "caramel" ] ); | |
$ai->add_term( "Green", [ "lime", "moss", "mint", "pine", "chartreuse", "sage", "olive" ] ); | |
$ai->add_term( "Grey", [ "gray", "silver", "charcoal" ] ); | |
$ai->add_term( "Pink", [ "rose", "fuchsia", "rouge", "salmon", "coral", "magenta" ] ); | |
$ai->add_term( "Purple", [ "mauve", "violet", "lavender", "beetroot", "burgundy", "mulberry" ] ); | |
$ai->add_term( "Orange" ); | |
$ai->add_term( "Red", [ "cherry", "rose", "ruby", "crimson", "scarlet", "garnet" ] ); | |
$ai->add_term( "Tan", [ "beige", "camel", "khaki" ] ); | |
$ai->add_term( "White", [ "pearl", "alabaster", "ivory", "cream", "egg shell", "eggshell" ] ); | |
$ai->add_term( "Yellow", [ "lemon" ] ); | |
return $ai->result(); | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_color_attribute', 20, 6 ); | |
/** | |
* Add the product's Gender as an attribute. | |
* | |
* The attribute "Gender" with a slug of "gender" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_import_gender_attribute( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'gender', $value, $attribute, $product ); | |
$ai->add_field( [ 'gender', 'attribute6.name.description' ], 'gender' ); | |
$ai->add_term( "Womens", [ "female", "womens", "woman", "women" ] ); | |
$ai->add_term( "Mens", [ "male", "mens", "man", "men" ] ); | |
return $ai->result(); | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_gender_attribute', 20, 6 ); | |
/** | |
* Normalize the product's Merchant's name when importing as an attribute. | |
* | |
* The attribute "Merchant" with a slug of "merchant" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_normalize_merchant_name( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'merchant', $value, $attribute, $product ); | |
$ai->add_field( [ "merchant" ], "merchant" ); | |
$ai->add_term( "Adidas" ); | |
$ai->add_term( "AppOutdoors", [ "AppOutdoors.com" ] ); | |
$ai->add_term( "Black Diamond" ); | |
$ai->add_term( "C.A.M.P.", [ "camp" ] ); | |
$ai->add_term( "CampSaver", [ "CampSaver.com" ] ); | |
$ai->add_term( "ChinaVision" ); | |
$ai->add_term( "Mad Rock", [ "madrock" ] ); | |
$ai->add_term( "Marmot" ); | |
$ai->add_term( "Metolius" ); | |
$ai->add_term( "Outdoor Play", [ "outdoorplay" ] ); | |
$ai->add_term( "Petzl" ); | |
$ai->add_term( "REI" ); | |
$ai->add_term( "Summit Sports", [ "Summit Sports Sites", "SummitSports" ] ); | |
$ai->add_term( "The North Face", [ "north face" ] ); | |
$result = $ai->result(); | |
return $result; | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_normalize_merchant_name', 20, 6 ); | |
/** | |
* Add the product's Age Group as an attribute. | |
* | |
* The attribute "Age Group" with a slug of "age-group" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_import_age_group_attribute( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'age-group', $value, $attribute, $product ); | |
$ai->add_field( [ 'gender.name.description.category' ], '', 'All Ages' ); | |
$ai->add_term( | |
"Girls", | |
[ "girl" ], | |
[ "womens", "woman", "women", "adult", "ladies" ] | |
); | |
$ai->add_term( | |
"Boys", | |
[ "boy" ], | |
[ "mens", "man", "men", "adult" ] | |
); | |
$ai->add_term( | |
"Womens", | |
[ "female", "womens", "woman", "women" ], | |
[ "girl", "girls", "child", "children", "kids", "kid" ] | |
); | |
$ai->add_term( | |
"Mens", | |
[ "male", "mens", "man", "men" ], | |
[ "boy", "boys", "child", "children", "kids", "kid" ] | |
); | |
$ai->add_term( | |
"Adult", | |
[ "male", "mens", "man", "men", "female", "womens", "woman", "women" ], | |
[ "boy", "boys", "girl", "girls", "child", "children", "kids", "kid" ] | |
); | |
$ai->add_term( | |
"Children", | |
[ "boy", "boys", "girl", "girls", "child", "children", "kids", "kid" ], | |
[ "male", "mens", "man", "men", "womens", "woman", "women" ] | |
); | |
return $ai->result(); | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_age_group_attribute', 20, 6 ); | |
/** | |
* Add the product's Country Name as an attribute. | |
* | |
* The attribute "Country" with a slug of "country" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_import_country_attribute( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'country', $value, $attribute, $product ); | |
$ai->add_field( [ "source", "merchant" ], "country", 'United States' ); | |
$ai->add_term( "Australia", [ "AU" ] ); | |
$ai->add_term( "Austria", [ "AT" ] ); | |
$ai->add_term( "Belgium", [ "BE" ] ); | |
$ai->add_term( "Brazil", [ "BR" ] ); | |
$ai->add_term( "Brazil", [ "BR" ] ); | |
$ai->add_term( "Canada", [ "CA" ] ); | |
$ai->add_term( "Denmark", [ "DK" ] ); | |
$ai->add_term( "Finland", [ "FI" ] ); | |
$ai->add_term( "France", [ "FR" ] ); | |
$ai->add_term( "Germany", [ "DE" ] ); | |
$ai->add_term( "Ireland", [ "IE" ] ); | |
$ai->add_term( "Italy", [ "IT" ] ); | |
$ai->add_term( "India", [ "IN" ] ); | |
$ai->add_term( "Netherlands", [ "NL" ] ); | |
$ai->add_term( "New Zealand", [ "NZ" ] ); | |
$ai->add_term( "Norway", [ "NO" ] ); | |
$ai->add_term( "Poland", [ "PL" ] ); | |
$ai->add_term( "Portugal", [ "PT" ] ); | |
$ai->add_term( "Spain", [ "ES" ] ); | |
$ai->add_term( "Sweden", [ "SE" ] ); | |
$ai->add_term( "Switzerland", [ "CH" ] ); | |
$ai->add_term( "United Kingdom", [ "UK", "GB" ] ); | |
$ai->add_term( "United States", [ "US", "USA" ] ); | |
return $ai->result(); | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_country_attribute', 20, 6 ); | |
/** | |
* Add the product's Country Name as an attribute. | |
* | |
* The attribute "Country" with a slug of "country" must already exist here: WordPress Admin Area > Products > Attributes | |
* | |
* @param array|string $value The current value of the $attribute for this $post. | |
* @param string $attribute The slug of the attribute. Examples: pa_color or pa_shoe-size | |
* @param array $post An array of post data including ID, post_title, post_status, etc... | |
* @param array $product An array of product data returned from the Datafeedr API. | |
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data. | |
* @param string $action The action the Product Set is performing. Value are either "insert" or "update". | |
* | |
* @return array|string The updated attribute's value. | |
*/ | |
function mycode_import_material_attribute( $value, $attribute, $post, $product, $set, $action ) { | |
$ai = new Dfrpswc_Attribute_Importer( 'material', $value, $attribute, $product ); | |
$ai->add_field( [ "description.name.material" ], "material" ); | |
$ai->add_term( "Bamboo" ); | |
$ai->add_term( "Denim", [ "jean", "jeans" ] ); | |
$ai->add_term( "Flannel" ); | |
$ai->add_term( "Fur" ); | |
$ai->add_term( "Glass" ); | |
$ai->add_term( "Leather", [ "cowhide" ] ); | |
$ai->add_term( "Metal", [ "copper", "steel", "iron", "aluminum" ] ); | |
$ai->add_term( "Nylon" ); | |
$ai->add_term( "Plastic" ); | |
$ai->add_term( "Polyester" ); | |
$ai->add_term( "Rayon" ); | |
$ai->add_term( "Spandex" ); | |
$ai->add_term( "Wood" ); | |
return $ai->result(); | |
} | |
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_material_attribute', 20, 6 ); |
Hi Eric,
You are all ok? I have to reach out to you again. Since a few week importing product properties doesn't go well. For some properties multiple instances are created. E.g; i have a property rumregion which sets the country of origin for the rum. Here you see the function.
In the attachment you see the result. Do you happen to know what the reason for this is and how i can fix it?
// Change 'color' to the slug of the attribute you want to target.
$ai = new Dfrpswc_Attribute_Importer( 'rumregion', $value, $attribute, $product );
$ai->add_field( [ 'description' ], 'rumregion' );
// Add terms that will be allowed for import
$ai->add_term( "Trinidad", [ "Trinidad" ] );
$ai->add_term( "Tobago", [ "Tobago" ] );
$ai->add_term( "Panama", [ "Tobago" ] );
$ai->add_term( "Barbados", [ "Barbados" ] );
$ai->add_term( "Cuba", [ "Cuba" ] );
$ai->add_term( "Verenigde Staten", [ "Verenigde Staten" ] );
$ai->add_term( "Dominicaanse Republiek", [ "Dominicaanse Rep" ] );
$ai->add_term( "Fiji", [ "Fiji" ] );
$ai->add_term( "Guatemala", [ "Guatemala" ] );
$ai->add_term( "Belize", [ "Belize" ] );
$ai->add_term( "Venezuela", [ "Venezuela" ] );
return $ai->result();
}
add_filter( 'dfrpswc_filter_attribute_value', 'mycode_import_rumregion_attribute', 20, 6 );```
@jans9208 You need to add this code to your custom plugin.
Hope this helps!
Hi Eric,
I have added the code and filled in the attributes. Thanks again for your help.
Best regards,
Simon
… Op 19 jun. 2022, om 11:04 heeft Eric Busch ***@***.***> het volgende geschreven:
@EricBusch commented on this gist.
@jans9208 <https://github.com/jans9208> You need to add this code to your custom plugin.
https://datafeedrapi.helpscoutdocs.com/article/44-prevent-attributes-from-being-overwritten-during-product-set-updates <https://datafeedrapi.helpscoutdocs.com/article/44-prevent-attributes-from-being-overwritten-during-product-set-updates>
Hope this helps!
—
Reply to this email directly, view it on GitHub <https://gist.github.com/fbe9f7164ec0d4a85d70d0f430581e9a#gistcomment-4205519>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AALAFJE4COJRYAMPOIKOJ5TVP3PBPANCNFSM4LOPRVTA>.
You are receiving this because you were mentioned.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi @jans9208
Here's more information regarding our inclusion of merchants:
https://datafeedrapi.helpscoutdocs.com/article/27-request-a-missing-merchant
If you need to request a missing merchant, just let us know in the Contact Form here:
https://datafeedr.me/contact
Thanks!
Eric