init_settings(); // Possibly do additional admin_init tasks } /** * Initialize some custom settings */ public function init_settings() { // register the settings for this plugin // TODO: Properly design the set of options needed register_setting('opentools-ordernumbers-group', 'customize_ordernumbers'); register_setting('opentools-ordernumbers-group', 'ordernumber_format'); register_setting('opentools-ordernumbers-group', 'ordernumber_counter_scope'); } /** * add a menu */ public function add_menu() { // TODO: Move this inside the WooCommerce configuration! add_options_page('Advanced Ordernumber Plugin Settings', 'OpenTools Advanced Ordernumbers', 'manage_options', 'opentools-ordernumbers', array(&$this, 'plugin_settings_page')); } // END public function add_menu() function plugin_settings_link($links) { $settings_link = 'Settings'; array_unshift($links, $settings_link); return $links; } /** * Menu Callback */ public function plugin_settings_page() { if(!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } // Render the settings template include(sprintf("%s/templates/settings.php", dirname(__FILE__))); } /** * The hook to customize order numbers (requests the order number from the database; creates a new ordernumber if no entry exists in the database) */ function get_ordernumber($orderid, $order) { $stored_number = get_post_meta( $orderid, 'Order Number', 'true'); if (!empty($stored_number)) { return $stored_number; } else { // create a new one (if this is a new order, otherwise we don't have/generate a number!) $number = $this->create_ordernumber($orderid, $order); update_post_meta( $orderid, 'Order Number', $number ); return $number; } } function create_ordernumber($orderid, $order) { $rnd=rand(100, 1000000); return "Order-$orderid-Number-$rnd"; } } } if (class_exists("OpenToolsOrdernumbers")) { // Installation and uninstallation hooks register_activation_hook(__FILE__, array('OpenToolsOrdernumbers', 'activate')); register_deactivation_hook(__FILE__, array('OpenToolsOrdernumbers', 'deactivate')); // instantiate the plugin class $ordernumber_plugin = new OpenToolsOrdernumbers(); } }