From 57a6a318f25464b1943d6aabc975109590b34c57 Mon Sep 17 00:00:00 2001 From: David Parker Date: Fri, 9 Jun 2023 09:40:50 -0400 Subject: [PATCH 1/6] Using default level and discount code filters --- .../pmpro/class-swsales-module-pmpro.php | 160 +++++++++++++++++- 1 file changed, 155 insertions(+), 5 deletions(-) diff --git a/modules/ecommerce/pmpro/class-swsales-module-pmpro.php b/modules/ecommerce/pmpro/class-swsales-module-pmpro.php index 1921c10..2635eb9 100644 --- a/modules/ecommerce/pmpro/class-swsales-module-pmpro.php +++ b/modules/ecommerce/pmpro/class-swsales-module-pmpro.php @@ -44,15 +44,21 @@ public static function init() { // For the swsales_coupon helper function add_filter( 'swsales_coupon', array( __CLASS__, 'swsales_coupon' ), 10, 2 ); - // Default level for sale page. - add_action( 'wp', array( __CLASS__, 'load_pmpro_preheader' ), 0 ); // Priority 0 so that the discount code applies. - // Custom PMPro banner rules (hide for levels and hide at checkout). add_filter( 'swsales_is_checkout_page', array( __CLASS__, 'is_checkout_page' ), 10, 2 ); add_filter( 'swsales_show_banner', array( __CLASS__, 'show_banner' ), 10, 2 ); - // PMPro automatic discount application. - add_action( 'init', array( __CLASS__, 'automatic_discount_application' ) ); + // PMPro automatic discount application and default levels. + if ( version_compare( PMPRO_VERSION, '3.0', '>=' ) ) { + // PMPro 3.0+. Use filters for default level and discount code. + add_filter( 'wp', array( __CLASS__, 'enable_shortcodes_for_legacy_sitewide_sale_setups' ), 2 ); // Priority 2 so that it is the same as core PMPro. + add_filter( 'pmpro_default_level', array( __CLASS__, 'filter_default_level' ) ); + add_filter( 'pmpro_default_discount_code', array( __CLASS__, 'filter_default_discount_code' ), 10, 2 ); + } else { + // Use legacy function automatic_discount_application. + add_action( 'wp', array( __CLASS__, 'load_pmpro_preheader' ), 0 ); // Priority 0 so that the discount code applies. + add_action( 'init', array( __CLASS__, 'automatic_discount_application' ) ); + } // Hide discount code fields on SWSales landing page. add_action( 'wp_enqueue_scripts', array( __CLASS__, 'wp_enqueue_scripts' ) ); @@ -614,8 +620,150 @@ public static function get_default_level( $post_id = null ) { return $level_id; } + /** + * If we are on a landing page using the legacy [sitewide_sales] shortcode, + * enable PMPro shortcodes and load the corresponding preheaders. + * + * Only called in PMPro v3.0+. + */ + public static function enable_shortcodes_for_legacy_sitewide_sale_setups() { + // Make sure PMPro is loaded. + if ( ! defined( 'PMPRO_DIR' ) ) { + return; + } + + // Don't do this in the dashboard. + if ( is_admin() ) { + return; + } + + // Check if this is the landing page. + $queried_object = get_queried_object(); + if ( empty( $queried_object ) || empty( $queried_object->ID ) || null === classes\SWSales_Sitewide_Sale::get_sitewide_sale_for_landing_page( $queried_object->ID ) ) { + return; + } + + // If the [sitewide_sales] shortcode is not present, we don't need to force loading PMPro Shortcodes. + if ( ! has_shortcode( $queried_object->post_content, 'sitewide_sales' ) ) { + return; + } + + // Load checkout and levels shortcodes and preheaders in case they are used in the [sitewide_sales] shortcode. + add_shortcode( 'pmpro_checkout', array( __CLASS__, 'manual_pmpro_checkout_shortcode_implementation' ) ); + require_once PMPRO_DIR . '/preheaders/checkout.php'; + add_shortcode( 'pmpro_levels', array( __CLASS__, 'manual_pmpro_levels_shortcode_implementation' ) ); + require_once PMPRO_DIR . '/preheaders/levels.php'; + } + + /** + * Filter the default level at checkout. + * + * If we are on a landing page, use the default level set for the corresponding sale. + * If there is not a default level for this sale but the sale does have a discount code, choose a level that uses that code. + * + * If we we still don't have a level, we likely aren't on a specific landing page. Do the same steps for the active sale. + * + * Only called in PMPro v3.0+. + * + * @param int|null $level_id Default level ID. + * @return int|null + */ + public static function filter_default_level( $level_id ) { + global $post, $wpdb; + + // Check if we have a $post that may be a landing page. + if ( ! empty( $post ) && ! empty( $post->ID ) ) { + // Check if this post is a landing page. + $sitewide_sale = classes\SWSales_Sitewide_Sale::get_sitewide_sale_for_landing_page( $post->ID ); + if ( null !== $sitewide_sale ) { + // If this post has a sale with a default level set, use it. + $default_level_id = $sitewide_sale->get_meta_value( 'swsales_pmpro_landing_page_default_level' ); + if ( ! empty( $default_level_id ) ) { + return (int)$default_level_id; + } + + // If this post has a sale without a default level set, choose a level that the sale applies to and show that. + $discount_code_id = $sitewide_sale->get_meta_value( 'swsales_pmpro_discount_code_id' ); + if ( ! empty( $discount_code_id ) ) { + $first_code_level_id = $wpdb->get_var( "SELECT level_id FROM $wpdb->pmpro_discount_codes_levels WHERE code_id = '" . esc_sql( $discount_code_id ) . "' ORDER BY level_id LIMIT 1" ); + if ( ! empty( $first_code_level_id ) ) { + return (int)$first_code_level_id; + } + } + } + } + + // Check if there is an active sale that we are planning to apply an automatic discount to. + $sitewide_sale = classes\SWSales_Sitewide_Sale::get_active_sitewide_sale(); + if ( null !== $sitewide_sale && $sitewide_sale->should_apply_automatic_discount() ) { + // If the active sale has a default level set, use it. + $default_level_id = $sitewide_sale->get_meta_value( 'swsales_pmpro_landing_page_default_level' ); + if ( ! empty( $default_level_id ) ) { + return (int)$default_level_id; + } + + // If the active sale does not have a default level set, choose a level that the sale applies to and show that. + $discount_code_id = $sitewide_sale->get_meta_value( 'swsales_pmpro_discount_code_id' ); + if ( ! empty( $discount_code_id ) ) { + $first_code_level_id = $wpdb->get_var( "SELECT level_id FROM $wpdb->pmpro_discount_codes_levels WHERE code_id = '" . esc_sql( $discount_code_id ) . "' ORDER BY level_id LIMIT 1" ); + if ( ! empty( $first_code_level_id ) ) { + return (int)$first_code_level_id; + } + } + } + + // If we get here, SWS is not going to overwrite the default level. Return what we were passed. + return $level_id; + } + + /** + * Filter the default discount code at checkout. + * + * If we are on a landing page, use the discount code for that sale. + */ + public static function filter_default_discount_code( $discount_code, $level_id ) { + global $post, $wpdb; + + // Check if we have a $post that may be a landing page. + if ( ! empty( $post ) && ! empty( $post->ID ) ) { + // Check if this post is a landing page. + $sitewide_sale = classes\SWSales_Sitewide_Sale::get_sitewide_sale_for_landing_page( $post->ID ); + if ( null !== $sitewide_sale ) { + // If this post has a sale with a discount code set, use it. + $discount_code_id = $sitewide_sale->get_meta_value( 'swsales_pmpro_discount_code_id' ); + if ( ! empty( $discount_code_id ) ) { + $sale_discount_code = $wpdb->get_var( "SELECT code FROM $wpdb->pmpro_discount_codes WHERE id = '" . esc_sql( $discount_code_id ) . "' LIMIT 1" ); + if ( ! empty( $sale_discount_code ) && pmpro_checkDiscountCode( $sale_discount_code, $level_id ) ) { + return $sale_discount_code; + } + } + } + } + + // Check if there is an active sale that we should apply an automatic discount for. + $sitewide_sale = classes\SWSales_Sitewide_Sale::get_active_sitewide_sale(); + if ( null !== $sitewide_sale && $sitewide_sale->should_apply_automatic_discount() ) { + // If the active sale has a discount code set, use it. + $discount_code_id = $sitewide_sale->get_meta_value( 'swsales_pmpro_discount_code_id' ); + if ( ! empty( $discount_code_id ) ) { + $sale_discount_code = $wpdb->get_var( "SELECT code FROM $wpdb->pmpro_discount_codes WHERE id = '" . esc_sql( $discount_code_id ) . "' LIMIT 1" ); + if ( ! empty( $sale_discount_code ) && pmpro_checkDiscountCode( $sale_discount_code, $level_id ) ) { + return $sale_discount_code; + } + } + } + + // If we get here, SWS is not going to overwrite the default discount code. Return what we were passed. + return $discount_code; + } + + + + /** * Load the checkout and levels preheaders on the landing page. + * + * Legacy function for before PMPro v3.0. */ public static function load_pmpro_preheader() { global $wpdb; @@ -727,6 +875,8 @@ public static function show_banner( $show_banner, $sitewide_sale ) { /** * Automatically applies discount code if user has the cookie set from sale page + * + * Legacy function for before PMPro v3.0. */ public static function automatic_discount_application() { $active_sitewide_sale = classes\SWSales_Sitewide_Sale::get_active_sitewide_sale(); From 5bad69968f91781a6479bad9176635d55adc2b9f Mon Sep 17 00:00:00 2001 From: Kim Coleman Date: Wed, 27 Dec 2023 12:50:49 -0500 Subject: [PATCH 2/6] Improving coupon code queries --- modules/ecommerce/edd/class-swsales-module-edd.php | 7 ++++++- .../ecommerce/pmpro/class-swsales-module-pmpro.php | 13 +++++++++++-- modules/ecommerce/wc/class-swsales-module-wc.php | 13 +++++++++++-- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/modules/ecommerce/edd/class-swsales-module-edd.php b/modules/ecommerce/edd/class-swsales-module-edd.php index 39687a6..c550b13 100644 --- a/modules/ecommerce/edd/class-swsales-module-edd.php +++ b/modules/ecommerce/edd/class-swsales-module-edd.php @@ -94,13 +94,18 @@ public static function add_choose_coupon( $cur_sale ) { array( 'id', 'code'), 'status' => 'active', + 'number' => $code_limit, + 'order' => 'DESC', ) ); + $current_coupon = intval( $cur_sale->get_meta_value( 'swsales_edd_coupon_id', null ) ); ?> diff --git a/modules/ecommerce/pmpro/class-swsales-module-pmpro.php b/modules/ecommerce/pmpro/class-swsales-module-pmpro.php index eb01f2d..b7c3e3f 100644 --- a/modules/ecommerce/pmpro/class-swsales-module-pmpro.php +++ b/modules/ecommerce/pmpro/class-swsales-module-pmpro.php @@ -102,8 +102,17 @@ public static function add_choose_discount_code( $cur_sale ) { } else { global $wpdb; - // Query the database for the discount codes. - $codes = $wpdb->get_results( "SELECT * FROM $wpdb->pmpro_discount_codes", OBJECT ); + // Query the database for the latest discount codes. + $code_limit = apply_filters( 'swsales_pmpro_discount_code_limit', 5000 ); + $code_limit = intval( $code_limit ); + $codes = $wpdb->get_results( $wpdb->prepare( + "SELECT * + FROM $wpdb->pmpro_discount_codes + ORDER BY id DESC + LIMIT %d", + $code_limit ), + OBJECT + ); // Get the discount code (if set) for the sale. $current_discount = $cur_sale->get_meta_value( 'swsales_pmpro_discount_code_id', null ); diff --git a/modules/ecommerce/wc/class-swsales-module-wc.php b/modules/ecommerce/wc/class-swsales-module-wc.php index 1b7060d..4e9af80 100644 --- a/modules/ecommerce/wc/class-swsales-module-wc.php +++ b/modules/ecommerce/wc/class-swsales-module-wc.php @@ -91,9 +91,18 @@ public static function add_choose_coupon( $cur_sale ) { } else { global $wpdb; - // Query the database for the coupons and only retrieve ID and post_title (coupon name). + // Query the database for the latest coupons and only retrieve ID and post_title (coupon name). $coupon_limit = apply_filters( 'swsales_wc_coupon_limit', 5000 ); - $coupons = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'shop_coupon' AND post_status = 'publish' LIMIT %d", $coupon_limit ), OBJECT ); + $coupon_limit = intval( $coupon_limit ); + $coupons = $wpdb->get_results( $wpdb->prepare( + "SELECT ID, post_title + FROM $wpdb->posts + WHERE post_type = 'shop_coupon' AND post_status = 'publish' + ORDER BY ID DESC + LIMIT %d", + $coupon_limit ), + OBJECT + ); // Get the current coupon (if set) for the sale. $current_coupon = intval( $cur_sale->get_meta_value( 'swsales_wc_coupon_id', null ) ); From da55a78eccb24b412d00522d0c03a37e782cc037 Mon Sep 17 00:00:00 2001 From: David Parker Date: Thu, 25 Jan 2024 12:23:14 -0500 Subject: [PATCH 3/6] Checking 3.0 class instead of version --- modules/ecommerce/pmpro/class-swsales-module-pmpro.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ecommerce/pmpro/class-swsales-module-pmpro.php b/modules/ecommerce/pmpro/class-swsales-module-pmpro.php index 2635eb9..ee346be 100644 --- a/modules/ecommerce/pmpro/class-swsales-module-pmpro.php +++ b/modules/ecommerce/pmpro/class-swsales-module-pmpro.php @@ -49,7 +49,7 @@ public static function init() { add_filter( 'swsales_show_banner', array( __CLASS__, 'show_banner' ), 10, 2 ); // PMPro automatic discount application and default levels. - if ( version_compare( PMPRO_VERSION, '3.0', '>=' ) ) { + if ( class_exists( 'PMPro_Subscription' ) ) { // PMPro 3.0+. Use filters for default level and discount code. add_filter( 'wp', array( __CLASS__, 'enable_shortcodes_for_legacy_sitewide_sale_setups' ), 2 ); // Priority 2 so that it is the same as core PMPro. add_filter( 'pmpro_default_level', array( __CLASS__, 'filter_default_level' ) ); From b8bf1f42db8e6e946530063b8c375392c1641823 Mon Sep 17 00:00:00 2001 From: David Parker Date: Thu, 25 Jan 2024 12:35:07 -0500 Subject: [PATCH 4/6] Fixing property name --- modules/ecommerce/edd/class-swsales-module-edd.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ecommerce/edd/class-swsales-module-edd.php b/modules/ecommerce/edd/class-swsales-module-edd.php index c550b13..36e0b1b 100644 --- a/modules/ecommerce/edd/class-swsales-module-edd.php +++ b/modules/ecommerce/edd/class-swsales-module-edd.php @@ -128,7 +128,7 @@ public static function add_choose_coupon( $cur_sale ) { ID ); + $discount_object = new \EDD_Discount( $coupon_found->id ); if ( ! empty( $discount_object->expiration ) && $cur_sale->get_end_date( 'Y-m-d H:i:s' ) > date('Y-m-d H:i:s', strtotime( $discount_object->expiration ) ) ) { echo "

" . __( "This discount code expires before the Sitewide Sale's end date.", 'sitewide-sales' ) . '

'; } elseif ( ! empty( $discount_object->start ) && $cur_sale->get_start_date( 'Y-m-d H:i:s' ) < date('Y-m-d H:i:s', strtotime( $discount_object->start ) ) ) { @@ -140,7 +140,7 @@ public static function add_choose_coupon( $cur_sale ) { ID ); + $edit_coupon_url = admin_url( 'edit.php?post_type=download&page=edd-discounts&edd-action=edit_discount&discount='.$coupon_found->id ); } else { $edit_coupon_url = '#'; } From d4029318c358adc5bf585419a7ec09fe8205e6d0 Mon Sep 17 00:00:00 2001 From: David Parker Date: Thu, 25 Jan 2024 12:57:11 -0500 Subject: [PATCH 5/6] Updated changelog and version numbers --- package.json | 2 +- readme.txt | 9 +++++++-- sitewide-sales.php | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7b159ec..6dd81ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sitewide-sales", - "version": "1.4.0", + "version": "1.4.1", "description": "Flash Sales for WordPress", "main": "webpack.config.js", "directories": { diff --git a/readme.txt b/readme.txt index 577b1ab..52359fa 100644 --- a/readme.txt +++ b/readme.txt @@ -2,8 +2,8 @@ Contributors: strangerstudios, dlparker1005 Tags: sales, sale, woocommerce, paid memberships pro, pmpro, black friday, cyber monday, discount Requires at least: 5.2 -Tested up to: 6.3 -Stable tag: 1.4 +Tested up to: 6.4 +Stable tag: 1.4.1 Run Black Friday, Cyber Monday, or other flash sales on your WordPress-powered eCommerce or membership site. @@ -22,6 +22,11 @@ This plugin offers modules for [WooCommerce](https://sitewidesales.com/modules/w 1. Create a new `Sitewide Sale` under `Sitewide Sales` > `Add New`. == Changelog == += 1.4.1 - 2024-01-25 = +* ENHANCEMENT: Updated the PMPro module to be compatible with PMPro 3.0+. #143 (@dparker1005) +* ENHANCEMENT: Now showing the latest coupons or discount codes in select dropdown to help sites with a large number of codes. #168 (@kimcoleman) +* ENHANCEMENT: Added filter `swsales_pmpro_discount_code_limit` to limit the number of PMPro discount codes shown in the dropdown. #168 (@kimcoleman) +* ENHANCEMENT: Added filter `swsales_edd_discount_code_limit` to limit the number of EDD discount codes shown in the dropdown. #168 (@kimcoleman) = 1.4 - 2023-11-01 = * FEATURE: Added feature to compare sale data for two separate sales for Reports. diff --git a/sitewide-sales.php b/sitewide-sales.php index 059f6ae..d9235f8 100644 --- a/sitewide-sales.php +++ b/sitewide-sales.php @@ -5,7 +5,7 @@ * Description: Run Black Friday, Cyber Monday, or other flash sales on your WordPress-powered eCommerce or membership site. * Author: Stranger Studios * Author URI: https://www.strangerstudios.com - * Version: 1.4 + * Version: 1.4.1 * Plugin URI: * License: GNU GPLv2+ * Text Domain: sitewide-sales @@ -16,7 +16,7 @@ defined( 'ABSPATH' ) || die( 'File cannot be accessed directly' ); -define( 'SWSALES_VERSION', '1.4' ); +define( 'SWSALES_VERSION', '1.4.1' ); define( 'SWSALES_BASE_FILE', __FILE__ ); define( 'SWSALES_DIR', dirname( __FILE__ ) ); define( 'SWSALES_BASENAME', plugin_basename( __FILE__ ) ); From d66aa9ff8120805e018aeff4ed2c72ff147045fc Mon Sep 17 00:00:00 2001 From: WordPress POT/PO/MO Generator <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 17:57:57 +0000 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=94=84=20Regenerate=20translation=20f?= =?UTF-8?q?iles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/sitewide-sales.mo | Bin 489 -> 491 bytes languages/sitewide-sales.po | 56 +++++++++++++++++- languages/sitewide-sales.pot | 106 +++++++++++++++++------------------ 3 files changed, 106 insertions(+), 56 deletions(-) diff --git a/languages/sitewide-sales.mo b/languages/sitewide-sales.mo index b54456aa63319e12e9951888f3031fcb0cfd5369..31fb1fc5c9de8fe3bb8c2a935b3a921900a1d040 100644 GIT binary patch delta 39 tcmaFK{F-@!3gh01s(MU%h8u$=7zIpp4GeXSOhXLKtxSQ)Y;rYY9suS03Yh=^ delta 36 scmaFO{E~Ts3ghmHs(KqkB^U*abqx)54b4If4Xg|;tqe>j*D~e-0M6A4D*ylh diff --git a/languages/sitewide-sales.po b/languages/sitewide-sales.po index 5c375de..99143af 100644 --- a/languages/sitewide-sales.po +++ b/languages/sitewide-sales.po @@ -1,15 +1,15 @@ -# Copyright (C) 2023 Stranger Studios +# Copyright (C) 2024 Stranger Studios # This file is distributed under the GNU GPLv2+. msgid "" msgstr "" -"Project-Id-Version: Sitewide Sales 1.4\n" +"Project-Id-Version: Sitewide Sales 1.4.1\n" "Report-Msgid-Bugs-To: info@strangerstudios.com\n" "Last-Translator: Stranger Studios \n" "Language-Team: Stranger Studios \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2023-11-16T10:19:05+00:00\n" +"POT-Creation-Date: 2024-01-25T17:57:56+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.9.0\n" "X-Domain: sitewide-sales\n" @@ -117,6 +117,8 @@ msgstr "" #: classes/class-swsales-landing-pages.php:254 #: classes/class-swsales-landing-pages.php:291 #: classes/class-swsales-metaboxes.php:852 +#: classes/class-swsales-landing-pages.php:255 +#: classes/class-swsales-landing-pages.php:292 msgid "Sitewide Sale Landing Page" msgstr "" @@ -124,10 +126,13 @@ msgstr "" #: classes/class-swsales-landing-pages.php:275 #: classes/class-swsales-landing-pages.php:307 #: classes/class-swsales-post-types.php:43 +#: classes/class-swsales-landing-pages.php:276 +#: classes/class-swsales-landing-pages.php:308 msgid "Edit Sitewide Sale" msgstr "" #: classes/class-swsales-landing-pages.php:303 +#: classes/class-swsales-landing-pages.php:304 msgid "Use the Sale Content block or Sale Period Visibility setting to display content before, during, and after the sale on this landing page." msgstr "" @@ -307,6 +312,10 @@ msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:231 #: modules/ecommerce/wc/class-swsales-module-wc.php:104 #: classes/class-swsales-reports.php:112 +#: modules/ecommerce/edd/class-swsales-module-edd.php:114 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:129 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:246 +#: modules/ecommerce/wc/class-swsales-module-wc.php:113 msgid "- Choose One -" msgstr "" @@ -404,6 +413,9 @@ msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:146 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:147 #: modules/ecommerce/wc/class-swsales-module-wc.php:136 +#: modules/ecommerce/edd/class-swsales-module-edd.php:151 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:162 +#: modules/ecommerce/wc/class-swsales-module-wc.php:145 msgid " or " msgstr "" @@ -475,6 +487,9 @@ msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:203 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:561 #: modules/ecommerce/wc/class-swsales-module-wc.php:193 +#: modules/ecommerce/edd/class-swsales-module-edd.php:208 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:576 +#: modules/ecommerce/wc/class-swsales-module-wc.php:202 msgid "No sitewide sale ID given. Try doing it manually." msgstr "" @@ -1042,6 +1057,7 @@ msgstr "" #: modules/ecommerce/custom/class-swsales-module-custom.php:62 #: modules/ecommerce/wc/class-swsales-module-wc.php:101 +#: modules/ecommerce/wc/class-swsales-module-wc.php:110 msgid "Coupon" msgstr "" @@ -1219,70 +1235,91 @@ msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:106 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:111 +#: modules/ecommerce/edd/class-swsales-module-edd.php:111 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:126 msgid "Discount Code" msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:128 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:130 +#: modules/ecommerce/edd/class-swsales-module-edd.php:133 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:145 msgid "This discount code expires before the Sitewide Sale's end date." msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:130 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:132 +#: modules/ecommerce/edd/class-swsales-module-edd.php:135 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:147 msgid "This discount code starts after the Sitewide Sale's start date." msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:144 +#: modules/ecommerce/edd/class-swsales-module-edd.php:149 msgid "edit discount code" msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:149 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:150 +#: modules/ecommerce/edd/class-swsales-module-edd.php:154 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:165 msgid "create a new discount code" msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:150 +#: modules/ecommerce/edd/class-swsales-module-edd.php:155 msgid "Select the discount code that will be automatically applied for users when they visit your Landing Page." msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:356 +#: modules/ecommerce/edd/class-swsales-module-edd.php:361 msgid "Original price" msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:356 +#: modules/ecommerce/edd/class-swsales-module-edd.php:361 msgid "sale price" msgstr "" #: modules/ecommerce/edd/class-swsales-module-edd.php:397 #: modules/ecommerce/wc/class-swsales-module-wc.php:473 +#: modules/ecommerce/edd/class-swsales-module-edd.php:402 +#: modules/ecommerce/wc/class-swsales-module-wc.php:482 msgid "Purchases using %s" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:145 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:160 msgid "edit code" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:151 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:166 msgid "Select the code that will be automatically applied for users that complete an applicable membership checkout after visiting your Landing Page." msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:178 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:193 msgid "Hide Sale by Level" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:200 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:215 msgid "This setting will completely hide the sale from users with the selected levels (including the banner and discount logic)." msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:228 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:243 msgid "Checkout Level" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:243 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:258 msgid "Using the [pmpro_checkout] shortcode on your Landing Page will display a checkout form for this level." msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:276 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:291 msgid "Successfully migrated %d Sitewide Sale from the Sitewide Sales Add On for Paid Memberships Pro." msgid_plural "Successfully migrated %d Sitewide Sales from the Sitewide Sales Add On for Paid Memberships Pro." msgstr[0] "" @@ -1290,47 +1327,60 @@ msgstr[1] "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:302 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:331 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:317 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:346 msgid "Migrate Your Previous Sales Data" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:303 #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:332 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:318 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:347 msgid "We have detected data from the Sitewide Sales Add On for Paid Memberships Pro. You can migrate this data into the new Sitewide Sales plugin and maintain access to previous sales, settings, and reports. The database migration process will attempt to run in a single process, so please be patient." msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:307 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:322 msgid "Migrate PMPro Sitewide Sales Data" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:310 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:325 msgid "Dismiss This Notice" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:336 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:351 msgid "Migrate PMPro Sitewide Sales Data »" msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:589 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:604 msgid "Error inserting discount code. Try doing it manually." msgstr "" #: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:788 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:947 msgid "Checkouts using %s" msgstr "" #: modules/ecommerce/wc/class-swsales-module-wc.php:121 +#: modules/ecommerce/wc/class-swsales-module-wc.php:130 msgid "This coupon expires on or before the Sitewide Sale's end date." msgstr "" #: modules/ecommerce/wc/class-swsales-module-wc.php:134 +#: modules/ecommerce/wc/class-swsales-module-wc.php:143 msgid "edit coupon" msgstr "" #: modules/ecommerce/wc/class-swsales-module-wc.php:139 +#: modules/ecommerce/wc/class-swsales-module-wc.php:148 msgid "create a new coupon" msgstr "" #: modules/ecommerce/wc/class-swsales-module-wc.php:140 +#: modules/ecommerce/wc/class-swsales-module-wc.php:149 msgid "Select the coupon that will be automatically applied for users when they visit your Landing Page." msgstr "" diff --git a/languages/sitewide-sales.pot b/languages/sitewide-sales.pot index da6783a..feaf3c1 100644 --- a/languages/sitewide-sales.pot +++ b/languages/sitewide-sales.pot @@ -1,15 +1,15 @@ -# Copyright (C) 2023 Stranger Studios +# Copyright (C) 2024 Stranger Studios # This file is distributed under the GNU GPLv2+. msgid "" msgstr "" -"Project-Id-Version: Sitewide Sales 1.4\n" +"Project-Id-Version: Sitewide Sales 1.4.1\n" "Report-Msgid-Bugs-To: info@strangerstudios.com\n" "Last-Translator: Stranger Studios \n" "Language-Team: Stranger Studios \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2023-11-16T10:19:04+00:00\n" +"POT-Creation-Date: 2024-01-25T17:57:54+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.9.0\n" "X-Domain: sitewide-sales\n" @@ -119,20 +119,20 @@ msgstr "" msgid "Seconds" msgstr "" -#: classes/class-swsales-landing-pages.php:254 -#: classes/class-swsales-landing-pages.php:291 +#: classes/class-swsales-landing-pages.php:255 +#: classes/class-swsales-landing-pages.php:292 #: classes/class-swsales-metaboxes.php:852 msgid "Sitewide Sale Landing Page" msgstr "" -#: classes/class-swsales-landing-pages.php:274 #: classes/class-swsales-landing-pages.php:275 -#: classes/class-swsales-landing-pages.php:307 +#: classes/class-swsales-landing-pages.php:276 +#: classes/class-swsales-landing-pages.php:308 #: classes/class-swsales-post-types.php:43 msgid "Edit Sitewide Sale" msgstr "" -#: classes/class-swsales-landing-pages.php:303 +#: classes/class-swsales-landing-pages.php:304 msgid "Use the Sale Content block or Sale Period Visibility setting to display content before, during, and after the sale on this landing page." msgstr "" @@ -302,10 +302,10 @@ msgstr "" #: classes/class-swsales-metaboxes.php:297 #: classes/class-swsales-reports.php:112 #: modules/banner/blocks/class-swsales-banner-module-blocks.php:229 -#: modules/ecommerce/edd/class-swsales-module-edd.php:109 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:114 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:231 -#: modules/ecommerce/wc/class-swsales-module-wc.php:104 +#: modules/ecommerce/edd/class-swsales-module-edd.php:114 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:129 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:246 +#: modules/ecommerce/wc/class-swsales-module-wc.php:113 msgid "- Choose One -" msgstr "" @@ -400,9 +400,9 @@ msgstr "" #: classes/class-swsales-metaboxes.php:528 #: modules/banner/blocks/class-swsales-banner-module-blocks.php:257 -#: modules/ecommerce/edd/class-swsales-module-edd.php:146 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:147 -#: modules/ecommerce/wc/class-swsales-module-wc.php:136 +#: modules/ecommerce/edd/class-swsales-module-edd.php:151 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:162 +#: modules/ecommerce/wc/class-swsales-module-wc.php:145 msgid " or " msgstr "" @@ -471,9 +471,9 @@ msgstr "" #: classes/class-swsales-metaboxes.php:841 #: modules/banner/blocks/class-swsales-banner-module-blocks.php:355 -#: modules/ecommerce/edd/class-swsales-module-edd.php:203 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:561 -#: modules/ecommerce/wc/class-swsales-module-wc.php:193 +#: modules/ecommerce/edd/class-swsales-module-edd.php:208 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:576 +#: modules/ecommerce/wc/class-swsales-module-wc.php:202 msgid "No sitewide sale ID given. Try doing it manually." msgstr "" @@ -1020,7 +1020,7 @@ msgid "Use these selectors to alter the appearance of your banners." msgstr "" #: modules/ecommerce/custom/class-swsales-module-custom.php:62 -#: modules/ecommerce/wc/class-swsales-module-wc.php:101 +#: modules/ecommerce/wc/class-swsales-module-wc.php:110 msgid "Coupon" msgstr "" @@ -1196,120 +1196,120 @@ msgstr "" msgid "Vietnamese Dong" msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:106 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:111 +#: modules/ecommerce/edd/class-swsales-module-edd.php:111 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:126 msgid "Discount Code" msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:128 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:130 +#: modules/ecommerce/edd/class-swsales-module-edd.php:133 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:145 msgid "This discount code expires before the Sitewide Sale's end date." msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:130 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:132 +#: modules/ecommerce/edd/class-swsales-module-edd.php:135 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:147 msgid "This discount code starts after the Sitewide Sale's start date." msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:144 +#: modules/ecommerce/edd/class-swsales-module-edd.php:149 msgid "edit discount code" msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:149 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:150 +#: modules/ecommerce/edd/class-swsales-module-edd.php:154 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:165 msgid "create a new discount code" msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:150 +#: modules/ecommerce/edd/class-swsales-module-edd.php:155 msgid "Select the discount code that will be automatically applied for users when they visit your Landing Page." msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:356 +#: modules/ecommerce/edd/class-swsales-module-edd.php:361 msgid "Original price" msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:356 +#: modules/ecommerce/edd/class-swsales-module-edd.php:361 msgid "sale price" msgstr "" -#: modules/ecommerce/edd/class-swsales-module-edd.php:397 -#: modules/ecommerce/wc/class-swsales-module-wc.php:473 +#: modules/ecommerce/edd/class-swsales-module-edd.php:402 +#: modules/ecommerce/wc/class-swsales-module-wc.php:482 msgid "Purchases using %s" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:145 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:160 msgid "edit code" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:151 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:166 msgid "Select the code that will be automatically applied for users that complete an applicable membership checkout after visiting your Landing Page." msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:178 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:193 msgid "Hide Sale by Level" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:200 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:215 msgid "This setting will completely hide the sale from users with the selected levels (including the banner and discount logic)." msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:228 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:243 msgid "Checkout Level" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:243 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:258 msgid "Using the [pmpro_checkout] shortcode on your Landing Page will display a checkout form for this level." msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:276 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:291 msgid "Successfully migrated %d Sitewide Sale from the Sitewide Sales Add On for Paid Memberships Pro." msgid_plural "Successfully migrated %d Sitewide Sales from the Sitewide Sales Add On for Paid Memberships Pro." msgstr[0] "" msgstr[1] "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:302 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:331 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:317 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:346 msgid "Migrate Your Previous Sales Data" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:303 -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:332 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:318 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:347 msgid "We have detected data from the Sitewide Sales Add On for Paid Memberships Pro. You can migrate this data into the new Sitewide Sales plugin and maintain access to previous sales, settings, and reports. The database migration process will attempt to run in a single process, so please be patient." msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:307 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:322 msgid "Migrate PMPro Sitewide Sales Data" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:310 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:325 msgid "Dismiss This Notice" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:336 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:351 msgid "Migrate PMPro Sitewide Sales Data »" msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:589 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:604 msgid "Error inserting discount code. Try doing it manually." msgstr "" -#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:788 +#: modules/ecommerce/pmpro/class-swsales-module-pmpro.php:947 msgid "Checkouts using %s" msgstr "" -#: modules/ecommerce/wc/class-swsales-module-wc.php:121 +#: modules/ecommerce/wc/class-swsales-module-wc.php:130 msgid "This coupon expires on or before the Sitewide Sale's end date." msgstr "" -#: modules/ecommerce/wc/class-swsales-module-wc.php:134 +#: modules/ecommerce/wc/class-swsales-module-wc.php:143 msgid "edit coupon" msgstr "" -#: modules/ecommerce/wc/class-swsales-module-wc.php:139 +#: modules/ecommerce/wc/class-swsales-module-wc.php:148 msgid "create a new coupon" msgstr "" -#: modules/ecommerce/wc/class-swsales-module-wc.php:140 +#: modules/ecommerce/wc/class-swsales-module-wc.php:149 msgid "Select the coupon that will be automatically applied for users when they visit your Landing Page." msgstr ""