You've already forked wc-tier-and-package-prices
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3e06137559 | |||
| e0a32821ee | |||
| dea2c5f0b3 |
@@ -5,7 +5,15 @@
|
||||
"Bash(msgfmt:*)",
|
||||
"Bash(ls:*)",
|
||||
"Bash(mkdir:*)",
|
||||
"Bash(composer init:*)"
|
||||
"Bash(composer init:*)",
|
||||
"Bash(composer install:*)",
|
||||
"Bash(composer update:*)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit -m \"$\\(cat <<''EOF''\nRelease version 1.1.0 - Package quantity restriction feature\n\nAdded comprehensive package quantity restriction functionality that allows\nlimiting product purchases to predefined package sizes only.\n\nFeatures:\n- Global setting to enable package quantity restrictions\n- Per-product override for quantity restrictions\n- Automatic hiding of quantity input field when restricted\n- Frontend validation with package selection UI\n- Server-side cart validation\n- User-friendly error messages\n- Complete translations for all supported languages\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||||
"Bash(git tag:*)",
|
||||
"Bash(rsync:*)",
|
||||
"Bash(zip -r:*)",
|
||||
"Bash(cat:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
69
CHANGELOG.md
69
CHANGELOG.md
@@ -5,6 +5,75 @@ 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.1] - 2025-12-21
|
||||
|
||||
### Added
|
||||
- Cart quantity field hiding when package restriction is enabled
|
||||
- Automatic read-only quantity display in cart for restricted products
|
||||
|
||||
### Changed
|
||||
- Cart quantity input replaced with plain text when restrictions apply
|
||||
- Enhanced cart display to prevent quantity modification for restricted products
|
||||
|
||||
### Fixed
|
||||
- Cart quantity bypass vulnerability for package-restricted products
|
||||
|
||||
### Technical
|
||||
- Added `maybe_hide_cart_quantity_input()` method in WC_TPP_Cart class
|
||||
- Extended `woocommerce_cart_item_quantity` filter hook
|
||||
- CSS class `wc-tpp-cart-quantity` for styled quantity display
|
||||
|
||||
## [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
|
||||
- Migrated settings to WooCommerce Settings page as dedicated tab
|
||||
- Settings now appear under WooCommerce > Settings > Tier & Package Prices
|
||||
- Improved integration with WooCommerce native settings API
|
||||
|
||||
### Added
|
||||
- WC_TPP_Settings class extending WC_Settings_Page
|
||||
- Better integration with WooCommerce settings system
|
||||
- Consistent UI with other WooCommerce settings tabs
|
||||
|
||||
### Removed
|
||||
- Standalone settings submenu (WooCommerce > Tier & Package Prices)
|
||||
- Custom settings template (templates/admin/settings-page.twig)
|
||||
|
||||
### Technical
|
||||
- Implemented WooCommerce settings filter hook (woocommerce_get_settings_pages)
|
||||
- Uses WC_Admin_Settings for rendering and saving
|
||||
- Automatic settings persistence via WooCommerce API
|
||||
|
||||
## [1.0.1] - 2025-12-21
|
||||
|
||||
### Added
|
||||
|
||||
@@ -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.1",
|
||||
"version": "1.1.1",
|
||||
"type": "wordpress-plugin",
|
||||
"license": "GPL-2.0-or-later",
|
||||
"authors": [
|
||||
|
||||
@@ -10,39 +10,24 @@ if (!defined('ABSPATH')) {
|
||||
class WC_TPP_Admin {
|
||||
|
||||
public function __construct() {
|
||||
add_action('admin_menu', array($this, 'add_admin_menu'));
|
||||
add_action('admin_init', array($this, 'register_settings'));
|
||||
add_filter('woocommerce_get_settings_pages', array($this, 'add_settings_page'));
|
||||
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
|
||||
}
|
||||
|
||||
public function add_admin_menu() {
|
||||
add_submenu_page(
|
||||
'woocommerce',
|
||||
__('Tier & Package Prices', 'wc-tier-package-prices'),
|
||||
__('Tier & Package Prices', 'wc-tier-package-prices'),
|
||||
'manage_woocommerce',
|
||||
'wc-tier-package-prices',
|
||||
array($this, 'settings_page')
|
||||
);
|
||||
}
|
||||
|
||||
public function register_settings() {
|
||||
register_setting('wc_tpp_settings', 'wc_tpp_enable_tier_pricing');
|
||||
register_setting('wc_tpp_settings', 'wc_tpp_enable_package_pricing');
|
||||
register_setting('wc_tpp_settings', 'wc_tpp_display_table');
|
||||
register_setting('wc_tpp_settings', 'wc_tpp_display_position');
|
||||
/**
|
||||
* Add settings page to WooCommerce settings
|
||||
*/
|
||||
public function add_settings_page($settings) {
|
||||
$settings[] = include WC_TPP_PLUGIN_DIR . 'includes/class-wc-tpp-settings.php';
|
||||
return $settings;
|
||||
}
|
||||
|
||||
public function enqueue_admin_scripts($hook) {
|
||||
if ('woocommerce_page_wc-tier-package-prices' === $hook || 'post.php' === $hook || 'post-new.php' === $hook) {
|
||||
if ('woocommerce_page_wc-settings' === $hook || 'post.php' === $hook || 'post-new.php' === $hook) {
|
||||
wp_enqueue_style('wc-tpp-admin', WC_TPP_PLUGIN_URL . 'assets/css/admin.css', array(), WC_TPP_VERSION);
|
||||
wp_enqueue_script('wc-tpp-admin', WC_TPP_PLUGIN_URL . 'assets/js/admin.js', array('jquery'), WC_TPP_VERSION, true);
|
||||
}
|
||||
}
|
||||
|
||||
public function settings_page() {
|
||||
WC_TPP_Template_Loader::get_instance()->display('admin/settings-page.twig');
|
||||
}
|
||||
}
|
||||
|
||||
new WC_TPP_Admin();
|
||||
|
||||
@@ -13,6 +13,8 @@ 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);
|
||||
add_filter('woocommerce_cart_item_quantity', array($this, 'maybe_hide_cart_quantity_input'), 10, 3);
|
||||
}
|
||||
|
||||
public function apply_tier_package_pricing($cart) {
|
||||
@@ -89,6 +91,71 @@ 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;
|
||||
}
|
||||
|
||||
public function maybe_hide_cart_quantity_input($product_quantity, $cart_item_key, $cart_item) {
|
||||
$product_id = $cart_item['product_id'];
|
||||
|
||||
// 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';
|
||||
|
||||
// Get packages for this product
|
||||
$packages = get_post_meta($product_id, '_wc_tpp_packages', true);
|
||||
|
||||
// If restriction is enabled and packages exist, show quantity as text only
|
||||
if (($global_restrict || $product_restrict) && !empty($packages)) {
|
||||
return sprintf('<span class="wc-tpp-cart-quantity">%s</span>', $cart_item['quantity']);
|
||||
}
|
||||
|
||||
return $product_quantity;
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
143
includes/class-wc-tpp-settings.php
Normal file
143
includes/class-wc-tpp-settings.php
Normal file
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
/**
|
||||
* WooCommerce Settings Integration
|
||||
*
|
||||
* Adds Tier & Package Prices settings to WooCommerce Settings > Advanced tab
|
||||
*
|
||||
* @package WC_Tier_Package_Prices
|
||||
*/
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!class_exists('WC_Settings_Page')) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* WC_TPP_Settings class
|
||||
*/
|
||||
class WC_TPP_Settings extends WC_Settings_Page {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->id = 'tier_package_prices';
|
||||
$this->label = __('Tier & Package Prices', 'wc-tier-package-prices');
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sections
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_sections() {
|
||||
$sections = array(
|
||||
'' => __('General', 'wc-tier-package-prices'),
|
||||
);
|
||||
|
||||
return apply_filters('woocommerce_get_sections_' . $this->id, $sections);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get settings array
|
||||
*
|
||||
* @param string $current_section Current section name.
|
||||
* @return array
|
||||
*/
|
||||
public function get_settings($current_section = '') {
|
||||
$settings = array();
|
||||
|
||||
if ('' === $current_section) {
|
||||
$settings = array(
|
||||
array(
|
||||
'title' => __('Tier & Package Prices Settings', 'wc-tier-package-prices'),
|
||||
'type' => 'title',
|
||||
'desc' => __('Configure tier pricing and package pricing options for your WooCommerce products.', 'wc-tier-package-prices'),
|
||||
'id' => 'wc_tpp_settings',
|
||||
),
|
||||
|
||||
array(
|
||||
'title' => __('Enable Tier Pricing', 'wc-tier-package-prices'),
|
||||
'desc' => __('Enable tier pricing for products', 'wc-tier-package-prices'),
|
||||
'id' => 'wc_tpp_enable_tier_pricing',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
'desc_tip' => __('Allow quantity-based pricing tiers. Customers get discounted prices when buying in larger quantities.', 'wc-tier-package-prices'),
|
||||
),
|
||||
|
||||
array(
|
||||
'title' => __('Enable Package Pricing', 'wc-tier-package-prices'),
|
||||
'desc' => __('Enable fixed-price packages for products', 'wc-tier-package-prices'),
|
||||
'id' => 'wc_tpp_enable_package_pricing',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
'desc_tip' => __('Allow fixed-price packages with specific quantities. For example: 10 pieces for $50, 25 pieces for $100.', 'wc-tier-package-prices'),
|
||||
),
|
||||
|
||||
array(
|
||||
'title' => __('Display Pricing Table', 'wc-tier-package-prices'),
|
||||
'desc' => __('Show tier and package pricing table on product pages', 'wc-tier-package-prices'),
|
||||
'id' => 'wc_tpp_display_table',
|
||||
'default' => 'yes',
|
||||
'type' => 'checkbox',
|
||||
'desc_tip' => __('Display the pricing table to customers on product pages.', 'wc-tier-package-prices'),
|
||||
),
|
||||
|
||||
array(
|
||||
'title' => __('Display Position', 'wc-tier-package-prices'),
|
||||
'desc' => __('Choose where to display the pricing table on product pages.', 'wc-tier-package-prices'),
|
||||
'id' => 'wc_tpp_display_position',
|
||||
'default' => 'after_add_to_cart',
|
||||
'type' => 'select',
|
||||
'class' => 'wc-enhanced-select',
|
||||
'css' => 'min-width:300px;',
|
||||
'desc_tip' => true,
|
||||
'options' => array(
|
||||
'before_add_to_cart' => __('Before Add to Cart Button', 'wc-tier-package-prices'),
|
||||
'after_add_to_cart' => __('After Add to Cart Button', 'wc-tier-package-prices'),
|
||||
'after_price' => __('After Price', 'wc-tier-package-prices'),
|
||||
),
|
||||
),
|
||||
|
||||
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',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return apply_filters('woocommerce_get_settings_' . $this->id, $settings, $current_section);
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the settings
|
||||
*/
|
||||
public function output() {
|
||||
$settings = $this->get_settings();
|
||||
WC_Admin_Settings::output_fields($settings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save settings
|
||||
*/
|
||||
public function save() {
|
||||
$settings = $this->get_settings();
|
||||
WC_Admin_Settings::save_fields($settings);
|
||||
}
|
||||
}
|
||||
|
||||
return new 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.1\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.1\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.1\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.1\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 ""
|
||||
|
||||
174
releases/README.md
Normal file
174
releases/README.md
Normal file
@@ -0,0 +1,174 @@
|
||||
# WooCommerce Tier and Package Prices - Releases
|
||||
|
||||
This directory contains production-ready releases of the WooCommerce Tier and Package Prices plugin.
|
||||
|
||||
## Latest Release
|
||||
|
||||
**Version 1.0.1** - December 21, 2025
|
||||
|
||||
### Quick Install
|
||||
|
||||
```bash
|
||||
# Download the package
|
||||
wget https://your-domain.com/releases/wc-tier-and-package-prices-1.0.1.zip
|
||||
|
||||
# Verify checksum (optional but recommended)
|
||||
sha256sum wc-tier-and-package-prices-1.0.1.zip
|
||||
# Should match: 92c1385d92527e77646e37f23c1bd1555a4290a5ec9314c0ee6ed896ded55e88
|
||||
|
||||
# Install via WordPress admin or WP-CLI
|
||||
wp plugin install wc-tier-and-package-prices-1.0.1.zip --activate
|
||||
```
|
||||
|
||||
## Files in This Directory
|
||||
|
||||
### Release Packages
|
||||
|
||||
| File | Description | Size |
|
||||
|------|-------------|------|
|
||||
| `wc-tier-and-package-prices-1.0.1.zip` | Production plugin package | 395 KB |
|
||||
| `wc-tier-and-package-prices-1.0.1.zip.sha256` | SHA-256 checksum | - |
|
||||
| `wc-tier-and-package-prices-1.0.1.zip.md5` | MD5 checksum | - |
|
||||
| `RELEASE-INFO-1.0.1.md` | Detailed release information | - |
|
||||
|
||||
## Verification
|
||||
|
||||
### Verify Package Integrity
|
||||
|
||||
**Using SHA-256:**
|
||||
```bash
|
||||
sha256sum -c wc-tier-and-package-prices-1.0.1.zip.sha256
|
||||
```
|
||||
|
||||
**Using MD5:**
|
||||
```bash
|
||||
md5sum -c wc-tier-and-package-prices-1.0.1.zip.md5
|
||||
```
|
||||
|
||||
### Expected Checksums
|
||||
|
||||
**SHA-256:**
|
||||
```
|
||||
92c1385d92527e77646e37f23c1bd1555a4290a5ec9314c0ee6ed896ded55e88
|
||||
```
|
||||
|
||||
**MD5:**
|
||||
```
|
||||
e6cfc9b88df9e7763be0cd56517ce8ab
|
||||
```
|
||||
|
||||
## Installation Methods
|
||||
|
||||
### Method 1: WordPress Admin (Recommended for most users)
|
||||
|
||||
1. Download `wc-tier-and-package-prices-1.0.1.zip`
|
||||
2. Go to **WordPress Admin > Plugins > Add New**
|
||||
3. Click **Upload Plugin**
|
||||
4. Choose the downloaded ZIP file
|
||||
5. Click **Install Now**
|
||||
6. Click **Activate Plugin**
|
||||
|
||||
### Method 2: WP-CLI (For developers)
|
||||
|
||||
```bash
|
||||
wp plugin install /path/to/wc-tier-and-package-prices-1.0.1.zip --activate
|
||||
```
|
||||
|
||||
### Method 3: Manual Installation (Advanced)
|
||||
|
||||
```bash
|
||||
# Extract to wp-content/plugins/
|
||||
unzip wc-tier-and-package-prices-1.0.1.zip -d /path/to/wordpress/wp-content/plugins/
|
||||
|
||||
# Set correct permissions
|
||||
chmod -R 755 /path/to/wordpress/wp-content/plugins/wc-tier-and-package-prices
|
||||
|
||||
# Activate via WordPress admin or WP-CLI
|
||||
wp plugin activate wc-tier-and-package-prices
|
||||
```
|
||||
|
||||
## What's Included
|
||||
|
||||
### Core Features
|
||||
- ✅ Tier pricing (quantity-based discounts)
|
||||
- ✅ Package pricing (fixed-price bundles)
|
||||
- ✅ Twig template engine
|
||||
- ✅ WooCommerce HPOS compatible
|
||||
- ✅ Multilingual support
|
||||
|
||||
### Translations
|
||||
- 🇺🇸 English (US)
|
||||
- 🇩🇪 German (Germany)
|
||||
- 🇨🇭 German (Switzerland, Informal)
|
||||
|
||||
### Production Ready
|
||||
- ✅ Optimized autoloader
|
||||
- ✅ No development dependencies
|
||||
- ✅ Compiled Twig templates support
|
||||
- ✅ Tested with WooCommerce 8.0 - 10.0
|
||||
|
||||
## Package Contents
|
||||
|
||||
```
|
||||
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-template-loader.php
|
||||
├── languages/ # Translation files
|
||||
│ ├── wc-tier-package-prices-de_CH_informal.*
|
||||
│ ├── wc-tier-package-prices-de_DE.*
|
||||
│ ├── wc-tier-package-prices-en_US.*
|
||||
│ └── wc-tier-package-prices.pot
|
||||
├── templates/ # Twig templates
|
||||
│ ├── admin/
|
||||
│ └── frontend/
|
||||
├── vendor/ # Composer dependencies
|
||||
│ └── twig/twig/
|
||||
├── CHANGELOG.md
|
||||
├── README.md
|
||||
├── composer.json
|
||||
└── wc-tier-and-package-prices.php
|
||||
```
|
||||
|
||||
## System Requirements
|
||||
|
||||
| Requirement | Minimum Version |
|
||||
|-------------|----------------|
|
||||
| WordPress | 6.0+ |
|
||||
| PHP | 7.4+ |
|
||||
| WooCommerce | 8.0+ |
|
||||
| MySQL | 5.6+ |
|
||||
|
||||
## Support
|
||||
|
||||
- **Documentation:** See main README.md
|
||||
- **Issues:** https://src.bundespruefstelle.ch/wc-tier-package-prices/issues
|
||||
- **Author:** Marco Graetsch
|
||||
|
||||
## Version History
|
||||
|
||||
### 1.0.1 (2025-12-21)
|
||||
- Added Twig template engine
|
||||
- Added Swiss German translation
|
||||
- Improved template organization
|
||||
- Enhanced security with auto-escaping
|
||||
|
||||
### 1.0.0 (2025-12-21)
|
||||
- Initial release
|
||||
- Tier pricing functionality
|
||||
- Package pricing functionality
|
||||
- German and English translations
|
||||
|
||||
## License
|
||||
|
||||
GPL v2 or later - https://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
---
|
||||
|
||||
**Note:** All packages are production-ready with optimized autoloaders and no development dependencies included.
|
||||
127
releases/RELEASE-INFO-1.0.1.md
Normal file
127
releases/RELEASE-INFO-1.0.1.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# WooCommerce Tier and Package Prices - Release 1.0.1
|
||||
|
||||
**Release Date:** December 21, 2025
|
||||
**Version:** 1.0.1
|
||||
**Package Size:** 395 KB
|
||||
**Git Tag:** v1.0.1
|
||||
|
||||
## Download
|
||||
|
||||
**File:** `wc-tier-and-package-prices-1.0.1.zip`
|
||||
|
||||
### Checksums
|
||||
|
||||
**SHA256:**
|
||||
```
|
||||
92c1385d92527e77646e37f23c1bd1555a4290a5ec9314c0ee6ed896ded55e88
|
||||
```
|
||||
|
||||
**MD5:**
|
||||
```
|
||||
e6cfc9b88df9e7763be0cd56517ce8ab
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
1. Download the ZIP file: `wc-tier-and-package-prices-1.0.1.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**
|
||||
|
||||
### Requirements
|
||||
|
||||
- **WordPress:** 6.0 or higher
|
||||
- **PHP:** 7.4 or higher
|
||||
- **WooCommerce:** 8.0 or higher
|
||||
|
||||
## What's New in 1.0.1
|
||||
|
||||
### New Features
|
||||
- ✅ **Twig Template Engine** - Modern template system with automatic escaping
|
||||
- ✅ **Swiss German Translation** - Added de_CH_informal translation
|
||||
- ✅ **Template Caching** - Improved performance with compiled templates
|
||||
- ✅ **Composer Integration** - Professional dependency management
|
||||
|
||||
### Improvements
|
||||
- 🔄 Migrated all templates from PHP to Twig format
|
||||
- 🔒 Enhanced security with automatic HTML escaping
|
||||
- 📁 Better template organization (admin/ and frontend/ directories)
|
||||
- 🎨 Cleaner separation of logic and presentation
|
||||
|
||||
### Technical Changes
|
||||
- Added Twig v3.22.2 dependency
|
||||
- Created WC_TPP_Template_Loader class for centralized rendering
|
||||
- Integrated WordPress functions (__(), wc_price(), etc.) into Twig
|
||||
- Optimized autoloader for production
|
||||
- Removed legacy PHP templates
|
||||
|
||||
## Package Contents
|
||||
|
||||
The installation package includes:
|
||||
|
||||
### Core Files
|
||||
- `wc-tier-and-package-prices.php` - Main plugin file
|
||||
- `composer.json` - Dependency configuration
|
||||
- `CHANGELOG.md` - Full version history
|
||||
- `README.md` - Plugin documentation
|
||||
|
||||
### Directories
|
||||
- `includes/` - PHP class files
|
||||
- `class-wc-tpp-admin.php`
|
||||
- `class-wc-tpp-cart.php`
|
||||
- `class-wc-tpp-frontend.php`
|
||||
- `class-wc-tpp-product-meta.php`
|
||||
- `class-wc-tpp-template-loader.php`
|
||||
- `templates/` - Twig template files
|
||||
- `admin/` - Admin interface templates
|
||||
- `frontend/` - Customer-facing templates
|
||||
- `languages/` - Translation files
|
||||
- de_CH_informal (Swiss German, Informal)
|
||||
- de_DE (German, Germany)
|
||||
- en_US (English, US)
|
||||
- `assets/` - CSS and JavaScript files
|
||||
- `vendor/` - Composer dependencies (Twig)
|
||||
|
||||
## Translations Included
|
||||
|
||||
1. **English (US)** - en_US ✅
|
||||
2. **German (Germany)** - de_DE ✅
|
||||
3. **German (Switzerland, Informal)** - de_CH_informal ✅ NEW!
|
||||
|
||||
## Features
|
||||
|
||||
### 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
|
||||
- Easy-to-use product meta boxes
|
||||
- Configurable display positions
|
||||
- Settings page for global options
|
||||
|
||||
### Frontend Features
|
||||
- Beautiful pricing tables
|
||||
- Real-time cart updates
|
||||
- Responsive design
|
||||
|
||||
## Support
|
||||
|
||||
- **Documentation:** See README.md and USAGE_EXAMPLES.md
|
||||
- **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
|
||||
|
||||
---
|
||||
|
||||
**Note:** This is a production-ready package with optimized autoloader and no development dependencies.
|
||||
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.
|
||||
345
releases/RELEASE-INFO-1.1.0.md
Normal file
345
releases/RELEASE-INFO-1.1.0.md
Normal file
@@ -0,0 +1,345 @@
|
||||
# WooCommerce Tier and Package Prices - Release 1.1.0
|
||||
|
||||
**Release Date:** December 21, 2025
|
||||
**Version:** 1.1.0
|
||||
**Package Size:** 387 KB
|
||||
**Git Tag:** v1.1.0
|
||||
|
||||
## Download
|
||||
|
||||
**File:** `wc-tier-and-package-prices-1.1.0.zip`
|
||||
|
||||
### Checksums
|
||||
|
||||
**SHA256:**
|
||||
```
|
||||
da6b462f3dc297b282ed0da258b78fd9f2f82f3e76289c4c8fadd1ac9e02c55b
|
||||
```
|
||||
|
||||
**MD5:**
|
||||
```
|
||||
ef68125c54b0c10f04ba82d48a98b4aa
|
||||
```
|
||||
|
||||
## What's New in 1.1.0
|
||||
|
||||
### Major Features
|
||||
- ✨ **Package Quantity Restriction** - NEW
|
||||
- Limit product purchases to predefined package sizes only
|
||||
- Perfect for bulk-only sales, sample packs, or fixed bundle quantities
|
||||
- Global and per-product configuration options
|
||||
|
||||
### New Settings
|
||||
- 🌍 **Global Restriction Setting**
|
||||
- Enable quantity restrictions site-wide
|
||||
- Located in: WooCommerce > Settings > Tier & Package Prices
|
||||
- Description: "Limit quantities to defined package sizes only"
|
||||
|
||||
- 📦 **Per-Product Restriction Setting**
|
||||
- Override global setting on individual products
|
||||
- Located in: Product Edit > Package Pricing section
|
||||
- Checkbox: "Restrict to Package Quantities"
|
||||
|
||||
### Frontend Enhancements
|
||||
- 🎨 **Enhanced Package Selection UI**
|
||||
- Automatic quantity field hiding when restriction is enabled
|
||||
- Clear notice: "Choose a package size below"
|
||||
- Visual package selection with highlighted states
|
||||
- Responsive package selection buttons
|
||||
|
||||
- ✅ **Client-Side Validation**
|
||||
- JavaScript prevents form submission without package selection
|
||||
- Alert message guides users to select a package
|
||||
- Real-time visual feedback on selection
|
||||
|
||||
### Backend Validation
|
||||
- 🛡️ **Server-Side Cart Validation**
|
||||
- Validates quantity matches defined packages
|
||||
- Prevents manual quantity manipulation
|
||||
- User-friendly error messages
|
||||
- Example: "The quantity 15 is not available for Product Name. Please choose from the available package sizes: 10, 20, 50"
|
||||
|
||||
### Technical Improvements
|
||||
- New method: `WC_TPP_Cart::validate_package_quantity()`
|
||||
- New method: `WC_TPP_Frontend::maybe_hide_quantity_input()`
|
||||
- Enhanced `woocommerce_add_to_cart_validation` filter integration
|
||||
- Added `wc-tpp-restricted-mode` CSS class
|
||||
- Added `wc-tpp-package-selectable` CSS class for styling
|
||||
- New product meta key: `_wc_tpp_restrict_to_packages`
|
||||
- New global option: `wc_tpp_restrict_package_quantities`
|
||||
|
||||
### Translations
|
||||
- Added 7 new translatable strings
|
||||
- Updated all language files (en_US, de_DE, de_CH_informal)
|
||||
- All .mo files recompiled with new strings
|
||||
|
||||
## Installation
|
||||
|
||||
1. Download the ZIP file: `wc-tier-and-package-prices-1.1.0.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.x
|
||||
|
||||
This is a **minor version** update with new features. No data migration needed.
|
||||
|
||||
**Steps:**
|
||||
1. Deactivate the current version
|
||||
2. Upload and activate version 1.1.0
|
||||
3. All existing settings and data will be automatically preserved
|
||||
4. Review new restriction settings if desired
|
||||
|
||||
### Upgrade from 1.0.2
|
||||
|
||||
No breaking changes. Safe to upgrade directly. New restriction feature is disabled by default.
|
||||
|
||||
### Requirements
|
||||
|
||||
- **WordPress:** 6.0 or higher
|
||||
- **PHP:** 7.4 or higher
|
||||
- **WooCommerce:** 8.0 or higher
|
||||
|
||||
## New Strings Translation Reference
|
||||
|
||||
All new strings in this release:
|
||||
|
||||
### Settings Page
|
||||
1. "Restrict to Package Quantities" - Checkbox label
|
||||
2. "Limit quantities to defined package sizes only" - Checkbox description
|
||||
3. "When enabled, customers can only purchase..." - Tooltip text
|
||||
|
||||
### Product Meta Box
|
||||
4. "Restrict to Package Quantities" - Checkbox label (same as above)
|
||||
5. "Only allow quantities defined in packages above" - Tooltip text
|
||||
|
||||
### Frontend Display
|
||||
6. "Choose a package size below" - User notice in restricted mode
|
||||
|
||||
### Cart Validation
|
||||
7. "this product" - Fallback product name
|
||||
8. "The quantity %1$d is not available for %2$s..." - Error message template
|
||||
|
||||
## Use Cases
|
||||
|
||||
### Bulk-Only Sales
|
||||
Enable restriction globally to sell products only in bulk quantities.
|
||||
|
||||
**Example:**
|
||||
- Package 1: 100 units at $500
|
||||
- Package 2: 250 units at $1,100
|
||||
- Package 3: 500 units at $2,000
|
||||
|
||||
Customers can only purchase these exact quantities.
|
||||
|
||||
### Sample Packs
|
||||
Create fixed sample packs with no custom quantities.
|
||||
|
||||
**Example:**
|
||||
- Starter Pack: 10 items
|
||||
- Trial Pack: 25 items
|
||||
- Full Pack: 50 items
|
||||
|
||||
### Promotional Bundles
|
||||
Offer promotional pricing only for specific bundle sizes.
|
||||
|
||||
**Example:**
|
||||
- Holiday Bundle: 12 units (seasonal pricing)
|
||||
- Party Pack: 24 units (bulk discount)
|
||||
- Wholesale Bundle: 100 units (wholesale pricing)
|
||||
|
||||
## Configuration Examples
|
||||
|
||||
### Example 1: Site-Wide Restriction
|
||||
|
||||
**Scenario:** All products should only be sold in packages
|
||||
|
||||
**Configuration:**
|
||||
1. Go to WooCommerce > Settings > Tier & Package Prices
|
||||
2. Check "Restrict to Package Quantities"
|
||||
3. Save changes
|
||||
4. Configure package sizes for each product
|
||||
|
||||
**Result:** All products with packages defined will enforce quantity restrictions
|
||||
|
||||
### Example 2: Per-Product Restriction
|
||||
|
||||
**Scenario:** Only specific products need quantity restrictions
|
||||
|
||||
**Configuration:**
|
||||
1. Leave global setting unchecked
|
||||
2. Edit the specific product
|
||||
3. Scroll to Package Pricing section
|
||||
4. Check "Restrict to Package Quantities"
|
||||
5. Update product
|
||||
|
||||
**Result:** Only that product enforces restrictions
|
||||
|
||||
### Example 3: Mixed Approach
|
||||
|
||||
**Scenario:** Most products are restricted, but some allow custom quantities
|
||||
|
||||
**Configuration:**
|
||||
1. Enable global restriction
|
||||
2. For products that should allow custom quantities, simply don't define any packages
|
||||
3. Products without packages defined won't show restrictions
|
||||
|
||||
## Feature Compatibility
|
||||
|
||||
### Works With
|
||||
- ✅ WooCommerce 8.0 - 10.0
|
||||
- ✅ WordPress 6.0+
|
||||
- ✅ HPOS (High-Performance Order Storage)
|
||||
- ✅ All WooCommerce themes
|
||||
- ✅ Tier pricing (can use both features together)
|
||||
- ✅ Package pricing (required for restriction)
|
||||
- ✅ All pricing table display positions
|
||||
|
||||
### Requirements for Restriction Feature
|
||||
- Product must have at least one package defined
|
||||
- Either global or per-product restriction must be enabled
|
||||
- Package pricing must be enabled in settings
|
||||
|
||||
## Package Contents
|
||||
|
||||
The installation package includes all files from version 1.0.2 plus:
|
||||
|
||||
### Modified Files
|
||||
- `wc-tier-and-package-prices.php` - Version updated to 1.1.0
|
||||
- `composer.json` - Version updated to 1.1.0
|
||||
- `CHANGELOG.md` - Added v1.1.0 section
|
||||
- `includes/class-wc-tpp-settings.php` - Added restriction setting
|
||||
- `includes/class-wc-tpp-product-meta.php` - Added per-product checkbox
|
||||
- `includes/class-wc-tpp-frontend.php` - Added quantity hiding logic
|
||||
- `includes/class-wc-tpp-cart.php` - Added validation method
|
||||
- `assets/js/frontend.js` - Added restricted mode handling
|
||||
- `templates/frontend/package-pricing-display.twig` - Added restriction notice
|
||||
- `templates/frontend/pricing-table.twig` - Pass restriction flag
|
||||
- All translation files (.po/.mo) - Updated with new strings
|
||||
|
||||
### Complete Directory Structure
|
||||
```
|
||||
wc-tier-and-package-prices/
|
||||
├── assets/
|
||||
│ ├── css/
|
||||
│ │ ├── admin.css
|
||||
│ │ └── frontend.css
|
||||
│ └── js/
|
||||
│ ├── admin.js
|
||||
│ └── frontend.js (UPDATED)
|
||||
├── includes/
|
||||
│ ├── class-wc-tpp-admin.php
|
||||
│ ├── class-wc-tpp-cart.php (UPDATED)
|
||||
│ ├── class-wc-tpp-frontend.php (UPDATED)
|
||||
│ ├── class-wc-tpp-product-meta.php (UPDATED)
|
||||
│ ├── class-wc-tpp-settings.php (UPDATED)
|
||||
│ └── class-wc-tpp-template-loader.php
|
||||
├── languages/ (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/
|
||||
│ ├── admin/
|
||||
│ │ ├── package-row.twig
|
||||
│ │ └── tier-row.twig
|
||||
│ └── frontend/
|
||||
│ ├── package-pricing-display.twig (UPDATED)
|
||||
│ ├── pricing-table.twig (UPDATED)
|
||||
│ └── tier-pricing-table.twig
|
||||
├── vendor/ (Twig v3.22.2)
|
||||
├── CHANGELOG.md (UPDATED)
|
||||
├── composer.json (UPDATED)
|
||||
└── wc-tier-and-package-prices.php (UPDATED)
|
||||
```
|
||||
|
||||
## 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
|
||||
- ✅ **NEW:** Quantity restriction to packages only
|
||||
|
||||
### Admin Features
|
||||
- ✅ WooCommerce Settings integration
|
||||
- ✅ Easy-to-use product meta boxes
|
||||
- ✅ Configurable display positions
|
||||
- ✅ Native WooCommerce UI
|
||||
- ✅ **NEW:** Global restriction setting
|
||||
- ✅ **NEW:** Per-product restriction override
|
||||
|
||||
### Frontend Features
|
||||
- ✅ Beautiful pricing tables (Twig templates)
|
||||
- ✅ Real-time cart updates
|
||||
- ✅ Responsive design
|
||||
- ✅ 3 languages supported
|
||||
- ✅ **NEW:** Package-only selection mode
|
||||
- ✅ **NEW:** Automatic quantity field hiding
|
||||
- ✅ **NEW:** Visual package selection
|
||||
|
||||
### Validation & Security
|
||||
- ✅ **NEW:** Client-side JavaScript validation
|
||||
- ✅ **NEW:** Server-side cart validation
|
||||
- ✅ **NEW:** User-friendly error messages
|
||||
- ✅ WooCommerce HPOS compatible
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
**None.** This release is fully backward compatible.
|
||||
|
||||
The new restriction feature is disabled by default and must be explicitly enabled.
|
||||
|
||||
## Migration Notes
|
||||
|
||||
### From 1.0.2
|
||||
- No migration needed
|
||||
- New settings appear automatically in admin
|
||||
- Feature is disabled by default
|
||||
|
||||
### Settings Location
|
||||
All settings remain in: **WooCommerce > Settings > Tier & Package Prices**
|
||||
|
||||
### Data Preservation
|
||||
- All existing tier pricing data preserved
|
||||
- All existing package pricing data preserved
|
||||
- All product meta data preserved
|
||||
- No database changes required
|
||||
|
||||
## Known Limitations
|
||||
|
||||
### Current Version
|
||||
1. Restriction only works when packages are defined
|
||||
2. Cannot restrict to tier quantities (only packages)
|
||||
3. Restriction applies to entire product (no variation-level control)
|
||||
|
||||
### Future Enhancements
|
||||
These features may be added in future versions:
|
||||
- Variation-level restriction control
|
||||
- Restrict to tier quantities option
|
||||
- Minimum/maximum package selection limits
|
||||
|
||||
## Support
|
||||
|
||||
- **Documentation:** See README.md and CHANGELOG.md
|
||||
- **Previous Release:** See RELEASE-INFO-1.0.2.md
|
||||
- **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.
|
||||
|
||||
**What's Next:** Version 1.1.0 completes the package restriction feature set. Future versions may add variation-level controls and tier quantity restrictions.
|
||||
BIN
releases/wc-tier-and-package-prices-1.0.1.zip
Normal file
BIN
releases/wc-tier-and-package-prices-1.0.1.zip
Normal file
Binary file not shown.
1
releases/wc-tier-and-package-prices-1.0.1.zip.md5
Normal file
1
releases/wc-tier-and-package-prices-1.0.1.zip.md5
Normal file
@@ -0,0 +1 @@
|
||||
e6cfc9b88df9e7763be0cd56517ce8ab wc-tier-and-package-prices-1.0.1.zip
|
||||
1
releases/wc-tier-and-package-prices-1.0.1.zip.sha256
Normal file
1
releases/wc-tier-and-package-prices-1.0.1.zip.sha256
Normal file
@@ -0,0 +1 @@
|
||||
92c1385d92527e77646e37f23c1bd1555a4290a5ec9314c0ee6ed896ded55e88 wc-tier-and-package-prices-1.0.1.zip
|
||||
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
|
||||
BIN
releases/wc-tier-and-package-prices-1.1.0.zip
Normal file
BIN
releases/wc-tier-and-package-prices-1.1.0.zip
Normal file
Binary file not shown.
1
releases/wc-tier-and-package-prices-1.1.0.zip.md5
Normal file
1
releases/wc-tier-and-package-prices-1.1.0.zip.md5
Normal file
@@ -0,0 +1 @@
|
||||
ef68125c54b0c10f04ba82d48a98b4aa wc-tier-and-package-prices-1.1.0.zip
|
||||
1
releases/wc-tier-and-package-prices-1.1.0.zip.sha256
Normal file
1
releases/wc-tier-and-package-prices-1.1.0.zip.sha256
Normal file
@@ -0,0 +1 @@
|
||||
da6b462f3dc297b282ed0da258b78fd9f2f82f3e76289c4c8fadd1ac9e02c55b wc-tier-and-package-prices-1.1.0.zip
|
||||
@@ -1,53 +0,0 @@
|
||||
{#
|
||||
# Admin Settings Page Template
|
||||
#
|
||||
# @package WC_Tier_Package_Prices
|
||||
#}
|
||||
<div class="wrap">
|
||||
<h1>{{ get_admin_page_title()|esc_html }}</h1>
|
||||
<form action="options.php" method="post">
|
||||
{{ settings_fields('wc_tpp_settings') }}
|
||||
<table class="form-table">
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="wc_tpp_enable_tier_pricing">{{ 'Enable Tier Pricing'|__('wc-tier-package-prices') }}</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="checkbox" id="wc_tpp_enable_tier_pricing" name="wc_tpp_enable_tier_pricing" value="yes" {{ checked(get_option('wc_tpp_enable_tier_pricing'), 'yes')|raw }}>
|
||||
<p class="description">{{ 'Enable tier pricing for products'|__('wc-tier-package-prices') }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="wc_tpp_enable_package_pricing">{{ 'Enable Package Pricing'|__('wc-tier-package-prices') }}</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="checkbox" id="wc_tpp_enable_package_pricing" name="wc_tpp_enable_package_pricing" value="yes" {{ checked(get_option('wc_tpp_enable_package_pricing'), 'yes')|raw }}>
|
||||
<p class="description">{{ 'Enable fixed-price packages for products'|__('wc-tier-package-prices') }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="wc_tpp_display_table">{{ 'Display Pricing Table'|__('wc-tier-package-prices') }}</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="checkbox" id="wc_tpp_display_table" name="wc_tpp_display_table" value="yes" {{ checked(get_option('wc_tpp_display_table'), 'yes')|raw }}>
|
||||
<p class="description">{{ 'Show tier and package pricing table on product pages'|__('wc-tier-package-prices') }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="wc_tpp_display_position">{{ 'Display Position'|__('wc-tier-package-prices') }}</label>
|
||||
</th>
|
||||
<td>
|
||||
<select id="wc_tpp_display_position" name="wc_tpp_display_position">
|
||||
<option value="before_add_to_cart" {{ selected(get_option('wc_tpp_display_position'), 'before_add_to_cart')|raw }}>{{ 'Before Add to Cart'|__('wc-tier-package-prices') }}</option>
|
||||
<option value="after_add_to_cart" {{ selected(get_option('wc_tpp_display_position'), 'after_add_to_cart')|raw }}>{{ 'After Add to Cart'|__('wc-tier-package-prices') }}</option>
|
||||
<option value="after_price" {{ selected(get_option('wc_tpp_display_position'), 'after_price')|raw }}>{{ 'After Price'|__('wc-tier-package-prices') }}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{ submit_button() }}
|
||||
</form>
|
||||
</div>
|
||||
@@ -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.1
|
||||
* Version: 1.1.1
|
||||
* 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.1');
|
||||
define('WC_TPP_VERSION', '1.1.1');
|
||||
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