IDB Ultimate WordPress Bundle

A collection of useful premium Wordpress plugins useful to almost any indie developer.

Bundle includes 4 premium plugins for Bug Tracking, Ecommerce, Support Tickets, Spam Control, as well as 3 premium themes. It’s perfect for indie developers looking to sell their software, games, and other physical or digital products. This bundle also provides you with a platform for beta testing, support, and blog spam control. When you purchase this license, you will never have to repurchase for updates! Lifetime updates to all future versions are included for free!  There are additional WordPress plugins in development which will be added to the bundle later, which you will also receive when they are released.  Currently included in this bundle are the following plugins and themes for WordPress:

  • IDB Ecommerce – is a full featured e-commerce platform built atop of WordPress. It is easy to use, lightweight, heavily supported and constantly updated with new features. Sell your products with PayPal, Authorize.NET SIM, Quickbooks Merchant Services, Skrill/Moneybookers, or 2CheckOut. Issue serial numbers, digital downloads, UPS shipping quotes, coupons, group discounts, variations, and much more.
  • IDB Support Tickets PRO – IDB Support Tickets is a plugin for WordPress that allows you to offer support tickets to your website visitors & customers. IDB Support Tickets PRO is now only available exclusively as part of this bundle.
  • IDB Bug Tracker – IDB Bug Tracker is an ajax powered, simple yet powerful bug tracker native to WordPress.  Keep track of issues by projects, versions, and components, using an easy to use real time ajax admin panel.
  • IDB Ultra Spam Protection PRO – IDB Ultra Spam Protection PRO is only available exclusively as part of this bundle.
  • IDB WPSC WordPress Theme – An ecommerce theme only available exclusively as part of this bundle.
  • IDB ShopFolio WordPress Theme – A premium portfolio style theme only available exclusively as part of this bundle.
  • IDB LightFolio WordPress Theme – A premium portfolio style theme only available exclusively as part of this bundle.

IDB EcommerceIDB Support TicketsIDB Bug TrackerIDB Ultra Spam ProtectionThemes
An Introduction to IDB Ecommerce
100% Free & Open Source
IDB Ecommerce is the name of wpStoreCart 5, an extremely powerful and versatile ecommerce solution for WordPress. Fulfilling the promise I made when wpStoreCart first launched, it is now 100% free & open source, making an already full featured WordPress e-commerce solution even more powerful. It is easy to use, lightweight, heavily supported and constantly updated with new features for over 4 years and counting. While it does have a new name to match it’s new home, it is still backwards compatible with all previous versions of wpStoreCart.
Packed Full of Powerful Features
IDB Ecommerce has quite a few features, from products that your users can design or customize, group discounts, related products, accessories, combos, coupons, multiple variation systems, serial number distribution, to advanced features like a Payment Gateway API, a Shipping API, and an Alerts API. Almost every function can be overridden & there are many action hooks available, making IDB Ecommerce fully moddable without breaking your ability to upgrade to the latest version.

Documentation

1 Documentation

Installation

Installing IDB Ecommerce (wpStoreCart) is simple. The recommend method is through the WordPress admin panel, which will be outlined below first. The 2nd method is manually, and requires a FTP program, and FTP access to your WordPress installation. We will cover the 2nd method after covering the first.

Installing IDB Ecommerce From the WordPress Admin Panel

1. Goto your WordPress admin panel. On the admin side menu, find the Plugins section. Under Plugins click Add New as seen in this picture:

2. In the search box, type “IDB Ecommerce” or “wpStoreCart” without the quotes, case insensitive, then click the Search Plugins button.

3. Once the search results appear, find IDB Ecommerce and click the Install Now link. This will install IDB Ecommerce. Once the install is done, click “Activate Now” to activate the plugin. Alternatively, you can also goto Plugins > Plugins, and click Activate.

4. This concludes the installation and activation, however, there’s still some initial settings that need to be setup before IDB Ecommerce is ready to go. Continue setting up IDB Ecommerce by following these directions.

Installing IDB Ecommerce Manually Using FTP

1. Download IDB Ecommerce (wpStoreCart) by right clicking this link and choosing “Save As” or something similiar.

2. Extract the “wpstorecart” folder from the zip file you downloaded, to your desktop.

3. Use a FTP program to connect to your webhost and change directories to the /wp-content/plugins/ folder inside your WordPress installation folder. If you do not have an FTP program, we recommend the free and open source Filezilla for Windows.

4. Click and drag the entire “wpstorecart” folder from your desktop, into the /wp-content/plugins/ folder in your FTP application. Not all applications support drag and drop, so you may need to upload the “wpstorecart” folder to the /wp-content/plugins/ directory another way. Consult your FTP programs documentation for details on uploading folders.

5. Visit your WordPress admin panel, then goto Plugins > Plugins and scroll down until you find “IDB Ecommerce”, then click “Activate”

6. This concludes the installation and activation, however, there’s still some initial settings that need to be setup before IDB Ecommerce (wpStoreCart) is ready to go. Continue setting up IDB Ecommerce (wpStoreCart) by following these directions.

Initial Settings

IDB Ecommerce (wpStoreCart) requires a few initial settings to be configured before it will function correctly. In this brief document, we will discuss those initial settings and point you to the information regarding the rest of the configuration of the plugin.

If you use the included Setup Wizard, you can have IDB Ecommerce (wpStoreCart) walk you through the initial setup which is described in this document.

1. The first thing you’ll need to do is access your WordPress admin panel. If IDB Ecommerce (wpStoreCart) hasn’t been activated, do so now. Inside the admin panel, in the left side menu, scroll down until you reach the IDB Ecommerce menu, then click Settings, as illustrated in this screenshot:

2. You should now see the IDB Ecommerce General Options. All 3 of these settings need to be configured before IDB Ecommerce (wpStoreCart) will operate:

3. “IDB Ecommerce Main Page” setting – This setting should be pointed to a pre-existing WordPress page that will act as the main storefront if you will. This page must already exist, but we recommend creating a new WordPress page with the title “Store”, or something similar. All products that you add will have subpages that descend from the IDB Ecommerce Main Page that you set here.

4. “Checkout Page” setting – Like the IDB Ecommerce Main Page setting, this setting is also asking for a WordPress page. This should be a different page then the IDB Ecommerce Main Page, and we recommend that you call the page Checkout to make it clear what it does.

5. “Turn IDB Ecommerce on?” setting – Finally, once you’ve configured both the IDB Ecommerce Main Page and the Checkout Page, it is time to turn on the plugin. Change this to Yes, then click Update Settings to save your changes. IDB Ecommerce (wpStoreCart) is now live and active.

6. The next step is Adding & Editing Products so that your visitors are able to buy things.  Having an online store is pointless if you don’t have products on your website to sell. Next, we’ll discuss how to add new products and edit existing ones.

Adding a Product

1. To add a product, start by going to IDB Ecommerce > Add Product. This will pull up a form, like in the picture below. By filling out this form and submitting it, we will be creating our product.

2. Now we need to begin the process of filling out the Add New Product form. We’ll start by typing in our product’s name in the “Product Name” box. This should be the actual product’s name, and should not be used as a place to stuff keywords. This is because this full product name will be displayed anytime and anyplace the product is referenced, so the shorter the product name, the better. Leave things like model numbers, specs, and other additional information for the description if possible. Once you’ve entered your products name we’ll move on.

3. Moving on, the next information we must enter into the form is the price. Do not enter in a currency sign, such as a dollar sign $, instead, only use numbers and a period to denote change.

4. After setting the price, it’s time to enter in the Intro Description and the Description of the product. The Intro Description should be a short introductory sentence or paragraph that communicates the most important things about the product. This is because this text will be used frequently to try and get visitors to click on the product to learn more. This is where the full “Description” field comes into play. This field should contain everything else there is to know about the product, and why someone would want to buy it. If the WYSIWYG editor is turned on inside the WordPress admin panel, then the Description field will use the fancy editor.

5. Next up, is inventory control. If you set “Use Inventory” to “Yes” then you should set the “Inventory Quantity” field to the number that you have in stock. As each purchase is made, the “Inventory Quantity” is decreased by 1, and once it reaches 0, the product is no longer available for purchase until you increase the “Inventory Quantity” again. If you are selling a product with unlimited quantity, set “Use Inventory” to no.

6. Moving on, it’s time to assign the product to a category and/or assign tags to it. First, you’ll need to have a category already created. If not, skip this and come back later, after you’ve created the category, and edit the product to assign it to the new category. Tags are comma separated keywords that relate to or describe the product.

7. If your product is downloadable, such as software, MP3s, videos, etc, then you’ll need to fill out the “Downloadable File” field, by either entering a URL to your file or by clicking the Upload button and specifying a file from your computer. If the product is physical then leave the “Downloadble File” field blank.

8. Finally we’ve come to the end of our product form, the last field being “Product Thumbnail”. This should be a medium resolution image, preferably square (200x200px, 350x350px, etc.) This can be a URL or you can press the Upload button and upload a picture from your computer. By default, an image is used so that all products have images.

Setting Up Authorize.NET

These instructions will help you set up Authorize.NET with IDB Ecommerce. Currently, IDB Ecommerce supports SIM integration.

1) Login to the Authorize.Net merchant administration site at https://secure.authorize.net
2) Click Settings
3) Goto the “Transaction Submission” section and click the “Password Required” link.
Click the “Require Password for ALL Transactions” checkbox and then finally, click the Submit button.
4) Click the Settings link to go back to the Settings section. Find the Transaction Response area and set the “response version” to 3.1
5) Now scroll down to the Security area and click the “Obtain Transaction Key” link.
6) Copy the Transaction Key that is created, which we will paste into the wpStoreCart settings.

In IDB Ecommerce, goto:
1) wp-admin > IDB Ecommerce > Settings > Payment > Authorize.NET
2) Paste your Transaction Key into the Secret Key Area
3) Paste your API Login ID into the Login ID area
4) Click the update button

IMPORTANT: The API Login ID is different than your user login ID. Your user login ID allows you to log into your Merchant Interface user account. The API Login ID grants a merchant access to submit transactions to the payment gateway.

Setting Up Quickbooks Merchant Services (QBMS)

These instructions will help you set up Quickbooks Merchant Services (QBMS) also known as Intuit Merchant Services with IDB Ecommerce.

STEP 1: Register your website as an APP here: http://appreg.intuit.com/

STEP 2: Click on Add, then fill in the form to register an application, choose: QBMS, Production, Desktop

STEP 2A: If you’re curious, enter the domain name as yourdomain.com, App Name can be YourDomain, and this will create an app like this: yourdomain.yourdomain.com

STEP 3: Make sure you entered a valid email address. You will need to check your inbox and open the activation email, and click the activation link.

STEP 4: Once it is verified, make a note of the AppID and AppLogin of the application. You will use them later to fill out the form inside the wpStoreCart admin panel.

STEP 5: Visit this link to tie your merchant account to this application:
https://merchantaccount.quickbooks.com/j/sdkconnection?appid=YOUR-APPLICATION-ID-HERE&appdata=mydata
^ Note where it says YOUR-APPLICATION-ID-HERE you need to replace that with the AppId you copied from STEP 4

STEP 5A: Copy the Connection Ticket from Quickbooks and insert it into wp-admin > IDB Ecommerce > Settings > Payment > Intuit Merchant Service > Connection Ticket >

STEP 6: Visit your WordPress admin panel. Goto wp-admin > IDB Ecommerce > Settings > Payment > Intuit Merchant Service > and then enter your App ID and App Login.

STEP 7: Hit the update button and you’re done!

Setting Up Skrill/Moneybookers

In this tutorial, we’ll show you what you need to do to start accepting Skrill/Moneybookers payments on your site.

1) If you haven’t done so already, open a Business Account with Skrill/Moneybookers here: https://www.moneybookers.com/app/register.pl

2) If you have a new account, or haven’t done so already, you’ll need to create a “Secret Word” on the “Merchant tools” page on the Skrill/Moneybookers website.

3) Once you have a Skrill/Moneybookers Business Account, copy your Email address and Secret Word. You will paste them into wpStoreCart.

4) On your website, goto wp-admin > IDB Ecommerce > Settings > Payment > Skrill/Moneybookers > In the Pay to Email setting, insert your Skrill/Moneybookers Business Account email address.

5) In the Secret Word setting, paste your Skrill/Moneybookers Secret Word.

6) Choose your Skrill/Moneybookers currency from the drop down list for the Currency setting.

7) Optionally, in the Logo Image setting, you can insert the URL of an SSL encrypted image. The URL must use SSL & the start with https:// Also, the logo image must be at most 200px wide and 50px tall. Leave this setting blank or as https:// to not utilize the logo feature.

8) Click the Update button to submit your setting changes. Skrill/Moneybookers should now be ready to go!

Setting Up PayPal Subscriptions

When you edit or add a new product, there is an option inside the Price area, labeled Charge for this product on a reoccurring basis. If you select this option, then you are able to set up as many as 2 trial periods, as well as a final recurring price. Both trials and regular recurring charges can be counted either by days, weeks, months, or years. For example, let’s say your site was an online monthly magazine, and you wanted to give a one week free trial, and afterwards charge $19.99 per month. First, you would click on Charge for this product on a reoccurring basis then check the box that says Allow a trial period? Next, fill out the trial form with these values:
1st trial period, charge 0.00 for 1 week(s) and then:
Regularly charge 19.99 every 1 month(s) indefinitely.

However, this aspect only covers the subscription itself. For most sites, there will also need to be content that is hidden from users unless they are an active subscriber. To hide content on any post, page, or template, use the following shortcode:

Hiding Content from Non-members

Replace X with the primkey of the product that the customer must purchase before they can see the hidden text or HTML.
[idbecommerce display=haspurchased primkey=X]This is the text or HTML you wish to hide unless the customer has purchased a specific product[/idbecommerce]

You can find the Product’s “primkey” number in the wp-admin > IDB Ecommerce > Edit Products list. The primkey is in the far left column. You can also insert other shortcodes inside the above shortcode, meaning that if you had, say a calendar plugin that was displayed via shortcode, and you wanted only current paid members to have access to the calendar, then you would insert the calendar shortcode inside of the wpStoreCart shortcode.

Managing Subscriptions

Managing a subscription from the admin panel is no different than managing any other type of wpStoreCart purchase. Active subscribers will have an order status of Completed. Once their subscription is cancelled, after their allotted subscription period has passed and they have deleted their subscription from PayPal, then it will automatically remove the user’s ability to access any hidden content associated with the subscription. You can also manually add subscriptions to user’s accounts. To do so, simply add a new order for the user, select the product that has the subscription and add it to the order, and set the order’s status to Completed. Note that orders fulfilled this way, will never expire, since the user themselves need to set up the payment arrangement inside their own PayPal accounts.

Settings

General Settings

General Settings

The General Settings are some of the basic settings that IDB Ecommerce require in order to begin functioning.

  • IDB Ecommerce Main Page: – This is the page that IDB Ecommerce calls home. This setting is the bare minimum that wpStoreCart needs to function. You should create a page in WordPress (from the admin panel, goto Pages > Add New), publish the page, and then visit the IDB Ecommerce General Settings page to select your page from the drop down list of pages. IDB Ecommerce can automatically create this page and assign it for you if you click on the link within the error message. If you create this page yourself, be sure to include the bare IDB Ecommerce shortcode in the page’s contents.
  • Checkout Page: – This page should also be configured. This is where people go to checkout and pay for the products they are purchasing from your website. If you do not set a page here, it is recommended that you use the wpStoreCart Checkout Widget and in that widget, set the option “Use as the final checkout?” to YES. IDB Ecommerce can automatically create this page and assign it for you if you click on the link within the error message.
  • Orders Page (Optional) A page that displays a logged in user’s orders, or a guest’s orders if your store allows guest purchases.
  • Turn IDB Ecommerce on? Set to YES to make the store active.
  • Store Type: If you only sale physical, tangible goods, and never sell anything digital, then set the Store Type to “Physical Products Only” to hide all digital goods settings and product options. If you only sell digital goods (like software, mp3s, content, web site subscriptions) then set this to “Digital Products Only” to hide all shipping and inventory controls. If you sell both, set this to “Mixed (Both Physical and Digital)” so that all possible options are always displayed.

