Evaluating Your Business for a WordPress eCommerce Solution

There is a general perception that WordPress is free and easy to set up, and that one can rapidly set up an online store and start trading. The truth of the matter is, there are a lot of considerations one has to think of first before setting up an online store.

In this article, we will look at some of the general considerations and the functional and technical requirements of setting up a WordPress eCommerce website and eCommerce sites in general.

General Considerations

We shall look at all these components in order to find some direction on how to customize a WordPress eCommerce website that will run efficiently.

Store Design

Have you ever sat down and thought about how your store should look? Your general theme design may change depending on the WordPress plugin you’re planning on integrating to implement your eCommerce site (we will look at plugins in a later article in this series). 

It is important to consider the design of your store first before choosing any plugin. A product catalogue that has been poorly constructed can be very difficult to work with, both for the site owner and the customers. Products on the website should be well arranged and match the look and flow of the whole website. This makes it easier for customers to locate or even search for particular items.

Cost of Setup

How much are you willing to invest? Yes, one may reason that WordPress is free and even most eCommerce plugins are free, but when implementing an online shop you will realize that there are a lot of other functionalities that require you to spend some money.

Even with the free plugins, they most of the time require very vital extensions and add-ons that turn out to be essential for the plugins to be of significance to the website. The plugin add-ons, hosting, SSL certificates, support and so on are all required in order to run an eCommerce site effectively.

Responsive Design

With many people using mobile devices to access websites, this should be a top consideration for any eCommerce site. The shopping cart should be responsive, allowing customers to purchase using any device that suites them. 

There are a number of WordPress theme marketplaces that stock themes and that have eCommerce integrated in such a way that it works both on desktop and mobile devices, which makes it much easier to select a theme that is suitable for your site.

Functional Requirements

Product Type

What sort of product are you planning on selling? Is it physical, digital downloads, or affiliate product links? Various WordPress eCommerce solutions are suited for diverse product types. 

You should look at the type of merchandise you’re selling before choosing the platform that’s suitable for your eCommerce site.

Pricing Scenarios and Shipping

Even though most WordPress eCommerce plugin developers have put a lot of consideration into possible pricing scenarios, you need to think about the various ways you will put up prices on your site. 

When creating an online store, you may need to keep in mind the various properties used when deciding how to price, for example, or when grouping particular items. And if you have shipping services on your website, you need an eCommerce plugin that will be able to integrate with other services such as FedEx.

Secure Payment Gateways

Once you have figured out the various pricing and shipping configurations, the next thing that should come to mind is how customers will pay for goods bought from your site. 

All WordPress eCommerce integrates one or more payment solutions. It’s up to you, the site owner, to decide on a payment platform that you think your customers will be comfortable using when they make payments. 

SSL and General Protection

Secure socket layer (SSL) helps encrypt important information shared by your clients on the website, for example credit card information. Using an SSL certificate on your website promotes a general sense of security and integrity. It’s a standard that has been accepted worldwide for website security.

In case you plan on collecting credit data on your site, you need a solution that is PA-DSS (Payment Application Data Security Standard) compliant. This will permit you to collect credit card information from your clients.

Technical Requirements

Performance

There are certain times when you install a plugin on a simple WordPress website and the site seems to be a bit slow. Now think of a scenario of implementing an eCommerce WordPress site. Most of the plugins are huge, require a lot of resources, and require a lot of memory to serve up the pages quickly.

As your site grows and traffic increases, this will even get worse, so it’s important you do not host your site on a shared hosting server. Simply avoid the headache by having your website either on a managed virtual private server, dedicated server, or dedicated WordPress hosting service.

Scalability

Scalability is about planning for the future. It’s good to evaluate what you’re currently selling on your site, and try and find out what will be the case a few years down the line when your products triple in number. You should at least be assured the WordPress platform you’re using will support these scenarios later when your website gets more traffic.

Summary

We have highlighted some of the general considerations of setting up an eCommerce website. Some of them are WordPress specific, and others apply to all other available eCommerce platforms. 

