since 2010 | 2726 reviews | 4.9/5 rated
cahcnhiet3m
I'm checking it
I'm trying, thanks for products







Data Feed Manager

In order to use Facebook Product Feed to sell on Facebook, you should be aware of what Commerce Manager is and how it works.
Here is some basic knowledge about Facebook and data feed management.
Commerce Manager is the Facebook tool that allows sellers to sell on this platform, add inventory, manage orders...
With Commerce Manager, businesses can sell products on Instagram, Facebook Marketplace, and Facebook Page Shops.
In order to submit your products to Facebook and Instagram, you need to set up a Commerce Account for your business.
Click on the following link to create your Commerce Manager account: https://www.facebook.com/commerce_manager/get_started/
Once your account is created, you'll have access to the Commerce Manager interface where you can manage all your product data feeds and plan any daily, weekly, or monthly updating tasks.
A data feed is a file made up of a unique group of attributes that define each one of your products. This allows customers to search and find your items more easily. This file is similar to an RSS data feed but includes some specific XML tags used by Facebook or any other shopping engine.
To know more about the product data feeds, feel free to have a look at the Facebook support site: https://www.facebook.com/business/help/1898524300466211?id=725943027795860
Facebook Product Feed for Magento 2 allows you to quickly configure, generate, and automate several product data feeds for Facebook.
Before being able to configure your data feeds, you should configure the extension in a general way. To do so, go to:
Stores › Settings › Configuration › Wyomind › Facebook Product Feed

Product Url = http://mywebsite.com/t-shirt.html
Shortest category url = http://www.mywebsite.com/men/shirts/t-shirt.html
Longest category url = http://mywebsite.com/men/new-arrivals/t-shirt.html
To create and configure your data feeds, go to:
Catalog › Facebook Product Feed › Feeds
The grid lists all your data feeds and displays additional information:
Success: successful generation of the data feed, manually or automatically (the generation corresponds with a schedule)
Hold: in the process of generation (latency, indeterminate status)
Processing: generation progression percentage
Error: the generation is stopped
Edit
Generate
Preview (10 items)
Delete

Click on Create new data feed to configure your data feed as you want.
When creating a data feed, you should see a black box on the right of your screen. The Facebook Product Feed extension includes that tool to help you configure your feed and see what is wrong.
The toolbox is inevitably a very useful tool. This will help you to configure your data feed more quickly.
Below are the different options for the toolbox.


You can get reports on the errors and warnings of your data feeds.

Errors and warnings will be displayed differently:
Missing recommended attribute: brand
Missing required attribute: fb_product_category
Next to these errors or warnings, you should see the number of items that are concerned.
By default, the reports will give the 10 first examples (SKU) that are concerned with each error and warning. You can change that by editing the Items in preview in:
Stores › Settings › Configuration › Wyomind › Facebook Product Feed › Core Settings
In that first tab is the main configuration of the data feed. To customize your feed, you'll find several fields to fill in.
Facebook feed
FacebookShopping_basics.xml
/feeds/
Default Store View
http://www.example.com
Full data feed for Facebook
Main feed for Facebook.

You can filter your categories according to two different ways:
You are able to include or exclude your categories depending on:

For example, if you wish to include only products of the Gear category, you can check the Include option that will allow you to include all categories that you have selected.

You can also check the Exclude option that will exclude all categories that you have selected.

In that subtab, you can select and map your categories to Facebook ones. This step is very important so that Facebook can make a link between their product categories and yours.
The Facebook product taxonomy is a tree of categories that will help you generate values for the Facebook product category attribute listing all possibilities.
Categories names you are using in your Magento aren't always the same as the ones used by Facebook to reference your products.
This means you have to find out which Facebook categories have the best matching with yours, according to the Facebook product taxonomy.
Facebook Product Feed provides you with an easy way to input Facebook product categories that are matching yours.
In your data feed configuration, go to the Categories tab. Then, in the Category selection and mapping section, you'll find a tree view of all your categories.
First, select the Facebook Taxonomy source on which the category mapping is based.

For each category, you have a little arrow followed by mapped as.

There, you'll be able to start typing a keyword in order to display a list of all categories including that keyword. You simply need to select the one you need.

Once all your categories are mapped, you can click on the Save button.
Here are a few guidelines for choosing the most appropriate category:
Finally, so that the Facebook category is retrieved in your data feed, you must add the following attribute to the XML template:
<g:fb_product_category>{{product.fb_product_category}}</g:fb_product_category>
With Facebook Product Feed, you have the possibility to change the file on which the category mapping is based.
From that page, choose the language you want to use from the Facebook product categories by language section. Then, click on the Plain Text link that contains full category names.