Advanced Settings

  • Google Analytics UA: Optional. If you use Google Analytics, use this so that your completed sales register with the Analytics service.
  • Admin Access: Default is Administrator. This allows you to let other WordPress users access the IDB Ecommerce admin panel, based upon their access level. This can be set to allow Administrators, Editors, Authors, or Contributers to access the entire IDB Ecommerce admin panel.
  • Uninstall IDB Ecommerce: Selecting “No” will retain all data, even if wpStoreCart is deleted or deactivated. Better safe than sorry, leave this on No!

Display Settings

One of the most important aspects of running a successful ecommerce website is in the presentation. IDB Ecommerce provides a wealth of display options to help you have the most polished ecommerce interface possible.

Display Options

These are general display options, applicable to IDB Ecommerce as a whole.

  • Number of products/categories per page. The number of items to display on each page, defaults to 10.
  • wpStoreCart Additional CSS. By default, wpStoreCart isn’t skinned, so using this you can add some pre-built styles to your store. These are optional CSS styles for wpStoreCart, and they will add an additional HTTP call to each page load. To avoid that, we recommend you copy and paste these styles into your theme’s stylesheet instead, and then leave this option blank. If you do not mind adding an additional HTTP call per page load, then choose the CSS file to theme wpStoreCart with. For a full list of IDs and Classes to use with wpStoreCart, check out this webpage.
  • Max Thumb Width & Height. All this value does is determine the max width and height of product images on product pages.

Product Page

This governs what each individual product page looks like, and also effects the product shortcodes.

  • Display thumbnail under product? If set to Yes, the thumbnail for the product will be displayed underneath the product itself
  • Display description under product? If set to Yes, the description for the product is written underneath the product, after the thumbnail.
  • Use a thickbox image viewer? Set to “thickbox” to make your product’s thumbnail show a bigger version when clicked (if it exists)
  • Display product’s picture gallery? Shows a product’s images.
  • Where to display the gallery? Where on the product page you wish to display the image gallery.
  • Where to display product accessories & combos?Where on the product page you wish to display accessories & combos.
    Select from 5 optional placements via the dropdown menu

Main Page

These settings govern the Main Page.

  • Content of the Main Page. Changing this will effect what is displayed on the main page of your store.
  • Display thumbnails on Main Page? If set to Yes, the thumbnail for the products or categories will be displayed on the Main Page and Category pages.
  • Display titles on Main Page? If set to Yes, the title of the products or categories will be displayed on the Main Page and Category pages.
  • Display small descriptions on Main Page? If set to Yes, the introductory description of the products or categories will be displayed on the Main Page and Category pages.
  • Display the prices of products? If set to Yes, the prices of products will be displayed on the Main Page and Category pages.
  • Display Type. If set to grid, will display products or categories in a grid format, if set to list, will display them in an ordered list.

Checkout Page

These settings are only applicable to the Checkout Page, and to some extend the the checkout widget.

  • Display shipping total? If set to Yes, shipping will be displayed in shopping carts.
  • Display taxes? If set to Yes, the tax will be displayed in shopping carts.
  • Display subtotal? If set to Yes, the subtotal will be displayed in shopping carts.
  • Display final total? If set to Yes, the final total will be displayed in shopping carts.
  • Display product thumbnails? If set to Yes, each product will display it’s thumbnail.
  • Enable Coupons & display form? Yes to enable or No to disable coupons.
  • Checkout XHTML Type. Do you want the default DIV based markup, or a TABLE based checkout page?
  • Disable Inline Styles? wpStoreCart throws in a few inline styles in a couple situations where leaving it devoid of a style would make the page look unprofessional. Set this to YES to disable these inline CSS styles. We recommend only set to Yes if you are having CSS rendering problems.
  • Field Order. The order in which the quantity, pic, name, price, & remove are displayed on the checkout page & widget.

My Orders & Downloads Page

Settings effecting the My Orders Page.

  • Profile Editable? This setting allows you to decide whether or not users can update their profile directly from the My Orders Page.

Buttons

Options that apply to all IDB Ecommerce buttons.

  • Add to Cart button classes. Additional Classes for Add to Cart buttons. This comes in handy if you already have button styles with your theme that you would like to utilize. Simply enter each class name without periods, space separated.
  • Checkout button classes. Additional Classes for Checkout buttons.
  • Other button classes. Additional Classes for update, clear, & other buttons.

Shipping Settings

You can currently offer 3 types of shipping calculations in wpStoreCart 2.4 and above. Whatever shipping options you enable on this page will then be available for you to add as a shipping option to each product. However, if you fail to enable one or more shipping services for a product, then no shipping will be charged for it. These include:

Flat Rate Shipping

There are 4 settings for flat rate shipping:

      1) Each product has it’s own flat rate amount. With this flat rate option, you will need to specify the shipping cost inside of each product (wp-admin > IDB Ecommerce > Edit Products )
      2) There is one flat rate, but each item in cart adds the flat rate to the shipping costs. This means if you set flat rate shipping to $5, and then somebody orders 3 items, their shipping will total $15, etc.
      3) There is one flat rate charged, regardless of the number items in the cart. This means if you set flat rate shipping to $5, and then somebody orders 3 items, their shipping will total $5, etc.
      4) Off – This turns off Flat Rate shipping and removes it from the shipping options.

USPS (United States Postal Service)

You will need to insert your USPS shipping API username here, but first you will need to get approved and put onto the USPS Production Server. Failure to enter a correct and approved Production Server enabled account, will cause all shipping calculations to return as $0.00. It will also return as $0.00 if you do not enter a valid 5 digital zip code in the “Zip code you ship FROM” setting, or if you fail to enter a product weight for a product.
Here’s the exact process you’ll need to follow in order to get USPS shipping calculations to work:

  • 1) Register with USPS here, for your “Web Tools User ID”: https://secure.shippingapis.com/registration/
  • 2) After you successfully register, email icustomercare@usps.com and let them know your Web Tools User ID, and also tell them: “I use IDB Ecommerce, a third party shopping cart which already successful implements the USPS shipping API. Would you please move my Web Tools User ID to the Production Server so that I can begin calculating shipping?”
  • 3) Once you receive an email from USPS confirming that your account has been moved to the production server, then paste your “Web Tools User ID” into the “Username” section of wpStoreCart USPS Shipping Settings.

UPS (United Parcel Service)

Shipping calculations with UPS and IDB Ecommerce is as simple as enabling this, setting the Zipcode You Ship FROM, and making sure you have product weight and dimensions added with each product. All shipping calculations will return as $0.00 if you do not enter a valid 5 digital zip code in the “Zip code you ship FROM” setting, or if you fail to enter a product weight & dimension for a product.  You must enable UPS shipping on by editing each product and enabling UPS Shipping in the Shipping tab.

Free Shipping

If you enable this setting, it enables a free shipping option to all orders which exceed the amount that you set.

Disabling PayPal’s Shipping

You can enable/disable these from your PayPal account if you wish with the following steps:

1. Login to your PayPal account.
2. Click on your “Profile” link under the “My Account” tab.
3. Click on your “My Selling Tools”.
4. Click on “Update” for “Shipping Calculations”
5. Configure or disable shipping calculations per region, etc.

Preventing PayPal Shipping Calculations from Charging for Digital Downloads

If you need PayPal shipping calculations for some reason, but also use IDB Ecommerce for digital downloads sales, and do not want PayPal to charge shipping for the downloads, then please try this:

1. Log in to your PayPal account
2. Click on your “Profile” link under the “My Account” tab.
3. Click on your “My Selling Tools”.
4. Click on “Update” for “Shipping Calculations”
5. In the 1st shipping method you have listed in “Domestic Shipping” methods, check the box beside the method and click the “Edit” button.
6. When the edit page opens, select “Yes” for the “Use the Shipping Fee in my Transaction instead of my calculator’s settings” option
7. Repeat steps 6 and 7 as necessary for any additional shipping methods

This should allow shipping calculations as normal for physical products, but allow digital products sent from wpStoreCart to not charge shipping.

Email Settings

IDB Ecommerce sends emails at different points within the sales process. For this reason alone, we think it is critical that you at least capture the customer’s email address when purchasing. Within any of the emails that are sent, you may use the following codes:

Display the customer’s name in the email:
[customername]

Display the site’s name in the email:
[sitename]

Display the download URL in the email:
[downloadurl]

  • Email Address – The email address that all emails are FROM. This is an email address that you can receive replys to.
  • Email Sent On Purchase – The email that you wish to be sent when someone makes a purchase.
  • Email Sent On Approval – The email to be sent when a purchase has been approved.
  • Email Sent When Shipped – The email to send when the purchase has been shipped.
  • Email Signature – A signature that is included on every single email that is sent from wpStoreCart.

Payment Settings

The Payment Option screen allows you to setup IDB Ecommerce with the payment processor of your choice.

Currency Symbol

This initial setting only governs how prices are displayed within wpStoreCart, and has no bearing on your payment gateway. You can place whatever you want in the left and right symbol options, but be sure to have your payment provider configured to accept payments in the same currency. Left Symbol Default: $ Right Symbol Default:

PayPal Payment Gateway

  • Accept PayPal Payments? If set to Yes, customers can purchase during checkout using PayPal. Set this to NO to disable PayPal.
  • Turn on PayPal Test Mode? If set to Yes, all transactions are done using the PayPal sandbox. Set this to NO if you want to receive real money instead of test money.
  • PayPal Email Address The email address you wish to receive PayPal payments.
  • Currency The type of currency that your store uses.
  • Advanced Settings The IPN URL. Do not edit this unless you know what you’re doing.

Check/Money Order/COD Payments

You can use this payment gateway for virtually anything, just configure the text that is displayed so that it clearly gives instructions on what you require in order for their purchase to be fulfilled.

  • Accept Payments via Mail? Set this to YES to enable this manual payment gateway.
  • Text to Display This text is displayed when someone selects to purchase a product using this payment gateway. If you need them to mail in a check or money order, please give clear instructions and include the full address.

Customer Options

Customer Options
Different stores will have different requirements regarding what registration information they need or want from their customers.

Require Registration?

Controls whether or not your site requires registration before checkout completes.
Select from:
Yes, only registered users can buy
(WordPress default user registration must be turned on for this to work.)
No, but make it optional to register
(WordPress default user registration must be turned on for this to work. Data will not be stored if user chooses to use guest checkout.)
No, disable registration. Guest checkout only.

Show Prices to Guests?

Display prices to guests. Turn off to hide the prices from non-logged in users.
Select From:
Yes, display prices to everyone
Shows Price in descriptions and widgets.
No, only reveal prices to logged in users.
Must be logged in to see prices.

Replacement Text for Hidden Prices?

If Selecting No from above setting “Show prices to Guests”
When prices are hidden from non-logged in users, this is what’s displayed in their place.
default : ?.??
For example:
you can write “Register to see pricing.”
All non logged in user will see the text “Register to see pricing.” in place of prices.

Required Information At Checkout:

If you have selected either of these options below from the above setting “Require Registration?” then you are able to add custom fields to gather customer profile data.
Yes, only registered users can buy
No, but make it optional to register

For each new field we give it a name:
Add new field: Name:
(Example : Name)

Next we have
Type: (drop-down shows pre-formatted fields to select from choose one that fits.)
Field types available:
Input (text)
Input (numeric)
Input (textarea)
US States
Us States (to charge tax)
Countries
Countries (to charge tax)
Input Email Address
-Separator-
Header
Text
you can then choose if that field data is a requirement or optional.
Select the green icon to save a field.

You may create as many data fields as you like: Name, State, Zip code whatever you need.
You can further drag and drop each field in order as they are listed below the field creation box.
when renaming or adjusting a field after creation use the Update Settings to save.

Language Settings

IDB Ecommerce (wpStoreCart) is designed to work in as many countries and locations as possible, and to that end we provide an easy place to edit most of the text that is output by IDB Ecommerce (wpStoreCart). Simply find the text that you wish to change or translate, then enter in your new revision, click the update button.  However, this only covers a small fraction of the text displayed on the frontend and admin panel.  To fully translate all aspects of IDB Ecommerce (wpStoreCart), please follow these directions:

Translations

IDB Ecommerce (wpStoreCart) is i18n ready and compatible. If you read and write another language, and would like to make a new translation, please consider releasing it to the community.

To make a new translation, you should be familiar with the i18n system. In the languages folder, you will find wpstorecart.pot file, which you can use to create your .po and .mo files.

Use Poedit, or the editor of your choice to create your translation. Save your new translation as .po and .mo files.

Place the created .po and .mo files in the /wpsc-support-tickets/languages/ folder, using this naming convention: wpstorecart-xx_XX.po where xx_XX represent your language code. For example, for a Swedish translation, the file name is wpstorecart-sv_SE.po

For optimal translation depth, we recommend setting your language in wp-config.php before installing and activating IDB Ecommerce (wpStoreCart). Otherwise default options, such as the entire contents of the wp-admin > IDB Ecommerce > Settings > Language > will be in english, as well as things like email subject and email text, which will also use English, since they are all written into the database during activation.

Introduction to the Tax Settings

It is simple to charge your customers taxes without relying on your payment provider (such as PayPal) to calculate them. However, IDB Ecommerce’s system does not calculate taxes by default and if your payment provider supports tax calculation, such as PayPal, then you may want to keep IDB Ecommerce’s tax system disabled. The advantage to having your payment provider calculate the taxes is so that you can enable “guest checkout” to streamline the checkout process by eliminating the time consuming and potential lost sales caused by the registration processes. This can minimize the potentially long forms, redundant information collection, and can possibly simplify your book keeping in some situations. However, there are still several scenarios where on-site tax calculation is vital, especially if your payment provider does not provide the service, or if you are interested in disclosing the full cost, including tax, as soon as possible.

How to Setup Taxes in IDB Ecommerce

Add New Tax

You will need to fill out the “Add New Tax” configuration form.

Name the Tax

First there is the Name this tax field. For example, if you want to charge a VAT price for several countries or regions, you might name this tax: VAT

Select the Tax Regions

Next, you need to select which countries or U.S. States the tax applies to. You do this, by simply clicking on the world or state maps. Click on a gray state or country to make it red (selected) and click on it again to turn it back to gray (unselected.) The tax will be applicable to all the states and countries you have selected on the maps.

Set the Tax Rate

Next, you need to set the tax rate, in the field called Tax Percentage

Submit the Tax

Next click the Submit Tax button to create the tax. You can create multiple and unlimited taxes that apply to any number of regions, including the same region multiple times. For example, a region could be charged both a VAT tax & a state tax.

We’re almost done setting up taxes. However, we have two issues still left to deal with. First, we need to make sure IDB Ecommerce collects information from customers about their state or country, so that we know who needs to actually pay what specific tax rates. Second, we optionally need to make sure we have our checkout system set to display taxes. I say “optionally” because you will want to display the tax amount so that people who do have to pay a tax don’t get suspicious of an unexplained higher total price on their cart.

Collect Region Information from Customers

So the next thing we need to do is head to wp-admin > IDB Ecommerce > Settings > Customers > Require Registration? Set this to Yes, only registered users can buy so that everyone has to disclose their tax locations.

Next you will need to add a few customer registration fields. These fields will collect the customer’s state and country, and then will use that information to calculate the applicable taxes. Goto wp-admin > IDB Ecommerce > Settings > Customers > Required Information At Checkout and add at least a “State (for calculating taxes)” or “Countries (for calculating taxes)” required field.