In the next article in this series, will look at the available plugins we have in WordPress, and their specific features.

from Tuts+ Code – WordPress http://ift.tt/1DbmFtR

Collecting Donations With WordPress: PayPal

In the first part of this mini-series titled, “Collecting Donations With WordPress”, you’ll learn how to write a WordPress plugin which allows users to send you a donation via PayPal. The plugin uses its own backend settings panel, and is highly customisable. So, let’s get started!

Initialising the Plugin

Step 1

In the wp-content/plugins directory of your site, create a new folder called paypal-donations.

Step 2

Now, within that folder, create a file called paypal-donations.php.

Step 3

Finally, you need to add the Plugin Header information, which will tell WordPress that your new plugin actually exists on your server. You can change these details to whatever you wish, though they should typically be in that order with a minimum of that information.

<?php
/*
Plugin Name: PayPal Donations
Plugin URI: http://ift.tt/1cWAN18
Description: Simple PayPal donation plugin.
Version: 1.0
Author: Sam Berson
Author URI: http://www.samberson.com
*/

Step 4

You’ll now see your new plugin showing up in the Plugins page of the WordPress admin. Go ahead and Activate the plugin, though you won’t see much happening just yet.

Adding the Shortcode

You’ll be able your donate button by using a simple shortcode in any posts or pages you create. Essentially, a shortcode is a small piece of text, wrapped in square brackets, that allows you to call any function or action from a plugin or theme, in the Post Editor.

In this plugin, the shortcode will be, [donate], and this can be added anywhere in your posts or pages.

Step 1

To add the shortcode to WordPress, you need to use the add_shortcode function, and within it, define what the shortcode will be (in this case, ‘donate’), and then you’ll define the form fields for the donate button, and the image information for the button.

// Adds  [donate] shortcode
add_shortcode('donate', function() {
    $donate_options = get_option('donate_plugin_options');

	// Deafult Button Image
	$url = 'https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif';

	// Checks Which Image To Use
	switch ($donate_options['button']) {

	    case 'small':
	        $url = 'https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif';
	        break;
	    case 'medium':
	        $url = 'https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif';
	        break;
	    case 'large':
	        $url = 'http://ift.tt/r6wNhw';
	        break;	

}

	return '<form action="http://ift.tt/rDmnwQ" method="post">
    			<div class="paypal-donations">
			        <input type="hidden" name="cmd" value="_donations">
			        <input type="hidden" name="business" value="'.$donate_options['paypal_user_id'].'">
			        <input type="hidden" name="rm" value="0">
			        <input type="hidden" name="currency_code" value="'.$donate_options['currency'].'">
			        <input type="image" src="'.$url.'" name="submit" alt="PayPal - The safer, easier way to pay online.">
			        <img alt="" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
			    </div>
			</form>';
});

Step 2

At this stage, you can add the new shortcode to a post or page, though it won’t look quite right, and will likely throw up a few errors onto your site.

Callbacks & Form Functions

You’ll now define the callbacks required to make the plugin work, as well as the form for the settings panel in the WordPress admin.

Step 1

You should now add an empty callback, which is needed to ensure that the plugin functions correctly. It’s simply defining a new WordPress function, opening it, and then closing it again.

function donate_plugin_cb() {
    // Optional Callback
}

Step 2

Next, you’re going to add a function which generates and input field in the admin settings form for your PayPal email address.

// Generate INPUT Field form form settings [EMAIL]
function paypal_user_id_html() {
    $donate_options = get_option('donate_plugin_options');
	echo "<input name='donate_plugin_options[paypal_user_id]' type='email' value='{$donate_options['paypal_user_id']}'/>";
}

Step 3

Now, you’ll generate an input field for the admin settings with radio buttons, so you can select which find of button you’d like – more on that later.