Paste that file in:
Magento 2 Root Directory › app › code › WyominD › Facebook Product Feed › data › Facebook › Taxonomies
You'll then be able to choose that specific taxonomy from your data feed configuration.
Facebook Product Feed for Magento 2 also allows you to filter your products on several levels according to their attribute sets or their visibility for example.
Include simple products only.

Include all attribute sets.

Include all products.

Include only products with a price higher than 0, and an SKU that is not null.

Here again, you have the possibility to configure your advanced filters according to several options.
a name like %shirt: will include all products which name ends with 'shirt'.
name like Apple%: will include all products which name starts with 'Apple'.
name like %women%: will include all products which name contains the 'women' character string.
name not like %shirt: won't include any product which name ends with 'shirt'.
name not like Apple%: won't include any product which name starts with 'Apple'.
name not like %women%: won't include any product which name contains the 'women' character string.
Special price is null: will include all products that don't have special prices.
SKU is not null: will include all products which SKU is not null.
Size in S L: will include only products from these 2 sizes.
Size not in S L: will include all products which size is not S or L.
Facebook Product Feed for Magento 2 provides you with a fully configurable schedule in the Cron Schedule tab of each data feed pattern configuration.
You just have to tick the days and hours when you want your data feed to be generated.

Use the Note field to add any information you find useful. This is an internal note.

In the Action History tab, you can find a history of your previous generations and configurations.

You'll find:


Facebook Product Feed allows you to generate the data feeds manually or automatically.
You can generate your data feeds manually from the action dropdown of the data feeds grid.

You also have the possibility to do it from the data feed configuration panel by clicking on Generate.

In order to automatically generate the data feeds through the cron tasks, you must first make sure that the main cron task is enabled on your server.

If not, you should see a warning message in Facebook Product Feed.

Then, you need to select a least one day and one-time frame from the Cron schedule tab for each data feed that must be updated.
You can easily use the Command Line Interface to generate the data feeds.
To generate all the data feeds:
bin/magento wyomind:facebookproductfeed:generate
To generate one data feed from a given id:
bin/magento wyomind:facebookproductfeed:generate int DATA_FEED_ID
To generate several data feeds from a given list of ids:
bin/magento wyomind:facebookproductfeed:generate int DATA_FEED_ID [, int DATA_FEED_ID] [, int DATA_FEED_ID]...
To list all data feeds including status, name, last update:
bin/magento wyomind:facebookproductfeed:list
When a data feed is ready to be downloaded, the link is displayed in both, the data feed grid and the data feed page at the top of the page. To download the data feed, select Save link as after a right-click on the link. You should also find the file in your ftp client if the directory where the data feed is stored is not publicly accessible.

<g:id>123456</g:id>
<price>45.99 USD</price>
<g:id>{{product.sku}}</g:id>
<g:brand>Fixed Brand</g:brand>
<g:id>{{product.sku}}</g:id>
<price>{{parent.price}}</price>
<g:brand>YOUR BRAND</g:brand>
<title>{{parent.name}}, available in {{product.color}} for only ${{product.price}}</title>
<price>{{product.price currency=EUR vat_rate=20}}</price>
<tag>{{product.name output="wyomind_strtolower($self)"}}</tag>

{{product.color | product.colour}}
<description>
<![CDATA[<p>Fantastic <b>Watch</b>, that not only tells you what time it is,but also gives the weather trends</p>]]>
</description>
To modify your pattern as you want, before anything you need to respect a particular syntax. Indeed, in order to retrieve attributes, the Facebook Product Feed extension uses a specific structure. Then it is essential that you know how the variable is built to be able to configure your data feed according to your needs.

