Version Description
- 2022-08-09 =
- Fix - Ensure product is deleted from FB when moved to trash.
- Fix - Price not updating when the sale price is removed.
Download this release
Release Info
Developer | automattic |
Plugin | Facebook for WooCommerce |
Version | 2.6.20 |
Comparing to | |
See all releases |
Code changes from version 2.6.19 to 2.6.20
- changelog.txt +4 -0
- facebook-commerce.php +44 -5
- facebook-for-woocommerce.php +2 -2
- i18n/languages/facebook-for-woocommerce.pot +17 -17
- includes/fbproduct.php +17 -17
- readme.txt +5 -1
- vendor/autoload.php +1 -6
- vendor/composer/ClassLoader.php +1 -1
- vendor/composer/InstalledVersions.php +5 -20
- vendor/composer/autoload_classmap.php +1 -1
- vendor/composer/autoload_namespaces.php +1 -1
- vendor/composer/autoload_psr4.php +1 -1
- vendor/composer/autoload_real.php +26 -7
- vendor/composer/autoload_static.php +4 -4
- vendor/composer/installed.php +10 -10
changelog.txt
CHANGED
@@ -1,5 +1,9 @@
|
|
1 |
*** Facebook for WooCommerce Changelog ***
|
2 |
|
|
|
|
|
|
|
|
|
3 |
= 2.6.19 - 2022-07-27 =
|
4 |
* Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
|
5 |
* Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
|
1 |
*** Facebook for WooCommerce Changelog ***
|
2 |
|
3 |
+
2022-08-09 - version 2.6.20
|
4 |
+
* Fix - Ensure product is deleted from FB when moved to trash.
|
5 |
+
* Fix - Price not updating when the sale price is removed.
|
6 |
+
|
7 |
= 2.6.19 - 2022-07-27 =
|
8 |
* Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
|
9 |
* Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
|
facebook-commerce.php
CHANGED
@@ -360,6 +360,9 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
|
|
360 |
|
361 |
add_action( 'before_delete_post', array( $this, 'on_product_delete' ) );
|
362 |
|
|
|
|
|
|
|
363 |
add_action( 'add_meta_boxes', 'SkyVerge\WooCommerce\Facebook\Admin\Product_Sync_Meta_Box::register', 10, 1 );
|
364 |
|
365 |
add_action(
|
@@ -420,6 +423,8 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
|
|
420 |
3
|
421 |
);
|
422 |
|
|
|
|
|
423 |
// Product Set hooks.
|
424 |
add_action( 'fb_wc_product_set_sync', array( $this, 'create_or_update_product_set_item' ), 99, 2 );
|
425 |
add_action( 'fb_wc_product_set_delete', array( $this, 'delete_product_set_item' ), 99 );
|
@@ -1001,12 +1006,14 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
|
|
1001 |
}
|
1002 |
|
1003 |
/**
|
1004 |
-
*
|
|
|
|
|
1005 |
*
|
1006 |
* @see ajax_delete_fb_product()
|
1007 |
*/
|
1008 |
if ( ( ! wp_doing_ajax() || ! isset( $_POST['action'] ) || 'ajax_delete_fb_product' !== $_POST['action'] )
|
1009 |
-
&& ! Products::published_product_should_be_synced( $product ) ) {
|
1010 |
|
1011 |
return;
|
1012 |
}
|
@@ -1062,6 +1069,7 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
|
|
1062 |
// clear out both item and group IDs
|
1063 |
delete_post_meta( $product_id, self::FB_PRODUCT_ITEM_ID );
|
1064 |
delete_post_meta( $product_id, self::FB_PRODUCT_GROUP_ID );
|
|
|
1065 |
}
|
1066 |
|
1067 |
|
@@ -1084,8 +1092,6 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
|
|
1084 |
return;
|
1085 |
}
|
1086 |
|
1087 |
-
$visibility = $new_status === 'publish' ? self::FB_SHOP_PRODUCT_VISIBLE : self::FB_SHOP_PRODUCT_HIDDEN;
|
1088 |
-
|
1089 |
$product = wc_get_product( $post->ID );
|
1090 |
|
1091 |
// bail if we couldn't retrieve a valid product object or the product isn't enabled for sync
|
@@ -1094,17 +1100,50 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
|
|
1094 |
// variations before it gets called with the variable product. As a result, Products::product_should_be_synced()
|
1095 |
// always returns false for the variable product (since all children are in the trash at that point).
|
1096 |
// This causes update_fb_visibility() to be called on simple products and product variations only.
|
1097 |
-
if ( ! $product instanceof \WC_Product || ! Products::published_product_should_be_synced( $product ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
1098 |
return;
|
1099 |
}
|
1100 |
|
|
|
|
|
1101 |
if ( $visibility === self::FB_SHOP_PRODUCT_VISIBLE ) {
|
1102 |
// - new status is 'publish' regardless of old status, sync to Facebook
|
1103 |
$this->on_product_publish( $product->get_id() );
|
1104 |
} else {
|
1105 |
$this->update_fb_visibility( $product, $visibility );
|
1106 |
}
|
|
|
1107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1108 |
}
|
1109 |
|
1110 |
|
360 |
|
361 |
add_action( 'before_delete_post', array( $this, 'on_product_delete' ) );
|
362 |
|
363 |
+
// Ensure product is deleted from FB when moved to trash.
|
364 |
+
add_action( 'wp_trash_post', array( $this, 'on_product_delete' ) );
|
365 |
+
|
366 |
add_action( 'add_meta_boxes', 'SkyVerge\WooCommerce\Facebook\Admin\Product_Sync_Meta_Box::register', 10, 1 );
|
367 |
|
368 |
add_action(
|
423 |
3
|
424 |
);
|
425 |
|
426 |
+
add_action( 'untrashed_post', array( $this, 'fb_restore_untrashed_variable_product' ) );
|
427 |
+
|
428 |
// Product Set hooks.
|
429 |
add_action( 'fb_wc_product_set_sync', array( $this, 'create_or_update_product_set_item' ), 99, 2 );
|
430 |
add_action( 'fb_wc_product_set_delete', array( $this, 'delete_product_set_item' ), 99 );
|
1006 |
}
|
1007 |
|
1008 |
/**
|
1009 |
+
* Bail if not enabled for sync, except if explicitly deleting from the metabox or when deleting the
|
1010 |
+
* parent product ( Products::published_product_should_be_synced( $product ) will fail for the parent product
|
1011 |
+
* when deleting a variable product. This causes the fb_group_id to remain on the DB. )
|
1012 |
*
|
1013 |
* @see ajax_delete_fb_product()
|
1014 |
*/
|
1015 |
if ( ( ! wp_doing_ajax() || ! isset( $_POST['action'] ) || 'ajax_delete_fb_product' !== $_POST['action'] )
|
1016 |
+
&& ! Products::published_product_should_be_synced( $product ) && ! $product->is_type( 'variable' ) ) {
|
1017 |
|
1018 |
return;
|
1019 |
}
|
1069 |
// clear out both item and group IDs
|
1070 |
delete_post_meta( $product_id, self::FB_PRODUCT_ITEM_ID );
|
1071 |
delete_post_meta( $product_id, self::FB_PRODUCT_GROUP_ID );
|
1072 |
+
|
1073 |
}
|
1074 |
|
1075 |
|
1092 |
return;
|
1093 |
}
|
1094 |
|
|
|
|
|
1095 |
$product = wc_get_product( $post->ID );
|
1096 |
|
1097 |
// bail if we couldn't retrieve a valid product object or the product isn't enabled for sync
|
1100 |
// variations before it gets called with the variable product. As a result, Products::product_should_be_synced()
|
1101 |
// always returns false for the variable product (since all children are in the trash at that point).
|
1102 |
// This causes update_fb_visibility() to be called on simple products and product variations only.
|
1103 |
+
if ( ! $product instanceof \WC_Product || ( ! Products::published_product_should_be_synced( $product ) ) ) {
|
1104 |
+
return;
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
// Exclude variants. Product variables visibility is handled separately.
|
1108 |
+
// @See fb_restore_untrashed_variable_product.
|
1109 |
+
if ( $product->is_type( 'variant' ) ) {
|
1110 |
return;
|
1111 |
}
|
1112 |
|
1113 |
+
$visibility = $product->is_visible() ? self::FB_SHOP_PRODUCT_VISIBLE : self::FB_SHOP_PRODUCT_HIDDEN;
|
1114 |
+
|
1115 |
if ( $visibility === self::FB_SHOP_PRODUCT_VISIBLE ) {
|
1116 |
// - new status is 'publish' regardless of old status, sync to Facebook
|
1117 |
$this->on_product_publish( $product->get_id() );
|
1118 |
} else {
|
1119 |
$this->update_fb_visibility( $product, $visibility );
|
1120 |
}
|
1121 |
+
}
|
1122 |
|
1123 |
+
/**
|
1124 |
+
* Re-publish restored variable product.
|
1125 |
+
*
|
1126 |
+
* @internal
|
1127 |
+
*
|
1128 |
+
* @param int $post_id
|
1129 |
+
*/
|
1130 |
+
public function fb_restore_untrashed_variable_product ( $post_id ) {
|
1131 |
+
$product = wc_get_product( $post_id );
|
1132 |
+
|
1133 |
+
if ( ! $product instanceof \WC_Product ) {
|
1134 |
+
return;
|
1135 |
+
}
|
1136 |
+
|
1137 |
+
if ( ! $product->is_type( 'variable' ) ) {
|
1138 |
+
return;
|
1139 |
+
}
|
1140 |
+
|
1141 |
+
$visibility = $product->is_visible() ? self::FB_SHOP_PRODUCT_VISIBLE : self::FB_SHOP_PRODUCT_HIDDEN;
|
1142 |
+
|
1143 |
+
if ( $visibility === self::FB_SHOP_PRODUCT_VISIBLE ) {
|
1144 |
+
// - new status is 'publish' regardless of old status, sync to Facebook
|
1145 |
+
$this->on_product_publish( $product->get_id() );
|
1146 |
+
}
|
1147 |
}
|
1148 |
|
1149 |
|
facebook-for-woocommerce.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
* Description: Grow your business on Facebook! Use this official plugin to help sell more of your products using Facebook. After completing the setup, you'll be ready to create ads that promote your products and you can also create a shop section on your Page where customers can browse your products on Facebook.
|
12 |
* Author: Facebook
|
13 |
* Author URI: https://www.facebook.com/
|
14 |
-
* Version: 2.6.
|
15 |
* Text Domain: facebook-for-woocommerce
|
16 |
* Tested up to: 6.0
|
17 |
* WC requires at least: 3.5.0
|
@@ -33,7 +33,7 @@ class WC_Facebook_Loader {
|
|
33 |
/**
|
34 |
* @var string the plugin version. This must be in the main plugin file to be automatically bumped by Woorelease.
|
35 |
*/
|
36 |
-
const PLUGIN_VERSION = '2.6.
|
37 |
|
38 |
// Minimum PHP version required by this plugin.
|
39 |
const MINIMUM_PHP_VERSION = '7.0.0';
|
11 |
* Description: Grow your business on Facebook! Use this official plugin to help sell more of your products using Facebook. After completing the setup, you'll be ready to create ads that promote your products and you can also create a shop section on your Page where customers can browse your products on Facebook.
|
12 |
* Author: Facebook
|
13 |
* Author URI: https://www.facebook.com/
|
14 |
+
* Version: 2.6.20
|
15 |
* Text Domain: facebook-for-woocommerce
|
16 |
* Tested up to: 6.0
|
17 |
* WC requires at least: 3.5.0
|
33 |
/**
|
34 |
* @var string the plugin version. This must be in the main plugin file to be automatically bumped by Woorelease.
|
35 |
*/
|
36 |
+
const PLUGIN_VERSION = '2.6.20'; // WRCS: DEFINED_VERSION.
|
37 |
|
38 |
// Minimum PHP version required by this plugin.
|
39 |
const MINIMUM_PHP_VERSION = '7.0.0';
|
i18n/languages/facebook-for-woocommerce.pot
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
# This file is distributed under the same license as the Facebook for WooCommerce package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Facebook for WooCommerce 2.6.
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://woocommerce.com/my-account/marketplace-ticket-form/\n"
|
8 |
-
"POT-Creation-Date: 2022-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -111,45 +111,45 @@ msgstr ""
|
|
111 |
msgid "Facebook Commerce and Dynamic Ads (Pixel) Extension"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: facebook-commerce.php:
|
115 |
msgid "Nothing to update for product group for %1$s"
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: facebook-commerce.php:
|
119 |
#. translators: Placeholders %1$s - original error message from Facebook API
|
120 |
msgid "There was an issue connecting to the Facebook API: %1$s"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: facebook-commerce.php:
|
124 |
msgid "Your connection has expired."
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: facebook-commerce.php:
|
128 |
msgid ""
|
129 |
"Please click Manage connection > Advanced Options > Update Token to refresh "
|
130 |
"your connection to Facebook."
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: facebook-commerce.php:
|
134 |
#. translators: Placeholders %s - error message
|
135 |
msgid "There was an error trying to sync the products to Facebook. %s"
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: facebook-commerce.php:
|
139 |
msgid "Product sync is disabled."
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: facebook-commerce.php:
|
143 |
msgid "The plugin is not configured or the Catalog ID is missing."
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: facebook-commerce.php:
|
147 |
msgid ""
|
148 |
"A product sync is in progress. Please wait until the sync finishes before "
|
149 |
"starting a new one."
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: facebook-commerce.php:
|
153 |
msgid ""
|
154 |
"We've detected that your Facebook Product Catalog is no longer valid. This "
|
155 |
"may happen if it was deleted, but could also be a temporary error. If the "
|
@@ -157,29 +157,29 @@ msgid ""
|
|
157 |
"and setup the plugin again."
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: facebook-commerce.php:
|
161 |
msgid "Hi! We're here to answer any questions you may have."
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: facebook-commerce.php:
|
165 |
msgid "Facebook for WooCommerce error:"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: facebook-commerce.php:
|
169 |
msgid ""
|
170 |
"There was an error trying to retrieve information about the Facebook page: "
|
171 |
"%s"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: facebook-commerce.php:
|
175 |
msgid "Get started with Messenger Customer Chat"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: facebook-commerce.php:
|
179 |
msgid "Get started with Instagram Shopping"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: facebook-commerce.php:
|
183 |
#. translators: Placeholders %1$s - original error message from Facebook API
|
184 |
msgid "There was an issue connecting to the Facebook API: %s"
|
185 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Facebook for WooCommerce package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Facebook for WooCommerce 2.6.20\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://woocommerce.com/my-account/marketplace-ticket-form/\n"
|
8 |
+
"POT-Creation-Date: 2022-08-09 07:32:02+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
111 |
msgid "Facebook Commerce and Dynamic Ads (Pixel) Extension"
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: facebook-commerce.php:1472
|
115 |
msgid "Nothing to update for product group for %1$s"
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: facebook-commerce.php:1885
|
119 |
#. translators: Placeholders %1$s - original error message from Facebook API
|
120 |
msgid "There was an issue connecting to the Facebook API: %1$s"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: facebook-commerce.php:2210
|
124 |
msgid "Your connection has expired."
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: facebook-commerce.php:2210
|
128 |
msgid ""
|
129 |
"Please click Manage connection > Advanced Options > Update Token to refresh "
|
130 |
"your connection to Facebook."
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: facebook-commerce.php:2217
|
134 |
#. translators: Placeholders %s - error message
|
135 |
msgid "There was an error trying to sync the products to Facebook. %s"
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: facebook-commerce.php:2240
|
139 |
msgid "Product sync is disabled."
|
140 |
msgstr ""
|
141 |
|
142 |
+
#: facebook-commerce.php:2247
|
143 |
msgid "The plugin is not configured or the Catalog ID is missing."
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: facebook-commerce.php:2270
|
147 |
msgid ""
|
148 |
"A product sync is in progress. Please wait until the sync finishes before "
|
149 |
"starting a new one."
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: facebook-commerce.php:2282
|
153 |
msgid ""
|
154 |
"We've detected that your Facebook Product Catalog is no longer valid. This "
|
155 |
"may happen if it was deleted, but could also be a temporary error. If the "
|
157 |
"and setup the plugin again."
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: facebook-commerce.php:2811
|
161 |
msgid "Hi! We're here to answer any questions you may have."
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: facebook-commerce.php:3201
|
165 |
msgid "Facebook for WooCommerce error:"
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: facebook-commerce.php:3283
|
169 |
msgid ""
|
170 |
"There was an error trying to retrieve information about the Facebook page: "
|
171 |
"%s"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: facebook-commerce.php:3334
|
175 |
msgid "Get started with Messenger Customer Chat"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: facebook-commerce.php:3335
|
179 |
msgid "Get started with Instagram Shopping"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: facebook-commerce.php:3570
|
183 |
#. translators: Placeholders %1$s - original error message from Facebook API
|
184 |
msgid "There was an issue connecting to the Facebook API: %s"
|
185 |
msgstr ""
|
includes/fbproduct.php
CHANGED
@@ -363,33 +363,33 @@ if ( ! class_exists( 'WC_Facebook_Product' ) ) :
|
|
363 |
public function add_sale_price( $product_data, $for_items_batch = false ) {
|
364 |
|
365 |
$sale_price = $this->woo_product->get_sale_price();
|
366 |
-
|
367 |
-
// check if sale exist
|
368 |
-
if ( ! is_numeric( $sale_price ) ) {
|
369 |
-
return $product_data;
|
370 |
-
}
|
371 |
-
|
372 |
-
$sale_price =
|
373 |
-
intval( round( $this->get_price_plus_tax( $sale_price ) * 100 ) );
|
374 |
|
375 |
$sale_start =
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
|
380 |
$sale_end =
|
381 |
-
|
382 |
-
|
383 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
384 |
|
385 |
// check if sale is expired and sale time range is valid
|
386 |
if ( $for_items_batch ) {
|
387 |
-
$product_data['sale_price_effective_date'] = $
|
388 |
-
$product_data['sale_price'] = self::format_price_for_fb_items_batch( $sale_price );
|
389 |
} else {
|
390 |
$product_data['sale_price_start_date'] = $sale_start;
|
391 |
$product_data['sale_price_end_date'] = $sale_end;
|
392 |
-
$product_data['sale_price'] = $sale_price;
|
393 |
}
|
394 |
|
395 |
return $product_data;
|
363 |
public function add_sale_price( $product_data, $for_items_batch = false ) {
|
364 |
|
365 |
$sale_price = $this->woo_product->get_sale_price();
|
366 |
+
$sale_price_effective_date = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
|
368 |
$sale_start =
|
369 |
+
( $date = $this->woo_product->get_date_on_sale_from() )
|
370 |
+
? date_i18n( WC_DateTime::ATOM, $date->getOffsetTimestamp() )
|
371 |
+
: self::MIN_DATE_1 . self::MIN_TIME;
|
372 |
|
373 |
$sale_end =
|
374 |
+
( $date = $this->woo_product->get_date_on_sale_to() )
|
375 |
+
? date_i18n( WC_DateTime::ATOM, $date->getOffsetTimestamp() )
|
376 |
+
: self::MAX_DATE . self::MAX_TIME;
|
377 |
+
|
378 |
+
// check if sale exist
|
379 |
+
if ( is_numeric( $sale_price ) && $sale_price > 0 ) {
|
380 |
+
$sale_price_effective_date = $sale_start . '/' . $sale_end;
|
381 |
+
$sale_price =
|
382 |
+
intval( round( $this->get_price_plus_tax( $sale_price ) * 100 ) );
|
383 |
+
}
|
384 |
|
385 |
// check if sale is expired and sale time range is valid
|
386 |
if ( $for_items_batch ) {
|
387 |
+
$product_data['sale_price_effective_date'] = $sale_price_effective_date;
|
388 |
+
$product_data['sale_price'] = is_numeric( $sale_price ) ? self::format_price_for_fb_items_batch( $sale_price ) : "";
|
389 |
} else {
|
390 |
$product_data['sale_price_start_date'] = $sale_start;
|
391 |
$product_data['sale_price_end_date'] = $sale_end;
|
392 |
+
$product_data['sale_price'] = is_numeric( $sale_price ) ? $sale_price : 0;
|
393 |
}
|
394 |
|
395 |
return $product_data;
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: facebook, automattic, woothemes
|
|
3 |
Tags: facebook, shop, catalog, advertise, pixel, product
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 5.9
|
6 |
-
Stable tag: 2.6.
|
7 |
Requires PHP: 5.6 or greater
|
8 |
MySQL: 5.6 or greater
|
9 |
License: GPLv2 or later
|
@@ -39,6 +39,10 @@ When opening a bug on GitHub, please give us as many details as possible.
|
|
39 |
|
40 |
== Changelog ==
|
41 |
|
|
|
|
|
|
|
|
|
42 |
= 2.6.19 - 2022-07-27 =
|
43 |
* Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
|
44 |
* Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
|
3 |
Tags: facebook, shop, catalog, advertise, pixel, product
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 5.9
|
6 |
+
Stable tag: 2.6.20
|
7 |
Requires PHP: 5.6 or greater
|
8 |
MySQL: 5.6 or greater
|
9 |
License: GPLv2 or later
|
39 |
|
40 |
== Changelog ==
|
41 |
|
42 |
+
= 2.6.20 - 2022-08-09 =
|
43 |
+
* Fix - Ensure product is deleted from FB when moved to trash.
|
44 |
+
* Fix - Price not updating when the sale price is removed.
|
45 |
+
|
46 |
= 2.6.19 - 2022-07-27 =
|
47 |
* Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
|
48 |
* Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
|
vendor/autoload.php
CHANGED
@@ -2,11 +2,6 @@
|
|
2 |
|
3 |
// autoload.php @generated by Composer
|
4 |
|
5 |
-
if (PHP_VERSION_ID < 50600) {
|
6 |
-
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
7 |
-
exit(1);
|
8 |
-
}
|
9 |
-
|
10 |
require_once __DIR__ . '/composer/autoload_real.php';
|
11 |
|
12 |
-
return
|
2 |
|
3 |
// autoload.php @generated by Composer
|
4 |
|
|
|
|
|
|
|
|
|
|
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319::getLoader();
|
vendor/composer/ClassLoader.php
CHANGED
@@ -149,7 +149,7 @@ class ClassLoader
|
|
149 |
|
150 |
/**
|
151 |
* @return string[] Array of classname => path
|
152 |
-
* @psalm-
|
153 |
*/
|
154 |
public function getClassMap()
|
155 |
{
|
149 |
|
150 |
/**
|
151 |
* @return string[] Array of classname => path
|
152 |
+
* @psalm-var array<string, string>
|
153 |
*/
|
154 |
public function getClassMap()
|
155 |
{
|
vendor/composer/InstalledVersions.php
CHANGED
@@ -21,26 +21,11 @@ use Composer\Semver\VersionParser;
|
|
21 |
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
22 |
*
|
23 |
* To require its presence, you can require `composer-runtime-api ^2.0`
|
24 |
-
*
|
25 |
-
* @final
|
26 |
*/
|
27 |
class InstalledVersions
|
28 |
{
|
29 |
-
/**
|
30 |
-
* @var mixed[]|null
|
31 |
-
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
32 |
-
*/
|
33 |
private static $installed;
|
34 |
-
|
35 |
-
/**
|
36 |
-
* @var bool|null
|
37 |
-
*/
|
38 |
private static $canGetVendors;
|
39 |
-
|
40 |
-
/**
|
41 |
-
* @var array[]
|
42 |
-
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
43 |
-
*/
|
44 |
private static $installedByVendor = array();
|
45 |
|
46 |
/**
|
@@ -243,7 +228,7 @@ class InstalledVersions
|
|
243 |
|
244 |
/**
|
245 |
* @return array
|
246 |
-
* @psalm-return array{name: string,
|
247 |
*/
|
248 |
public static function getRootPackage()
|
249 |
{
|
@@ -257,7 +242,7 @@ class InstalledVersions
|
|
257 |
*
|
258 |
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
259 |
* @return array[]
|
260 |
-
* @psalm-return array{root: array{name: string,
|
261 |
*/
|
262 |
public static function getRawData()
|
263 |
{
|
@@ -280,7 +265,7 @@ class InstalledVersions
|
|
280 |
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
281 |
*
|
282 |
* @return array[]
|
283 |
-
* @psalm-return list<array{root: array{name: string,
|
284 |
*/
|
285 |
public static function getAllRawData()
|
286 |
{
|
@@ -303,7 +288,7 @@ class InstalledVersions
|
|
303 |
* @param array[] $data A vendor/composer/installed.php data set
|
304 |
* @return void
|
305 |
*
|
306 |
-
* @psalm-param array{root: array{name: string,
|
307 |
*/
|
308 |
public static function reload($data)
|
309 |
{
|
@@ -313,7 +298,7 @@ class InstalledVersions
|
|
313 |
|
314 |
/**
|
315 |
* @return array[]
|
316 |
-
* @psalm-return list<array{root: array{name: string,
|
317 |
*/
|
318 |
private static function getInstalled()
|
319 |
{
|
21 |
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
22 |
*
|
23 |
* To require its presence, you can require `composer-runtime-api ^2.0`
|
|
|
|
|
24 |
*/
|
25 |
class InstalledVersions
|
26 |
{
|
|
|
|
|
|
|
|
|
27 |
private static $installed;
|
|
|
|
|
|
|
|
|
28 |
private static $canGetVendors;
|
|
|
|
|
|
|
|
|
|
|
29 |
private static $installedByVendor = array();
|
30 |
|
31 |
/**
|
228 |
|
229 |
/**
|
230 |
* @return array
|
231 |
+
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
232 |
*/
|
233 |
public static function getRootPackage()
|
234 |
{
|
242 |
*
|
243 |
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
244 |
* @return array[]
|
245 |
+
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
246 |
*/
|
247 |
public static function getRawData()
|
248 |
{
|
265 |
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
266 |
*
|
267 |
* @return array[]
|
268 |
+
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
269 |
*/
|
270 |
public static function getAllRawData()
|
271 |
{
|
288 |
* @param array[] $data A vendor/composer/installed.php data set
|
289 |
* @return void
|
290 |
*
|
291 |
+
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
292 |
*/
|
293 |
public static function reload($data)
|
294 |
{
|
298 |
|
299 |
/**
|
300 |
* @return array[]
|
301 |
+
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
302 |
*/
|
303 |
private static function getInstalled()
|
304 |
{
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_classmap.php @generated by Composer
|
4 |
|
5 |
-
$vendorDir = dirname(
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
2 |
|
3 |
// autoload_classmap.php @generated by Composer
|
4 |
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
vendor/composer/autoload_namespaces.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_namespaces.php @generated by Composer
|
4 |
|
5 |
-
$vendorDir = dirname(
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
2 |
|
3 |
// autoload_namespaces.php @generated by Composer
|
4 |
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
vendor/composer/autoload_psr4.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_psr4.php @generated by Composer
|
4 |
|
5 |
-
$vendorDir = dirname(
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
2 |
|
3 |
// autoload_psr4.php @generated by Composer
|
4 |
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -24,12 +24,31 @@ class ComposerAutoloaderInitb61cc2979e1430e0106218eb648efcfa
|
|
24 |
|
25 |
require __DIR__ . '/platform_check.php';
|
26 |
|
27 |
-
spl_autoload_register(array('
|
28 |
-
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(
|
29 |
-
spl_autoload_unregister(array('
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
$loader->register(true);
|
35 |
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
24 |
|
25 |
require __DIR__ . '/platform_check.php';
|
26 |
|
27 |
+
spl_autoload_register(array('ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319', 'loadClassLoader'), true, true);
|
28 |
+
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
29 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319', 'loadClassLoader'));
|
30 |
+
|
31 |
+
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
32 |
+
if ($useStaticLoader) {
|
33 |
+
require __DIR__ . '/autoload_static.php';
|
34 |
+
|
35 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::getInitializer($loader));
|
36 |
+
} else {
|
37 |
+
$map = require __DIR__ . '/autoload_namespaces.php';
|
38 |
+
foreach ($map as $namespace => $path) {
|
39 |
+
$loader->set($namespace, $path);
|
40 |
+
}
|
41 |
+
|
42 |
+
$map = require __DIR__ . '/autoload_psr4.php';
|
43 |
+
foreach ($map as $namespace => $path) {
|
44 |
+
$loader->setPsr4($namespace, $path);
|
45 |
+
}
|
46 |
+
|
47 |
+
$classMap = require __DIR__ . '/autoload_classmap.php';
|
48 |
+
if ($classMap) {
|
49 |
+
$loader->addClassMap($classMap);
|
50 |
+
}
|
51 |
+
}
|
52 |
|
53 |
$loader->register(true);
|
54 |
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'S' =>
|
@@ -43,9 +43,9 @@ class ComposerStaticInitb61cc2979e1430e0106218eb648efcfa
|
|
43 |
public static function getInitializer(ClassLoader $loader)
|
44 |
{
|
45 |
return \Closure::bind(function () use ($loader) {
|
46 |
-
$loader->prefixLengthsPsr4 =
|
47 |
-
$loader->prefixDirsPsr4 =
|
48 |
-
$loader->classMap =
|
49 |
|
50 |
}, null, ClassLoader::class);
|
51 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit1517540bf9067c79d56f0c7f9de23319
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'S' =>
|
43 |
public static function getInitializer(ClassLoader $loader)
|
44 |
{
|
45 |
return \Closure::bind(function () use ($loader) {
|
46 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::$prefixLengthsPsr4;
|
47 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::$prefixDirsPsr4;
|
48 |
+
$loader->classMap = ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::$classMap;
|
49 |
|
50 |
}, null, ClassLoader::class);
|
51 |
}
|
vendor/composer/installed.php
CHANGED
@@ -1,31 +1,31 @@
|
|
1 |
<?php return array(
|
2 |
'root' => array(
|
3 |
-
'
|
4 |
-
'
|
5 |
-
'version' => 'dev-develop',
|
6 |
-
'reference' => 'b80497ece7cedf3cef90665fbdbb4763cbcfa9f0',
|
7 |
'type' => 'wordpress-plugin',
|
8 |
'install_path' => __DIR__ . '/../../',
|
9 |
'aliases' => array(),
|
|
|
|
|
10 |
'dev' => false,
|
11 |
),
|
12 |
'versions' => array(
|
13 |
'composer/installers' => array(
|
14 |
'pretty_version' => 'v1.12.0',
|
15 |
'version' => '1.12.0.0',
|
16 |
-
'reference' => 'd20a64ed3c94748397ff5973488761b22f6d3f19',
|
17 |
'type' => 'composer-plugin',
|
18 |
'install_path' => __DIR__ . '/./installers',
|
19 |
'aliases' => array(),
|
|
|
20 |
'dev_requirement' => false,
|
21 |
),
|
22 |
'facebookincubator/facebook-for-woocommerce' => array(
|
23 |
-
'pretty_version' => 'dev-
|
24 |
-
'version' => 'dev-
|
25 |
-
'reference' => 'b80497ece7cedf3cef90665fbdbb4763cbcfa9f0',
|
26 |
'type' => 'wordpress-plugin',
|
27 |
'install_path' => __DIR__ . '/../../',
|
28 |
'aliases' => array(),
|
|
|
29 |
'dev_requirement' => false,
|
30 |
),
|
31 |
'roundcube/plugin-installer' => array(
|
@@ -43,19 +43,19 @@
|
|
43 |
'skyverge/wc-plugin-framework' => array(
|
44 |
'pretty_version' => '5.10.0',
|
45 |
'version' => '5.10.0.0',
|
46 |
-
'reference' => 'e230d7c40286854e49c0cafeec3398cbf2427a64',
|
47 |
'type' => 'library',
|
48 |
'install_path' => __DIR__ . '/../skyverge/wc-plugin-framework',
|
49 |
'aliases' => array(),
|
|
|
50 |
'dev_requirement' => false,
|
51 |
),
|
52 |
'woocommerce/action-scheduler-job-framework' => array(
|
53 |
'pretty_version' => '2.0.0',
|
54 |
'version' => '2.0.0.0',
|
55 |
-
'reference' => 'b0b21b9cc87e476ba7f8817050b39274ea7d6732',
|
56 |
'type' => 'library',
|
57 |
'install_path' => __DIR__ . '/../woocommerce/action-scheduler-job-framework',
|
58 |
'aliases' => array(),
|
|
|
59 |
'dev_requirement' => false,
|
60 |
),
|
61 |
),
|
1 |
<?php return array(
|
2 |
'root' => array(
|
3 |
+
'pretty_version' => 'dev-release/2.6.20',
|
4 |
+
'version' => 'dev-release/2.6.20',
|
|
|
|
|
5 |
'type' => 'wordpress-plugin',
|
6 |
'install_path' => __DIR__ . '/../../',
|
7 |
'aliases' => array(),
|
8 |
+
'reference' => 'e04ab485da38910010771c873a37ca939e2ed346',
|
9 |
+
'name' => 'facebookincubator/facebook-for-woocommerce',
|
10 |
'dev' => false,
|
11 |
),
|
12 |
'versions' => array(
|
13 |
'composer/installers' => array(
|
14 |
'pretty_version' => 'v1.12.0',
|
15 |
'version' => '1.12.0.0',
|
|
|
16 |
'type' => 'composer-plugin',
|
17 |
'install_path' => __DIR__ . '/./installers',
|
18 |
'aliases' => array(),
|
19 |
+
'reference' => 'd20a64ed3c94748397ff5973488761b22f6d3f19',
|
20 |
'dev_requirement' => false,
|
21 |
),
|
22 |
'facebookincubator/facebook-for-woocommerce' => array(
|
23 |
+
'pretty_version' => 'dev-release/2.6.20',
|
24 |
+
'version' => 'dev-release/2.6.20',
|
|
|
25 |
'type' => 'wordpress-plugin',
|
26 |
'install_path' => __DIR__ . '/../../',
|
27 |
'aliases' => array(),
|
28 |
+
'reference' => 'e04ab485da38910010771c873a37ca939e2ed346',
|
29 |
'dev_requirement' => false,
|
30 |
),
|
31 |
'roundcube/plugin-installer' => array(
|
43 |
'skyverge/wc-plugin-framework' => array(
|
44 |
'pretty_version' => '5.10.0',
|
45 |
'version' => '5.10.0.0',
|
|
|
46 |
'type' => 'library',
|
47 |
'install_path' => __DIR__ . '/../skyverge/wc-plugin-framework',
|
48 |
'aliases' => array(),
|
49 |
+
'reference' => 'e230d7c40286854e49c0cafeec3398cbf2427a64',
|
50 |
'dev_requirement' => false,
|
51 |
),
|
52 |
'woocommerce/action-scheduler-job-framework' => array(
|
53 |
'pretty_version' => '2.0.0',
|
54 |
'version' => '2.0.0.0',
|
|
|
55 |
'type' => 'library',
|
56 |
'install_path' => __DIR__ . '/../woocommerce/action-scheduler-job-framework',
|
57 |
'aliases' => array(),
|
58 |
+
'reference' => 'b0b21b9cc87e476ba7f8817050b39274ea7d6732',
|
59 |
'dev_requirement' => false,
|
60 |
),
|
61 |
),
|