// Generate INPUT Field form form settings [RADIO]
function paypal_donation_button_html() {
    $donate_options = get_option('donate_plugin_options');
	?>
	<p>
		<label>
			<input type='radio' name='donate_plugin_options[button]' value='small' <?php if($donate_options['button'] == 'small') { echo 'checked'; }  ?>>
			<img src='https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif' alt='small' style='vertical-align: middle;margin-left: 15px;'>
		</label>
	</p>

	<p>
		<label>
			<input type='radio' name='donate_plugin_options[button]' value='medium' <?php if($donate_options['button'] == 'medium') { echo 'checked'; } ?>>
			<img src='https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif' alt='medium' style='vertical-align: middle;margin-left: 15px;'>
		</label>
	</p>

	<p>
		<label>
			<input type='radio' name='donate_plugin_options[button]' value='large' <?php if($donate_options['button'] == 'large') { echo 'checked'; } ?>>
			<img src='http://ift.tt/r6wNhw' alt='large' style='vertical-align: middle;margin-left: 15px;'></br>
		</label>
	</p>

	<?php
}

Step 4

Finally, we’ll generate another input field with lots of drop down items, so you can select the currency in which your PayPal donations will be processed, by adding a PHP array.

// Generate INPUT Field form form settings [DROPDOWN]
function paypal_currency_html() {
    $donate_options = get_option('donate_plugin_options');

	$currency = array(
					'AUD' => 'Australian Dollars (A $)',
					'BRL' => 'Brazilian Real',
					'CAD' => 'Canadian Dollars (C $)',
					'CZK' => 'Czech Koruna',
					'DKK' => 'Danish Krone',
					'EUR' => 'Euros (€)',
					'HKD' => 'Hong Kong Dollar ($)',
					'HUF' => 'Hungarian Forint',
					'ILS' => 'Israeli New Shekel',
					'JPY' => 'Yen (¥)',
					'MYR' => 'Malaysian Ringgit',
					'MXN' => 'Mexican Peso',
					'NOK' => 'Norwegian Krone',
					'NZD' => 'New Zealand Dollar ($)',
					'PHP' => 'Philippine Peso',
					'PLN' => 'Polish Zloty',
					'GBP' => 'Pounds Sterling (£)',
					'RUB' => 'Russian Ruble',
					'SGD' => 'Singapore Dollar ($)',
					'SEK' => 'Swedish Krona',
					'CHF' => 'Swiss Franc',
					'TWD' => 'Taiwan New Dollar',
					'THB' => 'Thai Baht',
					'TRY' => 'Turkish Lira',
					'USD' => 'U.S. Dollars ($)',
	 			);
	?>
	<select id='currency_code' name='donate_plugin_options[currency]'>
		<?php
			foreach($currency as $code => $label) :
				if( $code == $donate_options['currency'] ) { $selected = "selected='selected'"; } else { $selected = ''; }
				echo "<option {$selected} value='{$code}'>{$label}</option>";
			endforeach;	
		?>
	</select>
	<?php
}

Hooking It All Up

Now you’ve generated your shortcode and form fields, you need to connect it back up to the WordPress admin, so that the plugin is functional.

Step 1

Let’s begin by registering all the settings, and their fields with WordPress, and then adding the action to the admin.

// Register All Settings And And Setting Fields as Used in wordpress
function register_settings_and_fields() {

    // $option_group, $option_name, $sanitize_callback
	register_setting('donate_plugin_options','donate_plugin_options');

	// $id, $title, $callback, $page
	add_settings_section('donate_plugin_main_section', 'Main Settings', 'donate_plugin_cb', __FILE__);

	// $id, $title, $callback, $page, $section, $args
	add_settings_field('paypal_user_id', 'PayPal ID: ', 'paypal_user_id_html', __FILE__, 'donate_plugin_main_section');

	// $id, $title, $callback, $page, $section, $args
	add_settings_field('button', 'Select Button: ', 'paypal_donation_button_html', __FILE__, 'donate_plugin_main_section');

	// $id, $title, $callback, $page, $section, $args
	add_settings_field('currency', 'Currency: ', 'paypal_currency_html', __FILE__, 'donate_plugin_main_section');
}

