PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Settings / RegisterSettingService.php
surecart / app / src / Settings Last commit date
RegisterSettingService.php 3 months ago SettingService.php 2 days ago SettingsServiceProvider.php 2 months ago
RegisterSettingService.php
123 lines
1 <?php
2
3 namespace SureCart\Settings;
4
5 /**
6 * Settings registration service.
7 */
8 class RegisterSettingService {
9 /**
10 * Our setting prefix.
11 *
12 * @var string
13 */
14 protected $prefix = 'surecart_';
15
16 /**
17 * Holds the option group name.
18 *
19 * @var string
20 */
21 protected $option_group;
22
23 /**
24 * Holds the option name.
25 *
26 * @var string
27 */
28 protected $option_name;
29
30 /**
31 * Holds the options args.
32 *
33 * @var array
34 */
35 protected $args = [];
36
37 /**
38 * The autoload value for this option, or null to use WordPress default.
39 *
40 * @var bool|null
41 */
42 protected $autoload;
43
44 /**
45 * The full prefixed option name.
46 *
47 * @var string
48 */
49 protected $full_option_name;
50
51 /**
52 * Register a setting.
53 *
54 * @param string $option_group A settings group name. Should correspond to an allowed option key name.
55 * Default allowed option key names include 'general', 'discussion', 'media',
56 * 'reading', 'writing', and 'options'.
57 * @param string $option_name The name of an option to sanitize and save.
58 * @param array $args {
59 * Data used to describe the setting when registered.
60 *
61 * @type string $type The type of data associated with this setting.
62 * Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'.
63 * @type string $description A description of the data attached to this setting.
64 * @type callable $sanitize_callback A callback function that sanitizes the option's value.
65 * @type bool|array $show_in_rest Whether data associated with this setting should be included in the REST API.
66 * When registering complex settings, this argument may optionally be an
67 * array with a 'schema' key.
68 * @type mixed $default Default value when calling `get_option()`.
69 * @type bool $autoload Whether to autoload this option. Omit to use WordPress default.
70 */
71 public function __construct( $option_group, $option_name, $args = [] ) {
72 $this->option_group = $option_group;
73 $this->full_option_name = $this->prefix . $option_name;
74 $this->option_name = $option_name;
75 $this->autoload = array_key_exists( 'autoload', $args ) ? $args['autoload'] : null;
76 $this->args = array_diff_key( $args, [ 'autoload' => '' ] );
77 }
78
79 /**
80 * Call registration hooks.
81 *
82 * @return void
83 */
84 public function register() {
85 add_action( 'admin_init', [ $this, 'registerSetting' ] );
86 add_action( 'rest_api_init', [ $this, 'registerSetting' ] );
87
88 if ( null !== $this->autoload ) {
89 add_filter( 'wp_default_autoload_value', [ $this, 'filterAutoload' ], 10, 3 );
90 }
91 }
92
93 /**
94 * Filter the default autoload value for this option.
95 *
96 * @param string|null $autoload The default autoload value.
97 * @param string $option The option name.
98 * @param mixed $value The option value.
99 *
100 * @return string|null
101 */
102 public function filterAutoload( $autoload, $option, $value ) {
103 if ( $this->full_option_name !== $option ) {
104 return $autoload;
105 }
106
107 return $this->autoload ? 'yes' : 'no';
108 }
109
110 /**
111 * Register the setting
112 *
113 * @return void
114 */
115 public function registerSetting() {
116 register_setting(
117 $this->option_group,
118 $this->full_option_name,
119 $this->args,
120 );
121 }
122 }
123