Changeset 3765277
- Timestamp:
- 10/25/2026 10:03:48 PM (3 hours ago)
- Location:
- feedpup-xml-supplier-sync-for-woocommerce
- Files:
-
- 8 edited
- 1 copied
-
tags/0.1.5 (copied) (copied from feedpup-xml-supplier-sync-for-woocommerce/trunk )
-
tags/0.1.5/assets/admin.css (modified) (1 diff)
-
tags/0.1.5/feedpup-woocommerce.php (modified) (3 diffs)
-
tags/0.1.5/includes/class-feedpup-woocommerce.php (modified) (5 diffs)
-
tags/0.1.5/readme.txt (modified) (4 diffs)
-
trunk/assets/admin.css (modified) (1 diff)
-
trunk/feedpup-woocommerce.php (modified) (3 diffs)
-
trunk/includes/class-feedpup-woocommerce.php (modified) (5 diffs)
-
trunk/readme.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
feedpup-xml-supplier-sync-for-woocommerce/tags/0.1.5/assets/admin.css
r3765270 r3765277 75 75 font-size: 12px; 76 76 } 77 78 .feedpup-connect .feedpup-steps { 79 margin: 12px 0 0; 80 font-size: 14px; 81 font-weight: 600; 82 color: #182033; 83 } -
feedpup-xml-supplier-sync-for-woocommerce/tags/0.1.5/feedpup-woocommerce.php
r3765270 r3765277 1 1 <?php 2 2 /** 3 * Plugin Name: FeedPup – XML & CSV Supplier Feed Import for WooCommerce3 * Plugin Name: FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce 4 4 * Plugin URI: https://woo.feedpup.weareplano.gr 5 * Description: Connects WooCommerce to FeedPup so supplier XML products, categories, prices and stock can be reviewed and synced.6 * Version: 0.1. 45 * Description: Import supplier XML or CSV feeds into WooCommerce with FeedPup, then keep prices and stock in sync. 6 * Version: 0.1.5 7 7 * Author: FeedPup (PLANO) 8 8 * Author URI: https://weareplano.gr … … 21 21 } 22 22 23 define('FEEDPUP_WC_VERSION', '0.1. 4');23 define('FEEDPUP_WC_VERSION', '0.1.5'); 24 24 define('FEEDPUP_WC_FILE', __FILE__); 25 25 define('FEEDPUP_WC_DIR', plugin_dir_path(__FILE__)); … … 32 32 register_uninstall_hook(__FILE__, ['FeedPup_WooCommerce', 'uninstall']); 33 33 34 // FeedPup never reads or writes orders and adds nothing to cart or checkout, so it is compatible with 35 // High-Performance Order Storage and the Cart & Checkout blocks. 36 add_action('before_woocommerce_init', static function (): void { 37 if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) { 38 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('custom_order_tables', FEEDPUP_WC_FILE, true); 39 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('cart_checkout_blocks', FEEDPUP_WC_FILE, true); 40 } 41 }); 42 34 43 add_action('plugins_loaded', static function (): void { 35 44 FeedPup_WooCommerce::instance(); -
feedpup-xml-supplier-sync-for-woocommerce/tags/0.1.5/includes/class-feedpup-woocommerce.php
r3765270 r3765277 232 232 return; 233 233 } 234 $dismiss_url = wp_nonce_url(admin_url('admin-post.php?action=feedpup_dismiss_notice'), 'feedpup_dismiss_notice'); 234 // Shown exactly once: cleared as soon as it is rendered (the core "X" button hides it on this screen). 235 delete_option(self::OPT_ACTIVATION_NOTICE); 235 236 ?> 236 <div class="notice notice-success feedpup-activation-notice">237 <div class="notice notice-success is-dismissible feedpup-activation-notice"> 237 238 <p><strong><?php esc_html_e('FeedPup is ready — open FeedPup in the admin menu to connect your store.', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></strong></p> 238 <p> 239 <a class="button button-primary" href="<?php echo esc_url($this->admin_page_url()); ?>"><?php esc_html_e('Open FeedPup', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></a> 240 <a class="button-link" style="margin-left:12px" href="<?php echo esc_url($dismiss_url); ?>"><?php esc_html_e('Dismiss', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></a> 241 </p> 239 <p><a class="button button-primary" href="<?php echo esc_url($this->admin_page_url()); ?>"><?php esc_html_e('Open FeedPup', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></a></p> 242 240 </div> 243 241 <?php … … 280 278 <div> 281 279 <h1>Feed<span>Pup</span></h1> 282 <p class="feedpup-muted"><?php esc_html_e('XML SupplierSync for WooCommerce', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p>280 <p class="feedpup-muted"><?php esc_html_e('XML & CSV Supplier Feed Sync for WooCommerce', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p> 283 281 </div> 284 282 </div> … … 309 307 <p class="feedpup-lead"><?php esc_html_e('One click links this store to FeedPup and opens your FeedPup workspace, already signed in. No account, password or URL needed.', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p> 310 308 <?php submit_button(__('Connect to FeedPup', 'feedpup-xml-supplier-sync-for-woocommerce'), 'primary hero feedpup-connect-button', 'submit', false); ?> 309 <p class="feedpup-steps"><?php esc_html_e('Takes under 3 minutes: connect, paste your XML or CSV feed, and FeedPup maps the fields for you.', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p> 311 310 <p class="feedpup-muted feedpup-consent"><?php 312 311 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- format is escaped; both links are built with esc_url()/esc_html__() above. … … 912 911 return 0; 913 912 } 914 $existing = get_posts(['post_type' => 'attachment', 'post_status' => 'inherit', 'post_parent' => $product_id, 'meta_key' => '_source_url', 'meta_value' => $url, 'fields' => 'ids', 'numberposts' => 1]); 915 if ($existing) return (int) $existing[0]; 913 // A product has only a handful of attachments, so compare their source URL in PHP instead of a postmeta query. 914 $children = get_posts(['post_type' => 'attachment', 'post_status' => 'inherit', 'post_parent' => $product_id, 'fields' => 'ids', 'numberposts' => 50]); 915 foreach ($children as $child_id) { 916 if ((string) get_post_meta((int) $child_id, '_source_url', true) === $url) { 917 return (int) $child_id; 918 } 919 } 916 920 require_once ABSPATH . 'wp-admin/includes/media.php'; 917 921 require_once ABSPATH . 'wp-admin/includes/file.php'; … … 1187 1191 'fields' => 'ids', 1188 1192 'numberposts' => 1, 1193 // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- single-row fallback lookup by FeedPup's own unique key, used only when the links table has no row. 1189 1194 'meta_key' => '_feedpup_product_key', 1195 // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value -- see above. 1190 1196 'meta_value' => $key, 1191 1197 ]); -
feedpup-xml-supplier-sync-for-woocommerce/tags/0.1.5/readme.txt
r3765270 r3765277 1 === FeedPup – XML & CSV Supplier Feed Import for WooCommerce ===1 === FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce === 2 2 Contributors: giorgaras 3 3 Tags: supplier feed, xml supplier feed, dropshipping xml, stock sync, csv import … … 8 8 WC requires at least: 8.0 9 9 WC tested up to: 11.2 10 Stable tag: 0.1. 410 Stable tag: 0.1.5 11 11 License: GPLv2 or later 12 12 License URI: https://www.gnu.org/licenses/gpl-2.0.html 13 13 14 Import supplier XML or CSV feeds into WooCommerce. Preview products, test with drafts, then keepprices and stock in sync automatically.14 Import supplier XML & CSV feeds into WooCommerce. FeedPup maps the fields for you, then keeps prices and stock in sync automatically. 15 15 16 16 == Description == 17 18 = Why FeedPup = 19 20 * **Automatic field mapping, no manual column mapping.** FeedPup detects your XML or CSV feed's structure and maps the supplier fields (title, SKU, price, stock, images, EAN, categories) to WooCommerce for you. You just review and confirm. 21 * **Fast setup.** Connect your store and run your first test import in under 3 minutes. No account to create, no import template, no XPath. 22 * **Automatic price and stock sync** on a schedule (paid plans), updating only the products FeedPup imported. 17 23 18 24 **FeedPup imports products from your supplier's XML or CSV feed into WooCommerce and keeps their prices and stock up to date.** Paste the feed URL (or upload a CSV file), check the field matches that Pup, FeedPup's AI-assisted mapper, suggests, preview real products and create a few as drafts. Nothing is imported until you confirm it. … … 156 162 == Changelog == 157 163 164 = 0.1.5 = 165 * Name: now "FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce"; plugin description and admin page say XML & CSV. 166 * WooCommerce: declares compatibility with High-Performance Order Storage (HPOS) and the Cart & Checkout blocks, so WooCommerce no longer lists FeedPup as incompatible. 167 * The activation notice is shown once only. 168 * Connect page: a short line on what happens after you click Connect. 169 * Readme: clearer description of automatic field mapping and setup time. 170 158 171 = 0.1.4 = 159 172 * Easier to find: FeedPup now has its own item in the WordPress admin menu (below WooCommerce and Products), plus a Settings link on the Plugins page, a one-time activation notice and a one-time redirect to the FeedPup page after activation. … … 174 187 == Upgrade Notice == 175 188 189 = 0.1.5 = 190 Declares WooCommerce HPOS and Cart & Checkout blocks compatibility (removes the "incompatible plugin" warning) and shows the activation notice only once. 191 176 192 = 0.1.4 = 177 193 FeedPup now has its own item in the admin menu, plus a Settings link and an activation notice, so it is easier to find. -
feedpup-xml-supplier-sync-for-woocommerce/trunk/assets/admin.css
r3765270 r3765277 75 75 font-size: 12px; 76 76 } 77 78 .feedpup-connect .feedpup-steps { 79 margin: 12px 0 0; 80 font-size: 14px; 81 font-weight: 600; 82 color: #182033; 83 } -
feedpup-xml-supplier-sync-for-woocommerce/trunk/feedpup-woocommerce.php
r3765270 r3765277 1 1 <?php 2 2 /** 3 * Plugin Name: FeedPup – XML & CSV Supplier Feed Import for WooCommerce3 * Plugin Name: FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce 4 4 * Plugin URI: https://woo.feedpup.weareplano.gr 5 * Description: Connects WooCommerce to FeedPup so supplier XML products, categories, prices and stock can be reviewed and synced.6 * Version: 0.1. 45 * Description: Import supplier XML or CSV feeds into WooCommerce with FeedPup, then keep prices and stock in sync. 6 * Version: 0.1.5 7 7 * Author: FeedPup (PLANO) 8 8 * Author URI: https://weareplano.gr … … 21 21 } 22 22 23 define('FEEDPUP_WC_VERSION', '0.1. 4');23 define('FEEDPUP_WC_VERSION', '0.1.5'); 24 24 define('FEEDPUP_WC_FILE', __FILE__); 25 25 define('FEEDPUP_WC_DIR', plugin_dir_path(__FILE__)); … … 32 32 register_uninstall_hook(__FILE__, ['FeedPup_WooCommerce', 'uninstall']); 33 33 34 // FeedPup never reads or writes orders and adds nothing to cart or checkout, so it is compatible with 35 // High-Performance Order Storage and the Cart & Checkout blocks. 36 add_action('before_woocommerce_init', static function (): void { 37 if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) { 38 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('custom_order_tables', FEEDPUP_WC_FILE, true); 39 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('cart_checkout_blocks', FEEDPUP_WC_FILE, true); 40 } 41 }); 42 34 43 add_action('plugins_loaded', static function (): void { 35 44 FeedPup_WooCommerce::instance(); -
feedpup-xml-supplier-sync-for-woocommerce/trunk/includes/class-feedpup-woocommerce.php
r3765270 r3765277 232 232 return; 233 233 } 234 $dismiss_url = wp_nonce_url(admin_url('admin-post.php?action=feedpup_dismiss_notice'), 'feedpup_dismiss_notice'); 234 // Shown exactly once: cleared as soon as it is rendered (the core "X" button hides it on this screen). 235 delete_option(self::OPT_ACTIVATION_NOTICE); 235 236 ?> 236 <div class="notice notice-success feedpup-activation-notice">237 <div class="notice notice-success is-dismissible feedpup-activation-notice"> 237 238 <p><strong><?php esc_html_e('FeedPup is ready — open FeedPup in the admin menu to connect your store.', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></strong></p> 238 <p> 239 <a class="button button-primary" href="<?php echo esc_url($this->admin_page_url()); ?>"><?php esc_html_e('Open FeedPup', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></a> 240 <a class="button-link" style="margin-left:12px" href="<?php echo esc_url($dismiss_url); ?>"><?php esc_html_e('Dismiss', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></a> 241 </p> 239 <p><a class="button button-primary" href="<?php echo esc_url($this->admin_page_url()); ?>"><?php esc_html_e('Open FeedPup', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></a></p> 242 240 </div> 243 241 <?php … … 280 278 <div> 281 279 <h1>Feed<span>Pup</span></h1> 282 <p class="feedpup-muted"><?php esc_html_e('XML SupplierSync for WooCommerce', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p>280 <p class="feedpup-muted"><?php esc_html_e('XML & CSV Supplier Feed Sync for WooCommerce', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p> 283 281 </div> 284 282 </div> … … 309 307 <p class="feedpup-lead"><?php esc_html_e('One click links this store to FeedPup and opens your FeedPup workspace, already signed in. No account, password or URL needed.', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p> 310 308 <?php submit_button(__('Connect to FeedPup', 'feedpup-xml-supplier-sync-for-woocommerce'), 'primary hero feedpup-connect-button', 'submit', false); ?> 309 <p class="feedpup-steps"><?php esc_html_e('Takes under 3 minutes: connect, paste your XML or CSV feed, and FeedPup maps the fields for you.', 'feedpup-xml-supplier-sync-for-woocommerce'); ?></p> 311 310 <p class="feedpup-muted feedpup-consent"><?php 312 311 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- format is escaped; both links are built with esc_url()/esc_html__() above. … … 912 911 return 0; 913 912 } 914 $existing = get_posts(['post_type' => 'attachment', 'post_status' => 'inherit', 'post_parent' => $product_id, 'meta_key' => '_source_url', 'meta_value' => $url, 'fields' => 'ids', 'numberposts' => 1]); 915 if ($existing) return (int) $existing[0]; 913 // A product has only a handful of attachments, so compare their source URL in PHP instead of a postmeta query. 914 $children = get_posts(['post_type' => 'attachment', 'post_status' => 'inherit', 'post_parent' => $product_id, 'fields' => 'ids', 'numberposts' => 50]); 915 foreach ($children as $child_id) { 916 if ((string) get_post_meta((int) $child_id, '_source_url', true) === $url) { 917 return (int) $child_id; 918 } 919 } 916 920 require_once ABSPATH . 'wp-admin/includes/media.php'; 917 921 require_once ABSPATH . 'wp-admin/includes/file.php'; … … 1187 1191 'fields' => 'ids', 1188 1192 'numberposts' => 1, 1193 // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- single-row fallback lookup by FeedPup's own unique key, used only when the links table has no row. 1189 1194 'meta_key' => '_feedpup_product_key', 1195 // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value -- see above. 1190 1196 'meta_value' => $key, 1191 1197 ]); -
feedpup-xml-supplier-sync-for-woocommerce/trunk/readme.txt
r3765270 r3765277 1 === FeedPup – XML & CSV Supplier Feed Import for WooCommerce ===1 === FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce === 2 2 Contributors: giorgaras 3 3 Tags: supplier feed, xml supplier feed, dropshipping xml, stock sync, csv import … … 8 8 WC requires at least: 8.0 9 9 WC tested up to: 11.2 10 Stable tag: 0.1. 410 Stable tag: 0.1.5 11 11 License: GPLv2 or later 12 12 License URI: https://www.gnu.org/licenses/gpl-2.0.html 13 13 14 Import supplier XML or CSV feeds into WooCommerce. Preview products, test with drafts, then keepprices and stock in sync automatically.14 Import supplier XML & CSV feeds into WooCommerce. FeedPup maps the fields for you, then keeps prices and stock in sync automatically. 15 15 16 16 == Description == 17 18 = Why FeedPup = 19 20 * **Automatic field mapping, no manual column mapping.** FeedPup detects your XML or CSV feed's structure and maps the supplier fields (title, SKU, price, stock, images, EAN, categories) to WooCommerce for you. You just review and confirm. 21 * **Fast setup.** Connect your store and run your first test import in under 3 minutes. No account to create, no import template, no XPath. 22 * **Automatic price and stock sync** on a schedule (paid plans), updating only the products FeedPup imported. 17 23 18 24 **FeedPup imports products from your supplier's XML or CSV feed into WooCommerce and keeps their prices and stock up to date.** Paste the feed URL (or upload a CSV file), check the field matches that Pup, FeedPup's AI-assisted mapper, suggests, preview real products and create a few as drafts. Nothing is imported until you confirm it. … … 156 162 == Changelog == 157 163 164 = 0.1.5 = 165 * Name: now "FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce"; plugin description and admin page say XML & CSV. 166 * WooCommerce: declares compatibility with High-Performance Order Storage (HPOS) and the Cart & Checkout blocks, so WooCommerce no longer lists FeedPup as incompatible. 167 * The activation notice is shown once only. 168 * Connect page: a short line on what happens after you click Connect. 169 * Readme: clearer description of automatic field mapping and setup time. 170 158 171 = 0.1.4 = 159 172 * Easier to find: FeedPup now has its own item in the WordPress admin menu (below WooCommerce and Products), plus a Settings link on the Plugins page, a one-time activation notice and a one-time redirect to the FeedPup page after activation. … … 174 187 == Upgrade Notice == 175 188 189 = 0.1.5 = 190 Declares WooCommerce HPOS and Cart & Checkout blocks compatibility (removes the "incompatible plugin" warning) and shows the activation notice only once. 191 176 192 = 0.1.4 = 177 193 FeedPup now has its own item in the admin menu, plus a Settings link and an activation notice, so it is easier to find.
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)