add_action('admin_init', 'register_settings_and_fields');

Step 2

You’re now going to generate the HTML of the main options page in WordPress, by setting up a div with the class of wrap, and then opening up the form and importing the settings fields.

// Generate HTML of main options page
function options_page_html() {

    ?>
		<div class="wrap">
			<h2>Plugin Options</h2>
			<form method="post" action="options.php" enctype="multipart/form-data">
			<?php 
				// $option_group
				settings_fields( 'donate_plugin_options' );

				// $page 
				do_settings_sections( __FILE__ );
			?>	
			<p class="submit">
				<input type="submit" class="button-primary" name="submit" value="Save Changes">
			</p>
			</form>
		</div>
	<?php
}

Step 3

Next you’ll add the plugin’s settings page into the WordPress admin, by using the options_init() function, along with the add_options_page function.

// Admin Menu Action Hook
function options_init() {

    // page_title,  menu_title, capability, menu_slug, function
	add_options_page('Donate Plugin Options', 'Donate Plugin Options', 'administrator', __FILE__, 'options_page_html');
}
add_action('admin_menu', 'options_init');

Step 4

The very last step, is to add the activation hook, and to check if the settings already exist. If they do, great – if not, the plugin will register the defaults.

// Activation Hook. Check if settings exists, if not register defaults.
function donate_activate() {
    $defaults = array(
					'paypal_user_id' => get_option('admin_email'),
					'button' => 'small',
					'currency' => 'USD'
				);	

  if(get_option('donate_plugin_options')) return;

  add_option( 'donate_plugin_options', $defaults );
}

register_activation_hook( __FILE__, 'donate_activate' );

Final Source Code

Your plugin should now be fully functional, by adding the [donate] shortcode to your posts or pages! Here’s the full source code for the plugin:

<?php
/*
Plugin Name: PayPal Donations
Plugin URI: http://ift.tt/1cWAN18
Description: Simple PayPal donation plugin.
Version: 1.0
Author: Sam Berson
Author URI: http://www.samberson.com
*/



// Adds  [donate] shortcode
add_shortcode('donate', function() {
    $donate_options = get_option('donate_plugin_options');

	// Deafult Button Image
	$url = 'https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif';

	// Checks Which Image To Use
	switch ($donate_options['button']) {

	    case 'small':
	        $url = 'https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif';
	        break;
	    case 'medium':
	        $url = 'https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif';
	        break;
	    case 'large':
	        $url = 'http://ift.tt/r6wNhw';
	        break;	

}

	return '<form action="http://ift.tt/rDmnwQ" method="post">
    			<div class="paypal-donations">
			        <input type="hidden" name="cmd" value="_donations">
			        <input type="hidden" name="business" value="'.$donate_options['paypal_user_id'].'">
			        <input type="hidden" name="rm" value="0">
			        <input type="hidden" name="currency_code" value="'.$donate_options['currency'].'">
			        <input type="image" src="'.$url.'" name="submit" alt="PayPal - The safer, easier way to pay online.">
			        <img alt="" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
			    </div>
			</form>';
});



function donate_plugin_cb() {

	// Optional Callback
}



// Generate INPUT Field form form settings [EMAIL]
function paypal_user_id_html() {
	$donate_options = get_option('donate_plugin_options');
	echo "<input name='donate_plugin_options[paypal_user_id]' type='email' value='{$donate_options['paypal_user_id']}'/>";
}



// Generate INPUT Field form form settings [RADIO]
function paypal_donation_button_html() {
	$donate_options = get_option('donate_plugin_options');
	?>
	<p>
		<label>
			<input type='radio' name='donate_plugin_options[button]' value='small' <?php if($donate_options['button'] == 'small') { echo 'checked'; }  ?>>
			<img src='https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif' alt='small' style='vertical-align: middle;margin-left: 15px;'>
		</label>
	</p>

	<p>
		<label>
			<input type='radio' name='donate_plugin_options[button]' value='medium' <?php if($donate_options['button'] == 'medium') { echo 'checked'; } ?>>
			<img src='https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif' alt='medium' style='vertical-align: middle;margin-left: 15px;'>
		</label>
	</p>

	<p>
		<label>
			<input type='radio' name='donate_plugin_options[button]' value='large' <?php if($donate_options['button'] == 'large') { echo 'checked'; } ?>>
			<img src='http://ift.tt/r6wNhw' alt='large' style='vertical-align: middle;margin-left: 15px;'></br>
		</label>
	</p>

	<?php
}



