The WooCommerce Xmas Bundle

Don’t miss the offer we at WooThemes are running up to Christmas – 3 WooCommerce themes and 8 extensions (including Jay’s super cool responsive Argentum theme and the ever popular table-rate shipping extension) for just $150. If you’ve been waiting for the right moment to jump onto the WooCommerce bandwagon nows the time!

I’d like to close with a massive thank you to all of our contributors, users, supporters, and the WordPress community as a whole — Merry Christmas and a happy new year!

Ten terrific third-party WooCommerce plugins and themes

You may have noticed Jay and I shouting about all the cool WooCommerce goodies we’ve been releasing at WooThemes (we now have a whopping 45 extensions and 15 themes) but what hasn’t had as much attention is all of the cool stuff the community has been releasing. Here’s a list of my favorite third-party plugins/themes currently available.

Continue reading →

WooCommerce – Output a simple, printable stock/inventory report

Another user request today to output a list of products, as well as their stock levels, to be used to compare the amount of real stock in hand with what WooCommerce thinks is in stock.

The code below can be added as a page template in your theme. Once added to your template, just create a page in WordPress admin and assign it the “Stock Report” page template.

Theres a check at the top of the page to only let admin users in, and when viewed the page will give you a simple list of products, SKU’s and stock levels which you can then print out.

I hope you find it useful

Debugging with WP_DEBUG_LOG

The constant WP_DEBUG_LOG is something I’ve only recently discovered — when added to wp-config.php it enables a log of WordPress errors and notices to be saved to wp-content/debug.log.

define( WP_DEBUG_LOG, true );

This is very handy when debugging plugin errors, especially hidden ones like those which occur on plugin activation.

WooCommerce: Output a printable list of processing orders

Someone requested a way to print out a list of their processing orders for WooCommerce so I came up with a snippet to do so

The code below can be added as a page template in your theme. Once added to your template, just create a page in WordPress admin and assign it the “Print processing orders” page template.

Theres a check at the top of the page to only let admin users in, and when viewed the page will give you a nice list of processing orders which you can then print out.

This snippet if also available through GitHub: https://gist.github.com/1339240