Display Taxes

Finally, goto wp-admin > IDB Ecommerce > Settings > Display > Checkout > Display taxes? and set to “Yes”

How to Enable or Disable PayPal Tax Calculations

You can enable/disable these from your PayPal account if you wish with the following steps:

1. Login to your PayPal account.
2. Click on your “Profile” link under the “My Account” tab.
3. Click on your “My Selling Tools”.
4. Click on “Update” for “Sales tax”
5. Configure or disable tax calculations per region, etc.

For shipping calculations:
1. Login to your PayPal account.
2. Click on your “Profile” link under the “My Account” tab.
3. Click on your “My Selling Tools”.
4. Click on “Update” for “Shipping Calculations”
5. Configure or disable shipping calculations per region, etc.

Shortcodes

Shortcodes allow you to use functionality from IDB Ecommerce (wpStoreCart) in any page, post, or custom post type. There are many reasons and occasions where you may wish to use these shortcodes, and in this brief overview, we’ll talk about all the available shortcodes and how to properly write and configure them. Here is the basic IDB Ecommerce (wpStoreCart) shortcode, without any configuration:

[idbecommerce]

Note that the legacy shortcode from previous versions works as well, so upgrading old sites to IDB Ecommerce is still completely backwards compatible.
[wpstorecart]

Entering this will display 10 products, sorted by date with the newest products listed first.

Displaying the Shopping Cart/Checkout Page

[idbecommerce display=checkout]

Displaying Specific Product X

Will display the full information and Add to Cart button for the product ID specified in the primkey value. Replace X with your product’s ID number.
[idbecommerce display=product primkey=X]

Displaying an Add to Cart Button for Specific Product X

This will display an Add to Cart button for a specific product. Replace X with the primkey of the product you wish this button to apply to.
[idbecommerce display=addtocart primkey=X]

Displaying A Customer’s Orders

Displays the table with all the customers pending, completed, and other orders. For digital downloads, includes a link to download the file.
[idbecommerce display=orders]

Displaying Recent Products

Will display the 10 newest products without thumbnails
[idbecommerce display=recentproducts]

Displaying X Number of Recent Products

Replace X with the integer value of how many products you wish to display. If not specified, will display 10 products.
[idbecommerce display=recentproducts quantity=X]

Displaying Text or HTML Only to a Customer Who Purchased Product X

Replace X with the primkey of the product that the customer must purchase before they can see the hidden text or HTML. allowsguests was added in version 2.5.13 and does exactly what it says. If set to false (default) then guest purchases will not work with the shortcode. If set to true, then guests who have purchased can see the hidden content as well.
[idbecommerce display=haspurchased allowguests=true primkey=X]This is the text or HTML you wish to hide unless the customer has purchased a specific product[/idbecommerce]

Displaying Recent Products Using Thumbnails

If usepictures is set to true, will display the thumbnail of the product. If not specified, will not display pictures.
[idbecommerce display=recentproducts usepictures=true]

Displaying X Number of Recent Products Using Thumbnails

Replace X with the integer value of how many products you wish to display. If not specified, will display 10 products. If usepictures is set to true, will display the thumbnail of the product. If not specified, will not display pictures.
[idbecommerce display=recentproducts quantity=X usepictures=true]

Displaying Most Popular Products

Will display the 10 top products without thumbnails.
[idbecommerce display=topproducts]

Displaying X Number of Most Popular Products

Replace X with the integer value of how many products you wish to display. If not specified, will display 10 products.
[idbecommerce display=topproducts quantity=X]

Displaying Most Popular Products Using Thumbnails

If usepictures is set to true, will display the thumbnail of the product. If not specified, will not display pictures.
[idbecommerce display=topproducts usepictures=true]

Displaying X Number of Most Popular Using Thumbnails

Replace X with the integer value of how many products you wish to display. If not specified, will display 10 products. If usepictures is set to true, will display the thumbnail of the product. If not specified, will not display pictures.
[idbecommerce display=topproducts quantity=X usepictures=true]

Displaying Products from Category X

Will display the 10 newest products from category X, where X is the categories number.
[idbecommerce display=categories thecategory=X]

Displaying X Number of Products from Category X

Replace X with the integer value of how many products you wish to display. If not specified, will display 10 products.
[idbecommerce display=categories thecategory=X quantity=X]

Displaying Products from Category X Using Thumbnails

If usepictures is set to true, will display the thumbnail of the product. If not specified, will not display pictures.
[idbecommerce display=categories thecategory=X usepictures=true]

Displaying X Number of Products from Category X Using Thumbnails

Replace X with the integer value of how many products you wish to display. If not specified, will display 10 products. If usepictures is set to true, will display the thumbnail of the product. If not specified, will not display pictures.
[idbecommerce display=categories thecategory=X quantity=X usepictures=true]

Display Products With Custom Sorting

[idbecommerce quantity=X orderby=dateadded ordertype=DESC]
orderby can be one of the following values:
primkey, name, introdescription, description, thumbnail, price, shipping, download, tags, category, inventory, dateadded, postid, timesviewed, timesaddedtocart, timespurchased, useinventory, donation, weight, length, width, height

ordertype can one of the two following values:
ASC (for ascending) or
DESC (for descending)

Display Categories With Custom Sorting

[idbecommerce display=categories thecategory=X quantity=X orderby=primkey ordertype=DESC]
orderby can be one of the following values:
primkey, parent, category, thumbnail, description, postid

ordertype can one of the two following values:
ASC (for ascending) or
DESC (for descending)

Use the CSS references below to alter the appearance of wpStoreCart:

IDB Ecommerce CSS Selectors

Elements by ID:

#wpsc – The cart is always displayed inside this parent element
#wpsc-title – The title of the shopping cart, displayed on the checkout page and in the Cart Contents sidebar widget
#wpsc-checkout – The checkout button, displayed in the Cart Contents sidebar widget
#wpsc-footer – Really only surrounds the Enter Coupon text on the Checkout page.
#wpsc-shipping – The shipping charge displayed on the checkout page and in the Cart Contents sidebar widget
#wpsc-subtotal – The subtotal displayed on the checkout page and in the Cart Contents sidebar widget
#wpsc-tax – The tax displayed on the checkout page and in the Cart Contents sidebar widget
#wpsc-total – The final total displayed on the checkout page and in the Cart Contents sidebar widget
#wpsc-registerform – Added in 2.2, governs the registration form on the checkout page
#wpsc-loginform – Added in 2.2, governs the login form on the checkout page
#wpsc-shipping-calculation-form – Added in 2.2, governs the Shipping Calculation pop up on the Checkout page only.
#wpsc-shipping-calculation-form-widget – Added in 2.2, governs the Shipping Calculation pop up on the Checkout widget only.
#wpsc-captcha – Added in 2.5.16, governs the captcha image box.

Elements by Class:

.wpsc-grid – Governs the way categories and products are listed in a grid
.wpsc-list(DEPRECIATED in wpStoreCart 3) Governs the way categories and products are listed in a list. Not used in wpStoreCart 3 or higher. Instead, product listings will always be wrapped in a div with the .wpsc-grid class.
.wpsc-products – In wpStoreCart 2.1 and higher, is used in conjunction with .wpsc-grid if the listing is of products
.wpsc-single-product – Introduced in wpStoreCart 3, this wraps the entirety of a product listing on a product’s page
.wpsc-categories – In wpStoreCart 2.1 and higher, is used in conjunction with .wpsc-grid if the listing is of categories
.wpsc-button – Various buttons, displayed on the checkout page and in the Cart Contents sidebar widget. Almost all buttons have this class, in addition to their more specific classes.
.wpsc-addtocart – All the add to cart buttons.
.wpsc-moreinfo – All the more info buttons. Added in 3.0.
.wpsc-buynow – All the Buy Now buttons. Added in 2.4.2.
.wpsc-thumbnail – Another way to access the thumbnail images
.wpsc-individualqtylabel – Qty label on specific product pages
.wpsc-individualqty – The Qty field itself on specific product pages
.wpsc-qtylabel – The Qty label on categories, main page, and other lists of products.
.wpsc-qty – The Qty field itself on categories, main page, and other lists of products.
.wpsc-checkout-qty – The Qty field on the checkout page and in the checkout/cart widget
.wpsc-h1 – H1 tags
.wpsc-checkout – Checkout buttons BEFORE the final checkout.
.wpsc-checkout-button – Added in wpStoreCart version 3. All the checkout buttons for different payment gateways.
.wpsc-empty – All the empty buttons
.wpsc-update – All the update buttons
.wpsc-paypalcheckout – All PayPal checkout buttons
.wpsc-authorizenetcheckout – All Authorize.NET checkout buttons
.wpsc-2checkoutcheckout – All 2CheckOut checkout buttons
wpsc-libertyreserve – All Liberty Reserve checkout buttons
.wpsc-by-category – The parent DIV that contains the products from the current category
.wpsc-error – Error messages, displayed in multiple places
.wpsc-hide – Stuff that is meant to be selectively hidden, like the update and clear buttons
.wpsc-recent-products – The parent DIV that contains the recent products.
.wpsc-remove – The “remove” text in the shopping cart, displayed on the checkout page and in the Cart Contents sidebar widget
.wpsc-top-products – The parent DIV that contains the top products.
.wpsc-product-img – The product image, displayed on the product page and where ever else the product shortcode is used (with images enabled.) Note that if a max width or height is specified in the admin panel, then inline max-width and max-height will be used, which will override your CSS for the same selectors. To use your pure CSS, set both values to 0 in the settings.
.wpsc-product-info – On product pages, or where ever a product shortcode is used, this is the unordered list where the product name, price, and quantity are displayed.
.wpsc-register-button – Added in version 2.2, this allows you to style the register button during checkout
.wpsc-login-button – Added in version 2.2, this allows you to style the login button during checkout
.wpsc-required-symbol – Added in version 2.2, this allows you to style the symbol that denotes a required registration field on the checkout page.
.wpsc-required-help – Added in version 2.2, this allows you to style the Required Symbol Description on the checkout page, which by default reads: * – Fields with an asterick are required.
.wpsc-calculate-shipping – Added in version 2.2, this allows you to style the Calculate Shipping link that appears when shipping charges have yet to be determined.
.wpsc-navigation – Added in version 2.2, this governs the pagination DIV. Use .prev .next .current and .page-numbers to further style these.
.wpsc-gallery – Added in 2.3, this is the DIV that includes all the product’s gallery thumbnails inside of it.
.wpsc-gallery-thumbnail – Added in 2.3, this is an individual product gallery thumbnail. Note that max-width and max-height may be over ridden inline, regardless of what you set here.
.wpsc-shareyourcart-product – Added in 2.3, this is the ShareYourCart button displayed on product pages. Note that this class is attached to an iframe element.
.wpsc-shareyourcart-checkout – Added in 2.3, this is the ShareYourCart button displayed on the checkout page. Note that this class is attached to an iframe element.
.wpsc-checkout-thumbnail – Added in 2.3.4, this is the thumbnail of the product displayed on your checkout page.
.wpsc-grid-price – Added in 2.3.6, this is the price of the product displayed in the product grid, wrapped inside a span tag.
.wpsc-list-price – Added in 2.3.6, this is the price of the product displayed in the product list, wrapped inside a span tag.
.wpsc-checkout-table – Added in 2.3.14, this is the optional setup for the checkout page, where the products are listed inside of a table.
.wpsc-states – Added in 2.4.0, this is a custom wpStoreCart U.S. states field that customers must enter when registering.
.wpsc-countries – Added in 2.4.0, this is a custom wpStoreCart countries field that customers must enter when registering.
.wpsc-product-accessories – Added in 2.5.2, this is a table that list related products and bundles, usually located on specific product pages.

Widgets

IDB Ecommerce comes with several widgets. These can be displayed in any theme that is “widget ready”, which most modern WordPress themes are. To add IDB Ecommerce widgets to your site, go into your WordPress admin panel, then goto Appeareance > Widgets

Once you’re in the widget adminstration area, it is simply a matter of dragging the appropriate widget from the list of “Available Widgets” on the left, over to one of your theme’s widgetized areas on the right, like in this picture:

IDB Ecommerce Cart Contents

This widget has 2 options, which is “the Title” and “Use as the final checkout?”. Change the title to something like “My Shopping Cart”, “Cart Contents”, “Shopping Cart” or something equally as descriptive. The setting “Use as the final checkout?” if set to YES, will use the widget as the checkout page, and will allow completing the purchase through the widget. If set to no, then a customer must navigate to the Checkout page to complete the purchase. Placing this widget will display the shopping cart in your widgetized area.

IDB Ecommerce User/Account Login

This widget only has one option, which is the Title. Change the title to something like “My Account”, “Login/Register”, “User Account” or something equally as descriptive. Placing this widget will display login, registration, and order information in your widgetized area.

IDB Ecommerce Top/Recent Products/Categories

These widgets, and the categories widget, are all almost identical save for the content that they display. The settings should be explanatory:

Admin Pages

Coupons

Coupons allow you to give a discount on a specific product, if a customer simply enters in the coupon code that you set. To create a coupon, enter the admin panel, and goto IDB Ecommerce > Coupons then start filling out the form. We’ll start with the Coupon Code field:

Enter in a short, easy to remember, easy to type, alphanumeric code (don’t use spaces either!) This code is what your customer will have to type in, in order to receive their discount. In the picture above, the coupon code I’ve entered is “test”. In order for a customer to receive the discount provided by this coupon, they will need to write “test” in the coupon field during checkout. Let’s move onto the “Flat Discount” field:

Here we should put the amount of discount we are giving the customer on the product. DO NOT ENTER in any currency symbols, such as a dollar sign: $, but instead, only use numbers and a period. In the picture above, I have entered in 2.00, which is a $2.00 discount on the product. Let’s move onto the “Description” field:

The description is there so that you and your customers know what the coupon is for, and is only used if you insert the coupon shortcode in a post to display a list of all your active coupons. Now let’s move onto the “Product” dropdown list:

Here, we are selecting the product which the coupon applies to. In our picture, I’ve selected a product called “Test”. Finally, we have the “Start Date” and “Expiration Date” which are the days in which the coupon is valid:

When you click on the “Start Date” or the “Expiration Date” you will see a full calendar pop up. Using the calendar you can select the specific date, including day, month, and year in which the coupon starts and stops working.