// Generate INPUT Field form form settings [DROPDOWN]
function paypal_currency_html() {
	$donate_options = get_option('donate_plugin_options');

	$currency = array(
					'AUD' => 'Australian Dollars (A $)',
					'BRL' => 'Brazilian Real',
					'CAD' => 'Canadian Dollars (C $)',
					'CZK' => 'Czech Koruna',
					'DKK' => 'Danish Krone',
					'EUR' => 'Euros (€)',
					'HKD' => 'Hong Kong Dollar ($)',
					'HUF' => 'Hungarian Forint',
					'ILS' => 'Israeli New Shekel',
					'JPY' => 'Yen (¥)',
					'MYR' => 'Malaysian Ringgit',
					'MXN' => 'Mexican Peso',
					'NOK' => 'Norwegian Krone',
					'NZD' => 'New Zealand Dollar ($)',
					'PHP' => 'Philippine Peso',
					'PLN' => 'Polish Zloty',
					'GBP' => 'Pounds Sterling (£)',
					'RUB' => 'Russian Ruble',
					'SGD' => 'Singapore Dollar ($)',
					'SEK' => 'Swedish Krona',
					'CHF' => 'Swiss Franc',
					'TWD' => 'Taiwan New Dollar',
					'THB' => 'Thai Baht',
					'TRY' => 'Turkish Lira',
					'USD' => 'U.S. Dollars ($)',
	 			);
	?>
	<select id='currency_code' name='donate_plugin_options[currency]'>
		<?php
			foreach($currency as $code => $label) :
				if( $code == $donate_options['currency'] ) { $selected = "selected='selected'"; } else { $selected = ''; }
				echo "<option {$selected} value='{$code}'>{$label}</option>";
			endforeach;	
		?>
	</select>
	<?php
}



// Register All Settings And And Setting Fields as Used in wordpress
function register_settings_and_fields() {

	// $option_group, $option_name, $sanitize_callback
	register_setting('donate_plugin_options','donate_plugin_options');

	// $id, $title, $callback, $page
	add_settings_section('donate_plugin_main_section', 'Main Settings', 'donate_plugin_cb', __FILE__);

	// $id, $title, $callback, $page, $section, $args
	add_settings_field('paypal_user_id', 'PayPal ID: ', 'paypal_user_id_html', __FILE__, 'donate_plugin_main_section');

	// $id, $title, $callback, $page, $section, $args
	add_settings_field('button', 'Select Button: ', 'paypal_donation_button_html', __FILE__, 'donate_plugin_main_section');

	// $id, $title, $callback, $page, $section, $args
	add_settings_field('currency', 'Currency: ', 'paypal_currency_html', __FILE__, 'donate_plugin_main_section');
}

add_action('admin_init', 'register_settings_and_fields');



// Generate HTML of main options page
function options_page_html() {

	?>
		<div class="wrap">
			<h2>Plugin Options</h2>
			<form method="post" action="options.php" enctype="multipart/form-data">
			<?php 
				// $option_group
				settings_fields( 'donate_plugin_options' );

				// $page 
				do_settings_sections( __FILE__ );
			?>	
			<p class="submit">
				<input type="submit" class="button-primary" name="submit" value="Save Changes">
			</p>
			</form>
		</div>
	<?php
}



// Admin Menu Action Hook
function options_init() {

	// page_title,  menu_title, capability, menu_slug, function
	add_options_page('Donate Plugin Options', 'Donate Plugin Options', 'administrator', __FILE__, 'options_page_html');
}
add_action('admin_menu', 'options_init');