The above screen details the different components of a variable.
The data feed pattern is totally customizable.
In order to retrieve the value of an attribute, you need to define which object is targeted. Below are the different types of objects that you can use.
Retrieves the attribute for the product.
For example:
{{product.sku}}
{{product.color}}
Retrieves the parent attribute value.
The parent value is retrieved only if the simple (item) product is associated with a parent product, if not, nothing is retrieved.
The parent product may be a configurable, a grouped or a bundle product. The first parent product that matches the simple product is used to get the attribute value.
For example:
{{parent.product_type}}
{{parent.brand}}
Retrieves the first configurable parent attribute value.
The configurable product value is retrieved only if the simple product is associated with a configurable product, if not, nothing is retrieved.
For example:
{{configurable.image_link}}
{{configurable.url}}
Retrieves the first grouped parent attribute value.
The grouped product value is retrieved only if the simple product is associated with a grouped product, if not, nothing is retrieved.
For example:
{{grouped.fb_product_category}}
{{grouped.url}}
Retrieves the first bundle parent attribute value.
The bundle product value is retrieved only if the simple product is associated with a bundle product, if not, nothing is retrieved.
For example:
{{bundle.sale_price}}
{{bundle.price}}
You'll find below the attributes most commonly used to identify the products in data feeds patterns.
Retrieves the SKU of the product.
For example:
{{product.sku}}
Retrieves the brand of the product.
For example:
{{product.brand}}
Retrieves the brand of the product.
For example:
{{product.manufacturer}}
You'll find below the attributes that are generally used to define basic information of products in the data feeds.
Retrieves the name of the product.
For example:
{{product.name}}
Retrieves the description of the product.
For example:
{{product.description}}
Retrieves the short description of the product.
For example:
{{product.short_description}}
Retrieves the condition of the product.
For example:
{{product.condition}}
Retrieves the weight of the product.
For example:
{{product.weight}}
Below is a list of the price attributes that you can use in your feed pattern. For most of them, you can add some parameters in order to define the currency used or the VAT to apply for example.
Retrieves the best price among all the prices defined.
If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.
For example:
{{product.price}}
You also have the possibility to use some parameters with this attribute:
Here are some examples:
To convert the prices to EUR and apply a 20% VAT rate:
{{product.price currency=EUR vat_rate=20}}
To convert the prices to USD and not apply any VAT rate:
{{product.price currency=USD vat_rate=0}}
If the prices of your catalog are already including VAT:
{{product.price currency=USD}}
To use an ISO2 code corresponding to one of the countries for which you specified a VAT rate in your tax settings:
{{product.price currency=EUR vat_rate=FR}}
This code may also be completed by an area code:
{{product.price currency=USD vat_rate=US/NY}}
To deduce the VAT corresponding to a country/area:
{{product.price currency=GBP vat_rate=-GB}}
To retrieve prices including different price values for simple products associated to a configurable one:
{{parent.price currency=EUR vat_rate=20}}
Retrieves the base price and ignores any other existing price value.
For example:
{{product.normal_price}}
Retrieves the special price if exists. If this price doesn't exist the value is null.
For example:
{{product.special_price}}
Retrieves the price including the catalog price rules if indicated, if not, nothing is retrieved.
If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.
For example:
{{product.price_rules}}
Retrieves the best promotional between price rules and special prices).
For example:
{{product.sale_price}}
Retrieves the sale price effective date as:
2011-03-01T13:00-0800/2011-03-11T15:30-0800
If no date is defined or if the dates defined don't match with the current date, the value is null.
For example:
{{product.sale_price_effective_date}}
Retrieves either 1 if a special price exists or 0 if not.
You also have the possibility to use some parameters with this attribute:
For example:
{{product.has_special_price yes="Special price" no="No special price"}}
Retrieves either 1 if a promotional price exists or 0 if not.
You also have the possibility to use some parameters with this attribute:
For example:
{{product.has_sale_price yes="Sale price" no="No sale price"}}
Retrieves the minimum price.
This attribute is used for configurable, bundle, or grouped products.
If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.
For example:
{{product.min_price}}
Retrieves the maximum price.
This attribute is used for configurable, bundle, or grouped products.
If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.
For example:
{{product.max_price}}
Below are listed the attributes that are generally used to retrieve any kind of link.
Retrieves URL to pre-select the simple product attributes from its configurable.
For example:
{{product.url_config}}
Retrieves the product’s canonical absolute URL.
For example:
{{product.url}}
Retrieves the product’s main image.
You also have the possibility to use some parameters with this attribute:
For example:
{{product.image_link index=2}}
Retrieves the host url, for example https://www.website.com.
Example with the small_image attribute:
{{product.host}}/media/catalog/{{product.small_image}}
Retrieves the product canonical relative url.
For example:
https://www.mywebsite.com/mystore_code/{{product.uri}}
To retrieve the categories of your products, you can check the below attributes.
Display the category paths in which the product may be found.
All category paths are listed under the categories attribute from the shortest to the longest path as in the below example:
In order to display a specific category path you have the possibility to use some parameters with this attribute:

For example:
{{product.categories nth="1"}}
Shows the first category path : Default Category
{{product.categories nth="-1"}}
Shows the last category path: Default Category › Sales › Spring and Summer Sales
{{product.categories nth="3" separator="-"}}
Shows the 3th category path and change the category levels separator to "-": DEFAULT CATEGORY - CLOTHES
{{product.categories nth="-2"}}
Shows the before last category path: Default CategorY › Clothes › Men › Pants
{{product.categories nth="-2" from="2"}}
Shows the before last category path from the 2nd category level: Clothes › Men › Pants
{{product.categories nth="-1" from="-1"}}
Shows the last category path from the last category level: Spring and Summer Sales
{{product.categories nth="-2" from="2" length="1"}}
Shows the before last category path from the 2nd category level with only one category level: Clothes
Retrieves any new category that you have assigned (in the Categories tab) to the item’s own product category. If no mapping is assigned to the first category found, the second category will be used etc…
You also have the possibility to use some parameters with this attribute:
For example:
{{product.category_mapping index=0}}
{{product.category_mapping index=1}}
{{product.category_mapping index=2}}
{{product.category_mapping index=3}}
{{product.category_mapping index=4}}
This will retrieve a maximum of 5 category mappings in 5 separate tags.
Retrieves the Facebook category that you have assigned (in the Categories section) to the first category found for the product (index 0).
For example:
{{product.fb_product_category}}
The below attributes are often used to retrieve the availability of your products, for example, the quantity.
Retrieves the available quantity.
The quantity retrieved for configurable products is based on the sum of simple products.
You also have the possibility to use some parameters with this attribute:
For example:
{{product.qty float=2}}
Retrieves either "in stock" if the product is in stock, "out of stock" if the product is out of stock, or "available for order" if the product is backorderable.
You also have the possibility to use some parameters with this attribute:
For example:
{{product.availability in_stock="In Stock" out_of_stock="No more Stock" backorderable="Can be ordered"}}
Retrieves either "in stock" if the product is in stock, "out of stock" if the product is out of stock.
You also have the possibility to use some parameters with this attribute:
For example:
{{product.is_in_stock in_stock="In Stock" out_of_stock="No more Stock"}}
In the case where you're using product variations (color, size or gender) then you can use the following attributes. Attention, these attributes are examples and can differ according to the configuration of your Magento 2 store.
Retrieves the gender of the product.
For example:
{{product.gender}}
Retrieves the age group of the product.
For example:
{{product.age_group}}
Retrieves the color of the product.
For example:
{{product.color}}
Retrieves the size of the product.
For example:
{{product.size}}
Retrieves the material of the product.
For example:
{{product.material}}
Retrieves the pattern of the product.
For example:
{{product.pattern}}
Below are listed all the parameters that you can use with any attribute in your data feeds.
The prefix is what will be displayed before the attribute value only if it is not null, otherwise, nothing is retrieved.
Below are some examples:
To add the currency symbol before the price and not retrieve anything when the value of the attribute is null:
{{product.price currency=USD vat_rate=0 prefix="$"}}
To add the weight unit before the attribute value and not retrieve anything when that value is null:
{{product.weight prefix="LBS "}}
The suffix is what will be displayed after the attribute value only if it is not null, otherwise, nothing is retrieved.
Below are some examples:
To add the currency code after the price and not retrieve anything when the value of the attribute is null:
{{product.price currency=USD vat_rate=0 suffix=" USD"}}
To add the weight unit after the attribute value and not retrieve anything when that value is null:
{{product.weight suffix=" LBS"}}
The as parameter allows you to store the value of a given attribute into a variable for a later use in one of your PHP script or in a condition (see if parameter).
Notice, the attribute call even if it uses the as parameter will produce an output in the data feed expect if you add the output attribute with the value null (see output parameter)
Here are a few examples:
Display the product name and store the value in a variable $name:
<!-- Product name is displayed and stored under a new variable "name" -->
<name>{{product.name as="name"}}</name>
$name can be then used in a PHP script latter in the template
<?php
/* If variable $name is equal to "Apple", then display "Apple" then display "Banana"
*/
if($name=="Apple") return $name;else return "Banana";
?>
Store the visibility of a product and use it in a condition for another attribute
<!-- Product visibility is stored under a new variable "visibility" and the attribute doesn't display -->
{{product.visibility as="visibility" output="null"}}
<!-- If the product is not visible individually (1) then we display the parent product url, otherwise we use the product url-->
<url>{{parent.url if="visibility==1" | product.url}}</url>
The if parameter allows you to define one or more necessary conditions to display the given attribute in the data feed.
One condition is built with 3 items :
Example:
<!-- Product description will be displayed only if product brand is equal to "Apple" -->
<name>{{product.description if="product.brand==Apple"}}</name>
<!-- Product weight will be displayed only if the product is not virtual AND not downloadable-->
<weight>{{product.weight if="product.type_id!=virtual" if="product.type_id!=downloadable"}}</weight>
The output parameter allows you to define the output format for a given attribute.
You can use the basic functions (see basic functions), the advanced functions (see advanced functions), or any PHP functions.
You must refer to the attribute by using the $self variable as the function's parameter.
Example :
<!-- Get the product name with the first letter of each word in uppercase -->
<name>{{product.name output="ucwords($self)"}}</name>
If you want to use several functions, those must be imbricated as you do with PHP:
Example :
<!-- Remove all html tags from the description and limit the description to the first 100 characters -->
<name>{{product.description output="substr(strip_tags($self),0,100)"}}</name>
You can also use null to display an empty string or you can use any string to display a specific message:
Example :
<!-- If product price is lower than $10 then display "Free Shipping"-->
<shipping_cost>{{product.price if="product.price<10" output="'Free Shipping'"}}</shipping_cost>
The php parameter acts exactly like the output parameter.
You can use any of the native PHP functions, as well as all of the following ones with the default attributes that are defined in your Magento 2 back-office and also any attribute you have defined for your products (eg: name, description, short_description, weight, size, color…) apart from those which generate XML.
The syntax to use in order to include PHP functions in the variables is:
{{object.attribute output=”function(parameters)”}}
You can also apply one or more functions to all of these attributes by using the following syntax:
{{object.attribute output=”function1(function2(function3($self,parameters)))”}}
All options are executed in the written order:
<title>{{product.name}}</title>
<title>{{product.name output="wyomind_strtoupper($self)"}}</title>
<title>{{product.name output="wyomind_strtoupper(wyomind_substr($self,20,'...'))"}}</title>
This will produce:
<title>Affirm Water Bottle</title>
<title>AFFIRM WATER BOTTLE</title>
<title>AFFIRM WATER...</title>
Converts a numeric value to a floating number.
You need to define some parameters:
For example:
<g:shipping_weight> {{product.weight output="float($self,2)"}}kg </g:shipping_weight>
Removes all characters that don't belong to the UTF-8 charset.
For example:
<g:title>{{product.name output="cleaner($self)"}}</g:title>
Removes all EOL characters from the value.
For example:
<description> {{product.description output="inline($self)"}} </description>
The improved functions are used in the same way as the basic PHP functions but offer more possibilities. They are a rewrite of the native PHP functions but have been improved for a specific use of the Facebook Product Feed extension.
Transforms the value to uppercase.
For example:
<g:title>{{product.name output="wyomind_strtoupper($self)"}}</g:title>
Transforms the value to lowercase.
For example:
<tag>{{product.name output="wyomind_strtolower($self)"}}</tag>
Joins all array elements in a string.
You need to define some parameters:
This function may be useful for multi-select attributes like climate, activity general...
For example:
<activity> {{product.activity_general output="wyomind_implode('-',$self)"}} </activity>
Will give: Outdoor-Running-Warmup-Lounge-Gym
Converts all HTML entities to their applicable characters.
For example:
<description> {{product.description output="wyomind_html_entity_decode($self)"}} </description>
Removes all HTML tags.
For example:
<description> {{product.description output="wyomind_strip_tags($self)"}} </description>
Converts all applicable characters to HTML entities.
For example:
<description> {{product.description output="wyomind_htmlentities($self)"}} </description>
Truncates the value.
You need to define some parameters:
For example:
<description> {{product.description output="wyomind_substr($self,50,'...')"}} </description>
If there are HTML tags in your descriptions, you may need to use in combination with this function:
<description> {{product.description output="wyomind_strip_tags(wyomind_substr($self,50,'...'))"}} </description>
Facebook Product Feed allows you to control your data feeds by using replacement rules.
You can create your own rule from:
Catalog › Facebook Product Feed › Replacement Rules
Click on Create new Rule.

