CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.5.6

Version Description

(2022-10-26) = * Fixed: Snapchat image attribute changes from image to image_link. * Fixed: Halloween discount banner only shows into plugin pages.

Download this release

Release Info

Developer wahid0003
Plugin Icon 128x128 CTX Feed – WooCommerce Product Feed Manager Plugin
Version 4.5.6
Comparing to
See all releases

Code changes from version 4.5.5 to 4.5.6

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: WooCommerce Product Feed, WooCommerce, Google Shopping, Google Merchant, F
5
  Requires at least: 4.4
6
  Tested Up To: 6.0
7
  Requires PHP: 5.6
8
- Stable tag: 4.5.5
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -590,6 +590,10 @@ Using pro version:
590
 
591
  == Changelog ==
592
 
 
 
 
 
593
  = 4.5.5 (2022-10-17) =
594
  * Added: Product Status attribute added.
595
 
5
  Requires at least: 4.4
6
  Tested Up To: 6.0
7
  Requires PHP: 5.6
8
+ Stable tag: 4.5.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
590
 
591
  == Changelog ==
592
 
593
+ = 4.5.6 (2022-10-26) =
594
+ * Fixed: Snapchat image attribute changes from image to image_link.
595
+ * Fixed: Halloween discount banner only shows into plugin pages.
596
+
597
  = 4.5.5 (2022-10-17) =
598
  * Added: Product Status attribute added.
599
 
V5/Filter/Filter.php CHANGED
@@ -66,10 +66,11 @@ class Filter
66
  */
67
  public function exclude_out_of_stock_products()
68
  {
69
- if ($this->config->remove_outofstock_product() && ($this->product->get_stock_status() === 'outofstock' || $this->product->get_stock_quantity() === 0)) {
70
- return true;
71
  }
72
- return false;
 
73
  }
74
 
75
  //TODO Out of stock visibility.
@@ -191,4 +192,28 @@ class Filter
191
 
192
  return $exclude;
193
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  }
66
  */
67
  public function exclude_out_of_stock_products()
68
  {
69
+ if ( ! $this->config->remove_outofstock_product() || $this->product->get_stock_status() !== 'outofstock' && $this->product->get_stock_quantity() !== 0 ) {
70
+ return false;
71
  }
72
+
73
+ return true;
74
  }
75
 
76
  //TODO Out of stock visibility.
192
 
193
  return $exclude;
194
  }
195
+
196
+ public function exclude_variation_products( ) {
197
+
198
+ }
199
+
200
+ public function include_variation_products( ) {
201
+
202
+ }
203
+
204
+ public function exclude_variation_category( ) {
205
+
206
+ }
207
+
208
+ public function include_variation_category( ) {
209
+
210
+ }
211
+
212
+ public function exclude_variation_status( ) {
213
+
214
+ }
215
+
216
+ public function include_variation_status( ) {
217
+
218
+ }
219
  }
V5/Utility/DropDown.php CHANGED
@@ -6,11 +6,11 @@ class DropDown {
6
  * @var string $options Hold Options
7
  */
8
  private static $options;
9
-
10
  public function __construct() {
11
  self::$options = '';
12
  }
13
-
14
  /**
15
  * Create Dropdown from array.
16
  *
@@ -23,13 +23,13 @@ class DropDown {
23
  */
24
  public static function Create( $data, $selected, $cache_key = null, $cache = false ) {
25
  //TODO: Option to set disabled options.
26
-
27
  self::$options = "";
28
-
29
  if ( empty( $data ) || ! is_array( $data ) ) {
30
  return "<option class='disabled' selected>No data available.</option>";
31
  }
32
-
33
  // If $cache true then return cached data.
34
  if ( $cache ) {
35
  self::$options = Cache::get( $cache_key );
@@ -43,23 +43,23 @@ class DropDown {
43
  self::$options = str_replace( "value=\"$selectedValue\"", "value=\"$selectedValue\" selected", self::$options );
44
  }
45
  }
46
-
47
  return self::$options;
48
  }
49
  }
50
 
51
  if ( count($data) !== count($data, COUNT_RECURSIVE) ) {
52
-
53
  foreach ( $data as $value ) {
54
  if ( isset( $value['optionGroup'] ) ) {
55
  self::$options .= "<optgroup label=\"{$value['optionGroup']}\">";
56
  }
57
-
58
  if ( isset( $value['options'] ) && ! empty( $value['options'] ) ) {
59
  foreach ( $value['options'] as $optionKey => $option ) {
60
  self::$options .= sprintf( '<option value="%s">%s</option>', $optionKey, $option );
61
  }
62
-
63
  self::$options .= isset( $value['optionGroup'] ) ? '</optgroup>' : '';
64
  }
65
  }
@@ -68,14 +68,14 @@ class DropDown {
68
  self::$options .= sprintf( '<option value="%s">%s</option>', $optionKey, $option );
69
  }
70
  }