// Activation Hook. Check if settings exists, if not register defaults.
function donate_activate() {
	$defaults = array(
					'paypal_user_id' => get_option('admin_email'),
					'button' => 'small',
					'currency' => 'USD'
				);	

  if(get_option('donate_plugin_options')) return;

  add_option( 'donate_plugin_options', $defaults );
}

register_activation_hook( __FILE__, 'donate_activate' );

In Summary

You’ve now learnt how to develop a totally new plugin, which allows users to donate via PayPal. You can now initialise a plugin, use shortcodes, and add a settings page to your WordPress admin.

In the next – and final – part of this mini series, you’ll learn how to write a similar plugin, allowing users to donate using Bitcoins, instead of a conventional currency with PayPal.

If you have any questions, please feel free to leave a comment below, and I’ll be sure to help you out!

from Tuts+ Code – WordPress http://code.tutsplus.com/tutorials/collecting-donations-with-wordpress-paypal–cms-21315

WooCommerce: Adding Virtual Products to Your Store

In an earlier tutorial, I demonstrated how to add physical products to your WooCommerce store, as well as how to add affiliate products.

In addition to physical products which you ship, you can also add virtual products which aren’t tangible and which your buyers then access via a download or a link. WooCommerce offers two types of intangible products: virtual and downloadable. 

Sometimes a product might be virtual and sometimes it might be both virtual and downloadable, for example:

  • a website subscription would be virtual but not downloadable
  • a service would be virtual but not downloadable
  • an e-book would be both virtual and downloadable

In this tutorial, I’ll set up both of these products to demonstrate how you add virtual and downloadable products.

What You’ll Need

To complete this tutorial you’ll need:

  • an installation of WordPress, with Administrator access
  • the WooCommerce plugin installed and activated
  • WooCommerce settings configured.

Adding a Virtual Product

First, I’ll add a new product via the Products->Add New screen, and give it a title, description and product image:

Product Data – General

Next, in the product editing screen, I’ll configure the Product Data metabox. I start by defining my product as virtual by ticking the Virtual checkbox. This makes the Shipping tab disappear.

In the General tab, add the price, SKU and tax rate as with any other product.

Product Data – Inventory

As this is a virtual product, you don’t need to manage inventory, so deselect the Manage stock? option in the Inventory tab:

Product Data – Advanced

For this product I don’t need to add any linked products or attributes so I’ll move on to the Advanced tab:

Here I’ve added a note which will be sent to anyone buying this product. As this is a subscription I’ve provided a link which buyers will need to follow to complete the subscription process.

Note: If you want to sell website subscriptions, you may find the premium WooCommerce Subscriptions add-on useful as this lets you take regular payments. The free Groups plugin  will help you manage how people access areas of your website and the (premium) Groups for WooCommerce extension will integrate the two. Alternatively you could just manage the process manually and create a user account for everyone who buys a subscription to your site.

Finally, I click Update to save the changes to my product and view it:

Adding a Downloadable Product

Virtual products aren’t all that different from physical products in the way they’re set up on your site: the only difference is that they can’t be shipped. Downloadable products are more distinct from physical products as you have to set up the download process.

To create a downloadable product, first set up the product as you would any other product type, giving it a title, description and image:

Then in the Product Data metabox, select both Virtual and Downloadable.

Product Data – General

Once you’ve done this, the Shipping tab will disappear and the General tab will expand:

As well as adding the usual price, SKU and tax details, you also need to add download details. You can do this in one of two ways:

  • Input a link to the file for download, which is the best option if the file is very large, if it is hosted elsewhere or if you’ve already uploaded it via the media manager in WordPress.
  • Click the Choose file button to upload the file to your store. This will be useful for smaller files you want to host on your own site.

Product Data – Inventory

As my product isn’t limited by stock numbers, I need to turn off stock management in the Inventory tab:

Simply uncheck the Manage stock? checkbox to disable this feature. In some cases you might want to enable stock management, for example if you’re selling tickets to an event.