You can create your own rule manually.
Fill in a code and add the values you need to replace in the Input column with other values in the Output column.
For example, the below example shows how to replace each "Summer 2019" with "Summer 2021", "Winter 2019" with "Winter 2021", and all the rest with "This season".
Note that you have the possibility to use regular expressions.

You also have the possibility to import a rule set directly from a CSV file.
For that, you must save the replacement rule first.
Then, click on Import a rule set from a CSV file.

Select and Import your CSV file.
The CSV file must be composed of 2 columns, the first one for the values to replace and the second one for the replacement values.
These values must be separated by commas and enclosed by quotation marks.
"Winter 2017","Winter 2021"
"Winter 2018","Winter 2021"
"Winter 2019","Winter 2021"
"Winter 2020","Winter 2021"
"Summer 2017","Summer 2021"
"Summer 2018","Summer 2021"
"Summer 2019","Summer 2021"
"Summer 2020","Summer 2021"
Once the lines have been imported, you receive a notification.

Once your rule is saved, you can use it in your data feed from:
Catalog › Facebook Product Feed › Feeds
For the attribute on which you want to apply the rule, add the following code:
replacement="name of the replacement rule"
For example:
<season>{{product.season replacement="season"}}</season>
If you click on Preview from the blackbox, you should see the replacement rule value applied. Below is an example with and without the replacement rule.