Well, that’s it. Once you’ve filled the form out, it’s time to create your coupon. Click the “Submit Coupon” to create it. You can test out your coupon by adding the product to your shopping cart, then entering the coupon code in during checkout, then clicking the “Update” button. Make sure though that the coupon is live (as in, that you are testing the coupon on a day that falls in between the start and expiration date of the coupon.

Customers

From this menu you can Search your customer database and Manage customer groups.

Search Customers

Select the Profile button to a view a customers order history,information, and access to edit/delete their order.
Select the Email button to write your customer an email directly within wpstorecart.

Add or Remove From Group

Users and Groups

To Enable this section, and manage group roles you will need to first access the section “Marketing” under that tab you will find “Group Discounts”. Here is where you create a group’s level of discount to use in the “Add Remove from Group” customer panel shown here VIP is the pre-made group.

Group Discounts

Found under the Marketing tab in your IDB Ecommerce panel.
This gives you the flexibility to offer Discount Pricing to a variety of customers.

For Example:
To create group , for example lets call this one VIP. Fill in VIP in the Group Name field.

Next fill in the Discount Percentage the VIP group will receive.
Example : 33%

And Last you have the option of Enabling or Disabling this Group Discount.

Click Add Group when finished.

This Group Discount is now available/ enabled to use in the following sections of IDB Ecommerce:
Group Discounts, Users & Groups, Categories.

To Add users to this newly created Group by going to IDB Ecommerce admin menu, then clicking on the Customer menu, then the Add/Remove from Group menu item.

Add Remove a User from Group

By creating a Group Discount in above documentation that level of Group Discount is available to assign to any customer here.

Categories Integration of Group Discounts

By creating a Group Discount in above documentation that level of Group Discount is available to assign to any category here, with the added ability to further show or hide the discount to users by selecting the various options.

Options are:

Visibility

Show this category to all visitors.
Hide this category except for these groups.

If Hide this category except for these groups is selected a Checkbox will appear below to select which group to show category. These groups must first be created. Refer to top of this documentation page for creating groups.

Apply Group Discounts to

All Groups
Only These Groups

By selecting All Groups the Discount will be shown to any group selected.
By Selecting Only these groups you are able to show discount pricing to the select groups of your choice.
A Checkbox will appear below to select which group to show category.These groups must first be created. Refer to top of this documentation page for creating groups.

This gives you the flexibility to offer Discount Pricing to a variety of customers.

Import/Export

As of wpStoreCart 2.4 and above, you are able to export and inport products. However, product variations are not supported at this time.

Currently, you can export SQL or CSV files, and you can import CSV files. Exporting SQL files is still highly useful if you intend to manually import the products using phpMyAdmin or another MySQL solution.

Regarding the CSV format, each column is COMMA separated, and each row by newline. Here is an example CSV file for import:

primkey, name, introdescription, description, thumbnail, price, shipping, download, tags, category, inventory, dateadded, postid, timesviewed, timesaddedtocart, timespurchased, useinventory, donation, weight, length, width, height, discountprice, 
13, Koala, Tesing's the quotes%, <div class="test">Test Div</div>, http://127.0.0.1/wordpress/wp-content/plugins/wpstorecart/images/default_product_img.jpg, 29.99, 0.00, , , 0, 0, 20110726, 995, 34, 12, 0, 0, 0, 0, 0, 0, 0, 19.99, 
17, snarf, Testing again, Keep on testing forever!, http://127.0.0.1/wordpress/wp-content/plugins/wpstorecart/images/default_product_img.jpg, 0.00, 0.00, , , 0, 0, 20110727, 1026, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0.00, 
18, Leroy, , The 3rd album.  Fourteen gracious melodies  to listen.<br /><br />Hope you enjoy them., http://127.0.0.1/wordpress/wp-content/plugins/wpstorecart/images/default_product_img.jpg, 0.00, 0.00, , , 0, 0, 20110728, 1038, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0.00,

Note that the first row can contain the row labels, such as primkey, name, introdescription, etc. But they can also be omitted.

Also note that if you have apostrophes in your product title, intro description, description, or anywhere else, then these need to be changed to the HTML entity code: &#39;

From this page you can create an order for a customer, view any past order from customers, and view any customers profile information.

Orders

Add An Order

Here you can create an order for a customer by filling in these fields.
NOTE : the Cart Contents field will not appear until you save this order.
At that time you then select the Order from the Customer Order List, then add the product/s and complete the order.

Order Status

This can be anything you wish or that your Processing uses.
Example “Processing”

Cart Contents

Skip this when first creating an order.
After saving and opening this order from the customer order list, only then will the product/s option to add appear.

Processor

This is the Processor used to make the transaction.
Example:Paypal

Price

Price of purchase.

Shipping

Price of shipping for order.

User

If customer registered a user ID is available. Check customer database for the ID. And/ Or a previous order.

Email

Customers Email Address

Completed Orders

ALL orders when done are “Completed”

Pending Orders

All orders pending are still resolving.

Refunded Orders

Orders that have been refunded.

Edit Orders

Here you can sort by Completed, Pending or Refunded, Date, User, Order Status, Affiliate , Processor and Price.

First Select the Details button to view an order.
The you will see an Edit Order button above the orders information. Select Edit Order.
The page will then refresh and the order will appear above in the “add an order” section
You may then alter the order and submit order.

Variations

To create a variation, edit any existing product (IDB Ecommerce > Edit Products) and scroll down to the bottom of the editing screen. There you will notice the variations interface. To continue with our examples, here is how you would add the Color variation of Red, Green, Yellow and Orange.

First, there’s the Variation Category, which is “the name of the variation or attribute, for example: color, size, version, etc.” So for our example, we type in Color

Next, there’s One Possible Value, which is where “you should put one of the possible variations. For example, if your variation was Color, then here you put a color, such as Red.” So for our example, we will start by typing Red

Next, we have Price Variation, which is “the amount that the price changes when a customer selects this variation. Put 0 here if the price is the same as normal, put -21.90 to subtract from the total, or 35.99 to add to the cost of the item.” In our example, all the Colors cost the same as the original product, so we will leave this at 0.

Next, is Description which describes the variation to the customer.

Finally, we have Downloads, which are zero or more downloads that are exclusive to the specified variation and the current value.

Once we have filled out the form completely for our variation, all we need to do to create it is press the Green plus icon. Almost immediately below the form you should see the variation being created. If you’ve been following along, you’ve now created the Red Color variation. However, to complete our example, we still need to create the Green, Yellow and Orange Color variations. How do we do this? Simple. Since our form is still completely filled out from creating the Red variation, all we need to do to create Green is to edit the One Possible Value and replace Red with Green. Once we do that, we hit the Green Plus icon to create the Green Color variation. Repeat the process for Yellow and Orange and we’re done. What we’ve done is created one variation category: Color. And we’ve made 4 possible variations of the Color category, with Red, Green, Yellow and Orange Color variations.

Accessories & Combos

To use this feature you will need to have at least 2 products created.

Allows you to connect other products during the shopping experience that are “related” to inspire package savings and/or Combination Deals for the customer’s value. This feature allows you to tailor each products relationships specifically.

Turn on the Accessories and Combo Feature

Under the Marketing drop-down select Combos
Create a Combo Name (you can will need at least one to use features).
Click Create Combo.
Check/Uncheck any of the settings you want enabled.
Click Update Settings.

Add an Accessory to a Current Product

Edit any product.
Click on the Accessories Tab.

Using the Product Drop-down select which product you would like to make an accessory.

You may then also create a discounted price for that accessory combination.
Or leave unchanged (appears as the default product value).

Click the Add New button when done. And Save Product.

To see your results, view the original product on your site. You may have multiple accessory products or combos.

Create Product Combos

Under the Marketing drop-down select Combos.
Create a Combo Name (you can will need one to use features)

Select any of the products and click “include this product in combo button”. You will need to do this for each product you want in your combo.

Select the “Create Combo” button when satisfied. Now that Combo is available to use as an Accessory/Related Combo product offering.

Add a Combo as an Accessory

Edit a product.
You will now see an Accessories Tab.
Select the Accessories tab.

Below the Related products and Accessories you can find Combo Packs settings.

Select from the drop-down any of the pre-made combo/s you wish to add as a Accessory
Select Add New and then Save Product.
Congratulations, you just added a Combo Pack to your product’s Related items! These will be shown when viewing original product.

Changing How Accessories Are Displayed

You can custom tailor how and where wpStoreCart displays any accessories to your customers. To configure this, goto:
wp-admin > IDB Ecommerce > Settings > Display > Products > Where to display product accessories & combos?

FAQ

Q: I cannot get the Accessories to show up on any of my products pages?
A: In the WordPress admin panel goto wp-admin > IDB Ecommerce > Marketing > Combos > Page and Updated settings to YES?

Affiliates

Affiliate Settings:

Access the settings in your IDB Ecommerce administration panel
You will see 2 options to set up the affiliate percentage at pay out schedule.
Below will appear any sales With Affiliate Commissions

Affiliate Payment Percentage

– This is the percentage of sale given to your affiliate’s.

Number of Days Before Eligible for Payment

This is the number of days before payment is sent to affiliate.  You must manually send payments or write your own plugin to handle automatic payments.

Select update when done.

Affiliate Links

Next you need to create a page for Your Affiliates to access the URL Links for tracking.

This can be done by using the shortcode:
[idbecommerce display=affiliate]

This will then create the URL links for the logged in affiliate on the page.It will also show your affiliate sales information.

Affiliate Sales Tracking

Above shows the tracking for the affiliate to view and gather Links, for the Site administrator if a sale is from an affiliate it show in the admin panel in 2 places.

1. On the Orders page, if it is an affiliate sale the far right column named “affiliate” will have the users name filled in.

2. To view the affiliate sale in full detail access the affiliates settings page. Information will be just below the settings.

Statistics

Statistics available in custom date selections, including daily, weekly, monthly, yearly, and more. Each statistic listed below, also comes with 4 charts, including bar and pie charts. That’s 18 statistics as well as 72 in depth charts, all designed to give you the information you need in order to make more money with your ecommerce business. Here is a current list of the available statistics and charts:

  • “Product Views” to “Add to Cart” conversion rate (CTR)
  • “Add to Cart” to “Completed Sale” conversion rate (CTR)
  • “Product Views” to “Completed Sale” conversion rate (CTR)
  • Abandoned cart percentage
  • Most viewed products
  • Most added to cart products
  • Most purchased products

To Disable Register Globals

Disabling register_globals is highly recommended for several reasons. First off, it’s depreciated and will not even be available in PHP 6 to use. The reason for this, is because most PHP developers write code with the expectation that register_globals is off. When it is on, many otherwise secure PHP scripts can instantly become plagued with security holes. So, disabling register_globals is highly desirable, but it is not always possible for you do yourself, depending on your web host (pro tip: any good hosting company will already have register_globals disabled by default.) So how do you turn off register_globals? That depends on your webhost and server setup, but I will explore the most common methods below:

php.ini Override File

If you’re on shared hosting, your best bet to disable register_globals is to email your web host or open a support ticket and ask them to do it for you. Some shared hosts will allow you put a php.ini file in your root web directory, to override default settings. If you’re host allows this, do this:

1) Open up Windows Notepad or another text editor (do not use Word or other rich text editors) and then make a new document.
2) Paste this into the document:
[PHP]
register_globals=0;

3) Now save the document as “php.ini” without the quotes, and upload it to the root of your site.

.htaccess Override

The next method involves editing or creating an .htaccess file in the root directory of your site.

1) Open up Windows Notepad or another text editor (do not use Word or other rich text editors) and then either open up your .htaccess file or make a new document.
2) Paste this into the bottom of the file:
php_flag register_globals off

3) Now save the document as “.htaccess” without the quotes, and upload it to the root of your site. Note, that some editors like notepad, will not let you save a file as .htaccess, in which case, you can name it whatever you like, and then rename it .htaccess once you have uploaded the file.

Warning, this next method may cause a 500 Internal Server Error if your server configuration doesn’t support this method. If that happens, simply remove the line from your .htaccess file, or if you didn’t have an .htaccess file before, you can delete the file altogether.

Core php.ini Editing

If you’re on a VPS or dedicated server, chances are, you have access to the real php.ini. In this case, all you need to do is locate the register_globals=1 or register_globals=On code and change it to register_globals=0 instead.

Have any questions, comments, or concerns? Please post a comment below and we’ll be happy to reply! Thanks.

Developer APIs

Extending Products

Introduction

The default product model that IDB Ecommerce uses is not appropriate for all businesses and websites. Fortunately, using IDB Ecommerce Action Hooks, you can extend the capabilities of products in any way imaginable, both in the admin panel, and to the customers. This document will provide a brief overview of how any intermediate PHP/Wordpress developer, can extend the IDB Ecommerce product system.

Quick Overview

Programming Skill: Intermediate & above
Skills Needed: PHP, HTML, WordPress Hooks & Filters

Initial Product Editing Hooks

wpStoreCart v3.0.14 & above.
wpsc_admin_edit_product_top The first action hook called in this context. The product key you are editing will be in the $_GET[‘keytoedit’] variable.
wpsc_admin_edit_product_loading This hook is called directly after attempting to load the data for $_GET[‘keytoedit’]
wpsc_admin_edit_product_js A hook for implementing custom javascript. If you tie a function to wpsc_admin_edit_product_js then the function should echo out javascript only.

Hooks for Adding New Tabs

wpStoreCart v3.0.14 & above.
wpsc_admin_edit_product_tab_header A hook for implementing custom javascript. If you tie a function to wpsc_admin_edit_product_tab_header then the function should echo out a li tag in this format:

echo '<li>
   <a href="#tab_custom1">
     <img src="'.plugins_url() . '/wpstorecart/images/cart_put.png" /> 
     Custom Tabname
   </a>
</li>';
wpsc_admin_edit_product_tab_contents Use this, in conjunction with the wpsc_admin_edit_product_tab_header hook, to create a new tab. This particular hook should echo out a DIV with the actual contents of your new tab. The tab ID should be identical to href location specified in the a tag you created with the wpsc_admin_edit_product_tab_header hook.

Hooks for Adding Content to Existing Tabs In New Rows

Product Tab
wpStoreCart v3.0.14 & above.
wpsc_admin_edit_product_table_before_product_name A hook inside of an HTML table, directly before the Product Name table row. For this, and other wpsc_admin_edit_product_table_before_* hooks, remember that you are already within a form, so do not use the form tag, and also remember to echo out a table row in this format:

echo '
<tr>
    <td><p>Descriptive Name</p></td>
    <td>Main content you are adding, like inputs. No form elements are allowed.</td>
</tr>';
wpsc_admin_edit_product_table_before_product_intro A hook inside of an HTML table, directly before the Product Intro Description table row.
wpsc_admin_edit_product_table_before_product_description A hook inside of an HTML table, directly before the Product Full Description table row.
wpsc_admin_edit_product_table_before_product_price A hook inside of an HTML table, directly before the Product Price table row.
wpsc_admin_edit_product_table_before_product_inventory A hook inside of an HTML table, directly before the Product Inventory table row.
wpsc_admin_edit_product_table_before_product_category A hook inside of an HTML table, directly before the Product Category table row.
wpsc_admin_edit_product_table_before_product_downloads A hook inside of an HTML table, directly before the Product Download table row.
wpsc_admin_edit_product_table_before_product_thumbnail A hook inside of an HTML table, directly before the Product Thumbnail table row.
wpsc_admin_edit_product_table_after_product_thumbnail A hook inside of an HTML table, directly after the Product Thumbnail table row, but before the table tag is closed.

Hooks for Adding Content to Existing Tabs In Existing Rows

Saving Product Hook

Chances are, if you are creating additional product admin panel options, you’re also going to want to be able to save data. Of course, you could implement your own ajax calls to save your data, but we recommend waiting for the admin user to hit the “Save Product” button, and to use the wpsc_admin_save_product() hook to save your data there.

wpStoreCart v3.0.14 & above.
wpsc_admin_save_product Hook called when saving a product. Product data is transferred using POST, meaning your code should also work with POST data. The product key is pre-santitized and is available in this variable: $_POST[‘wpsc-keytoedit’]

Filters For Product Pages & Shortcodes

While the previous action hooks all dealt with adding additional admin panels for creating and editing products, the next items are filters for adding manipulating and adding new content when the product is displayed on it’s page. All of these filters are available both in the product’s page, as well as any product display shortcode that is used to display the product. This set of filters was initially created in wpStoreCart 3.0.15, so you will need that version or higher to use these them.

Remember, most items on the product page can be arranged in any way the admin wishes. This also means that your filters may be displayed nearly anywhere on the page. For example, if you displayed something using the wpsc_display_product_before_thumbnail() hook, your content would always display directly before the thumbnail. However, the thumbnail itself may be positioned at the bottom of the product page, at the top, or anywhere else the admin decides.