Product Data – Linked Products

You can add linked products to downloadable products in the same way as you would for physical products, and these don’t have to be other downloadable products.

I’ve added a book on a similar topic and my virtual product, both of which might appeal to the same audience.

Product Data – Attributes

The next step is to define attributes for your product, using the attributes you already set up when configuring your product settings:

For each attribute you want to select terms from:

  1. Select the attribute from the Custom product attribute drop down box.
  2. Click Add.
  3. Click the Value(s) field and select the relevant term(s) from the drop down box.

Note: You can add new attributes here by selecting Custom product attribute before clicking Add, and then entering the details of your new attribute. This will add the attribute to the list in your Attributes screen. But don’t forget that attributes are taxonomies, not terms, so don’t use this method to create new terms for an existing attribute.

I’ve just added a term from the ‘level’ attribute.

Product Data – Advanced

The final tab is the Advanced tab:

Here you can add a note which buyers will see after purchasing the product, define whether reviews are enabled and specify a menu order for ordering your products in archive pages. I’ve added a brief purchase note.

Once you’ve done all this, click Publish and view your product:

As you can see, my product has linked products displayed and as I set the price to 0, it’s showing on the product page as Free!.

Downloadable Products – the Purchase Process

When someone buys your downloadable product they will receive a link which they can use to make the download. They will see this on screen after making the purchase and also receive an email:

Here’s what buyers will see after a successful purchase has gone through:

As you can see, there’s a link displayed which they can use. As I set the download limit to 1 in the Product Data – General tab, they will only be able to use this link once. This prevents buyers from sending the link to their friends.

Buyers will also receive an email with the link:

Summary

This tutorial has demonstrated how to add a virtual and a downloadable product to your store. The process for doing this isn’t too different from that for adding physical products, but you don’t need to include shipping information and for downloads, you need to provide a link or upload a file as well as specifying a download limit if you want to.

You’re now ready to start selling virtual products using WooCommerce!

from Tuts+ Code – WordPress http://ift.tt/12pQifV

Giveaway: Win 1 of 5 Extended Licenses for these 5 Responsive Multi-Purpose HTML5 Templates


We have another fantastic giveaway from our friends over at DealFuel. They are giving away the extended license to their hottest selling product, the 5 Multipurpose HTML Templates Deal!

They have given us 5 copies to giveaway to 5 lucky winners. All you have to do to enter this givewaway is subscribe to their newsletter. So if you love making WordPress themes, Joomla templates or anything similar, the extended license sets you free.

5 Responsive Multi-purpose HTML5 templates

You will be able create a professional website in super-quick time with these 5 multipurpose HTML templates. These templates are very clean, creative, versatile & highly functional. In the template package you will receive the following templates:

  • Appolicious – Bootstrap 3 Retina App Landing Page
  • Charted Accountant Multipurpose HTML Template
  • Edge HTML Single Page Template
  • My Cafe – A Premium Restaurant HTML Template
  • Streak responsive HTML template

Check out the templates here: 5 Multipurpose HTML Templates.

How to Enter?

To participate in the giveaway all you have to do is subscribe to their newsletter. 5 lucky winners will be chosen completely at random.

Click here to subscribe and enter the giveaway:

(function () { var e = document.createElement(‘script’); e.type = ‘text/javascript'; e.async = true; e.src = (‘https:’ == document.location.protocol ? ‘https’ : ‘http’) + ‘://btn.createsend1.com/js/sb.min.js?v=3′; e.className = ‘createsend-script'; var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(e, s); })();

The competition will run for the next seven days starting on the 24th of October 2014 and ending on the 31st of October 2014. Winners will be notified within 2 days of the competition getting over.

Good Luck.


The post Giveaway: Win 1 of 5 Extended Licenses for these 5 Responsive Multi-Purpose HTML5 Templates appeared first on Speckyboy Web Design Magazine.

via Speckyboy Web Design Magazine http://ift.tt/1nBWPgN