You've already forked wc-tier-and-package-prices
Release version 1.1.0 - Package quantity restriction feature
Added comprehensive package quantity restriction functionality that allows limiting product purchases to predefined package sizes only. Features: - Global setting to enable package quantity restrictions - Per-product override for quantity restrictions - Automatic hiding of quantity input field when restricted - Frontend validation with package selection UI - Server-side cart validation - User-friendly error messages - Complete translations for all supported languages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,8 @@
|
||||
"Bash(mkdir:*)",
|
||||
"Bash(composer init:*)",
|
||||
"Bash(composer install:*)",
|
||||
"Bash(composer update:*)"
|
||||
"Bash(composer update:*)",
|
||||
"Bash(git add:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
30
CHANGELOG.md
30
CHANGELOG.md
@@ -5,6 +5,36 @@ All notable changes to WooCommerce Tier and Package Prices will be documented in
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.1.0] - 2025-12-21
|
||||
|
||||
### Added
|
||||
- Package quantity restriction feature
|
||||
- Global setting to restrict quantities to defined package sizes
|
||||
- Per-product setting to restrict quantities to defined package sizes
|
||||
- Frontend validation preventing non-package quantities
|
||||
- Server-side cart validation for package quantities
|
||||
- User-friendly error messages showing available package sizes
|
||||
- Automatic quantity field hiding when restriction is enabled
|
||||
- Package selection UI with highlighted states
|
||||
|
||||
### Changed
|
||||
- Enhanced package pricing display template with restriction mode support
|
||||
- Improved JavaScript to handle restricted mode package selection
|
||||
- Updated frontend to show "Choose a package size below" notice in restricted mode
|
||||
|
||||
### Technical
|
||||
- Added `validate_package_quantity()` method in WC_TPP_Cart class
|
||||
- Added `maybe_hide_quantity_input()` method in WC_TPP_Frontend class
|
||||
- Extended `woocommerce_add_to_cart_validation` filter hook
|
||||
- Added `wc-tpp-restricted-mode` CSS class for styling
|
||||
- New product meta: `_wc_tpp_restrict_to_packages`
|
||||
- New global option: `wc_tpp_restrict_package_quantities`
|
||||
|
||||
### Translations
|
||||
- Added 7 new translatable strings
|
||||
- Updated all translations (en_US, de_DE, de_CH_informal)
|
||||
- Compiled all .mo files with new strings
|
||||
|
||||
## [1.0.2] - 2025-12-21
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -8,8 +8,9 @@
|
||||
$(document).ready(function() {
|
||||
const $quantityInput = $('input.qty');
|
||||
const $priceDisplay = $('.woocommerce-Price-amount.amount').first();
|
||||
const isRestrictedMode = $('.wc-tpp-package-pricing-table').hasClass('wc-tpp-restricted-mode');
|
||||
|
||||
if ($quantityInput.length === 0) {
|
||||
if ($quantityInput.length === 0 && !isRestrictedMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -164,7 +165,30 @@
|
||||
const $package = $(this).closest('.wc-tpp-package');
|
||||
const qty = parseInt($package.data('qty'));
|
||||
|
||||
if (isRestrictedMode) {
|
||||
// In restricted mode, we need to set a hidden input or use data attribute
|
||||
// since the quantity field is hidden
|
||||
if ($quantityInput.length === 0) {
|
||||
// Create a hidden quantity input if it doesn't exist
|
||||
if ($('.qty-hidden-input').length === 0) {
|
||||
$('.single_add_to_cart_button').before('<input type="hidden" name="quantity" class="qty qty-hidden-input" value="1" />');
|
||||
}
|
||||
$('.qty-hidden-input').val(qty);
|
||||
} else {
|
||||
$quantityInput.val(qty);
|
||||
}
|
||||
|
||||
// Highlight selected package
|
||||
$('.wc-tpp-package').removeClass('wc-tpp-selected');
|
||||
$package.addClass('wc-tpp-selected');
|
||||
|
||||
// Update price display
|
||||
const price = parseFloat($package.data('price'));
|
||||
const unitPrice = price / qty;
|
||||
updatePrice(unitPrice, 'Package price: ' + formatPrice(price) + ' total');
|
||||
} else {
|
||||
$quantityInput.val(qty).trigger('change');
|
||||
}
|
||||
|
||||
// Scroll to add to cart button
|
||||
$('html, body').animate({
|
||||
@@ -172,8 +196,22 @@
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// In restricted mode, prevent form submission if no package is selected
|
||||
if (isRestrictedMode) {
|
||||
$('form.cart').on('submit', function(e) {
|
||||
const hasSelection = $('.wc-tpp-package.wc-tpp-selected').length > 0;
|
||||
if (!hasSelection) {
|
||||
e.preventDefault();
|
||||
alert('Please select a package size before adding to cart.');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Initial update
|
||||
if (!isRestrictedMode) {
|
||||
updatePriceDisplay();
|
||||
}
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "magdev/wc-tier-package-prices",
|
||||
"description": "WooCommerce plugin for tier pricing and package prices with Twig templates",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.0",
|
||||
"type": "wordpress-plugin",
|
||||
"license": "GPL-2.0-or-later",
|
||||
"authors": [
|
||||
|
||||
@@ -13,6 +13,7 @@ class WC_TPP_Cart {
|
||||
add_action('woocommerce_before_calculate_totals', array($this, 'apply_tier_package_pricing'), 10, 1);
|
||||
add_filter('woocommerce_cart_item_price', array($this, 'display_cart_item_price'), 10, 3);
|
||||
add_filter('woocommerce_cart_item_subtotal', array($this, 'display_cart_item_subtotal'), 10, 3);
|
||||
add_filter('woocommerce_add_to_cart_validation', array($this, 'validate_package_quantity'), 10, 3);
|
||||
}
|
||||
|
||||
public function apply_tier_package_pricing($cart) {
|
||||
@@ -89,6 +90,53 @@ class WC_TPP_Cart {
|
||||
}
|
||||
return $subtotal;
|
||||
}
|
||||
|
||||
public function validate_package_quantity($passed, $product_id, $quantity) {
|
||||
// Check if restriction is enabled globally or for this product
|
||||
$global_restrict = get_option('wc_tpp_restrict_package_quantities', 'no') === 'yes';
|
||||
$product_restrict = get_post_meta($product_id, '_wc_tpp_restrict_to_packages', true) === 'yes';
|
||||
|
||||
if (!$global_restrict && !$product_restrict) {
|
||||
return $passed;
|
||||
}
|
||||
|
||||
// Get packages for this product
|
||||
$packages = get_post_meta($product_id, '_wc_tpp_packages', true);
|
||||
|
||||
if (empty($packages) || !is_array($packages)) {
|
||||
return $passed;
|
||||
}
|
||||
|
||||
// Check if the quantity matches any package
|
||||
$valid_quantity = false;
|
||||
$available_quantities = array();
|
||||
|
||||
foreach ($packages as $package) {
|
||||
$available_quantities[] = $package['qty'];
|
||||
if ($quantity == $package['qty']) {
|
||||
$valid_quantity = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$valid_quantity) {
|
||||
$product = wc_get_product($product_id);
|
||||
$product_name = $product ? $product->get_name() : __('this product', 'wc-tier-package-prices');
|
||||
|
||||
wc_add_notice(
|
||||
sprintf(
|
||||
__('The quantity %1$d is not available for %2$s. Please choose from the available package sizes: %3$s', 'wc-tier-package-prices'),
|
||||
$quantity,
|
||||
$product_name,
|
||||
implode(', ', $available_quantities)
|
||||
),
|
||||
'error'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return $passed;
|
||||
}
|
||||
}
|
||||
|
||||
new WC_TPP_Cart();
|
||||
|
||||
@@ -14,6 +14,7 @@ class WC_TPP_Frontend {
|
||||
add_action('woocommerce_before_add_to_cart_button', array($this, 'display_pricing_table_before'), 20);
|
||||
add_action('woocommerce_after_add_to_cart_button', array($this, 'display_pricing_table_after'), 10);
|
||||
add_action('woocommerce_single_product_summary', array($this, 'display_pricing_table_after_price'), 15);
|
||||
add_action('woocommerce_before_add_to_cart_quantity', array($this, 'maybe_hide_quantity_input'));
|
||||
}
|
||||
|
||||
public function enqueue_scripts() {
|
||||
@@ -50,6 +51,24 @@ class WC_TPP_Frontend {
|
||||
}
|
||||
}
|
||||
|
||||
public function maybe_hide_quantity_input() {
|
||||
global $product;
|
||||
|
||||
if (!$product || !is_a($product, 'WC_Product')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$product_id = $product->get_id();
|
||||
$global_restrict = get_option('wc_tpp_restrict_package_quantities', 'no') === 'yes';
|
||||
$product_restrict = get_post_meta($product_id, '_wc_tpp_restrict_to_packages', true) === 'yes';
|
||||
$packages = get_post_meta($product_id, '_wc_tpp_packages', true);
|
||||
|
||||
// Hide quantity input if restriction is enabled and packages exist
|
||||
if (($global_restrict || $product_restrict) && !empty($packages)) {
|
||||
echo '<style>.quantity { display: none !important; }</style>';
|
||||
}
|
||||
}
|
||||
|
||||
public function display_pricing_table() {
|
||||
global $product;
|
||||
|
||||
@@ -60,6 +79,8 @@ class WC_TPP_Frontend {
|
||||
$product_id = $product->get_id();
|
||||
$tiers = get_post_meta($product_id, '_wc_tpp_tiers', true);
|
||||
$packages = get_post_meta($product_id, '_wc_tpp_packages', true);
|
||||
$global_restrict = get_option('wc_tpp_restrict_package_quantities', 'no') === 'yes';
|
||||
$product_restrict = get_post_meta($product_id, '_wc_tpp_restrict_to_packages', true) === 'yes';
|
||||
|
||||
if (empty($tiers) && empty($packages)) {
|
||||
return;
|
||||
@@ -68,7 +89,8 @@ class WC_TPP_Frontend {
|
||||
WC_TPP_Template_Loader::get_instance()->display('frontend/pricing-table.twig', array(
|
||||
'product' => $product,
|
||||
'tiers' => $tiers,
|
||||
'packages' => $packages
|
||||
'packages' => $packages,
|
||||
'restrict_to_packages' => $global_restrict || $product_restrict
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,15 @@ class WC_TPP_Product_Meta {
|
||||
<p class="form-field">
|
||||
<button type="button" class="button wc-tpp-add-package"><?php _e('Add Package', 'wc-tier-package-prices'); ?></button>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
woocommerce_wp_checkbox(array(
|
||||
'id' => '_wc_tpp_restrict_to_packages',
|
||||
'label' => __('Restrict to Package Quantities', 'wc-tier-package-prices'),
|
||||
'description' => __('Only allow quantities defined in packages above', 'wc-tier-package-prices'),
|
||||
'desc_tip' => true,
|
||||
));
|
||||
?>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="wc-tpp-tier-row-template">
|
||||
@@ -151,6 +160,10 @@ class WC_TPP_Product_Meta {
|
||||
} else {
|
||||
delete_post_meta($post_id, '_wc_tpp_packages');
|
||||
}
|
||||
|
||||
// Save package quantity restriction setting
|
||||
$restrict_to_packages = isset($_POST['_wc_tpp_restrict_to_packages']) ? 'yes' : 'no';
|
||||
update_post_meta($post_id, '_wc_tpp_restrict_to_packages', $restrict_to_packages);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -104,6 +104,15 @@ class WC_TPP_Settings extends WC_Settings_Page {
|
||||
),
|
||||
),
|
||||
|
||||
array(
|
||||
'title' => __('Restrict to Package Quantities', 'wc-tier-package-prices'),
|
||||
'desc' => __('Limit quantities to defined package sizes only', 'wc-tier-package-prices'),
|
||||
'id' => 'wc_tpp_restrict_package_quantities',
|
||||
'default' => 'no',
|
||||
'type' => 'checkbox',
|
||||
'desc_tip' => __('When enabled, customers can only purchase products in the exact quantities defined in packages. The quantity input field will be hidden and replaced with package selection buttons.', 'wc-tier-package-prices'),
|
||||
),
|
||||
|
||||
array(
|
||||
'type' => 'sectionend',
|
||||
'id' => 'wc_tpp_settings',
|
||||
|
||||
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
# This file is distributed under the GPL v2 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.0.0\n"
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://src.bundespruefstelle.ch/wc-tier-package-prices\n"
|
||||
"POT-Creation-Date: 2025-12-21 00:00+0000\n"
|
||||
"PO-Revision-Date: 2025-12-21 00:00+0000\n"
|
||||
@@ -23,37 +23,81 @@ msgstr "WooCommerce Staffel- und Paketpreise benötigt eine installierte und akt
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:21
|
||||
#: includes/class-wc-tpp-admin.php:22
|
||||
#: includes/class-wc-tpp-settings.php:28
|
||||
msgid "Tier & Package Prices"
|
||||
msgstr "Staffel- & Paketpreise"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:40
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:58
|
||||
msgid "Tier & Package Prices Settings"
|
||||
msgstr "Staffel- & Paketpreise Einstellungen"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:60
|
||||
msgid "Configure tier pricing and package pricing options for your WooCommerce products."
|
||||
msgstr "Konfiguriere Staffelpreise und Paketpreise für deine WooCommerce-Produkte."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:54
|
||||
#: includes/class-wc-tpp-settings.php:65
|
||||
msgid "Enable Tier Pricing"
|
||||
msgstr "Staffelpreise aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:58
|
||||
#: includes/class-wc-tpp-settings.php:66
|
||||
msgid "Enable tier pricing for products"
|
||||
msgstr "Staffelpreise für Produkte aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:70
|
||||
msgid "Allow quantity-based pricing tiers. Customers get discounted prices when buying in larger quantities."
|
||||
msgstr "Ermöglicht mengenbasierte Preisstaffeln. Kunden erhalten reduzierte Preise beim Kauf grösserer Mengen."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:63
|
||||
#: includes/class-wc-tpp-settings.php:74
|
||||
msgid "Enable Package Pricing"
|
||||
msgstr "Paketpreise aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:67
|
||||
#: includes/class-wc-tpp-settings.php:75
|
||||
msgid "Enable fixed-price packages for products"
|
||||
msgstr "Festpreis-Pakete für Produkte aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:79
|
||||
msgid "Allow fixed-price packages with specific quantities. For example: 10 pieces for $50, 25 pieces for $100."
|
||||
msgstr "Ermöglicht Festpreis-Pakete mit bestimmten Mengen. Zum Beispiel: 10 Stück für CHF 50.-, 25 Stück für CHF 100.-."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:72
|
||||
#: includes/class-wc-tpp-settings.php:83
|
||||
msgid "Display Pricing Table"
|
||||
msgstr "Preistabelle anzeigen"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:76
|
||||
#: includes/class-wc-tpp-settings.php:84
|
||||
msgid "Show tier and package pricing table on product pages"
|
||||
msgstr "Staffel- und Paketpreis-Tabelle auf Produktseiten anzeigen"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:88
|
||||
msgid "Display the pricing table to customers on product pages."
|
||||
msgstr "Zeigt die Preistabelle den Kunden auf Produktseiten an."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:81
|
||||
#: includes/class-wc-tpp-settings.php:92
|
||||
msgid "Display Position"
|
||||
msgstr "Anzeigeposition"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:93
|
||||
msgid "Choose where to display the pricing table on product pages."
|
||||
msgstr "Wähle, wo die Preistabelle auf Produktseiten angezeigt werden soll."
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:101
|
||||
msgid "Before Add to Cart Button"
|
||||
msgstr "Vor \"In den Warenkorb\"-Button"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:102
|
||||
msgid "After Add to Cart Button"
|
||||
msgstr "Nach \"In den Warenkorb\"-Button"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:85
|
||||
msgid "Before Add to Cart"
|
||||
msgstr "Vor \"In den Warenkorb\""
|
||||
@@ -63,9 +107,23 @@ msgid "After Add to Cart"
|
||||
msgstr "Nach \"In den Warenkorb\""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:87
|
||||
#: includes/class-wc-tpp-settings.php:103
|
||||
msgid "After Price"
|
||||
msgstr "Nach dem Preis"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:108
|
||||
#: includes/class-wc-tpp-product-meta.php:76
|
||||
msgid "Restrict to Package Quantities"
|
||||
msgstr "Auf Paketmengen beschränken"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:109
|
||||
msgid "Limit quantities to defined package sizes only"
|
||||
msgstr "Mengen nur auf definierte Paketgrössen beschränken"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:113
|
||||
msgid "When enabled, customers can only purchase products in the exact quantities defined in packages. The quantity input field will be hidden and replaced with package selection buttons."
|
||||
msgstr "Wenn aktiviert, kannst du Produkte nur in den genau definierten Paketmengen kaufen. Das Mengeneingabefeld wird ausgeblendet und durch Paketauswahl-Buttons ersetzt."
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:23
|
||||
msgid "Tier Pricing"
|
||||
msgstr "Staffelpreise"
|
||||
@@ -90,6 +148,10 @@ msgstr "Festpreis-Pakete mit bestimmten Mengen festlegen. Zum Beispiel: 10 Stüc
|
||||
msgid "Add Package"
|
||||
msgstr "Paket hinzufügen"
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:77
|
||||
msgid "Only allow quantities defined in packages above"
|
||||
msgstr "Nur oben definierte Paketmengen zulassen"
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:90
|
||||
msgid "Minimum Quantity"
|
||||
msgstr "Mindestmenge"
|
||||
@@ -142,6 +204,10 @@ msgstr "Du sparst"
|
||||
msgid "Package Deals"
|
||||
msgstr "Paketangebote"
|
||||
|
||||
#: templates/frontend/package-pricing-display.twig:11
|
||||
msgid "Choose a package size below"
|
||||
msgstr "Wähle unten eine Paketgrösse"
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:123
|
||||
msgid "pieces"
|
||||
msgstr "Stück"
|
||||
@@ -161,3 +227,11 @@ msgstr "Paketpreis"
|
||||
#: includes/class-wc-tpp-cart.php:66
|
||||
msgid "Volume discount"
|
||||
msgstr "Mengenrabatt"
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:124
|
||||
msgid "this product"
|
||||
msgstr "dieses Produkt"
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:128
|
||||
msgid "The quantity %1$d is not available for %2$s. Please choose from the available package sizes: %3$s"
|
||||
msgstr "Die Menge %1$d ist für %2$s nicht verfügbar. Bitte wähle aus den verfügbaren Paketgrössen: %3$s"
|
||||
|
||||
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
# This file is distributed under the GPL v2 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.0.0\n"
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://src.bundespruefstelle.ch/wc-tier-package-prices\n"
|
||||
"POT-Creation-Date: 2025-12-21 00:00+0000\n"
|
||||
"PO-Revision-Date: 2025-12-21 00:00+0000\n"
|
||||
@@ -23,37 +23,81 @@ msgstr "WooCommerce Staffel- und Paketpreise erfordert, dass WooCommerce install
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:21
|
||||
#: includes/class-wc-tpp-admin.php:22
|
||||
#: includes/class-wc-tpp-settings.php:28
|
||||
msgid "Tier & Package Prices"
|
||||
msgstr "Staffel- & Paketpreise"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:40
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:58
|
||||
msgid "Tier & Package Prices Settings"
|
||||
msgstr "Staffel- & Paketpreise Einstellungen"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:60
|
||||
msgid "Configure tier pricing and package pricing options for your WooCommerce products."
|
||||
msgstr "Konfigurieren Sie Staffelpreise und Paketpreise für Ihre WooCommerce-Produkte."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:54
|
||||
#: includes/class-wc-tpp-settings.php:65
|
||||
msgid "Enable Tier Pricing"
|
||||
msgstr "Staffelpreise aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:58
|
||||
#: includes/class-wc-tpp-settings.php:66
|
||||
msgid "Enable tier pricing for products"
|
||||
msgstr "Staffelpreise für Produkte aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:70
|
||||
msgid "Allow quantity-based pricing tiers. Customers get discounted prices when buying in larger quantities."
|
||||
msgstr "Ermöglicht mengenbasierte Preisstaffeln. Kunden erhalten reduzierte Preise beim Kauf größerer Mengen."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:63
|
||||
#: includes/class-wc-tpp-settings.php:74
|
||||
msgid "Enable Package Pricing"
|
||||
msgstr "Paketpreise aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:67
|
||||
#: includes/class-wc-tpp-settings.php:75
|
||||
msgid "Enable fixed-price packages for products"
|
||||
msgstr "Festpreis-Pakete für Produkte aktivieren"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:79
|
||||
msgid "Allow fixed-price packages with specific quantities. For example: 10 pieces for $50, 25 pieces for $100."
|
||||
msgstr "Ermöglicht Festpreis-Pakete mit bestimmten Mengen. Zum Beispiel: 10 Stück für 50€, 25 Stück für 100€."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:72
|
||||
#: includes/class-wc-tpp-settings.php:83
|
||||
msgid "Display Pricing Table"
|
||||
msgstr "Preistabelle anzeigen"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:76
|
||||
#: includes/class-wc-tpp-settings.php:84
|
||||
msgid "Show tier and package pricing table on product pages"
|
||||
msgstr "Staffel- und Paketpreis-Tabelle auf Produktseiten anzeigen"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:88
|
||||
msgid "Display the pricing table to customers on product pages."
|
||||
msgstr "Zeigt die Preistabelle den Kunden auf Produktseiten an."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:81
|
||||
#: includes/class-wc-tpp-settings.php:92
|
||||
msgid "Display Position"
|
||||
msgstr "Anzeigeposition"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:93
|
||||
msgid "Choose where to display the pricing table on product pages."
|
||||
msgstr "Wählen Sie, wo die Preistabelle auf Produktseiten angezeigt werden soll."
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:101
|
||||
msgid "Before Add to Cart Button"
|
||||
msgstr "Vor \"In den Warenkorb\"-Button"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:102
|
||||
msgid "After Add to Cart Button"
|
||||
msgstr "Nach \"In den Warenkorb\"-Button"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:85
|
||||
msgid "Before Add to Cart"
|
||||
msgstr "Vor \"In den Warenkorb\""
|
||||
@@ -63,9 +107,23 @@ msgid "After Add to Cart"
|
||||
msgstr "Nach \"In den Warenkorb\""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:87
|
||||
#: includes/class-wc-tpp-settings.php:103
|
||||
msgid "After Price"
|
||||
msgstr "Nach dem Preis"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:108
|
||||
#: includes/class-wc-tpp-product-meta.php:76
|
||||
msgid "Restrict to Package Quantities"
|
||||
msgstr "Auf Paketmengen beschränken"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:109
|
||||
msgid "Limit quantities to defined package sizes only"
|
||||
msgstr "Mengen nur auf definierte Paketgrößen beschränken"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:113
|
||||
msgid "When enabled, customers can only purchase products in the exact quantities defined in packages. The quantity input field will be hidden and replaced with package selection buttons."
|
||||
msgstr "Wenn aktiviert, können Kunden Produkte nur in den genau definierten Paketmengen kaufen. Das Mengeneingabefeld wird ausgeblendet und durch Paketauswahl-Buttons ersetzt."
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:23
|
||||
msgid "Tier Pricing"
|
||||
msgstr "Staffelpreise"
|
||||
@@ -90,6 +148,10 @@ msgstr "Festpreis-Pakete mit bestimmten Mengen festlegen. Zum Beispiel: 10 Stüc
|
||||
msgid "Add Package"
|
||||
msgstr "Paket hinzufügen"
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:77
|
||||
msgid "Only allow quantities defined in packages above"
|
||||
msgstr "Nur oben definierte Paketmengen zulassen"
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:90
|
||||
msgid "Minimum Quantity"
|
||||
msgstr "Mindestmenge"
|
||||
@@ -142,6 +204,10 @@ msgstr "Sie sparen"
|
||||
msgid "Package Deals"
|
||||
msgstr "Paketangebote"
|
||||
|
||||
#: templates/frontend/package-pricing-display.twig:11
|
||||
msgid "Choose a package size below"
|
||||
msgstr "Wählen Sie unten eine Paketgröße"
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:123
|
||||
msgid "pieces"
|
||||
msgstr "Stück"
|
||||
@@ -161,3 +227,11 @@ msgstr "Paketpreis"
|
||||
#: includes/class-wc-tpp-cart.php:66
|
||||
msgid "Volume discount"
|
||||
msgstr "Mengenrabatt"
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:124
|
||||
msgid "this product"
|
||||
msgstr "dieses Produkt"
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:128
|
||||
msgid "The quantity %1$d is not available for %2$s. Please choose from the available package sizes: %3$s"
|
||||
msgstr "Die Menge %1$d ist für %2$s nicht verfügbar. Bitte wählen Sie aus den verfügbaren Paketgrößen: %3$s"
|
||||
|
||||
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
# This file is distributed under the GPL v2 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.0.0\n"
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://src.bundespruefstelle.ch/wc-tier-package-prices\n"
|
||||
"POT-Creation-Date: 2025-12-21 00:00+0000\n"
|
||||
"PO-Revision-Date: 2025-12-21 00:00+0000\n"
|
||||
@@ -23,37 +23,81 @@ msgstr "WooCommerce Tier and Package Prices requires WooCommerce to be installed
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:21
|
||||
#: includes/class-wc-tpp-admin.php:22
|
||||
#: includes/class-wc-tpp-settings.php:28
|
||||
msgid "Tier & Package Prices"
|
||||
msgstr "Tier & Package Prices"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:40
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:58
|
||||
msgid "Tier & Package Prices Settings"
|
||||
msgstr "Tier & Package Prices Settings"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:60
|
||||
msgid "Configure tier pricing and package pricing options for your WooCommerce products."
|
||||
msgstr "Configure tier pricing and package pricing options for your WooCommerce products."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:54
|
||||
#: includes/class-wc-tpp-settings.php:65
|
||||
msgid "Enable Tier Pricing"
|
||||
msgstr "Enable Tier Pricing"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:58
|
||||
#: includes/class-wc-tpp-settings.php:66
|
||||
msgid "Enable tier pricing for products"
|
||||
msgstr "Enable tier pricing for products"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:70
|
||||
msgid "Allow quantity-based pricing tiers. Customers get discounted prices when buying in larger quantities."
|
||||
msgstr "Allow quantity-based pricing tiers. Customers get discounted prices when buying in larger quantities."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:63
|
||||
#: includes/class-wc-tpp-settings.php:74
|
||||
msgid "Enable Package Pricing"
|
||||
msgstr "Enable Package Pricing"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:67
|
||||
#: includes/class-wc-tpp-settings.php:75
|
||||
msgid "Enable fixed-price packages for products"
|
||||
msgstr "Enable fixed-price packages for products"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:79
|
||||
msgid "Allow fixed-price packages with specific quantities. For example: 10 pieces for $50, 25 pieces for $100."
|
||||
msgstr "Allow fixed-price packages with specific quantities. For example: 10 pieces for $50, 25 pieces for $100."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:72
|
||||
#: includes/class-wc-tpp-settings.php:83
|
||||
msgid "Display Pricing Table"
|
||||
msgstr "Display Pricing Table"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:76
|
||||
#: includes/class-wc-tpp-settings.php:84
|
||||
msgid "Show tier and package pricing table on product pages"
|
||||
msgstr "Show tier and package pricing table on product pages"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:88
|
||||
msgid "Display the pricing table to customers on product pages."
|
||||
msgstr "Display the pricing table to customers on product pages."
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:81
|
||||
#: includes/class-wc-tpp-settings.php:92
|
||||
msgid "Display Position"
|
||||
msgstr "Display Position"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:93
|
||||
msgid "Choose where to display the pricing table on product pages."
|
||||
msgstr "Choose where to display the pricing table on product pages."
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:101
|
||||
msgid "Before Add to Cart Button"
|
||||
msgstr "Before Add to Cart Button"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:102
|
||||
msgid "After Add to Cart Button"
|
||||
msgstr "After Add to Cart Button"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:85
|
||||
msgid "Before Add to Cart"
|
||||
msgstr "Before Add to Cart"
|
||||
@@ -63,9 +107,23 @@ msgid "After Add to Cart"
|
||||
msgstr "After Add to Cart"
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:87
|
||||
#: includes/class-wc-tpp-settings.php:103
|
||||
msgid "After Price"
|
||||
msgstr "After Price"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:108
|
||||
#: includes/class-wc-tpp-product-meta.php:76
|
||||
msgid "Restrict to Package Quantities"
|
||||
msgstr "Restrict to Package Quantities"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:109
|
||||
msgid "Limit quantities to defined package sizes only"
|
||||
msgstr "Limit quantities to defined package sizes only"
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:113
|
||||
msgid "When enabled, customers can only purchase products in the exact quantities defined in packages. The quantity input field will be hidden and replaced with package selection buttons."
|
||||
msgstr "When enabled, customers can only purchase products in the exact quantities defined in packages. The quantity input field will be hidden and replaced with package selection buttons."
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:23
|
||||
msgid "Tier Pricing"
|
||||
msgstr "Tier Pricing"
|
||||
@@ -90,6 +148,10 @@ msgstr "Set fixed-price packages with specific quantities. For example: 10 piece
|
||||
msgid "Add Package"
|
||||
msgstr "Add Package"
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:77
|
||||
msgid "Only allow quantities defined in packages above"
|
||||
msgstr "Only allow quantities defined in packages above"
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:90
|
||||
msgid "Minimum Quantity"
|
||||
msgstr "Minimum Quantity"
|
||||
@@ -142,6 +204,10 @@ msgstr "You Save"
|
||||
msgid "Package Deals"
|
||||
msgstr "Package Deals"
|
||||
|
||||
#: templates/frontend/package-pricing-display.twig:11
|
||||
msgid "Choose a package size below"
|
||||
msgstr "Choose a package size below"
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:123
|
||||
msgid "pieces"
|
||||
msgstr "pieces"
|
||||
@@ -161,3 +227,11 @@ msgstr "Package price"
|
||||
#: includes/class-wc-tpp-cart.php:66
|
||||
msgid "Volume discount"
|
||||
msgstr "Volume discount"
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:124
|
||||
msgid "this product"
|
||||
msgstr "this product"
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:128
|
||||
msgid "The quantity %1$d is not available for %2$s. Please choose from the available package sizes: %3$s"
|
||||
msgstr "The quantity %1$d is not available for %2$s. Please choose from the available package sizes: %3$s"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# This file is distributed under the GPL v2 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.0.0\n"
|
||||
"Project-Id-Version: WooCommerce Tier and Package Prices 1.1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://src.bundespruefstelle.ch/wc-tier-package-prices\n"
|
||||
"POT-Creation-Date: 2025-12-21 00:00+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -14,55 +14,96 @@ msgstr ""
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
"X-Domain: wc-tier-package-prices\n"
|
||||
|
||||
#: wc-tier-and-package-prices.php:41
|
||||
#: wc-tier-and-package-prices.php:44
|
||||
msgid "WooCommerce Tier and Package Prices requires WooCommerce to be installed and active."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:21
|
||||
#: includes/class-wc-tpp-admin.php:22
|
||||
#: includes/class-wc-tpp-settings.php:28
|
||||
#: includes/class-wc-tpp-settings.php:58
|
||||
msgid "Tier & Package Prices"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:54
|
||||
#: includes/class-wc-tpp-settings.php:40
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:58
|
||||
msgid "Tier & Package Prices Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:60
|
||||
msgid "Configure tier pricing and package pricing options for your WooCommerce products."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:65
|
||||
msgid "Enable Tier Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:58
|
||||
#: includes/class-wc-tpp-settings.php:66
|
||||
msgid "Enable tier pricing for products"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:63
|
||||
#: includes/class-wc-tpp-settings.php:70
|
||||
msgid "Allow quantity-based pricing tiers. Customers get discounted prices when buying in larger quantities."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:74
|
||||
msgid "Enable Package Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:67
|
||||
#: includes/class-wc-tpp-settings.php:75
|
||||
msgid "Enable fixed-price packages for products"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:72
|
||||
#: includes/class-wc-tpp-settings.php:79
|
||||
msgid "Allow fixed-price packages with specific quantities. For example: 10 pieces for $50, 25 pieces for $100."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:83
|
||||
msgid "Display Pricing Table"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:76
|
||||
#: includes/class-wc-tpp-settings.php:84
|
||||
msgid "Show tier and package pricing table on product pages"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:81
|
||||
#: includes/class-wc-tpp-settings.php:88
|
||||
msgid "Display the pricing table to customers on product pages."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:92
|
||||
msgid "Display Position"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:85
|
||||
msgid "Before Add to Cart"
|
||||
#: includes/class-wc-tpp-settings.php:93
|
||||
msgid "Choose where to display the pricing table on product pages."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:86
|
||||
msgid "After Add to Cart"
|
||||
#: includes/class-wc-tpp-settings.php:101
|
||||
msgid "Before Add to Cart Button"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-admin.php:87
|
||||
#: includes/class-wc-tpp-settings.php:102
|
||||
msgid "After Add to Cart Button"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:103
|
||||
msgid "After Price"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:108
|
||||
#: includes/class-wc-tpp-product-meta.php:76
|
||||
msgid "Restrict to Package Quantities"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:109
|
||||
msgid "Limit quantities to defined package sizes only"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-settings.php:113
|
||||
msgid "When enabled, customers can only purchase products in the exact quantities defined in packages. The quantity input field will be hidden and replaced with package selection buttons."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:23
|
||||
msgid "Tier Pricing"
|
||||
msgstr ""
|
||||
@@ -87,80 +128,97 @@ msgstr ""
|
||||
msgid "Add Package"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:90
|
||||
#: includes/class-wc-tpp-product-meta.php:77
|
||||
msgid "Only allow quantities defined in packages above"
|
||||
msgstr ""
|
||||
|
||||
#: templates/admin/tier-row.twig:9
|
||||
msgid "Minimum Quantity"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:91
|
||||
#: templates/admin/tier-row.twig:13
|
||||
#: templates/admin/package-row.twig:13
|
||||
msgid "e.g., 10"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:94
|
||||
#: templates/admin/tier-row.twig:16
|
||||
msgid "Price per Unit"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:95
|
||||
#: includes/class-wc-tpp-product-meta.php:114
|
||||
#: templates/admin/tier-row.twig:21
|
||||
msgid "e.g., 9.99"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:97
|
||||
#: includes/class-wc-tpp-product-meta.php:120
|
||||
#: templates/admin/tier-row.twig:25
|
||||
#: templates/admin/package-row.twig:30
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:109
|
||||
#: templates/admin/package-row.twig:9
|
||||
#: templates/frontend/tier-pricing-table.twig:13
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:113
|
||||
#: templates/admin/package-row.twig:20
|
||||
msgid "Fixed Price"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:117
|
||||
#: templates/admin/package-row.twig:18
|
||||
msgid "e.g., 99.99"
|
||||
msgstr ""
|
||||
|
||||
#: templates/admin/package-row.twig:24
|
||||
msgid "Label (Optional)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-product-meta.php:118
|
||||
#: templates/admin/package-row.twig:29
|
||||
msgid "e.g., Starter Pack"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:71
|
||||
#: templates/frontend/tier-pricing-table.twig:9
|
||||
msgid "Volume Discounts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:75
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:76
|
||||
#: templates/frontend/tier-pricing-table.twig:14
|
||||
msgid "Price per Unit"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:77
|
||||
#: templates/frontend/tier-pricing-table.twig:15
|
||||
msgid "You Save"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:110
|
||||
#: templates/frontend/package-pricing-display.twig:8
|
||||
msgid "Package Deals"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:123
|
||||
#: templates/frontend/package-pricing-display.twig:11
|
||||
msgid "Choose a package size below"
|
||||
msgstr ""
|
||||
|
||||
#: templates/frontend/package-pricing-display.twig:20
|
||||
msgid "pieces"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:129
|
||||
#: templates/frontend/package-pricing-display.twig:24
|
||||
msgid "per unit"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-frontend.php:133
|
||||
#: templates/frontend/package-pricing-display.twig:28
|
||||
msgid "Select Package"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:63
|
||||
#: includes/class-wc-tpp-cart.php:76
|
||||
msgid "Package price"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:66
|
||||
#: includes/class-wc-tpp-cart.php:79
|
||||
msgid "Volume discount"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:124
|
||||
msgid "this product"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-wc-tpp-cart.php:128
|
||||
msgid "The quantity %1$d is not available for %2$s. Please choose from the available package sizes: %3$s"
|
||||
msgstr ""
|
||||
|
||||
198
releases/RELEASE-INFO-1.0.2.md
Normal file
198
releases/RELEASE-INFO-1.0.2.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# WooCommerce Tier and Package Prices - Release 1.0.2
|
||||
|
||||
**Release Date:** December 21, 2025
|
||||
**Version:** 1.0.2
|
||||
**Package Size:** 396 KB
|
||||
**Git Tag:** v1.0.2
|
||||
|
||||
## Download
|
||||
|
||||
**File:** `wc-tier-and-package-prices-1.0.2.zip`
|
||||
|
||||
### Checksums
|
||||
|
||||
**SHA256:**
|
||||
```
|
||||
c1a5339da10b3625156b8fff4ec848e4a1318d6edc497bd5026cfe0a3ef39daa
|
||||
```
|
||||
|
||||
**MD5:**
|
||||
```
|
||||
830f443ce4b65e2ca9cfede3257bc4f5
|
||||
```
|
||||
|
||||
## What's New in 1.0.2
|
||||
|
||||
### Major Changes
|
||||
- ✅ **Settings Migrated to WooCommerce Settings Page**
|
||||
- Settings now appear as a dedicated tab: **WooCommerce > Settings > Tier & Package Prices**
|
||||
- Removed standalone submenu for better integration
|
||||
- Consistent UI with native WooCommerce settings
|
||||
|
||||
### Improvements
|
||||
- 🔄 Uses WooCommerce's native settings API (WC_Settings_Page)
|
||||
- 🎨 Better integration with WooCommerce admin interface
|
||||
- 💾 Automatic settings persistence via WooCommerce
|
||||
- 🌍 Updated all translations with new settings strings
|
||||
|
||||
### New Features
|
||||
- ✨ WC_TPP_Settings class for proper WooCommerce integration
|
||||
- 📝 9 new translatable strings in all languages
|
||||
- 🔧 Enhanced tooltips and descriptions for better UX
|
||||
|
||||
### Technical Changes
|
||||
- Implemented `woocommerce_get_settings_pages` filter hook
|
||||
- Uses `WC_Admin_Settings` for rendering and saving
|
||||
- Removed custom Twig settings template
|
||||
- Updated all translation files to version 1.0.2
|
||||
|
||||
### Removed
|
||||
- ❌ Standalone settings submenu (WooCommerce > Tier & Package Prices)
|
||||
- ❌ Custom settings template (templates/admin/settings-page.twig)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Download the ZIP file: `wc-tier-and-package-prices-1.0.2.zip`
|
||||
2. Log in to your WordPress admin panel
|
||||
3. Navigate to **Plugins > Add New > Upload Plugin**
|
||||
4. Choose the downloaded ZIP file
|
||||
5. Click **Install Now**
|
||||
6. After installation, click **Activate Plugin**
|
||||
7. Go to **WooCommerce > Settings > Tier & Package Prices** to configure
|
||||
|
||||
### Upgrade from 1.0.1
|
||||
|
||||
This is a **minor update** with improved settings integration. No data migration needed.
|
||||
|
||||
**Steps:**
|
||||
1. Deactivate the current version
|
||||
2. Upload and activate version 1.0.2
|
||||
3. Your existing settings will be automatically preserved
|
||||
4. Settings location changed: Now under **WooCommerce > Settings** tab
|
||||
|
||||
### Requirements
|
||||
|
||||
- **WordPress:** 6.0 or higher
|
||||
- **PHP:** 7.4 or higher
|
||||
- **WooCommerce:** 8.0 or higher
|
||||
|
||||
## Translation Updates
|
||||
|
||||
All translation files updated with new strings:
|
||||
|
||||
### New Translations (9 new strings)
|
||||
1. "General" - Settings section
|
||||
2. "Tier & Package Prices Settings" - Section title
|
||||
3. "Configure tier pricing and package pricing options..." - Description
|
||||
4. "Allow quantity-based pricing tiers..." - Tooltip
|
||||
5. "Allow fixed-price packages..." - Tooltip
|
||||
6. "Display the pricing table to customers..." - Tooltip
|
||||
7. "Choose where to display the pricing table..." - Description
|
||||
8. "Before Add to Cart Button" - Option
|
||||
9. "After Add to Cart Button" - Option
|
||||
|
||||
### Languages Included
|
||||
- 🇺🇸 **English (US)** - en_US - Fully updated
|
||||
- 🇩🇪 **German (Germany)** - de_DE - Fully updated (formal "Sie")
|
||||
- 🇨🇭 **German (Switzerland, Informal)** - de_CH_informal - Fully updated (informal "du")
|
||||
|
||||
## Package Contents
|
||||
|
||||
The installation package includes:
|
||||
|
||||
### Core Files
|
||||
- `wc-tier-and-package-prices.php` (v1.0.2)
|
||||
- `composer.json` - Updated to 1.0.2
|
||||
- `CHANGELOG.md` - Full version history
|
||||
|
||||
### New/Modified Files
|
||||
- `includes/class-wc-tpp-settings.php` ✨ NEW
|
||||
- `includes/class-wc-tpp-admin.php` - Updated
|
||||
- All translation files (.po/.mo) - Updated
|
||||
|
||||
### Complete Directory Structure
|
||||
```
|
||||
wc-tier-and-package-prices/
|
||||
├── assets/ # CSS and JavaScript
|
||||
│ ├── css/
|
||||
│ └── js/
|
||||
├── includes/ # PHP classes
|
||||
│ ├── class-wc-tpp-admin.php
|
||||
│ ├── class-wc-tpp-cart.php
|
||||
│ ├── class-wc-tpp-frontend.php
|
||||
│ ├── class-wc-tpp-product-meta.php
|
||||
│ ├── class-wc-tpp-settings.php ✨ NEW
|
||||
│ └── class-wc-tpp-template-loader.php
|
||||
├── languages/ # Translation files (all updated)
|
||||
│ ├── wc-tier-package-prices-de_CH_informal.po/mo
|
||||
│ ├── wc-tier-package-prices-de_DE.po/mo
|
||||
│ ├── wc-tier-package-prices-en_US.po/mo
|
||||
│ └── wc-tier-package-prices.pot
|
||||
├── templates/ # Twig templates
|
||||
│ ├── admin/
|
||||
│ │ ├── package-row.twig
|
||||
│ │ └── tier-row.twig
|
||||
│ └── frontend/
|
||||
│ ├── package-pricing-display.twig
|
||||
│ ├── pricing-table.twig
|
||||
│ └── tier-pricing-table.twig
|
||||
├── vendor/ # Composer dependencies
|
||||
│ └── twig/twig/ (v3.22.2)
|
||||
├── CHANGELOG.md
|
||||
├── README.md
|
||||
└── composer.json
|
||||
```
|
||||
|
||||
## Features (Complete List)
|
||||
|
||||
### Tier Pricing
|
||||
- ✅ Quantity-based discount tiers
|
||||
- ✅ Automatic price calculation
|
||||
- ✅ Volume discount display
|
||||
|
||||
### Package Pricing
|
||||
- ✅ Fixed-price bundles
|
||||
- ✅ Custom package labels
|
||||
- ✅ Multiple package options per product
|
||||
|
||||
### Admin Features
|
||||
- ✅ **WooCommerce Settings integration** (NEW in 1.0.2)
|
||||
- ✅ Easy-to-use product meta boxes
|
||||
- ✅ Configurable display positions
|
||||
- ✅ Native WooCommerce UI
|
||||
|
||||
### Frontend Features
|
||||
- ✅ Beautiful pricing tables (Twig templates)
|
||||
- ✅ Real-time cart updates
|
||||
- ✅ Responsive design
|
||||
- ✅ 3 languages supported
|
||||
|
||||
## Migration Notes
|
||||
|
||||
### Settings Location Changed
|
||||
**Old Location:** WooCommerce > Tier & Package Prices
|
||||
**New Location:** WooCommerce > Settings > Tier & Package Prices
|
||||
|
||||
All your existing settings are automatically preserved and will appear in the new location.
|
||||
|
||||
### Benefits of New Location
|
||||
1. ✅ Better discoverability - users expect settings under Settings
|
||||
2. ✅ Consistent with WooCommerce patterns
|
||||
3. ✅ Native WooCommerce UI/UX
|
||||
4. ✅ Better mobile support
|
||||
5. ✅ Follows WordPress/WooCommerce best practices
|
||||
|
||||
## Support
|
||||
|
||||
- **Documentation:** See README.md and USAGE_EXAMPLES.md
|
||||
- **Changelog:** See CHANGELOG.md for detailed changes
|
||||
- **Issues:** https://src.bundespruefstelle.ch/wc-tier-package-prices/issues
|
||||
- **Author:** Marco Graetsch
|
||||
|
||||
## License
|
||||
|
||||
GPL v2 or later - https://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
---
|
||||
|
||||
**Production Ready:** This package includes optimized autoloader and no development dependencies.
|
||||
BIN
releases/wc-tier-and-package-prices-1.0.2.zip
Normal file
BIN
releases/wc-tier-and-package-prices-1.0.2.zip
Normal file
Binary file not shown.
1
releases/wc-tier-and-package-prices-1.0.2.zip.md5
Normal file
1
releases/wc-tier-and-package-prices-1.0.2.zip.md5
Normal file
@@ -0,0 +1 @@
|
||||
830f443ce4b65e2ca9cfede3257bc4f5 wc-tier-and-package-prices-1.0.2.zip
|
||||
1
releases/wc-tier-and-package-prices-1.0.2.zip.sha256
Normal file
1
releases/wc-tier-and-package-prices-1.0.2.zip.sha256
Normal file
@@ -0,0 +1 @@
|
||||
c1a5339da10b3625156b8fff4ec848e4a1318d6edc497bd5026cfe0a3ef39daa wc-tier-and-package-prices-1.0.2.zip
|
||||
@@ -3,13 +3,17 @@
|
||||
#
|
||||
# @package WC_Tier_Package_Prices
|
||||
# @var array packages
|
||||
# @var bool restrict_to_packages
|
||||
#}
|
||||
<div class="wc-tpp-package-pricing-table">
|
||||
<div class="wc-tpp-package-pricing-table{% if restrict_to_packages %} wc-tpp-restricted-mode{% endif %}">
|
||||
<h3>{{ 'Package Deals'|__('wc-tier-package-prices') }}</h3>
|
||||
{% if restrict_to_packages %}
|
||||
<p class="wc-tpp-restriction-notice">{{ 'Choose a package size below'|__('wc-tier-package-prices') }}</p>
|
||||
{% endif %}
|
||||
<div class="wc-tpp-packages">
|
||||
{% for index, package in packages %}
|
||||
{% set price_per_unit = package.qty > 0 ? package.price / package.qty : 0 %}
|
||||
<div class="wc-tpp-package" data-qty="{{ package.qty|esc_attr }}" data-price="{{ package.price|esc_attr }}">
|
||||
<div class="wc-tpp-package{% if restrict_to_packages %} wc-tpp-package-selectable{% endif %}" data-qty="{{ package.qty|esc_attr }}" data-price="{{ package.price|esc_attr }}">
|
||||
<div class="wc-tpp-package-header">
|
||||
{% if package.label is not empty %}
|
||||
<h4>{{ package.label|esc_html }}</h4>
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
{% endif %}
|
||||
|
||||
{% if packages is not empty and get_option('wc_tpp_enable_package_pricing') == 'yes' %}
|
||||
{% include 'frontend/package-pricing-display.twig' with {'packages': packages} %}
|
||||
{% include 'frontend/package-pricing-display.twig' with {'packages': packages, 'restrict_to_packages': restrict_to_packages|default(false)} %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Plugin Name: WooCommerce Tier and Package Prices
|
||||
* Plugin URI: https://src.bundespruefstelle.ch/wc-tier-package-prices
|
||||
* Description: Add tier pricing and package prices to WooCommerce products with configurable quantities at fixed prices
|
||||
* Version: 1.0.2
|
||||
* Version: 1.1.0
|
||||
* Author: Marco Graetsch
|
||||
* Author URI: https://src.bundespruefstelle.ch/magdev
|
||||
* Text Domain: wc-tier-package-prices
|
||||
@@ -22,7 +22,7 @@ if (!defined('ABSPATH')) {
|
||||
}
|
||||
|
||||
// Define plugin constants
|
||||
define('WC_TPP_VERSION', '1.0.2');
|
||||
define('WC_TPP_VERSION', '1.1.0');
|
||||
define('WC_TPP_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||
define('WC_TPP_PLUGIN_URL', plugin_dir_url(__FILE__));
|
||||
define('WC_TPP_PLUGIN_BASENAME', plugin_basename(__FILE__));
|
||||
|
||||
Reference in New Issue
Block a user