<?php
/*
Template Name: Print Processing Orders
*/
if (!is_user_logged_in() || !current_user_can('manage_options')) wp_die('This page is private.');
?>
<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title><?php _e('Processing Orders'); ?></title>
	<style>
		body { background:white; color:black; %; margin: 0 auto; }
		table { border: 1px solid #000; %; }
		table td, table th { border: 1px solid #000; padding: 6px; }
		article { border-top: 2px dashed #000; padding: 20px 0; }
	</style>
</head>
<body>
	<header>
		<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

		    <h1 class="title"><?php the_title(); ?></h1>

			<?php the_content(); ?>

		<?php endwhile; endif; ?>
	</header>
	<section>
	<?php

	global $woocommerce;

	$args = array(
		'post_type'			=> 'shop_order',
		'post_status' 		=> 'publish',
                'posts_per_page' => -1,
		'tax_query' => array(
                    array(
                        'taxonomy' => 'shop_order_status',
                        'field' => 'slug',
                        'terms' => array('processing')
                    )
                )
	);

	$loop = new WP_Query( $args );

	while ( $loop->have_posts() ) : $loop->the_post();

		$order_id = $loop->post->ID;

		$order = &new woocommerce_order($order_id);

		?>
		<article>
			<header>
		        <h2>Order #<?php echo $order_id; ?> &mdash; <time datetime="<?php the_time('c'); ?>"><?php echo the_time('d/m/Y'); ?></time></h2>
			</header>
			<table cellspacing="0" cellpadding="2">
				<thead>
					<tr>
						<th scope="col" style="text-align:left;"><?php _e('Product', 'woothemes'); ?></th>
						<th scope="col" style="text-align:left;"><?php _e('Quantity', 'woothemes'); ?></th>
						<th scope="col" style="text-align:left;"><?php _e('Price', 'woothemes'); ?></th>
					</tr>
				</thead>
				<tfoot>
					<tr>
						<th scope="row" colspan="2" style="text-align:left; padding-top: 12px;"><?php _e('Subtotal:', 'woothemes'); ?></th>
						<td style="text-align:left; padding-top: 12px;"><?php echo $order->get_subtotal_to_display(); ?></td>
					</tr>
					<?php if ($order->order_shipping > 0) : ?><tr>
						<th scope="row" colspan="2" style="text-align:left;"><?php _e('Shipping:', 'woothemes'); ?></th>
						<td style="text-align:left;"><?php echo $order->get_shipping_to_display(); ?></td>
					</tr><?php endif; ?>
					<?php if ($order->order_discount > 0) : ?><tr>
						<th scope="row" colspan="2" style="text-align:left;"><?php _e('Discount:', 'woothemes'); ?></th>
						<td style="text-align:left;"><?php echo woocommerce_price($order->order_discount); ?></td>
					</tr><?php endif; ?>
					<?php if ($order->get_total_tax() > 0) : ?><tr>
						<th scope="row" colspan="2" style="text-align:left;"><?php _e('Tax:', 'woothemes'); ?></th>
						<td style="text-align:left;"><?php echo woocommerce_price($order->get_total_tax()); ?></td>
					</tr><?php endif; ?>
					<tr>
						<th scope="row" colspan="2" style="text-align:left;"><?php _e('Total:', 'woothemes'); ?></th>
						<td style="text-align:left;"><?php echo woocommerce_price($order->order_total); ?> <?php _e('- via', 'woothemes'); ?> <?php echo ucwords($order->payment_method); ?></td>
					</tr>
				</tfoot>
				<tbody>
					<?php echo $order->email_order_items_table(); ?>
				</tbody>
			</table>

			<h2><?php _e('Customer details', 'woothemes'); ?></h2>

			<?php if ($order->billing_email) : ?>
				<p><strong><?php _e('Email:', 'woothemes'); ?></strong> <?php echo $order->billing_email; ?></p>
			<?php endif; ?>
			<?php if ($order->billing_phone) : ?>
				<p><strong><?php _e('Tel:', 'woothemes'); ?></strong> <?php echo $order->billing_phone; ?></p>
			<?php endif; ?>

			<div style="float:left; %;">

				<h3><?php _e('Billing address', 'woothemes'); ?></h3>

				<p>
					<?php echo $order->billing_first_name . ' ' . $order->billing_last_name; ?><br/>
					<?php if ($order->billing_company) : ?><?php echo $order->billing_company; ?><br/><?php endif; ?>
					<?php echo $order->formatted_billing_address; ?>
				</p>

			</div>

			<div style="float:right; %;">

				<h3><?php _e('Shipping address', 'woothemes'); ?></h3>

				<p>
					<?php echo $order->shipping_first_name . ' ' . $order->shipping_last_name; ?><br/>
					<?php if ($order->shipping_company) : ?><?php echo $order->shipping_company; ?><br/><?php endif; ?>
					<?php echo $order->formatted_shipping_address; ?>
				</p>

			</div>

			<div style="clear:both;"></div>

		</article>
	<?php endwhile; ?>
	</section>
</body>
</html>

Say hello to WooCommerce; simple, beautiful WordPress eCommerce

Today I’m proud to announce WooCommerce has arrived. Its been a tough week preparing it’s launch, and a busy month of development work but its all paid off. The WooThemes team, myself included, are incredibly excited by its completion and we hope it’s a hit with the WordPress community as a whole.

WooCommerce is an open source eCommerce plugin for WordPress with loads of cool features. Adding products, managing orders, setting up tax and shipping rates – WooCommerce makes it easy.

Whilst developing WooCommerce we focused on extending core WordPress functionality and keeping the UI consistant; this gives you an simple, easy to use, familiar admin interface which is a joy to use.

We made full use of WordPress custom post types, post type archives, and custom taxonomies making it both extendable and easy to theme. Theme developers will be relieved by its simplicity – after using several other eCommerce plugins in the past I know that it will be a breath of fresh air to many.

Alongside the release of the WooCommerce plugin we’ve also released three new themes (WooStore, Coquette and Wootique) as well as several child themes and extensions.

WooTique is our free WooCommerce theme

You can read more about WooCommerce on the WooThemes site. Be sure to check out WooCommerce on WordPress.org, and if your a developer (or a translator) why not say hi on Github and contribute to the project