2025-12-21 05:14:19 +01:00
< ? 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' ),
),
),
2025-12-21 15:54:04 +01:00
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' ),
),
2025-12-21 05:14:19 +01:00
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 ();