2025-12-31 00:38:29 +01:00
< ? php
/**
* Admin Settings
*
* @ package WC_Composable_Product
*/
namespace WC_Composable_Product\Admin ;
defined ( 'ABSPATH' ) || exit ;
/**
* Settings class
*/
class Settings extends \WC_Settings_Page {
/**
* Constructor
*/
public function __construct () {
$this -> id = 'composable_products' ;
$this -> label = __ ( 'Composable Products' , 'wc-composable-product' );
parent :: __construct ();
}
/**
* Get settings array
*
* @ return array
*/
public function get_settings () {
$settings = [
[
'title' => __ ( 'Composable Products Settings' , 'wc-composable-product' ),
'type' => 'title' ,
'desc' => __ ( 'Configure default settings for composable products.' , 'wc-composable-product' ),
'id' => 'wc_composable_settings' ,
],
[
'title' => __ ( 'Default Selection Limit' , 'wc-composable-product' ),
'desc' => __ ( 'Default number of items customers can select.' , 'wc-composable-product' ),
'id' => 'wc_composable_default_limit' ,
'type' => 'number' ,
'default' => '5' ,
'custom_attributes' => [
'min' => '1' ,
'step' => '1' ,
],
'desc_tip' => true ,
],
[
'title' => __ ( 'Default Pricing Mode' , 'wc-composable-product' ),
'desc' => __ ( 'How to calculate the price of composable products.' , 'wc-composable-product' ),
'id' => 'wc_composable_default_pricing' ,
'type' => 'select' ,
'default' => 'sum' ,
'options' => [
'sum' => __ ( 'Sum of selected products' , 'wc-composable-product' ),
'fixed' => __ ( 'Fixed price' , 'wc-composable-product' ),
],
'desc_tip' => true ,
],
2026-03-01 12:23:01 +01:00
[
'title' => __ ( 'Include Non-Public Products' , 'wc-composable-product' ),
'desc' => __ ( 'Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually.' , 'wc-composable-product' ),
'id' => 'wc_composable_include_unpublished' ,
'type' => 'checkbox' ,
'default' => 'no' ,
],
2025-12-31 00:38:29 +01:00
[
'title' => __ ( 'Show Product Images' , 'wc-composable-product' ),
'desc' => __ ( 'Display product images in the selection interface.' , 'wc-composable-product' ),
'id' => 'wc_composable_show_images' ,
'type' => 'checkbox' ,
'default' => 'yes' ,
],
[
'title' => __ ( 'Show Product Prices' , 'wc-composable-product' ),
'desc' => __ ( 'Display individual product prices in the selection interface.' , 'wc-composable-product' ),
'id' => 'wc_composable_show_prices' ,
'type' => 'checkbox' ,
'default' => 'yes' ,
],
[
'title' => __ ( 'Show Total Price' , 'wc-composable-product' ),
'desc' => __ ( 'Display the total price as customers make selections.' , 'wc-composable-product' ),
'id' => 'wc_composable_show_total' ,
'type' => 'checkbox' ,
'default' => 'yes' ,
],
[
'type' => 'sectionend' ,
'id' => 'wc_composable_settings' ,
],
];
return apply_filters ( 'wc_composable_settings' , $settings );
}
/**
* 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 );
}
}