71
-
72
  // If $cache true then set cache.
73
  if ( $cache ) {
74
  Cache::set( $cache_key, self::$options );
75
  }
76
-
77
  if ( $selected !== '' && is_string( $selected ) ) {
78
- $selected = esc_attr( $selected );
79
  self::$options = str_replace( "value=\"$selected\"", "value=\"$selected\" selected", self::$options );
80
  } elseif ( $selected !== '' && is_array( $selected ) ) {
81
  foreach ( $selected as $selectedValue ) {
@@ -83,7 +83,7 @@ class DropDown {
83
  self::$options = str_replace( "value=\"$selectedValue\"", "value=\"$selectedValue\" selected", self::$options );
84
  }
85
  }
86
-
87
  return self::$options;
88
  }
89
- }
6
  * @var string $options Hold Options
7
  */
8
  private static $options;
9
+
10
  public function __construct() {
11
  self::$options = '';
12
  }
13
+
14
  /**
15
  * Create Dropdown from array.
16
  *
23
  */
24
  public static function Create( $data, $selected, $cache_key = null, $cache = false ) {
25
  //TODO: Option to set disabled options.
26
+
27
  self::$options = "";
28
+
29
  if ( empty( $data ) || ! is_array( $data ) ) {
30
  return "<option class='disabled' selected>No data available.</option>";
31
  }
32
+
33
  // If $cache true then return cached data.
34
  if ( $cache ) {
35
  self::$options = Cache::get( $cache_key );
43
  self::$options = str_replace( "value=\"$selectedValue\"", "value=\"$selectedValue\" selected", self::$options );
44
  }
45
  }
46
+
47
  return self::$options;
48
  }
49
  }
50
 
51
  if ( count($data) !== count($data, COUNT_RECURSIVE) ) {
52
+
53
  foreach ( $data as $value ) {
54
  if ( isset( $value['optionGroup'] ) ) {
55
  self::$options .= "<optgroup label=\"{$value['optionGroup']}\">";
56
  }
57
+
58
  if ( isset( $value['options'] ) && ! empty( $value['options'] ) ) {
59
  foreach ( $value['options'] as $optionKey => $option ) {
60
  self::$options .= sprintf( '<option value="%s">%s</option>', $optionKey, $option );
61
  }
62
+
63
  self::$options .= isset( $value['optionGroup'] ) ? '</optgroup>' : '';
64
  }
65
  }
68
  self::$options .= sprintf( '<option value="%s">%s</option>', $optionKey, $option );
69
  }
70
  }
71
+
72
  // If $cache true then set cache.
73
  if ( $cache ) {
74
  Cache::set( $cache_key, self::$options );
75
  }
76
+
77
  if ( $selected !== '' && is_string( $selected ) ) {
78
+ //$selected = esc_attr( $selected );
79
  self::$options = str_replace( "value=\"$selected\"", "value=\"$selected\" selected", self::$options );
80
  } elseif ( $selected !== '' && is_array( $selected ) ) {
81
  foreach ( $selected as $selectedValue ) {
83
  self::$options = str_replace( "value=\"$selectedValue\"", "value=\"$selectedValue\" selected", self::$options );
84
  }
85
  }
86
+
87
  return self::$options;
88
  }
89
+ }
includes/classes/class-woo-feed-constants.php CHANGED
@@ -23,7 +23,7 @@ if( ! class_exists("Woo_Feed_Constants") ) {
23
  * @var string
24
  * @since 3.1.6
25
  */
26
- define( 'WOO_FEED_FREE_VERSION', '4.5.5' );
27
  }
28
 
29
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
23
  * @var string
24
  * @since 3.1.6
25
  */
26
+ define( 'WOO_FEED_FREE_VERSION', '4.5.6' );
27
  }
28
 