wpStoreCart v3.0.15 & above. Note that when using these filters, if you declare $wpsc_results as global inside your function, you can access the product’s data in this format $wpsc_results[0][‘primkey’], $wpsc_results[0][‘introdescription’] etc.
wpsc_display_product_start A filter that expects you to return a string. The returned string is displayed directly underneath the <div class=”wpsc-single-product”>
wpsc_display_product_end A filter that expects you to return a string. The returned string is displayed directly before the .wpsc-single-product DIV is closed.
wpsc_display_product_before_thumbnail A filter that expects you to return a string. The returned string is displayed directly before the products thumbnail, directly after the <div class=”wpscsort_1?>
wpsc_display_product_after_thumbnail A filter that expects you to return a string. The returned string is displayed directly after the products thumbnail, directly before the wpscsort_1 DIV is closed.
wpsc_display_product_before_addtocart A filter that expects you to return a string. The returned string is displayed directly before the products add to cart button, directly after the <div class=”wpscsort_3?>
wpsc_display_product_after_addtocart A filter that expects you to return a string. The returned string is displayed directly after the products add to cart button, directly before the wpscsort_3 DIV is closed.
wpsc_display_product_before_picture_gallery A filter that expects you to return a string. The returned string is displayed directly before the products picture gallery, directly after the <div class=”wpscsort_4?>
wpsc_display_product_after_picture_gallery A filter that expects you to return a string. The returned string is displayed directly after the products picture gallery, directly before the wpscsort_4 DIV is closed.
wpsc_display_product_before_single_intro A filter that expects you to return a string. The returned string is displayed directly before the products intro description, directly after the <div class=”wpscsort_5?>
wpsc_display_product_after_single_intro A filter that expects you to return a string. The returned string is displayed directly after the products intro description, directly before the wpscsort_5 DIV is closed.
wpsc_display_product_before_single_description A filter that expects you to return a string. The returned string is displayed directly before the products description, directly after the <div class=”wpscsort_6?>
wpsc_display_product_after_single_description A filter that expects you to return a string. The returned string is displayed directly after the products description, directly before the wpscsort_6 DIV is closed.
wpsc_display_product_before_accessories A filter that expects you to return a string. The returned string is displayed directly before the products accessories, directly after the <div class=”wpscsort_7?>
wpsc_display_product_after_accessories A filter that expects you to return a string. The returned string is displayed directly after the products accessories, directly before the wpscsort_7 DIV is closed.

Filters For Product Catalog

wpStoreCart v3.1.2 & above. if you declare $wpsc_result as global inside your function, you can access the current product’s data in this format $wpsc_result[‘primkey’], $wpsc_result[‘introdescription’] etc.
wpsc_display_catalog_start A filter that expects you to return a string. The returned string is displayed directly before each product in the catalog.
wpsc_display_catalog_end A filter that expects you to return a string. The returned string is displayed directly after each product in the catalog.
wpsc_display_catalog_before_thumbnail A filter that expects you to return a string. The returned string is displayed directly before each products thumbnail, directly after the wpscsort_1 DIV
wpsc_display_catalog_after_thumbnail A filter that expects you to return a string. The returned string is displayed directly after each products thumbnail, directly before the wpscsort_1 DIV is closed.
wpsc_display_catalog_before_title A filter that expects you to return a string. The returned string is displayed directly before each products title, directly after the wpscsort_2 DIV
wpsc_display_catalog_after_title A filter that expects you to return a string. The returned string is displayed directly after each products title, directly before the wpscsort_2 DIV is closed.
wpsc_display_catalog_before_intro A filter that expects you to return a string. The returned string is displayed directly before the products intro description, directly after the wpscsort_3 DIV
wpsc_display_catalog_after_intro A filter that expects you to return a string. The returned string is displayed directly after the intro description, directly before the wpscsort_3 DIV is closed.
wpsc_display_catalog_before_description A filter that expects you to return a string. The returned string is displayed directly before the products description, directly after the wpscsort_4 DIV
wpsc_display_catalog_after_description A filter that expects you to return a string. The returned string is displayed directly after the description, directly before the wpscsort_4 DIV is closed.
wpsc_display_catalog_before_price A filter that expects you to return a string. The returned string is displayed directly before the products price, directly after the wpscsort_5 DIV
wpsc_display_catalog_after_price A filter that expects you to return a string. The returned string is displayed directly after the price, directly before the wpscsort_5 DIV is closed.
wpsc_display_catalog_before_addtocart A filter that expects you to return a string. The returned string is displayed directly before the products add to cart button, directly after the wpscsort_6 DIV
wpsc_display_catalog_after_addtocart A filter that expects you to return a string. The returned string is displayed directly after the add to cart button, directly before the More Info button.
wpsc_display_catalog_before_moreinfo A filter that expects you to return a string. The returned string is displayed directly before the products more info button, directly after the add to cart button.
wpsc_display_catalog_after_moreinfo A filter that expects you to return a string. The returned string is displayed directly after the add to cart button, directly before the wpscsort_6 DIV.

Payment Gateway API

Introduction

This document is a guide and technical overview of how to create additional Payment Gateways for IDB Ecommerce, using the IDB Ecommerce Payment Gateway API. The IDB Ecommerce Payment Gateway API allows you to extend IDB Ecommerce so that it can accept payments through additional payment providers of your choice.

To effectively utilize this information, you will need to have intermediate experience with PHP & WordPress, as well as documentation from the payment provider regarding their payment API. It is also recommended that you have experience creating WordPress plugins, although this guide will also you walk you through the basics of creating a new WordPress plugin for your custom payment gateway. We also provide a barebones plugin for you to download to base your payment gateway off of. With that said, this document is intended for intermediate and above programmers. However, we do love feedback, and regardless of skill level, if you have any questions regarding the wpStoreCart Payment Gateway API, simply post in the comments below.

We will begin with a step by step tutorial, and will create a new WordPress/wpStoreCart plugin for our payment gateway. You should have a suitable testing machine with a local copy of WordPress to code with, as well as a code editor or IDE. I personally use NetBeans for PHP, but even Notepad or Emacs (I’ll take vi myself) will work. In the tutorial, I will code a payment gateway for PayPal (which is redundant because it’s already included in IDB Ecommerce) After the tutorial, we will follow it with a reference guide.

Programming Skill: Intermediate & above
Time Estimate: Varies depending on your payment gateway.
Skills Needed: PHP, HTML, Server to Server API knowledge, WordPress Hooks & Filters

Creating a Payment Gateway Plugin

Since the goal is to create a new payment gateway, something that IDB Ecommerce doesn’t already have, that means we need to keep our code separate from the main wpStoreCart plugin. The easiest way to make all this code portable and reusable, is to simply create our new payment gateway inside of a new WordPress plugin. That way, if we later need it on another site, it’s easy to use on any site. We can also redistribute it, and easily maintain it by making it a WordPress plugin. Once we’ve created the WordPress plugin, it’s only a matter of creating a few files, functions, classes, and hooking into action and filter hooks and we’ll be all done. However, each payment provider has a different API to interface with, and that is the one part of this whole process where this guide won’t be able to provide specific information. However, we are available for hire if you would like to pay us to code a custom payment gateway for you. With the sales pitch out of the way, let’s move onto creating our blank WordPress plugin:

Make a New WordPress Plugin

We’re going to begin our journey of creating a new payment gateway by starting with a fresh new WordPress plugin. To begin, let’s head over to our local test server’s WordPress plugin directory and create a new directory. For the sake of this tutorial, we’re going to name this plugin wpsc-payment-gateway-bb and so let’s name our new directory wpsc-payment-gateway-bb. Inside this directory, let’s create two files to begin with:

  • wpsc-payment-gateway-bb.php
  • readme.txt

Now we’ll need to edit both the files to put in the correct WordPress plugin headers, so that WordPress recognizes this as a plugin.

Editing wpsc-payment-gateway-bb.php

First, we’ll edit wpsc-payment-gateway-bb.php in our text editor/IDE. Paste this code into the files, then save it (keep it open though, because we will be doing more edits to this file shortly.)

Editing readme.txt

Now, let’s edit the readme.txt file. You should adjust this according to your needs, as I am only providing a barebones readme.txt below. Feel free to close this file when you’re done. Here’s the barebones code to paste into your readme.txt file:

=== IDB Ecommerce Payment Gateway Barebones ===
Contributors: jquindlen
Donate link: http://wpstorecart.com/
Tags: wpStoreCart
Requires at least: 3.3.0
Tested up to: 3.5
Stable tag: 1.0.0

A barebones plugin to assist in creating payment gateways for IDB Ecommerce powered stores.

== Description ==

A barebones plugin to assist in creating payment gateways for IDB Ecommerce powered stores.

== Installation ==

Replace this with your installation instructions

== Frequently Asked Questions ==

Replace this with your FAQ

== Screenshots ==
 
1. A barebones plugin to assist in creating payment gateways for IDB Ecommerce powered stores.

== Changelog ==

= 1.0.0 =
* First release!

== Upgrade Notice ==

= 1.0.0 =
* First release!

Activating Our New Plugin

Now that we have a basic plugin going, we can activate from the WordPress plugins admin page, like any other plugin. However, be aware that we will be editing this plugin, and if you happen to load a WordPress page while you’ve got an error in your code, it can deactivate your plugin or otherwise cause your site not to load until you fix the issue. This is another reason why you should only be doing this development on a local test server. When I develop, I always keep my in-development plugin loaded, and only refresh WordPress pages when I think the code is bug free.

So let’s go ahead and visit wp-admin > Plugins > Installed Plugins > IDB Ecommerce Payment Gateway Barebones > Activate

How to Add Admin Panel Options

Adding options and settings for your payment gateway is very simple. Simply create a function inside of wpsc-payment-gateway-bb.php that echoes out your options, like this:

/*
 * How to create payment gateway options on the wp-admin > IDB Ecommerce > Settings > Payment > tab:
 */
function myCustomFunction() {
    global $wpstorecart_settings_obj;

    $wpstorecart_settings_obj = new wpscSettings();
    $wpStoreCartOptions = $wpstorecart_settings_obj->getAdminOptions();

    echo '
Your Payment Gateway\'s Name

‘.__(‘Description’,’wpstorecart’).”.__(‘Value’,’wpstorecart’).’

If set to Yes, customers can purchase during checkout using AbcXyz payment gateway.

‘.__(‘Option’,’wpstorecart’).’
Accept AbcXyz Inc. Payments?

‘; }

and then hook into the Payment Settings page like this, using your function name:

add_action('wpsc_admin_payment_options_page', 'myCustomFunction');

Now there is still one thing left to do before this setting will work. We need to register the setting itself. In the example above, the setting is $wpStoreCartOptions[‘allowAbcXyz’]

To add this, we follow the same steps above. Here’s our new function:

/**
 * How to save the custom settings you created for your payment gateway
 */
function myCustomSaveFunction() {
    global $wpstorecart_settings_obj, $wpdb;

    $wpstorecart_settings_obj = new wpscSettings();
    $wpStoreCartOptions = $wpstorecart_settings_obj->getAdminOptions();

    if(isset($_POST['allowAbcXyz'])) { // Here's where you update the value of the variable
        wpscCheckAdminPermissions(); // This insures that only IDB Ecommerce Managers can edit the settings
        $wpStoreCartOptions['allowAbcXyz'] = $wpdb->escape($_POST['allowAbcXyz']); // Changes the variable in the settings
        update_option('wpStoreCartAdminOptions', $wpStoreCartOptions);    
    }
}

we’ll hook this into the wpsc_admin_save_settings action hook.

add_action('wpsc_admin_save_settings', 'myCustomSaveFunction');

Note that in the example above, the default value will not be set until a IDB Ecommerce Manager clicks the Save Settings button. However, in many cases, you will need a default value to load up before that time. In that case, remove the default value code from the above function, and instead put it into a new function, like this:

/*
 * Default custom settings values samples
 */
function myCustomDefaultValuesFunction() {
    global $wpstorecart_settings_obj;

    $wpstorecart_settings_obj = new wpscSettings();
    $wpStoreCartOptions = $wpstorecart_settings_obj->getAdminOptions();
    
    if(!isset($wpStoreCartOptions['allowAbcXyz'])) { // If the setting hasn't been initialized previously, give it a default value
        $wpStoreCartOptions['allowAbcXyz'] = 'false'; // Default value.
        update_option('wpStoreCartAdminOptions', $wpStoreCartOptions);
    }    
}

We will tie this into the wpsc_admin action hook, like this:

add_action('wpsc_admin', 'myCustomDefaultValuesFunction');

Add Your Checkout Button

When a user has made it through checkout, and are ready to pay using your processor, you will need to provide a button for them to click on. Keeping with tradition, it’s time to create a new function. This function should output an input submit button, and it should definitely have the following two classes: “wpsc-button wpsc-checkout-button” Another important thing to take into consideration is the changing of the #paymentGateway field. You’ll need to use #paymentGateway value a little later to process the actual order. Here’s my example code, which I put inside of wpsc-payment-gateway-bb.php:

function myCustomCheckoutButtonFunction($output) {
    global $wpstorecart_settings_obj;

    $wpstorecart_settings_obj = new wpscSettings();
    $wpStoreCartOptions = $wpstorecart_settings_obj->getAdminOptions();    
    
    if($wpStoreCartOptions['allowAbcXyz']=='true') {
        $output .= '<input type="submit" value="AbcXyz" class="wpsc-button wpsc-checkout-button wpsc-checkout '.$wpStoreCartOptions['button_classes_checkout'].'" onclick=" jQuery(\'#paymentGateway\').val(\'AbcXyz\');" onsubmit=" jQuery(\'#paymentGateway\').val(\'AbcXyz\');">';
    }
    
    return $output;
}

and then, instead of an action hook, we attach this to a filter hook, like this:

add_filter('wpsc_final_checkout_buttons','myCustomCheckoutButtonFunction', 10, 1);

Extend the PaymentGateway Class

With our base plugin started, it’s now time to move into creating our payment gateway. First, let’s consult our payment provider’s documentation on their API. What we need to do will vary by payment gateway, but the general outline is this:

  • We pass the values from IDB Ecommerce to the Payment Gateway
  • The payment gateway handles the payment
  • The payment gateway communicates back to wpStoreCart whether payment was successful or not

So step 1 is we need to take the values from IDB Ecommerce and send it to the payment gateway. For many payment providers, this is done by simply submitting a form, using a GET or POST request. If the payment gateway you are coding uses this method, then your next step is to extend the PaymentGateway class to facilitate this. The PaymentGateway class is generic, and easily allows you to define the fields and the URL to submit the payment to your provider. Let’s explore how to set this up inside of wpsc-payment-gateway-bb.php:

include_once(WP_PLUGIN_DIR.'/wpstorecart/wpstorecart/payment/PaymentGateway.php');
class AbcXyz extends PaymentGateway {

    /**
	 * Initialize the Paypal gateway
	 *
	 * @param none
	 * @return void
	 */
	public function __construct()
	{
        parent::__construct();

        // Some default values of the class
		$this->gatewayUrl = 'https://www.paypal.com/cgi-bin/webscr';
		$this->ipnLogFile = 'paypal.ipn_results.log';

		// Populate $fields array with a few default
		$this->addField('rm', '2');           // Return method = POST
		$this->addField('cmd', '_xclick');
	}

    /**
     * Enables the test mode
     *
     * @param none
     * @return none
     */
    public function enableTestMode()
    {
        $this->testMode = TRUE;
        $this->gatewayUrl = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    }