With Facebook Product Feed you can use PHP scripts in different ways to fully customize and control the data feed output.
Those scripts are used with Data Feed Manager only.
The Facebook Product Feed PHP API uses the exact same syntax and standards as any PHP coding.
For performance reasons, Facebook Product Feed only loads in the collection of products the attributes that are explicitly required in the data feed template.
This means that only the attributes that are called using the template placeholders, {{scope.attribute_code}}, will be added to the collection of products.
As a consequence, when you try to access the value of an attribute from the $product object, you must be sure that the attribute has been added to the collection.
Most of the time when the returned value is null for a given attribute, it means the attribute is not loaded in the collection of products.
The best way to be sure that all the attributes you need are well loaded in the collection, is to add at the beginning of your template a simple script that lists all the attributes required.
<?php
/* list of required attributes
* {{product.attribute_1}} {{product.attribute_2}} {{product.attribute_3}} {{product.attribute_4}}...
*/
?>
Then you should be able to get the values of these attributes in your PHP script:
<?php
return $product->getAttribute1();
?>
<?php
return $product->getAttribute2()
;?>
<?php
return $product->getAttribute3();
?>
...
You can use any PHP function to apply in the attribute calls even if the function requires one or more additional arguments, for instance:
{{product.name output="str_replace('Apple','Banana',$self)}}
You can use several consecutive functions:
{{product.ean output="str_pad(str_replace('X','0',$self),10,'0',STR_PAD_LEFT)}}
To output values based on different conditions, use PHP conditional statements:
<?php
/* attribute {{product.sku}} required */
if ($product->getSku()=="abc")
{
return "Alphabetic";
}
elseif($product->getSku()=="123")
{
return "Numeric";
}
else{return "Mixed";
}
?>
<?php
/* attribute {{product.sku}} required
*/
switch($product->getSku()){
case "abc":
return "Alphabetic";
break;
case "123":
return "Numeric";
break;
default:
return "Mixed";}
?>
When using the PHP API inline directly in your data feed template, you must use the opening and closing PHP tags (<? php ... ?>)
<?php
if($product->getData('size')=="X-Large") {return "XL";
}
?>
Return
Any value that you want to output in your data feed, must be returned with the return instruction.
<?php
return "Don't miss! ".$product->getTitle();
?>
/* This script adds for each product in data feed a new ouput line
* Don't miss! Iphone 5
* Don't miss! Galaxy note 7
* ...
*/
All variables available in PHP scripts have a local scope, this means they can't be shared between several scripts.
If you wish to share a variable with different scripts all along the data feed generation process, then the variable must be set as a global variable.
<?php global $increment;$increment++;return $increment;
/* This script will output a incremental $variable* 1* 2* 3* ...*
/?>
$product is an instance of Mage_Catalog_Model_Product. It contains all methods available by default and some other specific to Facebook Product Feed.
The list below includes the main methods available to use:
$this is an instance of Wyomind_facebookproductfeed_Model_Feed.
It provides a few useful methods:
This extension works with Magento Community Edition and also Magento Enterprise Edition. To know if Facebook Product Feed is compatible with your Magento version, please check the Compatibility tab.
Magento offers three variations of its product.
As their names have changed over the past few years, here is a recap:
All countries are supported (tax rates and currencies) by Facebook Product Feed.
You just need to edit the data feed for the targeted country.
You may also have to use the appropriate currency when using prices attributes.
Any currency can be managed in your data feeds.
You can define a different currency for each data feed using currency codes.
This will automatically convert the prices into the indicated currency.
The char encoding of the generated data feed is UTF-8 for Facebook Product Feed. It allows the use of special characters, such as accented letters, but also Arabic and Chinese letters.
If you're using Data Feed Manager, the default char encoding is UTF-8, while no char encoding is specified in the XML header.
Facebook Product Feed has been tested successfully on Magento 2 shops containing more than 70,000 products.
Remember that the generation and export time for any quantity of products will depend on your server capacity. Generally, exporting a data feed with 10,000 products shouldn't take more than 2-3 minutes on a standard shared server.
A license is valid for an unlimited period of time on one single installation
You can pre-register your live domain to your license in advance.
Thanks to this option, you'll be able to get the module ready to use on your domain before it goes live.
To pre-register your production domain:


One license is valid for an unlimited period of time on one installation only. However, it is possible to extend or transfer your license in 2 cases:
To be able to use Facebook Product Feed on both your production and testing environments, follow the instructions below:
In order to download Facebook Product Feed, log into your Wyomind account:
Only the latest extension version released within your Support & Upgrade period is available. In order to get the very latest extension version make sure your Support & Upgrade plan is up to date.
When purchasing a module from wyomind.com, you benefit from 12 months of upgrade. Within this period you can at any time download the latest version of the module directly from your account.
To upgrade Facebook Product Feed, follow the steps below:

You can install Facebook Product Feed manually.
bin/magento setup:upgrade
If you are using a production mode, execute also:
bin/magento setup:static-content:deploy
bin/magento setup:di:compile
You can install Facebook Product Feed using Composer software in two cases:
composer config repositories.wyomind composer https://repo.wyomind.com
composer require wyomind/facebookproductfeed
bin/magento setup:upgrade
bin/magento setup:static-content:deploy
bin/magento setup:di:compile
To uninstall Facebook Product Feed, start with disabling the extension running the following command:
bin/magento module:disable Wyomind_FacebookProductFeed
Then, you have 2 ways to uninstall the extension depending on how the extension has been previously installed:
Run the facebookproductfeed-uninstall.sh file (you can find it in the extension zip folder) from your Magento root directory:
sh facebookproductfeed-uninstall.sh
Run the below command line:
composer remove wyomind/facebookproductfeed
Once the uninstallation is over, refresh your cache and enable the compiler back again (if you use it).
You can install Facebook Product Feed via Web Setup Wizard if you purchased it from Magento Marketplace only.
To know how to proceed, all steps are described in the link below:
http://docs.magento.com/m2/ce/user_guide/system/component-manager.html
Next step is to activate your license:
Extension activation
Once Facebook Product Feed is installed, you have to activate the license. For previous versions, you can activate the license from your back-office:

<?php
return array(
'backend' => array(
'frontName' => 'admin'
),
'crypt' => array(
'key' => '1e8f3c6772b7a6a6689c3c8cefa4ccf0'
),
/* ... */
)
?>





Add another domain to your license
To activate the license on another domain (test, staging...):

Note that the order in which you activate your license on your domains does not matter. You can start with your staging/dev/local environment or with your live domain, the process will be the same.
Also, if you have loads of staging domains, or if you are an agency managing load of domains for your customers, please contact us so that we can automatically whitelist these domains.Once Facebook Product Feed is installed, you have to activate the license.
For this, you can use the below command line (change the Activation key with the corresponding value):
bin/magento wyomind:license:activate Wyomind_FacebookProductFeed <YOUR_ACTIVATION_KEY>
To retrieve the list of all the available modules as well as the licenses status, please use:
bin/magento wyomind:license:status
Among the different status, you can find:
To activate several licenses at the same time, use:
bin/magento wyomind:license:activate \
Wyomind_Extension1,Wyomind_Extension2 \
ACTIVATION_KEY_1,ACTIVATION_KEY_2
or:
bin/magento wyomind:license:activate \
Extension1,Extension2 \
ACTIVATION_KEY_1,ACTIVATION_KEY_2
In the case where you've purchased the professional installation service, our team we will need the below information in order to proceed to the installation of the extension :
Feel free to create a ticket including the above info from your Wyomind account in Support, or contact us via the following form.
So that our team can proceed with the configuration of your data feed, we need you to share the access to your Google Merchant account with us.
As Google Partner, we offer you many possibilities to manage your products on Google. Feel free to check our Google Shopping services for more information about the data feed configuration.
To share your access, go to your Google Merchant account.


So that our team can proceed to the configuration of your data feed, we need you to share the access to your Google Ads account with us.
As Google Partner, we offer you many possibilities to manage your products on Google. Feel free to check our Google Shopping services for more information about the data feed configuration.
To share your access, go to your Google Ads account.



Facebook Product Feed provides you with a fully configurable schedule in the Cron Schedule tab of your pattern configuration for each data feed or profile.

So that it works, you need to have one main scheduled task running from your server side and targeting cron.php located in the pub directory of Magento 2 root directory (ideally every hour).
If the management panel from your hosting compagny doesn't provide such a service, you should be able to use a remote service such as: http://www.mywebcron.com
Facebook Product Feed also provides you with a cron job reporting, so that you can get email reports on each data feed or profile you're generating.

The Google and Facebook product taxonomies are category trees that will help you to generate values for the Google and Facebook product category attributes listing all possibilities.


Paste the file in:
Don't forget to apply the permissions 644 to the file.
You'll then be able to choose that specific taxonomy from your data feed configuration.
You can use the OR operand with all these variables (without option) as in the example below:
{{object.proprietyA | object.proprietyB}}
If object.proprietyA exists then the value will be object.proprietyA, otherwise, the value will be object.proprietyB.
For example:
{{product.url | parent.url}}
There isn't any other operand of that kind.
In Magento 2, configurable products are in fact containers for the simple variant products. Then, their price will depend on the options that the customer has selected.
Unfortunately, as it's not possible to know in advance the choice of the customers, it is recommended to use the minimum or the maximum price in your data feeds. You can use one of the below attributes:
{{product.min_price}}
{{product.max_price}}
To subtract the VAT from your catalog prices, in your pattern, you need to replace:
{{product.price}}
with:
{{product.price currency=USD vat_rate=0}}
Replace USD with your own currency.
If the prices of your catalog are already including the VAT, then you can use:
{{product.price currency=USD}}To apply a custom VAT to your products, you can replace:
{{product.price}}
with:
{{product.price currency=CUR vat_rate=0.00}}
Replace CUR with your own currency and 0.00 with a value between 0 and 100 that represents the VAT.
For example:
{{product.price currency=USD vat_rate=10}}In your data feed, you get https://www.mywebsite.com/product but the correct URL is https://www.mywebsite.com/category/subcategory/product.
To retrieve the URL you want, you can define the options under:
Stores › Settings › Configuration › Wyomind › Facebook Product Feed

You'll be able to choose which URL path to use in Use canonical URLs.
You can choose between 3 options:
For example, if you have a "T-shirt" in 2 categories: "New arrivals" and "Shirts", then depending on your configuration, you'll get different results:
The individual product URL won't include any category or subcategory.
This issue may be due to a problem during the installation process.
You will be able to fix it by following these steps:
Be careful, that entry depends on your extension. For example, if you have the extension called Simple Google Shopping, you should delete Wyomind_SimpleGoogleShopping.
Be sure that you have correctly configured a scheduled task from the server side (cpanel) targeting the cron.php file in your magento 2 installation.


The extension includes reporting and debug tools for the scheduled tasks available in:
Stores › Settings › Configuration › Wyomind › Facebook Product Feed

For more information on the configuration of cron tasks in Magento 2, you can check their documentation.
The directory in which your data feed is stored must be writable (permissions 755). You should try to use another directory such as /media/ if /feeds/ is not properly set by changing the content of the Path field.

You must update the module by downloading and installing the module last version available from your Wyomind.com account.
You may have an incorrect character in your data feed description, for example, the & character.
In that case, you should replace the & character with and or enclose your data between CDATA as in the example below.
If when saving your data feed configuration in Magento 2, you get:
Forbidden, You don't have permission to access /.../ on this server.
This is probably something regarding the hosting company that doesn't allow to post XML in the form.
The mod_security (security module) includes rules that stop all post/get requests including code.
In order to fix that issue, you should get in touch with your hosting company so that they add some exceptions to the security rules.
If the characters of your data feed are not correctly displayed, you should first be sure you used special attributes that will clean your content:
{{product.description php="sgs_strip_tags(sgs_html_entity_decode(inline(cleaner($self))))"}}
If your data feed still doesn't display properly, maybe it's because you're trying to read it as an ISO file while Facebook Product Feed creates UTF-8 encoded files.
We recommend you read it with dedicated programs like Notepad++ or Firefox (with Display › Encoding type › utf8 selected).
You must apply the permissions 644 to app/code/Wyomind/FacebookProductFeed/data/Facebook directory and all sub folders and files via FTP.

cahcnhiet3m
I'm trying, thanks for products
How merchants put Facebook Product Feed to work, step by step.
Initial release for the master version
Initial release for the legacy version
First public release
Specific needs or any ideas of enhancements and new features to add to the extension? Tell us more, we'll get back to you shortly!