Creating a WP e-Commerce plugin: Settings Page API (fix)

Recently I’ve been developing a WordPress plugin to extend WP e-Commerce, a free storefront plugin. I used to use osCommerce, a robust PHP solution for shopping carts and heavily customized it. I was looking at this implementation of osCommerce (a great effort) as a WordPress plugin, but it was like reinventing the wheel–not worth it. WP e-Commerce is a native WordPress plugin, works well, has a huge user base and is (mostly) easy to extend.

The WP e-Commerce developers are kind enough to provide documentation for developers of plugins. Their page on “Settings Page API” describes the process of adding a tab to the WPEC settings page. While mostly straightforward there are two points that tripped me up:

  1. The  class WPSC_Settings_Tab_PLUGIN_SLUG extends WPSC_Settings_Tab needs to be inside the plugin tab function being described. This issue was mostly a result of my own dimness…
  2. This one seems to be a typo. The action hook tying in your plugin tab function as described is: However while using this action hook, my plugin settings tab was not accessible directly, only through an AJAX call after the settings page was already loaded. Also, I was using the optional  public function callback_submit_options()  to handle the form submission myself, and this was non-functional! Using the following hook fixed all this and resulted in a settings tab that functioned identically to the default tabs:

add_action( 'wpsc_register_settings_tabs', 'my_plugin_settings_tabs');  

3 thoughts on “Creating a WP e-Commerce plugin: Settings Page API (fix)”

    1. The code that worked for me follows:

      function YOURSLUG_settings_tab($settings_page) {
      	class WPSC_Settings_Tab_Wpscsc extends WPSC_Settings_Tab {
      		public function display() {
      			// etc...
      		}
      		public function callback_submit_options() {
      			//etc...
      		}
      	}
      	$settings_page->register_tab('YOURSLUG', 'Groups');
      }
      add_action( 'wpsc_register_settings_tabs', 'YOURSLUG_settings_tab', 10, 1 );

Leave a Reply

Your email address will not be published. Required fields are marked *