    /**
	 * Validate the IPN notification
	 *
	 * @param none
	 * @return boolean
	 */
	public function validateIpn() {
		// parse the paypal URL
		$urlParsed = parse_url($this->gatewayUrl);

		// generate the post string from the _POST vars
		$postString = '';

		foreach ($_POST as $field=>$value)
		{
			$this->ipnData["$field"] = $value;
			$postString .= $field .'=' . urlencode(stripslashes($value)) . '&';
		}

		$postString .="cmd=_notify-validate"; // append ipn command

		// open the connection to paypal
		$fp = fsockopen($urlParsed[host], "80", $errNum, $errStr, 30);

		if(!$fp)
		{
			// Could not open the connection, log error if enabled
			$this->lastError = "fsockopen error no. $errNum: $errStr";
			$this->logResults(false);

			return false;
		}
		else
		{
			// Post the data back to paypal

			fputs($fp, "POST $urlParsed[path] HTTP/1.1\r\n");
			fputs($fp, "Host: $urlParsed[host]\r\n");
			fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
			fputs($fp, "Content-length: " . strlen($postString) . "\r\n");
			fputs($fp, "Connection: close\r\n\r\n");
			fputs($fp, $postString . "\r\n\r\n");

			// loop through the response from the server and append to variable
			while(!feof($fp))
			{
				$this->ipnResponse .= fgets($fp, 1024);
			}

		 	fclose($fp); // close connection
		}

		if (eregi("VERIFIED", $this->ipnResponse))
		{
		 	// Valid IPN transaction.
		 	$this->logResults(true);
		 	return true;
		}
		else
		{
		 	// Invalid IPN transaction.  Check the log for details.
			$this->lastError = "IPN Validation Failed . $urlParsed[path] : $urlParsed[host]";
			$this->logResults(false);
			return false;
		}
	}
}

Processing the Cart & Payment

In the last step. IDB Ecommerce calculates everything you’ll need and provides the values you’ll need to pass to your payment gateway, using the global variable $wpscPaymentGateway, which is an array with the following data:

