Finally fixed the flicker

Since developing my site’s theme there has always been this annoying browser bug causing a ‘flicker’ whilst rolling over any element with a css3 transition. I’ve finally found a decent workaround which involves adding 1 line of css:

-webkit-transform: translateZ(0);

This triggers the GPU to do the animation rather than the CPU and has fixed my flickering, as well as making the animation look smoother.

This line needs to go on the un-animated state, so in my case I applied it to the elements themselves rather than the :hover.

Kudos to Mauricio on Stack: http://stackoverflow.com/a/9727924

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!
http://zfer.us/kMa8w?d=www.woothemes.com/woocommerce-xmas-bundle/

WooCommerce – Output a simple, printable stock/inventory report

screen-capture-1

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 🙂

<?php
/*
Template Name: Stock Report 🙂
*/
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('Stock Report'); ?></title>
<style>
body { background:white; color:black; width: 95%; margin: 0 auto; }
table { border: 1px solid #000; width: 100%; }
table td, table th { border: 1px solid #000; padding: 6px; }
</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;
?>
<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('SKU', 'woothemes'); ?></th>
<th scope="col" style="text-align:left;"><?php _e('Stock', 'woothemes'); ?></th>
</tr>
</thead>
<tbody>
<?php
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => –1,
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => '_manage_stock',
'value' => 'yes'
)
),
'tax_query' => array(
array(
'taxonomy' => 'product_type',
'field' => 'slug',
'terms' => array('simple'),
'operator' => 'IN'
)
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
?>
<tr>
<td><?php echo $product->get_title(); ?></td>
<td><?php echo $product->sku; ?></td>
<td><?php echo $product->stock; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
<h2>Variations</h2>
<table cellspacing="0" cellpadding="2">
<thead>
<tr>
<th scope="col" style="text-align:left;"><?php _e('Variation', 'woothemes'); ?></th>
<th scope="col" style="text-align:left;"><?php _e('Parent', 'woothemes'); ?></th>
<th scope="col" style="text-align:left;"><?php _e('SKU', 'woothemes'); ?></th>
<th scope="col" style="text-align:left;"><?php _e('Stock', 'woothemes'); ?></th>
</tr>
</thead>
<tbody>
<?php
$args = array(
'post_type' => 'product_variation',
'post_status' => 'publish',
'posts_per_page' => –1,
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => '_stock',
'value' => array('', false, null),
'compare' => 'NOT IN'
)
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$product = new WC_Product_Variation( $loop->post->ID );
?>
<tr>
<td><?php echo $product->get_title(); ?></td>
<td><?php echo get_the_title( $loop->post->post_parent ); ?></td>
<td><?php echo $product->sku; ?></td>
<td><?php echo $product->stock; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
</body>
</html>

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.