29
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
includes/helper.php CHANGED
@@ -3650,6 +3650,7 @@ if ( ! function_exists( 'woo_feed_filter_dropdown_attributes' ) ) {
3650
  $filtered_attributes = $default_attr;
3651
  $snapchat_additional_attr = array();
3652
  $snapchat_additional_attr['--18'] = 'Snapchat Additional Attributes';
 
3653
  $snapchat_additional_attr['icon_media_url'] = 'Icon Media Url[icon_media_url]';
3654
  $snapchat_additional_attr['ios_app_name'] = 'IOS App Name[ios_app_name]';
3655
  $snapchat_additional_attr['ios_app_store_id'] = 'IOS App Store ID[ios_app_store_id]';
3650
  $filtered_attributes = $default_attr;
3651
  $snapchat_additional_attr = array();
3652
  $snapchat_additional_attr['--18'] = 'Snapchat Additional Attributes';
3653
+ $snapchat_additional_attr['image_link'] = 'Image Link';
3654
  $snapchat_additional_attr['icon_media_url'] = 'Icon Media Url[icon_media_url]';
3655
  $snapchat_additional_attr['ios_app_name'] = 'IOS App Name[ios_app_name]';
3656
  $snapchat_additional_attr['ios_app_store_id'] = 'IOS App Store ID[ios_app_store_id]';
includes/template-configs.php CHANGED
@@ -2694,7 +2694,7 @@ return array(
2694
  'limit' => array( '', '' ),
2695
  ),
2696
  'snapchat' => array(
2697
- 'mattributes' => array( 'id', 'title', 'description', 'item_group_id', 'link', 'product_type', 'current_category', 'image', 'condition', 'availability', 'price', 'sale_price', 'sku', 'brand', 'canonical_link' ),
2698
  'prefix' => array( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ),
2699
  'type' => array( 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'pattern', 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'pattern', 'attribute' ),
2700
  'attributes' => array( 'id', 'title', 'description', 'item_group_id', 'link', 'product_type', '', 'image', 'condition', 'availability', 'price', 'current_price', 'sku', '', 'canonical_link' ),
2694
  'limit' => array( '', '' ),
2695
  ),
2696
  'snapchat' => array(
2697
+ 'mattributes' => array( 'id', 'title', 'description', 'item_group_id', 'link', 'product_type', 'current_category', 'image_link', 'condition', 'availability', 'price', 'sale_price', 'sku', 'brand', 'canonical_link' ),
2698
  'prefix' => array( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ),
2699
  'type' => array( 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'pattern', 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'attribute', 'pattern', 'attribute' ),
2700
  'attributes' => array( 'id', 'title', 'description', 'item_group_id', 'link', 'product_type', '', 'image', 'condition', 'availability', 'price', 'current_price', 'sku', '', 'canonical_link' ),
woo-feed.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
- * Version: 4.5.5
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
@@ -32,7 +32,6 @@ if ( ! defined( 'ABSPATH' ) ) {
32
  die(); // If this file is called directly, abort.
33
  }
34
 
35
-
36
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
37
  /**
38
  * Plugin Base File
@@ -55,7 +54,6 @@ if ( ! defined( 'WOO_FEED_FREE_ADMIN_URL' ) ) {
55
 
56
  require_once __DIR__ . '/includes/classes/class-woo-feed-constants.php';
57
  Woo_Feed_Constants::defined_constants();
58
-
59
  /*
60
  * Autoloader
61
  *
@@ -132,7 +130,9 @@ if ( ! function_exists( 'run_woo_feed' ) ) {
132
  add_action( 'plugins_loaded', array( $plugin, 'run' ), PHP_INT_MAX );
133
  add_action( 'admin_notices', 'wooFeed_Admin_Notices' );
134
  //add_action( 'admin_notices', 'woo_feed_black_friday_notice' );
135
- add_action( 'admin_notices', 'woo_feed_halloween_notice' );
 
 
136
  WooFeedWebAppickAPI::getInstance();
137
 
138
  }
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
+ * Version: 4.5.6
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
32
  die(); // If this file is called directly, abort.
33
  }
34
 
 
35
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
36
  /**
37
  * Plugin Base File
54
 
55
  require_once __DIR__ . '/includes/classes/class-woo-feed-constants.php';
56
  Woo_Feed_Constants::defined_constants();
 
57
  /*
58
  * Autoloader
59
  *
130
  add_action( 'plugins_loaded', array( $plugin, 'run' ), PHP_INT_MAX );
131
  add_action( 'admin_notices', 'wooFeed_Admin_Notices' );
132
  //add_action( 'admin_notices', 'woo_feed_black_friday_notice' );
133
+ if( isset($_GET['page'] ) && preg_match( '/^webappick\W+/', $_GET['page'] ) ) {
134
+ add_action( 'admin_notices', 'woo_feed_halloween_notice' );
135
+ }
136
  WooFeedWebAppickAPI::getInstance();
137
 
138
  }