$wpscPaymentGateway[‘payment_gateway’] The payment gateway’s name, for example: paypal
$wpscPaymentGateway[‘success_permalink’] The URL to redirect customers to if payment succeeds
$wpscPaymentGateway[‘failed_permalink’] The URL to redirect customers to if payment fails
$wpscPaymentGateway[‘payment_gateway_item_count’] The number of unique products in the cart (does not take into account quantities, also note that variations and attributes are unique products and do increase this value.
$wpscPaymentGateway[‘cart_dbf’] The cart contents in database format: 0*0
$wpscPaymentGateway[‘cart_description’] A comma separated list of item names and quantity of the entire cart, for example: Item Name One (x2), Item Two
$wpscPaymentGateway[‘total_price’] The total price of the cart
$wpscPaymentGateway[‘total_shipping’] The total shipping for the cart
$wpscPaymentGateway[‘total_price_with_shipping’] The total price of the cart, including shipping charges
$wpscPaymentGateway[‘final_price’] The total price + the shipping price + calculated taxes
$wpscPaymentGateway[‘is_coupon_set’] False if no coupon has been set, true if there has been
$wpscPaymentGateway[‘discount_amount’] The amount to subtract from the total
$wpscPaymentGateway[‘discount_percent’] The percent to subtract from the total
$wpscPaymentGateway[‘is_donation’] False if not a donation, true if it is
$wpscPaymentGateway[‘order_tax’] Tax amount of $wpscPaymentGateway[‘total_price’] combined with $wpscPaymentGateway[‘total_shipping’]
$wpscPaymentGateway[‘customer_user_id’] The WordPress user id of the customer, where 0 is a guest
$wpscPaymentGateway[‘customer_email’] The email of the customer
$wpscPaymentGateway[‘customer_username’] The display name of the customer. This is their username, not their actual names. Guests will include their IP address in this field.
$wpscPaymentGateway[‘order_id’] The unique key associated with this order. If you need to do additional MySQL queries with this order, note that this ID is the primary key of the wpstorecart_orders table.

Submitting To The Payment Gateway

After all that prep work, we’re at the end of the road. It’s time to take our custom payment gateway class that we created, and use it to submit the data that wpStoreCart has provided about the order to our payment provider. The primary way to do that is to use the addField method of the payment gateway object and feed it data from either $wpscPaymentGateway, $wpStoreCartOptions, or your own custom data.

For example, most payment gateways will want to know what URL to send your customer to if the payment is successful. In this case, PayPal has a field called return that it expects. Using the API reference table, we see that IDB Ecommerce provides a URL for successful payments in the global variable $wpscPaymentGateway[‘success_permalink’] so the following code

$myPaypal->addField('return', $wpscPaymentGateway['success_permalink']);  

However, that code needs to be in the right place. Again, we use an action hook

function process_AbcXyz_payments() {
    global $wpscPaymentGateway, $wpstorecart_settings_obj;

    $wpstorecart_settings_obj = new wpscSettings();
    $wpStoreCartOptions = $wpstorecart_settings_obj->getAdminOptions(); // Grabs the settings    
    
    if($wpscPaymentGateway['payment_gateway'] == 'AbcXyz') {  // This needs to match the value we set early in this code: onsubmit=" jQuery(\'#paymentGateway\').val(\'AbcXyz\');"

		$myPaypal = new AbcXyz(); // Create an instance of the AbcXyz class we just defined
		$myPaypal->addField('business', $wpStoreCartOptions['paypalemail']); // Specify your paypal email
		$myPaypal->addField('currency_code', $wpStoreCartOptions['currency_code']); // Specify the currency
		$myPaypal->addField('rm', '2'); // Return method = POST
		$myPaypal->addField('upload', '1');
		$myPaypal->addField('cancel_return', $wpscPaymentGateway['failed_permalink']);
		$myPaypal->addField('notify_url', $wpStoreCartOptions['paypalipnurl']); // Specify the url where paypal will send the IPN
		if($wpStoreCartOptions['paypaltestmode']=='true') { $myPaypal->enableTestMode(); } // Enable test mode if needed

		foreach ($wpscPaymentGateway['cart'] as $item) {
					$myPaypal->addField('item_name_' . $item['item_number'], $item['name']);
					$myPaypal->addField('amount_' . $item['item_number'], $item['price']);
					$myPaypal->addField('item_number_' . $item['item_number'], $item['item_number']);
					$myPaypal->addField('quantity_' . $item['item_number'], $item['qty']);
		}

		// Implement shipping here if needed
		if($wpscPaymentGateway['total_shipping'] > 0) {
			$myPaypal->addField('shipping_1', $wpscPaymentGateway['total_shipping']);
		}                    
		
		if($wpscPaymentGateway['is_donation'] == true) {
			$myPaypal->addField('cmd', '_donations');
		} else {
			$myPaypal->addField('cmd', '_cart');
		}

		if($wpscPaymentGateway['discount_amount'] > 0) {
			@$myPaypal->addField('discount_amount_cart', $wpscPaymentGateway['discount_amount']);
		}
		if($wpscPaymentGateway['discount_percent'] > 0) { //
			@$myPaypal->addField('discount_rate_cart', $wpscPaymentGateway['discount_percent']);
		}

		

		$myPaypal->addField('return', $wpscPaymentGateway['success_permalink']);                    
		
		// Specify any custom value, here we send the primkey of the order record
		$myPaypal->addField('custom', $wpscPaymentGateway['order_id']);

		// Tax
		if($wpscPaymentGateway['order_tax'] > 0) {
			$myPaypal->addField('tax_cart', $wpscPaymentGateway['order_tax']);
		}

		$myPaypal->submitPayment();
		
    }
}

and then we tie this function to our wpsc_process_payment_gateways() hook.

add_action('wpsc_process_payment_gateways', 'process_AbcXyz_payments');

Determining if the Payment Was Successful

The final thing that needs to be done before we can wrap everything up, is to figure out whether or not the payment succeeded. Make sure to mark an order as “Completed” for order status in the database.

 

Reference Guide

Available Variables

$wpscPaymentGateway[‘payment_gateway’] The payment gateway’s name, for example: paypal
$wpscPaymentGateway[‘success_permalink’] The URL to redirect customers to if payment succeeds
$wpscPaymentGateway[‘failed_permalink’] The URL to redirect customers to if payment fails
$wpscPaymentGateway[‘payment_gateway_item_count’] The number of unique products in the cart (does not take into account quantities, also note that variations and attributes are unique products and do increase this value.
$wpscPaymentGateway[‘cart_dbf’] The cart contents in database format: 0*0
$wpscPaymentGateway[‘cart_description’] A comma separated list of item names and quantity of the entire cart, for example: Item Name One (x2), Item Two
$wpscPaymentGateway[‘total_price’] The total price of the cart
$wpscPaymentGateway[‘total_shipping’] The total shipping for the cart
$wpscPaymentGateway[‘total_price_with_shipping’] The total price of the cart, including shipping charges
$wpscPaymentGateway[‘final_price’] The total price + the shipping price + calculated taxes
$wpscPaymentGateway[‘is_coupon_set’] False if no coupon has been set, true if there has been
$wpscPaymentGateway[‘discount_amount’] The amount to subtract from the total
$wpscPaymentGateway[‘discount_percent’] The percent to subtract from the total
$wpscPaymentGateway[‘is_donation’] False if not a donation, true if it is
$wpscPaymentGateway[‘order_tax’] Tax amount of $wpscPaymentGateway[‘total_price’] combined with $wpscPaymentGateway[‘total_shipping’]
$wpscPaymentGateway[‘customer_user_id’] The WordPress user id of the customer, where 0 is a guest
$wpscPaymentGateway[‘customer_email’] The email of the customer
$wpscPaymentGateway[‘customer_username’] The display name of the customer. This is their username, not their actual names. Guests will include their IP address in this field.
$wpscPaymentGateway[‘order_id’] The unique key associated with this order. If you need to do additional MySQL queries with this order, note that this ID is the primary key of the wpstorecart_orders table.

Available Cart Variables

n = the cart item number. First item in cart is 1, for example $wpscPaymentGateway[‘cart’][3][‘name’] is the 3rd item in the cart’s name.

$wpscPaymentGateway[‘cart’][n][‘item_number’] The cart item number, starting with 1
$wpscPaymentGateway[‘cart’][n][‘name’] The cart item’s name
$wpscPaymentGateway[‘cart’][n][‘price’] The item’s price
$wpscPaymentGateway[‘cart’][n][‘qty’] The quantity of this item in the cart

Action Hooks

wpsc_admin_payment_options_page() Echo out a table with the class of widefat, that has input elements for each setting your payment gateway will need.
wpsc_admin_save_settings() Using the $_POST global variable, save the options you previously created input elements for
wpsc_admin() Save default settings here
wpsc_process_payment_gateways() This hook is for sending data from wpStoreCart, to your payment gateway.

Filter Hooks

wpsc_final_checkout_buttons() Return a string with a button that sets the value of the #paymentGateway element.

Shipping API

Introduction

This document is a guide and technical overview of how to create additional Shipping Providers for IDB Ecommerce, using the IDB Ecommerce Shipping API. The IDB Ecommerce Shipping API allows you to extend IDB Ecommerce so that it can provide shipping rate quotes and shipping provider integration.

To effectively utilize this information, you will need to have intermediate experience with PHP & WordPress, as well as documentation from the shipping provider regarding their shipping API. It is also recommended that you have experience creating WordPress plugins, although this guide will also you walk you through the basics of creating a new WordPress plugin for your custom shipping provider. We also provide a barebones plugin for you to download to base your shipping provider off of. With that said, this document is intended for intermediate and above programmers. However, we do love feedback, and regardless of skill level, if you have any questions regarding the wpStoreCart Shipping API, simply post in the comments below.

We will begin with a step by step tutorial, and will create a new WordPress/IDB Ecommerce plugin for our shipping provider. You should have a suitable testing machine with a local copy of WordPress to code with, as well as a code editor or IDE. I personally use NetBeans for PHP, but even Notepad or Emacs (I’ll take vi myself) will work. In the tutorial, I will code a free shipping provider. After the tutorial, we will follow it with a reference guide.

Programming Skill: Intermediate & above
Time Estimate: Varies depending on your shipping service.
Skills Needed: PHP, HTML, Server to Server API knowledge, WordPress Hooks & Filters

Creating a Shipping Gateway Plugin

Since the goal is to create a new shipping provider gateway, something that IDB Ecommerce doesn’t already have, that means we need to keep our code separate from the main wpStoreCart plugin. The easiest way to make all this code portable and reusable, is to simply create our new shipping provider gateway inside of a new WordPress plugin. That way, if we later need it on another site, it’s easy to use on any site. We can also redistribute it, and easily maintain it by making it a WordPress plugin. Once we’ve created the WordPress plugin, it’s only a matter of creating a few files, functions, classes, and hooking into action and filter hooks and we’ll be all done. However, each shipping service has a different API to interface with, and that is the one part of this whole process where this guide won’t be able to provide specific information. However, we are available for hire if you would like to pay us to code a custom shipping service for you. With the sales pitch out of the way, let’s move onto creating our blank WordPress plugin:

Make a New WordPress Plugin

We’re going to begin our journey of creating a new shipping gateway by starting with a fresh new WordPress plugin. To begin, let’s head over to our local test server’s WordPress plugin directory and create a new directory. For the sake of this tutorial, we’re going to name this plugin wpsc-shipping-gateway-bb and so let’s name our new directory wpsc-shipping-gateway-bb. Inside this directory, let’s create two files to begin with:

  • wpsc-shipping-gateway-bb.php
  • readme.txt

Now we’ll need to edit both the files to put in the correct WordPress plugin headers, so that WordPress recognizes this as a plugin.

Editing wpsc-shipping-gateway-bb.php

First, we’ll edit wpsc-shipping-gateway-bb.php in our text editor/IDE. Paste this code into the files, then save it (keep it open though, because we will be doing more edits to this file shortly):

<?php
/*
Plugin Name: IDB Ecommerce Shipping Gateway Barebones
Plugin URI: http://wpstorecart.com/
Description: A barebones plugin to assist in creating shipping gateways for IDB Ecommerce powered stores.
Version: 1.0.0
Author: wpStoreCart, LLC
Author URI: http://wpstorecart.com/
License: LGPL or MIT license
*/

?>

Editing readme.txt

Now, let’s edit the readme.txt file. You should adjust this according to your needs, as I am only providing a barebones readme.txt below. Feel free to close this file when you’re done. Here’s the barebones code to paste into your readme.txt file:

=== IDB Ecommerce Shipping Gateway Barebones ===
Contributors: jquindlen
Donate link: http://wpstorecart.com/
Tags: wpStoreCart
Requires at least: 3.3.0
Tested up to: 3.5
Stable tag: 1.0.0

A barebones plugin to assist in creating shipping gateways for IDB Ecommerce powered stores.

== Description ==

A barebones plugin to assist in creating shipping gateways for IDB Ecommerce powered stores.

== Installation ==

Replace this with your installation instructions

== Frequently Asked Questions ==

Replace this with your FAQ

== Screenshots ==
 
1. A barebones plugin to assist in creating shipping gateways for IDB Ecommerce powered stores.

== Changelog ==

= 1.0.0 =
* First release!

== Upgrade Notice ==

= 1.0.0 =
* First release!

Activating Our New Plugin

Now that we have a basic plugin going, we can activate from the WordPress plugins admin page, like any other plugin. However, be aware that we will be editing this plugin, and if you happen to load a WordPress page while you’ve got an error in your code, it can deactivate your plugin or otherwise cause your site not to load until you fix the issue. This is another reason why you should only be doing this development on a local test server. When I develop, I always keep my in-development plugin loaded, and only refresh WordPress pages when I think the code is bug free.

So let’s go ahead and visit wp-admin > Plugins > Installed Plugins > IDB Ecommerce Shipping Gateway Barebones > Activate

How to Add Admin Panel Options

Adding options and settings for your shipping provider gateway is very simple. Simply create a function inside of wpsc-shipping-gateway-bb.php that echoes out your options, like this:

// Add custom shipping options
function myCustomShippingOptionsFunction() {
    
	$wpStoreCartOptions = get_option('wpStoreCartAdminOptions');

    echo '
    <p>Your Shipping Providers Name</p>
    <table class="widefat">
    <thead><tr><th>'.__('Option','wpstorecart').'</th><th class="tableDescription">'.__('Description','wpstorecart').'</th><th>'.__('Value','wpstorecart').'</th></tr></thead><tbody>

    <tr><td><p>Allow AbcXyz Inc. Shipping? </p></td>
    <td class="tableDescription"><p>If set to Yes, customers can use AbcXyz shipping services.</p></td>
    <td><p><label for="allowAbcXyzShipping"><input type="radio" id="allowAbcXyzShipping_yes" name="allowAbcXyzShipping" value="true" '; if (@$wpStoreCartOptions['allowAbcXyzShipping'] == "true") { _e('checked="checked"', "wpStoreCart"); }; echo '/> '.__('Yes','wpstorecart').'</label>&nbsp;&nbsp;&nbsp;&nbsp;<label for="allowAbcXyzShipping_no"><input type="radio" id="allowAbcXyzShipping_no" name="allowAbcXyzShipping" value="false" '; if (@$wpStoreCartOptions['allowAbcXyzShipping'] == "false") { _e('checked="checked"', "wpStoreCart"); }; echo '/> '.__('No','wpstorecart').'</label></p>
    </td></tr>
    
    </table>
    ';
}

and then hook into the Shipping Settings page like this, using your function name:

add_action('wpsc_admin_shipping_options_page', 'myCustomShippingOptionsFunction');

Now there is still one thing left to do before this setting will work. We need to register the setting itself. In the example above, the setting is $wpStoreCartOptions[‘allowAbcXyzShipping’]

To add this, we follow the same steps above. Here’s our new function:

// Save custom options
function myCustomSaveShippingFunction() {
    global $wpdb;

    $wpStoreCartOptions = get_option('wpStoreCartAdminOptions');
	
    if(!isset($wpStoreCartOptions['allowAbcXyzShipping'])) { // If the setting hasn't been initialized previously, give it a default value
        $wpStoreCartOptions['allowAbcXyzShipping'] = 'false'; // Default value.
        update_option('wpStoreCartAdminOptions', $wpStoreCartOptions);
    }
    if(isset($_POST['allowAbcXyzShipping'])) { // Here's where you update the value of the variable
        wpscCheckAdminPermissions(); // This insures that only wpStoreCart Managers can edit the settings
        $wpStoreCartOptions['allowAbcXyzShipping'] = $wpdb->escape($_POST['allowAbcXyzShipping']); // Changes the variable in the settings
        update_option('wpStoreCartAdminOptions', $wpStoreCartOptions);    
    }
}

we’ll hook this into the wpsc_admin_save_settings action hook.

add_action('wpsc_admin_save_settings', 'myCustomSaveShippingFunction');

Note that in the example above, the default value will not be set until a IDB Ecommerce Manager clicks the Save Settings button. However, in many cases, you will need a default value to load up before that time. In that case, remove the default value code from the above function, and instead put it into a new function, like this:

// Sets a default value
function myCustomSaveShippingDefaultValuesFunction() {
    
	$wpStoreCartOptions = get_option('wpStoreCartAdminOptions');
    
    if(!isset($wpStoreCartOptions['allowAbcXyzShipping'])) { // If the setting hasn't been initialized previously, give it a default value
        $wpStoreCartOptions['allowAbcXyShippingz'] = 'false'; // Default value.
        update_option('wpStoreCartAdminOptions', $wpStoreCartOptions);
    }    
}

We will tie this into the wpsc_admin action hook, like this:

add_action('wpsc_admin', 'myCustomSaveShippingDefaultValuesFunction');

Add Your Shipping Options To Edit Products

IDB Ecommerce allows you to toggle any available shipping service per product. This is done from the wp-admin > IDB Ecommerce > Edit Products > {Specific Product} > Shipping >

This means that you will also need to provide a way to enable/disable your shipping services, inside the edit products admin page. Fortunately, the API does all the heavy lifting for you. Here’s our sample code:

// Provides a way to enable/disable this shipping service per product
function myCustomProductCheckbox() {
	echo wpscShippingAPIAddToChecklist($_GET['keytoedit'], 'allowAbcXyzShipping', 'AbcXyzShipping', __('Enable AbcXyz Shipping?', 'wpstorecart'));
}

add_action('wpsc_admin_shipping_product_checkboxes', 'myCustomProductCheckbox');

So, as you can see in the code, we create a custom function and tie it into the wpsc_admin_shipping_product_checkboxes action. Then we use the wpscShippingAPIAddToChecklist() function to create our checkbox. Using this function does a lot for you, as it will insure that the checkbox is only displayed, when your shipping module is turned on. It was also automatically check or uncheck itself, depending on whether or not you enable or disable this shipping service for this product. Here are the parameters that the function accepts:

wpscShippingAPIAddToChecklist($product_id, $wpscGlobalShippingOptionName, $wpStoreCartProductShippingServicesName, $caption);

$product_id – Just use $_GET[‘keytoedit’]
$wpscGlobalShippingOptionName – This is the option name that you created earlier in your plugin. Through out this tutorial, it has been ‘allowAbcXyzShipping’
$wpStoreCartProductShippingServicesName – This is a new unique string identifier for your shipping service. Keep this short and simple, and treat it like an element ID/name field, because it is. In our example, we used ‘AbcXyzShipping’
$caption – What you want the checkbox caption to say. In our example, we used: __(‘Enable AbcXyz Shipping?’, ‘wpstorecart’)

Next, we need to insure that the edit products screen will actually save our shipping service selection. We should use the wpscProductToggleShippingService() function, and supply it our product’s ID, as well as the unique string identifier we set up in the last step in the $wpStoreCartProductShippingServicesName variable. Continuing with our code example, the following code will save our checklist, using the wpsc_admin_save_product hook:

function myCustomProductSaveCheckbox() {
	wpscProductToggleShippingService($_POST['wpsc-keytoedit'], 'AbcXyzShipping');
}

add_action('wpsc_admin_save_product', 'myCustomProductSaveCheckbox');

Note that we use $_POST[‘wpsc-keytoedit’] for the product key in this function. With this, we’ve created a fully functional and saveable shipping entry on the Edit Products screen.

Displaying Your Shipping Options To Customers

Now that the admin side of things are taken care of (Shipping Settings and Edit Products checkboxes) it’s time to work on how customers will select your shipping service, and to calculate shipping. This also means that we’re almost done!

Your plugin can provide many shipping options, such as overnight, 3 day, ground, etc. with your single shipping service. You can also make it simple with only 1 option. Regardless, these options are displayed in the same select drop down list, along with any other shipping providers that you have enabled for the current cart.

Your plugin will need to have a function with a very specific name: wpscShippingAPIGetOption_AbcXyzShipping
where AbcXyzShipping should be replaced by the very same unique string identifier we setup previously in the $wpStoreCartProductShippingServicesName variable. This is important, and the name of the function has to be wpscShippingAPIGetOption_yourUniqueIdentifier. Continuing with our example plugin, here is this code in action:

// Provides a way for the user to select your shipping provider at checkout
function wpscShippingAPIGetOption_AbcXyzShipping($cart_contents) {
	return '<option value="AbcXyzShipping[0]">AbcXyzShipping [9.99]</option>';
}

As you can see, your function needs to accept one parameter, which is $cart_contents. $cart_contents is an array containing all the items in the cart, so that your plugin can handle different shipping calculations per product (if necessary.) In our example above, we don’t do anything with the cart, as this dummy plugin always charges 9.99 shipping. Next, you’ll notice that the function returns a string. This string should contain one or more HTML <option></option> tags. The option tag has a vale that needs to be formatted a special way, as well as the text in between the opening and closing tags, which also requires special formatting. Here’s the format:
<option value=”yourUniqueIdentifier[shippingSubOption]”>AbcXyzShipping [shippingPriceInDigitsOnly]</option>

So if you provided multiple shipping options, you might have an example like this:

// Provides a way for the user to select your shipping provider at checkout
function wpscShippingAPIGetOption_UltraShippingIncShipping($cart_contents) {
	return '
<option value="UltraShippingIncShipping[ground]">Ultra Shipping Ground [3.99]</option>
<option value="UltraShippingIncShipping[express]">Ultra Shipping Express [9.99]</option>
<option value="UltraShippingIncShipping[overnight]">Ultra Shipping Overnight [19.99]</option>
';
}

Remember, you don’t need to hard code those shipping amounts there, feel free to have a function calculate the shipping, and remember you have access to $cart_contents, so you can use that to begin acquiring any information you may need about the products in the cart. Speaking of functions that calculate shipping, you’re going to need to provide one of those anyway, so that IDB Ecommerce can re-check the shipping price on the server side, to insure that your users cannot get away with tampering with the POST data.

Calculating & Verifying Shipping Charges

Again, your plugin will need to have a function with a very specific name, this time it’s: wpscShippingAPIFinalGateway_AbcXyzShipping
where AbcXyzShipping should be replaced by the very same unique string identifier we setup previously in the $wpStoreCartProductShippingServicesName variable. This is important, and the name of the function has to be wpscShippingAPIFinalGateway_yourUniqueIdentifier. Continuing with our example plugin, here is this code in action:

// This is for verifying on wpsc-gateway.php
function wpscShippingAPIFinalGateway_AbcXyzShipping($cart_contents, $producttype) {
	return 9.99;
}

Remember, our sample plugin always charges 9.99 shipping. Note that you again have access to the $cart_contents variable, to perform any action you would need to calculate shipping. You also have a 2nd required parameter, which in this example is mapped to the $producttype variable. The $producttype contains the shippingSubOption from the last step. Using the 2nd example from our last step, let’s show what multiple options would look like when applied with this function:

// Provides a way for the user to select your shipping provider at checkout
function wpscShippingAPIGetOption_UltraShippingIncShipping($cart_contents) {
	return '
<option value="UltraShippingIncShipping[ground]">Ultra Shipping Ground [3.99]</option>
<option value="UltraShippingIncShipping[express]">Ultra Shipping Express [9.99]</option>
<option value="UltraShippingIncShipping[overnight]">Ultra Shipping Overnight [19.99]</option>
';
}

// This is for verifying on wpsc-gateway.php
function wpscShippingAPIFinalGateway_UltraShippingIncShipping($cart_contents, $producttype) {
	if($producttype=='ground') {
		return 3.99;
	}
	if($producttype=='express') {
		return 9.99;
	}
	if($producttype=='overnight') {
		return 19.99;
	}
}

A Final Function

Now that we’re this far along, we need to do one last thing, and that’s provide IDB Ecommerce a standardized way for it to know whether or not your shipping plugin is enabled or not. I know we created a setting for at the beginning, but IDB Ecommerce has no way to know what setting we chose. Instead, we will once again need to have a function with a very specific name, this time it’s: wpscShippingAPICheckIfServiceEnabled_AbcXyzShipping
where AbcXyzShipping should be replaced by the very same unique string identifier we setup previously in the $wpStoreCartProductShippingServicesName variable. This is important, and the name of the function has to be wpscShippingAPICheckIfServiceEnabled_yourUniqueIdentifier. Continuing with our example plugin, here is this code in action:

// Provides a standardized way for the checkout system to know if your shipping provider has been enabled by an admin
function wpscShippingAPICheckIfServiceEnabled_AbcXyzShipping() {
	    $devOptions = get_option('wpStoreCartAdminOptions'); 
		if ($devOptions['allowAbcXyShippingz'] == "true") {
			return true;
		}
		if ($devOptions['allowAbcXyShippingz'] == "false") {
			return false;
		}		
}

Note that the function simply needs to return a boolean value, true if your shipping provider is fully activated, and false if it is not.

Alerts API

Alerts are not a new concept in IDB Ecommerce, but the way they work has improved drastically. Now, you can set alerts for virtually anything, and receive a text message or email. Not only that, but Alerts are now per user, so multi-admin sites can now work through Alerts together. In additions, you can fully configure what and when you will be alerted. For example, you can easily create custom alerts based off of X number of _____. For example, you can set up wpStoreCart to issue a text message alert that repeats daily when an item needs to be shipped, or when inventory is less than 4, or when no sales have occurred in a 12 hour period, etc.

Creating Custom Alerts

Alerts are created, edited, deleted and managed from IDB Ecommerce > Dashboard > Alerts > and will require intermediate to advanced technical knowledge. We will be working on decreasing the complexity of the alert creation process and in a future version of IDB Ecommerce, we will introduce a GUI utility that will assist you in automatically writing and creating new custom Alerts.

Most users will not have any issue creating custom Alerts until it is time to create the Alert Conditions, which is done using Alert Commands. “Alert Commands” is a small, procedural scripting language, that only consists of a few commands. Anyone with experience with coding should have no issue writing Alert Commands, once they understand the differences between the two.

Alert Command Syntax

Each command is a comparison, and should involve 2 subjects. If the result of the comparison is true, then an Alert is issued. Here is an example of a never ending Alert, which, while being next to useless, nevertheless illustrates the proper syntax:

1 = 1;

^The above code will issue an Alert when 1 equals 1, which of course, is all the time.

Each command should end with a semi-colon. For example, here’s a command that checks if there have been no sales in 72 hours, notice how it ends with a semi-colon:

nosales() @ hours(72);

To combine multiple conditions, add each one as a separate statement, for example:

nosales() @ hours(72); noviews() @ minutes(90);

^ In the above example, the Alert will only be issued if there have been no sales in the last 72 hours AND there have been no product views in the last hour and a half.

Common Alert Conditions

newsales() = true;
newviews() = true;
newaddtocart() = true;
newshipping() = true;
newcheckout() = true;
newticket() = true;
shipping() @ hours(24);
shipping() @ days(7);
nosales() @ hours(72);
noviews() @ minutes(90);
noaddtocart() @ days(1);
nocheckout() @ days(2);
sales() < 100;
views() > 5000;
addtocart() > 100;

Alert Conditions Full Reference

Where X represents a Product ID #, Y represents a numeric value, and Z represents a USER ID. Use a Product ID #/USER ID of 0 or blank to specify all products/users.

newsales(X)

If there are no new sales, this value is false. If there has been one or more new sales since this alert was resolved, then it returns the number of new sales (and equals true if looking for a boolean value.) New sales are relative per user account. Example: Jim and Jill both co-admin the same store. Since the last time Jim checked his alerts, there were 2 new sales for a total of 400 sales. Since the last time Jill checked her alerts, there have been 10 new sales, for a total of 400 sales. Jim sees an alert for 2 new sales, while Jill sees an alert for 10 new sales.

CODE EXAMPLE (Triggers an alert when you’ve reached 3 new sales of all products since)
newsales() > 2;

What is IDB Support Tickets?

IDB Support Tickets is a plugin for WordPress that allows you to offer support tickets to your website visitors & customers. Here’s what the FREE version includes:

  • Users (and optionally guests) can create support tickets and reply to their own tickets
  • Admins can reply to, close, or delete any ticket
  • Front end support ticket interface is done in jQuery, and utilizes Ajax ticket loading
  • Customizable departments, email messages, and CSS for custom solutions
  • You can hide support ticket capabilities from a user who has not purchased a specific product (requires IDB Ecommerce)
  • Both the admin and frontend provides a WYSIWYG HTML editor for formatting
  • i18n ready and compatible & available in 15 languages
Why Upgrade to IDB Support Tickets PRO (Included in the IDB Ultimate WordPress Bundle)
Attach Files Attach Files
With PRO, users can upload & attach files to their tickets, which can simplify the process of helping your users.

 

Bulk Edits Bulk Edits
With PRO, admins can edit multiple tickets at once, including closing, reopening, deleting, assigning users & more.
Advanced Tickets Advanced Tickets
With PRO, unlock an advanced ticketing system with severity, categories, departments & more.
Happier Clients Happier Clients
With PRO, your users can optionally close & reopen their own tickets.
HTML Emails HTML Emails
With PRO, you can optionally send beautiful HTML emails instead of the default plain text emails.
Full Control Full Control
With PRO, optionally allow all users to see all tickets & optionally allow editors, contributors, & authors to admin.

IDB Support Ticket Documentation

Table of Contents

  • 2 IDB Support Ticket Documentation
  • Installation

    To install IDB Support Tickets (formerly wpsc Support Tickets) go into the WordPress admin panel, and click on Add New under the Plugins menu. Search for IDB Support Tickets, and then click on Install, then click Install Now. Once the installation completes, Activate the plugin.

    Next, follow these steps:

    • Activate the plugin through the ‘Plugins’ menu in WordPress
    • Create a new page, call it something like Tickets.
    • Inside this page, place this shortcode only: [idbsupporttickets]
    • Visit the IDB Support Tickets Settings page and select a “mainpage” for IDB Support Tickets to use, like the Ticket page we just told you to create

    Basic Settings

    The basic settings are available to all users. There are more advanced settings available to those who upgrade to IDB Support Tickets PRO, which is only available by getting this bundle. You can access both the basic and PRO settings by visiting your WordPress admin panel at
    wp-admin > Support Tickets > Settings >

    Main Page

    The main setting you need to be concerned with is Main Page. This should be set to the WordPress page where you pasted this shortcode:
    [idbsupporttickets]

    The legacy shortcode of previous versions will continue to work, to maintain backwards compatibility:

    [wpscSupportTickets]

    If you fail to set a Main Page, then you will get blank white pages when a ticket is submitted, and IDB Support Tickets will fail to run properly.

    Departments

    By default, IDB Support Tickets comes with two departments: Support and Billing. Inside this setting, that looks like this:

    Support||Billingthat’s because we use two pipe symbols to separate our values. Let’s say we wanted to add two more departments, one called Q&A, and the other Beta Testers. To that, we would change our setting to this/p> Support||Billing||Q&A||Beta Testers

    But wait, let’s suppose we want to get rid of billing. This is what that would look like:

    Support||Q&A||Beta Testers

    Email

    This is the admin email where you would like to receive notifications of new tickets and new replies to tickets.

    New Ticket Email

    This is the email subject and plain text email body that is sent to users who open a new ticket. If you have upgraded to IDB Support Tickets PRO, you can optionally send the email with HTML formatting by enabling the setting in your PRO settings tab.

    New Reply Email

    This is the email subject and plain text email body that is sent when a reply happens on one of their tickets. If you have upgraded to IDB Support Tickets PRO, you can optionally send the email with HTML formatting by enabling the setting in your PRO settings tab.

    Disable Inline Styles

    By default, this is set to False, meaning Inline Styles are enabled. IDB Support Tickets uses some default inline styles so that the ticket system doesn’t look bad by default. However, these inline styles can conflict with your CSS or other modifications. This setting allows you to turn off all the inline styles, giving you a completely unstyled support ticket system. Use the CSS guide further along in this documentation to style your support ticket system.

    Allow Guests

    By default this is set to false. Setting this to True means that users can create tickets without registering for your site. All they need to do is provide an email address to create new tickets, or manage an existing ticket.

    Dashboard Widget

    IDB Support Tickets comes with an admin dashboard widget so that you can stay up to date.

    The Frontend

    Very little CSS is used, and almost everything is within tables (I know, I know, but it makes sense for support tickets and forms, plus it looks good by default on most themes.)

    CSS Classes & IDs

    The following classes and IDs are rendered on the front end. You can use CSS to stylize how wpsc Support Tickets are displayed.

    IDs:

    #wpscst_top_page – Is really there just as an anchor for the top of the support tickets.

    #wpscst-new – The button to create a new ticket

    #wpscst_nic_panel – The panel for the new ticket editor

    #wpscst_initial_message – The textarea for the new ticket editor (is replaced using Javascript nicEdit)

    #wpscst_department – The department drop for the new ticket interface

    #wpscst_edit_ticket – The DIV that is used to load old tickets for viewing/replying

    #wpscst_meta – On an old ticket, this displays the author and timestamp

    #wpscst_results_posted_by – On an old ticket, this is the ticket author

    #wpscst_results_initial_message – On an old ticket, this is the first message that started the ticket

    #wpscst_submit – The frontend submit ticket button

    #wpscst-cancel – The frontend cancel button

    CLASSES:

    .wpscst-button – All buttons

    .wpscst-table -

    .wpscst_results_posted_by – This is where the author is displayed on replies

    .wpscst_results_message – This is the the author message

    .wpscst_staff_reply_table – The is the table that holds a staff reply. If you style this different then the rest of the replies, you can make staff replies stick out.

    .wpscst_staff_reply_thead – Same as above, except governs the thead tag.

    .wpscst_staff_reply_tbody – Same, but the tbody tag.

    Translations

    IDB Support Tickets is i18n ready and compatible. Currently we provide English, Swedish, Norwegian, & French versions (thanks to users who have created and provided the translations.) If you speak another language, and would like to make a new translation, please consider releasing it to the community.

    To make a new translation, you should be familiar with the i18n system. In the languages folder, you will find wpsc-support-tickets.pot file, which you can use to create your .po and .mo files.

    Use Poedit, or the editor of your choice to create your translation. Save your new translation as .po and .mo files.

    Place the created .po and .mo files in the /wpsc-support-tickets/languages/ folder, using this naming convention: wpsc-support-tickets-xx_XX.po where xx_XX represent your language code. For example, for a Swedish translation, the file name is wpsc-support-tickets-sv_SE.po

    For optimal translation depth, we recommend setting your language in wp-config.php before installing and activating wpsc Support Tickets. Otherwise default options, such as the email subject and email text, will use English, since it was written into the database during activation.

    Translation Credits

    • Norwegian (Norsk) by Rune Kristoffersen ( post@sports-markedet.no ) http://www.sports-markedet.no
    • French (le Français) by Hawaien88 -> Merci à Hawaien88 pour la traduction Française.
    • Swedish (Svenska) by Stefan Johansson
    • Brazilian Portuguese (português brasileiro) translation provided by Thiago Bernardi, e-mail address: thiagobernardi@outlook.com
    • German (Deutsch) translation provided by Markus Scheffknecht, contact at https://twitter.com/Scheffhauser
    • Finnish (Suomi) by Mikko Ohtonen http://twitter.com/mopetti
    • Dutch (Nederlands) by Jos Wolbers http://www.wolbersonline.nl

    Action Hooks

    Beginning with wpsc Support Tickets version 2.0 and higher, you can now extend the functionality of IDB Support Tickets through the use of built in action hooks. Here is a list of hooks:

    • wpscSupportTickets_settings() – Echo out additional form items to be presented in the Settings admin page.
    • wpscSupportTickets_saveSettings() – Save the POST data from the form items you defined in the wpscSupportTickets_settings() action hook.
    The best native bug tracking and issue management system for WordPress.  IDB Bug Tracker (formerly wpBugTracktor) is a free, open source, and full featured bug tracking and issue management system built atop of WordPress.

    It uses WordPress pages, which keeps end users out of the dashboard area and allows you to use other comment plugins and solutions with this bug tracker.  Keep your bug tracker private, allow only certain users, all users, or even guests to report bugs.  Also optionally allows you to accept feature requests, enhancements, and ideas.

    The plugin is i18n ready and compatible (POT file included in the /languages/ directory) but we ask that you hold off translation efforts until version 1.0 is complete, because there is a lot more text that will be added from now until then, which means any translations done now would be incomplete.

    IDB Bug Tracker Documentation

    Contents

    Installation

    The recommended way to install IDB Bug Tracker is to go into the WordPress admin panel, and click on Add New under the Plugins menu.  Search for IDB Bug Tracker, and then click on Install, then click Install Now.  Once the installation completes, Activate the plugin

    Or, if you want to install manually:

    Download the wpbugtracktor.zip file
    Extract the zip file to your hard drive, using 7-zip or your archiver of choice.
    Upload the `/wpbugtracktor/` directory to the `/wp-content/plugins/` directory
    Activate the plugin through the ‘Plugins’ menu in WordPress
    Create a new page, call it something like “Bug Tracker”
    Visit the IDB Bug Tracker admin page and select a “mainpage” for IDB Bug Tracker to use, like the “Bug Tracker” page we told you to create in the last step

    Configure Settings

    Configure a Main Page To Show IDB Bug Tracker

    - This is your main IDB Bug Tracker parent page. All other IDB Bug Tracker pages are children of this page. This page requires the IDB Bug Tracker shortcode be inserted into it, like this: [idbbugtracker]

    Configure Who Can Administrate IDB Bug Tracker

    - Choose the user Roles who will have access to manage issues.

    Publishing Issues

    - You should probably have a human manually review each issue before posting it live, but if you trust your users you can set it to publish immediately.

    Add/Edit Projects

    Project Title

    - The public name of the project, without version numbers or edition names.

    Description

    - The public description of the project, which should summarize what the project is all about.

    Project Prefix

    - Each issue is assigned a number, and this, the project prefix, is appended to the beginning of the issue number.

    Project Leader

    - This is the user in charge of the project, who also manages any other users assigned to this project.

    Manage Versions

    Your project may have past, present, and future versions released. From this admin panel you can create new releases, or edit/delete previous releases for any of your projects. A release can be anything, including but not limited to milestones, major releases (1.x), minor releases (1.1), prototypes, alphas, betas, platform releases, or any other division or revision of your project.

    Manage Issues

    From this admin panel you can search for, edit, publish, or unpublish any issue reported.

    Manage Comments

    IDB Bug Tracker uses WordPress pages and comments for issue tracking and commenting. This admin page allows you to see only comments related to issues, and to edit or delete them.

    Sick of spam, let IDB Ultra Spam Protection & Defense drastically reduce your spam

    What’s different about IDB Ultra Spam Protection & Defense PRO?  First of all, it’s only available through this bundle, it’s constantly updated, and it blocks spam based off data collected from the latest real spam comments.  That means, as spammers change their tactics and keywords, so will IDB Ultra Spam Protection & Defense PRO.

    IDB Ultra Spam Protection Documentation

    Contents

     

     

    Settings

    Level 1 – Most Effective Defenses

    Block comments with X or more links

    Set to 0 to disable this. If you set this value to 3, for example, all comments with 3 or more links inside the comment text will automatically be marked as spam. The higher the value you use, the less amount of false positives you will get, but more comment spam is likely to make it passed the filter. A value of 3 or higher is recommended if you use this setting.

    Block non-English comments

    If you only accept English comments, then this setting will block any non-English comment.

    Level 2 – Dictionary Based Defenses

    Use spam email block list

    This blocks comments from known spam email addresses. However, since any email address can be used, even fake made up emails, this setting is largely ineffective until IDB-Ultra-Spam has had a chance to adapt to the spam email addresses used on your specific site, afterwards this setting becomes more effective and is recommended.

    Use spam URL block list

    Almost the entire reason for spam is to promote URL links to other websites. This setting blocks known spam sites from our list. It will also update with spam URLs that have been submitted to your website, which means this filter becomes better over time.

    Use sexual word block list

    A large amount of comment spam is used to promote pornography and other sexual related products & activities. This filter blocks most sexual keywords, but it does not block basic swear words (which are often used by angry people who may be leaving real comments) or sexual orientations. Disable this filter if your website deals with adult sexual content.

    Use pharmaceutical word block list

    Another widely spammed topic is pharmaceuticals. This filter looks for prescription drug names, and other pharmaceutical keywords. Disable this filter if your website covers drug or pharmaceutical related topics.

    Use IP address block list

    This method blocks comments from IP addresses that have posted spam comments in the past. It is largely ineffective at blocking spam comments, since IP addresses are easy to change. We included this setting because on rare occassions it will block a repeated spammer.

    Included in the IDB Ultimate WordPress Bundle are LightFolio, ShopFolio, and the wpStoreCart Theme.  LightFolio and ShopFolio come with a PDF manual.  The documentation for the wpStoreCart Theme is below:

    IDB wpStoreCart Theme Documentation

    We’re proud to release our own high end, professional, ajax enabled, fully configurable WordPress theme, designed specifically for wpStoreCart. Don’t worry though, even if the wpStoreCart plugin is not activated, the wpStoreCart Theme will still work as a standard WordPress theme, sans ecommerce functionality. It is highly recommended to create child themes instead of editing the wpStoreCart Theme directly. That’s because the wpStoreCart Theme is a core part of wpStoreCart as a whole, and that means we’ll be releasing updates to the theme as time goes on. If you edit the theme directly, then anytime you update, all your changes will be lost. That’s why you create a child theme, so that you can edit the look and feel of the site to your hearts content AND be able to update wpStoreCart as needed, to take advantage of new features, bug fixes, and other important developments. You can learn more about child themes here. You can also easily create a wpStoreCart Default Theme child theme by using this free WordPress plugin: http://wordpress.org/extend/plugins/one-click-child-theme/

    Installation & Activation

    The very first step to using the wpStoreCart Default theme is to download it and upload it to your website, which can be done a number of ways. If you’re looking to download the theme, it is available for download at the top of the page, just click the big DOWNLOAD button. We’re going to assume that you know how to install and activate a theme, but if not, the please read this WordPress Codex article on Using Themes before continuing.

    Don’t Forget About Widgets

    Once the wpStoreCart Default theme has been activated, we recommend adding widgets to the sidebar. If you do not know what widgets are, and/or how to work with them in WordPress, then please read thisWordPress Codex article on widgets

    Theme Settings

    When the wpStoreCart Default theme is installed and activated, we recommend you immediately visit the Theme Settings page as well. You will find this newly added setting once the theme is activated, located in the same area in the menu where all the other theme admin pages are located (see the picture above.) The Theme Settings page will allow you to configure things such as the font used in the header, the slideshow images, transitions, and time between pictures, as well as the text or language used throughout the theme. In version 1.2209 and higher, you will also have the ability to use custom background images, colors, as well as custom header images and text colors, resulting in an endless variety of customization abilities.

    Basic Options

    • Display home link: If set to true, then Home will be displayed in the menu. If set to false, then it will not.
    • Logo Font (h6): Let’s you pick the font of your header text, which is an H6 tag. In fact, any H6 tag you use will be in this font. Available fonts are all open source, and include: Raleway, ChunkFive, Fanwood, Goudy, Junction, and League Gothic.

    Slide Show Images & Settings

    • Enable the image slider: If set to “Disabled”, then the image slider won’t be used at all. If set to “Display on All Pages” then the slider will be on each and every page and blog post. If set to “Homepage Only” then the slider will only be shown on the homepage.
    • Slider effect: When the slider changes from one image to the next, it will use an effect to make the transition look sleek and professional. With this setting, you are able to specify which effect the slider will use. We recommend using the Random setting, as it will randomly pick a new effect for each image, adding variety to the slider’s presentation.
    • Speed of slider: I might of named this without thinking, because on first read, it’s hard to tell what this setting does, so let me clarify. This setting determines the speed of the transition effect only. The number accepted here is in milliseconds, and there are 1000 milliseconds in one second. By default this is set to 500 ms, which is 0.5 seconds per transition.
    • Time between slides: This is the amount of time that each image is displayed, before the transition into the next image begins. This is also kept in the form of milliseconds. The default value is 3000 ms, which translates to 3 seconds per image.
    • Images to use in the slideshow: Click the upload button to add more images to the slide show. This is a multi-upload form, so select as many images as you need.
    • Links for slideshow images When you upload images, they will appear below the Slide Show Settings. You can click the red X next to an image to delete it from the slideshow. You assign links to each image using the Link URL field.

    Text Options

    The text options should be self explanatory. If you want to reword stuff on the template, replace it in the Text Options form inputs.

    Contents