<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SoulSizzle Design</title>
	<atom:link href="http://soulsizzle.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://soulsizzle.com</link>
	<description>Music To Your Eyes</description>
	<lastBuildDate>Thu, 06 Sep 2012 04:45:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>MashUp Monthly</title>
		<link>http://soulsizzle.com/projects/mashup-monthly/</link>
		<comments>http://soulsizzle.com/projects/mashup-monthly/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 10:08:52 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=318</guid>
		<description><![CDATA[<p>The second Saturday of every month, FourSee Entertainment brings the local music scene together for a rare convergence of styles. Rock, Hip Hop, Soul, Jazz, Electronic, and just about anything else you can think of is represented. We were able to create an identity and flyer design that appeals to as wide of a range [...]</p><p>The post <a href="http://soulsizzle.com/projects/mashup-monthly/">MashUp Monthly</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>The second Saturday of every month, FourSee Entertainment brings the local music scene together for a rare convergence of styles. Rock, Hip Hop, Soul, Jazz, Electronic, and just about anything else you can think of is represented. We were able to create an identity and flyer design that appeals to as wide of a range of people as their shows do. Every month, the flyer adopts a new color scheme to keep it fresh but keeps its general feel to maintain identity.</p>
<p>The post <a href="http://soulsizzle.com/projects/mashup-monthly/">MashUp Monthly</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/projects/mashup-monthly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PlatinumEarth.com</title>
		<link>http://soulsizzle.com/projects/platinumearth/</link>
		<comments>http://soulsizzle.com/projects/platinumearth/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 09:48:43 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=313</guid>
		<description><![CDATA[<p>Platinum Earth, specialists in eco-friendly construction, know that you don&#8217;t have to be a hemp-wearing, jam band-loving hippie to want to protect the enviornment. So when they asked for a forward-thinking website that reflected their work, that&#8217;s exactly what they got. PlatinumEarth.com is clean but full of unique character, a perfect compliment to what they [...]</p><p>The post <a href="http://soulsizzle.com/projects/platinumearth/">PlatinumEarth.com</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Platinum Earth, specialists in eco-friendly construction, know that you don&#8217;t have to be a hemp-wearing, jam band-loving hippie to want to protect the enviornment. So when they asked for a forward-thinking website that reflected their work, that&#8217;s exactly what they got. <a title="Platinum Earth" href="http://www.platinumearth.com">PlatinumEarth.com</a> is clean but full of unique character, a perfect compliment to what they do.</p>
<p>The post <a href="http://soulsizzle.com/projects/platinumearth/">PlatinumEarth.com</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/projects/platinumearth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create an Ajax Sorter for WordPress Custom Post Types</title>
		<link>http://soulsizzle.com/jquery/create-an-ajax-sorter-for-wordpress-custom-post-types/</link>
		<comments>http://soulsizzle.com/jquery/create-an-ajax-sorter-for-wordpress-custom-post-types/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 06:43:27 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=283</guid>
		<description><![CDATA[<p>Ordering custom posts is a generally a drawn-out process of editing the menu order field, post by post. Today, we will make the process many times easier and quicker by using jQuery and a handful of WordPress hooks to create a drag-and-drop solution. The Set-Up This tutorial covers a couple semi-advanced topics. I will, therefore, [...]</p><p>The post <a href="http://soulsizzle.com/jquery/create-an-ajax-sorter-for-wordpress-custom-post-types/">Create an Ajax Sorter for WordPress Custom Post Types</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Ordering custom posts is a generally a drawn-out process of editing the <code>menu order</code> field, post by post. Today, we will make the process many times easier and quicker by using jQuery and a handful of WordPress hooks to create a drag-and-drop solution.<br />
<span id="more-283"></span></p>
<h3>The Set-Up</h3>
<p>This tutorial covers a couple semi-advanced topics. I will, therefore, assume you have a firm grasp of PHP, JavaScript, CSS, and WordPress actions. Because of this, I will not going in depth at every step but have made an attempt to reference blog posts and codex articles that may be of help. Despite this lack of depth, you should be able to copy and paste the code and adapt to your own use without much trouble.</p>
<p>One of the best ways to cut down on development time in your projects is to create reusable code. In order to achieve this goal, we will keep all of our PHP, CSS, and JavaScript code in separate files to be easily ported from project to project. I generally keep code of this nature in a <code>/library</code> sub-directory underneath my theme folders.</p>
<p>We will begin by defining our custom post type. In this example, will be creating and working with a <code>Video</code> custom post type. There are numerous other tutorials on the net explaining this process, so I will not cover it in depth. I recommend you read <a href="http://net.tutsplus.com/tutorials/wordpress/rock-solid-wordpress-3-0-themes-using-custom-post-types/">this post</a> over at NetTuts to get started. The code that defines our custom post type is below.</p>
<pre class="wp-code-highlight prettyprint">
/**
 * Register Video custom post type
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_videos_register() {
	$labels = array(
	    &#039;name&#039; =&gt; _x(&#039;Videos&#039;, &#039;post type general name&#039;),
	    &#039;singular_name&#039; =&gt; _x(&#039;Video&#039;, &#039;post type singular name&#039;),
	    &#039;add_new&#039; =&gt; _x(&#039;Add New&#039;, &#039;release&#039;),
	    &#039;add_new_item&#039; =&gt; __(&#039;Add New Video&#039;),
	    &#039;edit_item&#039; =&gt; __(&#039;Edit Video&#039;),
	    &#039;new_item&#039; =&gt; __(&#039;New Video&#039;),
	    &#039;view_item&#039; =&gt; __(&#039;View Video&#039;),
	    &#039;search_items&#039; =&gt; __(&#039;Search Videos&#039;),
	    &#039;not_found&#039; =&gt;  __(&#039;No videos found&#039;),
	    &#039;not_found_in_trash&#039; =&gt; __(&#039;No videos found in Trash&#039;), 
	    &#039;parent_item_colon&#039; =&gt; &#039;&#039;
	  );

	$args = array(
    	&#039;labels&#039; =&gt; $labels,
    	&#039;public&#039; =&gt; true,
    	&#039;show_ui&#039; =&gt; true,
    	&#039;capability_type&#039; =&gt; &#039;post&#039;,
    	&#039;hierarchical&#039; =&gt; false,
    	&#039;rewrite&#039; =&gt; true,
    	&#039;supports&#039; =&gt; array(&#039;title&#039;, &#039;editor&#039;, &#039;comments&#039;),
    	&#039;menu_position&#039; =&gt; 20,
    	&#039;menu_icon&#039; =&gt; get_bloginfo(&#039;template_url&#039;).&#039;/images/menu-videos.png&#039;
    );
	register_post_type( &#039;video&#039; , $args );
}
add_action(&#039;init&#039;, &#039;soulsizzle_videos_register&#039;);
</pre>
<p>As stated above, it is best to keep this in a separate file, so it may be reused again later in other projects. I recomend you create a <code>videos.php</code> file in the <code>library</code> folder underneath your theme directory, and place this and any additional PHP code in it. Then, be sure to include it in your theme by referencing it in the <code>functions.php</code> file as so:</p>
<pre class="wp-code-highlight prettyprint">require_once(&#039;library/video.php&#039;);</pre>
<h3>Creating the Sort Menu</h3>
<p>We will now create a <code>Sort</code> sub-menu item that will appear underneath the menu for our Video post type we defined above. </p>
<pre class="wp-code-highlight prettyprint">
&lt;?php
/**
 * Enable Sort menu
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_enable_video_sort() {
    add_submenu_page(&#039;edit.php?post_type=video&#039;, &#039;Sort Videos&#039;, &#039;Sort&#039;, &#039;edit_posts&#039;, basename(__FILE__), &#039;soulsizzle_sort_videos&#039;);
}
add_action(&#039;admin_menu&#039; , &#039;soulsizzle_enable_video_sort&#039;); 


/**
 * Display Sort admin
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_sort_videos() {
	$videos = new WP_Query(&#039;post_type=video&amp;posts_per_page=-1&amp;orderby=menu_order&amp;order=ASC&#039;);
?&gt;
	&lt;div class=&quot;wrap&quot;&gt;
	&lt;h3&gt;Sort Videos &lt;img src=&quot;&lt;?php bloginfo(&#039;url&#039;); ?&gt;/wp-admin/images/loading.gif&quot; id=&quot;loading-animation&quot; /&gt;&lt;/h3&gt;
	&lt;ul id=&quot;video-list&quot;&gt;
	&lt;?php while ( $videos-&gt;have_posts() ) : $videos-&gt;the_post(); ?&gt;
		&lt;li id=&quot;&lt;?php the_id(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/li&gt;			
	&lt;?php endwhile; ?&gt;
	&lt;/div&gt;&lt;!-- End div#wrap //--&gt;

&lt;?php
}
</pre>
<p>The first function simply adds a submenu underneath the Video menu using WordPress&#8217;s <a href="http://codex.wordpress.org/Adding_Administration_Menus#Using_add_submenu_page">add_submenu_page()</a>. It is then enabled using <a href="http://codex.wordpress.org/Function_Reference/add_action">add_action()</a>.</p>
<p>The second function is what we told WordPress to call for the sub-menu we defined above. It begins by getting a list of all the posts with type <code>video</code>. By setting <code>posts_per_page</code> to -1, we are telling WordPress to return all of them.</p>
<p>We then create a unordered list with an ID of <code>video-list</code>. Finally, we loop through all the videos and output them as list items. The important thing to note here is that we are setting the ID of the list item to the ID of the post. This will be important later.</p>
<p>Additionally, we placed a reference to <code>loading.gif</code> in the page&#8217;s header. This file is included with WordPress and will be used to let users know when they are waiting on AJAX actions to complete.</p>
<h3>Styling the List</h3>
<p>If you click on the <code>Sort</code> menu item now, it should list all our videos. However, it doesn&#8217;t exactly look pretty. Let&#8217;s work on that. Begin by telling WordPress to queue up our CSS file, which we will create in a moment, by adding the following to our <code>videos.php</code>.</p>
<pre class="wp-code-highlight prettyprint">
/**
 * Queue up administration CSS
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_videos_print_styles() {
	global $pagenow;
	
	$pages = array(&#039;edit.php&#039;);
	if (in_array($pagenow, $pages))
		wp_enqueue_style(&#039;soulsizzle_videos&#039;, get_bloginfo(&#039;template_url&#039;).&#039;/library/videos.css&#039;);
}
add_action( &#039;admin_print_styles&#039;, &#039;soulsizzle_videos_print_styles&#039; );
</pre>
<p>The appearence of our list is going to be somewhat of a personal preference. However, by putting the following in a <code>video.css</code> file in the <code>/library</code> directory, you will have something that is simple but meshes well with the WordPress UI.</p>
<pre class="wp-code-highlight prettyprint">
#video-list { margin-top: 20px; }

	#video-list li {
		padding: 10px;	
		width: 50%;	
		font-weight: bold;
		
		background: #f0f0f0; /* for non-css3 browsers */
		filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=&#039;#f7f7f7&#039;, endColorstr=&#039;#e7e7e7&#039;); /* for IE */
		background: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#e7e7e7)); /* for webkit browsers */
		background: -moz-linear-gradient(top,  #f7f7f7,  #e7e7e7); /* for firefox 3.6+ */
		cursor: move;
		
		border: 1px solid #ddd;
		border-raidus: 10px;
		-moz-border-radius: 10px;
		-webkit-border-radius: 10px;
	}
	
#loading-animation { display: none; }
</pre>
<h3>The JavaScript</h3>
<p>Thanks to the power of jQuery, which is automatically included in a WordPress install, we can do powerful DOM manipulation and AJAX with very little code. We will be using jQuery to allow our list items to be sorted by drag-and-drop and automatically updating the menu order of our posts each time the order of the list is changed. Let&#8217;s begin by enabling the necessary JavaScript files. We will need to enable jQuery UI&#8217;s <a href="http://jqueryui.com/demos/sortable/">Sortable</a> plugin to handle the drag-and-drop functionality. Additionally, we will need to create and enable our own JavaScript file to handle the AJAX and tell Sortable what to do. Place the following in your <code>videos.php</code>.</p>
<pre class="wp-code-highlight prettyprint">
/**
 * Queue up administration JavaScript file
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_videos_print_scripts() {
	global $pagenow;
	
	$pages = array(&#039;edit.php&#039;);
	if (in_array($pagenow, $pages)) {
		wp_enqueue_script(&#039;jquery-ui-sortable&#039;);
		wp_enqueue_script(&#039;soulsizzle_videos&#039;, get_bloginfo(&#039;template_url&#039;).&#039;/library/videos.js&#039;);
	}
}
add_action( &#039;admin_print_scripts&#039;, &#039;soulsizzle_videos_print_scripts&#039; );
</pre>
<p>The above works just like enable our CSS did above. Place the following in <code>video.js</code> in the <code>/library</code> folder.</p>
<pre class="wp-code-highlight prettyprint">
jQuery(document).ready(function($) {		
	var videoList = $(&#039;#video-list&#039;);
			
	videoList.sortable({
		update: function(event, ui) {
			$(&#039;#loading-animation&#039;).show(); // Show the animate loading gif while waiting
			
			opts = {
				url: ajaxurl, // ajaxurl is defined by WordPress and points to /wp-admin/admin-ajax.php
				type: &#039;POST&#039;,
				async: true,
				cache: false,
				dataType: &#039;json&#039;,
				data:{
					action: &#039;video_sort&#039;, // Tell WordPress how to handle this ajax request
					order: videoList.sortable(&#039;toArray&#039;).toString() // Passes ID&#039;s of list items in	1,3,2 format
				},
				success: function(response) {
					$(&#039;#loading-animation&#039;).hide(); // Hide the loading animation
					return; 
				},
				error: function(xhr,textStatus,e) {  // This can be expanded to provide more information
					alert(&#039;There was an error saving the updates&#039;);
					$(&#039;#loading-animation&#039;).hide(); // Hide the loading animation
					return; 
				}
			};
			$.ajax(opts);
		}
	});	
});
</pre>
<p>The code above tells jQuery UI&#8217;s Sortable plug-in that the unordered-list with the ID <code>#video-list</code> should be sortable. We also tell Sortable that everytime the user changes the order of the list items, it should preform the function assigned to the <code>update</code> option. Most of the function should be self-explanatory. If you have any questions, be sure to reference jQuery&#8217;s documentation on <a href="http://api.jquery.com/jQuery.ajax/">.ajax</a>. </p>
<p>The first important thing to note is that we set the <code>url</code> option to <code>ajaxurl</code>. This is defined by WordPress and always points to <code>/wp-admin/admin-ajax.php</code>, which is somewhat of a traffic cop for AJAX requests. By making our request through this file, we will have access to all the functions and variable defined by WordPress when we handle the AJAX request below.</p>
<p>The <code>data</code> option contains the variables that we want to send our PHP AJAX handler. The first variable is <code>action</code> and tells <code>admin-ajax.php</code> how to handle the request. The second variable we are using is one we define ourselves. It is named <code>order</code> and contains a list of ID&#8217;s of our videos in the order they currently our in our list. Calling <code>.sortable('toArray')</code> will create an array of these ID&#8217;s and <code>.toString()</code> will put it in a format that is easy to pass through AJAX.</p>
<h3>Handling the AJAX Request</h3>
<p>We must now create our custom PHP AJAX handler. When using custom handlers, <code>admin-ajax.php</code> will execute an action in the form of <code>wp_ajax_[action]</code> where [action] is the name of the <code>action</code> value we pass in our JavaScript. From that point, it&#8217;s just a matter of assigning a function to that action. Add this last bit of PHP to our <code>videos.php</code>.</p>
<pre class="wp-code-highlight prettyprint">
function soulsizzle_save_video_order() {
	global $wpdb; // WordPress database class

	$order = explode(&#039;,&#039;, $_POST[&#039;order&#039;]);
	$counter = 0;
	
	foreach ($order as $video_id) {
		$wpdb-&gt;update($wpdb-&gt;posts, array( &#039;menu_order&#039; =&gt; $counter ), array( &#039;ID&#039; =&gt; $video_id) );
		$counter++;
	}
	die(1);
}
add_action(&#039;wp_ajax_video_sort&#039;, &#039;soulsizzle_save_video_order&#039;);
</pre>
<p>If you notice, any variables we sent in our JavaScript as <code>data</code> now exists in the <code>$_POST</code> variable. The above code takes the <code>order</code> value and splits it into an array. In then iterates over each ID, and updates the <code>menu_order</code> column of the <code>posts</code> database table with an increasing value. </p>
<p>After rearranging your list of videos, you should be able to the <code>Videos</code> menu and see these changes reflected. </p>
<h3>Wrap-up</h3>
<p>In only a short amount of code, we were able to create a custom Video post type that is both reusable and goes beyond the basics to make it sortable. Not only do we make it easier on our clients but also on ourselves. We covered a lot of information very quickly, so if you have any questions, feel free to ask in the comments section below. For simplicity&#8217;s sake, I&#8217;ve included the full contents of our <code>videos.php</code> file below.</p>
<pre class="wp-code-highlight prettyprint">
&lt;?php

/**
 * Register Video custom post type
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_videos_register() {
	$labels = array(
	    &#039;name&#039; =&gt; _x(&#039;Videos&#039;, &#039;post type general name&#039;),
	    &#039;singular_name&#039; =&gt; _x(&#039;Video&#039;, &#039;post type singular name&#039;),
	    &#039;add_new&#039; =&gt; _x(&#039;Add New&#039;, &#039;release&#039;),
	    &#039;add_new_item&#039; =&gt; __(&#039;Add New Video&#039;),
	    &#039;edit_item&#039; =&gt; __(&#039;Edit Video&#039;),
	    &#039;new_item&#039; =&gt; __(&#039;New Video&#039;),
	    &#039;view_item&#039; =&gt; __(&#039;View Video&#039;),
	    &#039;search_items&#039; =&gt; __(&#039;Search Videos&#039;),
	    &#039;not_found&#039; =&gt;  __(&#039;No videos found&#039;),
	    &#039;not_found_in_trash&#039; =&gt; __(&#039;No videos found in Trash&#039;), 
	    &#039;parent_item_colon&#039; =&gt; &#039;&#039;
	  );

	$args = array(
    	&#039;labels&#039; =&gt; $labels,
    	&#039;public&#039; =&gt; true,
    	&#039;show_ui&#039; =&gt; true,
    	&#039;capability_type&#039; =&gt; &#039;post&#039;,
    	&#039;hierarchical&#039; =&gt; false,
    	&#039;rewrite&#039; =&gt; true,
    	&#039;supports&#039; =&gt; array(&#039;title&#039;, &#039;editor&#039;, &#039;comments&#039;),
    	&#039;menu_position&#039; =&gt; 20,
    	&#039;menu_icon&#039; =&gt; get_bloginfo(&#039;template_url&#039;).&#039;/images/menu-videos.png&#039;
    );
	register_post_type( &#039;video&#039; , $args );
}
add_action(&#039;init&#039;, &#039;soulsizzle_videos_register&#039;);


/**
 * Enable Sort menu
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_enable_video_sort() {
    add_submenu_page(&#039;edit.php?post_type=video&#039;, &#039;Sort Videos&#039;, &#039;Sort&#039;, &#039;edit_posts&#039;, basename(__FILE__), &#039;soulsizzle_sort_videos&#039;);
}
add_action(&#039;admin_menu&#039; , &#039;soulsizzle_enable_video_sort&#039;); 


/**
 * Display Sort admin
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_sort_videos() {
	$videos = new WP_Query(&#039;post_type=video&amp;posts_per_page=-1&amp;orderby=menu_order&amp;order=ASC&#039;);
?&gt;
	&lt;div class=&quot;wrap&quot;&gt;
	&lt;h3&gt;Sort Videos &lt;img src=&quot;&lt;?php bloginfo(&#039;url&#039;); ?&gt;/wp-admin/images/loading.gif&quot; id=&quot;loading-animation&quot; /&gt;&lt;/h3&gt;
	&lt;ul id=&quot;video-list&quot;&gt;
	&lt;?php while ( $videos-&gt;have_posts() ) : $videos-&gt;the_post(); ?&gt;
		&lt;li id=&quot;&lt;?php the_id(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/li&gt;			
	&lt;?php endwhile; ?&gt;
	&lt;/div&gt;&lt;!-- End div#wrap //--&gt;

&lt;?php
}


/**
 * Queue up administration JavaScript file
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_videos_print_scripts() {
	global $pagenow;
	
	$pages = array(&#039;edit.php&#039;);
	if (in_array($pagenow, $pages)) {
		wp_enqueue_script(&#039;jquery-ui-sortable&#039;);
		wp_enqueue_script(&#039;soulsizzle_videos&#039;, get_bloginfo(&#039;template_url&#039;).&#039;/library/videos.js&#039;);
	}
}
add_action( &#039;admin_print_scripts&#039;, &#039;soulsizzle_videos_print_scripts&#039; );


/**
 * Queue up administration CSS
 *
 * @return void
 * @author Soul
 **/
function soulsizzle_videos_print_styles() {
	global $pagenow;
	
	$pages = array(&#039;edit.php&#039;);
	if (in_array($pagenow, $pages))
		wp_enqueue_style(&#039;soulsizzle_videos&#039;, get_bloginfo(&#039;template_url&#039;).&#039;/library/videos.css&#039;);
}
add_action( &#039;admin_print_styles&#039;, &#039;soulsizzle_videos_print_styles&#039; );


function soulsizzle_save_video_order() {
	global $wpdb; // WordPress database class

	$order = explode(&#039;,&#039;, $_POST[&#039;order&#039;]);
	$counter = 0;
	
	foreach ($order as $video_id) {
		$wpdb-&gt;update($wpdb-&gt;posts, array( &#039;menu_order&#039; =&gt; $counter ), array( &#039;ID&#039; =&gt; $video_id) );
		$counter++;
	}
	die(1);
}
add_action(&#039;wp_ajax_video_sort&#039;, &#039;soulsizzle_save_video_order&#039;);
</pre>
<p>The post <a href="http://soulsizzle.com/jquery/create-an-ajax-sorter-for-wordpress-custom-post-types/">Create an Ajax Sorter for WordPress Custom Post Types</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/jquery/create-an-ajax-sorter-for-wordpress-custom-post-types/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>ItsPerfectTiming.com</title>
		<link>http://soulsizzle.com/projects/itsperfecttiming-com/</link>
		<comments>http://soulsizzle.com/projects/itsperfecttiming-com/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 21:10:48 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=280</guid>
		<description><![CDATA[<p>Rap cross-over duo Perfect Timing needed a site to promote their music and feed their hungry fans news and media. SoulSizzle design produced a solution that was interactive, easy to maintain, and fit their personality perfectly. Vistit the site at ItsPerfectTiming.com.</p><p>The post <a href="http://soulsizzle.com/projects/itsperfecttiming-com/">ItsPerfectTiming.com</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Rap cross-over duo Perfect Timing needed a site to promote their music and feed their hungry fans news and media. SoulSizzle design produced a solution that was interactive, easy to maintain, and fit their personality perfectly. Vistit the site at <a href="http://itsperfecttiming.com/">ItsPerfectTiming.com</a>.</p>
<p>The post <a href="http://soulsizzle.com/projects/itsperfecttiming-com/">ItsPerfectTiming.com</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/projects/itsperfecttiming-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding Additional Image Sizes to WordPress Themes</title>
		<link>http://soulsizzle.com/wordpress/adding-additional-image-sizes-to-wordpress-themes/</link>
		<comments>http://soulsizzle.com/wordpress/adding-additional-image-sizes-to-wordpress-themes/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:47:43 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=262</guid>
		<description><![CDATA[<p>WordPress&#8217;s media management and automatic image resizing make things really simple for the client. Users don&#8217;t have to worry about resizing and compressing images before they upload them. However, when used as a complex CMS system, WordPress&#8217;s Thumbnail, Medium, and Large sizes may not be flexible enough. But fret not, your theme can define additional [...]</p><p>The post <a href="http://soulsizzle.com/wordpress/adding-additional-image-sizes-to-wordpress-themes/">Adding Additional Image Sizes to WordPress Themes</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>WordPress&#8217;s media management and automatic image resizing make things really simple for the client. Users don&#8217;t have to worry about resizing and compressing images before they upload them. However, when used as a complex CMS system, WordPress&#8217;s Thumbnail, Medium, and Large sizes may not be flexible enough. But fret not, your theme can define additional sizes.<span id="more-262"></span></p>
<h3>Where This May Come In Handy</h3>
<p>Especially with version 3.0&#8242;s new CMS features, WordPress is easily used to manage content beyond the traditional posts and pages. For example, I personally do a lot of work with musicians. While the Thumb, Medium, and Large image sizes may work well in the context of their blog, these may not apply to other types of content. Album covers may be one size and show fliers may be another. Additionally, I may want to make available larger promo photos while still avoiding the 8 megapixel originals that the client may upload. Hence, we need to define a few additional image resolutions for WordPress to generate when uploading new pictures.</p>
<h3>Defining The New Image Sizes</h3>
<p>WordPress includes a simple function for achieving this goal, <code>add_image_size()</code>. It requires 4 parameters to do its job: the size&#8217;s name, width, height, and whether to crop it. As a personal preference, I place these size definitions (along with any other theme setup) in a function that is hooked onto the <code>after_setup_theme</code> action hook. Below is an example that defines two additional sizes. The first would be used in a front page featured news rotator, and the second is a larger size that is served if visitors want to download an image. This, and any additional code shown, goes in your theme&#8217;s functions.php file.</p>
<pre class="wp-code-highlight prettyprint">
function mytheme_setup() {
	add_image_size(&#039;featured-thumbnail&#039;,640,320, true);
	add_image_size(&#039;x-large&#039;,800,800, false);
}
add_action( &#039;after_setup_theme&#039;, &#039;mytheme_setup&#039; );
</pre>
<p>Rather simple, eh? Now when a new image is uploaded into WordPress, a cropped 640&#215;320 version and one that fits within 800&#215;800 dimensions will be created.</p>
<h3>Using The Sizes in Your Theme</h3>
<p>These sizes will not be accessible to the client for insertion into posts and pages. Their strength lies in how they are implemented into your themes. For example, for a recent project I created a front page news rotator that was independent of the blog posts. Therefore, the Thumbnail size was not applicable. So I registered a &#8216;featured-thumbnail&#8217; size similar to above and created a <a href="http://net.tutsplus.com/tutorials/wordpress/rock-solid-wordpress-3-0-themes-using-custom-post-types/">custom post type</a> for managing the news items. Each news item was given a Featured Image in WordPress&#8217;s dashboard. </p>
<p><img src="http://soulsizzle.com/wp-content/uploads/2010/07/featured-image-580x228.jpg" alt="" title="Featured Image" width="580" height="228" class="aligncenter size-large wp-image-263" /></p>
<p>Then it&#8217;s just a matter of using WordPress&#8217;s <code>the_post_thumbnail()</code> function to insert the image in our defined dimensions. Generally, the only parameter you need to pass is the name of our newly defined image size. The resulting code is as follows:</p>
<pre class="wp-code-highlight prettyprint">
&lt;ul&gt;
	&lt;?php
	$featured = new WP_Query(&quot;post_type=featured&amp;post_status=publish&quot;);
	while ( $featured-&gt;have_posts() ) : $featured-&gt;the_post();
	?&gt;
	&lt;li&gt;
		&lt;?php the_post_thumbnail(&#039;featured-thumbnail&#039;); // Inserts image with our defined dimensions ?&gt; 
		&lt;div class=&quot;newsDescription&quot;&gt;
			&lt;h3&gt;&lt;?php the_title(); ?&gt;&lt;/h3&gt;
			&lt;p&gt;&lt;?php the_content(); ?&gt;&lt;/p&gt;
		&lt;/div&gt;
	&lt;/li&gt;
	&lt;?php endwhile; ?&gt;
&lt;/ul&gt;
</pre>
<h3>Conclusion</h3>
<p>The team of developers behind WordPress are well aware of its evolution from a simple blogging platform to a strong content management system. With the release of version 3.0, managing a wide range of content types has never been easier. Each content type will have its own requirements for display, and being able to define additional image sizes is just one of many tools for meeting those requirements.</p>
<p>The post <a href="http://soulsizzle.com/wordpress/adding-additional-image-sizes-to-wordpress-themes/">Adding Additional Image Sizes to WordPress Themes</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/wordpress/adding-additional-image-sizes-to-wordpress-themes/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Manage a Boatload of WordPress Sidebars With Help From jQuery</title>
		<link>http://soulsizzle.com/jquery/manage-a-boatload-of-wordpress-sidebars-with-help-from-jquery/</link>
		<comments>http://soulsizzle.com/jquery/manage-a-boatload-of-wordpress-sidebars-with-help-from-jquery/#comments</comments>
		<pubDate>Sun, 30 May 2010 04:39:30 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=249</guid>
		<description><![CDATA[<p>I recently finished a project that pushed WordPress farther than I have ever before. Essentially, each of the 18 categories was a micro-site with its own styling and two widgetized areas. That means 36 different widgetized sections! When viewing the Widget page in the WordPress Dashboard, the list of widget areas extended quite a bit [...]</p><p>The post <a href="http://soulsizzle.com/jquery/manage-a-boatload-of-wordpress-sidebars-with-help-from-jquery/">Manage a Boatload of WordPress Sidebars With Help From jQuery</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I recently finished a project that pushed WordPress farther than I have ever before. Essentially, each of the 18 categories was a micro-site with its own styling and two widgetized areas. That means 36 different widgetized sections! When viewing the Widget page in the WordPress Dashboard, the list of widget areas extended quite a bit below the fold. This made adding and managing the widgets extremely cumbersome. The obvious solution was to display only one widget area at a time.<span id="more-249"></span></p>
<h3>Fleshing Out The Solution</h3>
<p>Before writing any code, I like to flesh out the basics to my solution on paper. Some simple brainstorming lead me to the following goals:</p>
<ol>
<li>Create an array of all the widget areas available</li>
<li>Hide all the listed widget areas besides the first</li>
<li>Insert into the Widget page a drop-down box containing a list of the widget areas&nbsp;in&nbsp;our&nbsp;array</li>
<li>Whenever a user selects a widget area from the drop-down box, show that one and&nbsp;hide&nbsp;the&nbsp; rest</li>
</ol>
<h3>Loading Our Javascript File</h3>
<p>We&#8217;ll begin by creating a file named <code>widget-admin.js</code>. Save this file somewhere in your theme directory. I prefer to keep all my JavaScript files in the <code>js/</code> sub-directory. We only want this code to be loaded if we are on the Widgets page of the WordPress dashboard. To achieve this, add the following code to your <code>functions.php</code> file.</p>
<pre class="wp-code-highlight prettyprint">// Custom Admin Sidebar Switcher
function sidebar_switcher() {
	global $pagenow;

	if ($pagenow == &#039;widgets.php&#039;)
		wp_enqueue_script(&#039;fca_admin&#039;, get_bloginfo(&#039;template_url&#039;).&#039;/js/widget-admin.js&#039;);
}
add_action(&#039;admin_print_scripts&#039;, &#039;sidebar_switcher&#039;);
</pre>
<p>By latching onto WordPress&#8217;s <code>admin_print_scripts</code> hook, our <code>sidebar_switcher()</code> function will only be run when we are in the dashboard. The <code>sidebar_switcher()</code> function checks if we are on the Widgets page. If we are, it tells WordPress to queue up our <code>widget-admin.js</code> file.</p>
<h3>Letting jQuery Work It&#8217;s Magic</h3>
<p>The following code goes into the <code>widget-admin.js</code> that we created earlier. The comments should make it self-explanatory.</p>
<pre class="wp-code-highlight prettyprint">jQuery(&quot;document&quot;).ready(function(){
	var sidebars = new Array(); // Create array to hold our list of widget areas
	var selectorHTML, name; // Declaring variables isn&#039;t necessary in JavaScript, but it&#039;s good practice

	jQuery(&#039;.widget-liquid-right .sidebar-name h3&#039;).each(function(index) {
		name = jQuery(this).html(); // Get the name of each widget area
		name = name.replace(/\s*&lt;span&gt;.*&lt;\/span&gt;/,&#039;&#039;); // Remove extra &lt;span&gt; block from name
		sidebars.push(name); // Add the name to our array
	});

	jQuery(&#039;.widget-liquid-right .widgets-holder-wrap&#039;).hide(); // Hide all the widget areas in list
	jQuery(&#039;.widget-liquid-right .widgets-holder-wrap:first&#039;).show(); // Show the first

	// Start &lt;select&gt; block. Position to the right of the &quot;Widgets&quot; heading.
	selectorHTML = &quot;&lt;select id=\&quot;sidebarSelector\&quot; style=\&quot;position: absolute; left: 400px; top: 68px;\&quot;&gt;\n&quot;;
	
	var count = 0;
	for ( var i in sidebars ) // Add option for each widgetized area
		selectorHTML = selectorHTML + &quot;&lt;option value=\&quot;&quot; + count++ + &quot;\&quot;&gt;&quot; + sidebars[i] + &quot;&lt;/option&gt;\n&quot;; // Store the index of the widget area in the &#039;value&#039; attribute
	
	selectorHTML = selectorHTML + &quot;&lt;/select&gt;&quot;; // Close the &lt;select&gt; block
	
	jQuery(&#039;div.wrap&#039;).append(selectorHTML); // Insert it into the DOM
	
	jQuery(&#039;#sidebarSelector&#039;).change(function(){ // When the user selects something from the select box...
		index = jQuery(this).val(); // Figure out which one they chose
		jQuery(&#039;.widget-liquid-right .widgets-holder-wrap&#039;).hide(); // Hide all the widget areas
		jQuery(&#039;.widget-liquid-right .widgets-holder-wrap:eq(&#039; + index + &#039;)&#039;).show(); // And show only the corresponding one
	});
});
</pre>
<h3>Conclusion</h3>
<p>When pushing WordPress to it&#8217;s limit, it may occasionally be necessary to enhance its user interface. With the power of jQuery and WordPress&#8217;s action and filter hooks, the sky is the limit. </p>
<p>The post <a href="http://soulsizzle.com/jquery/manage-a-boatload-of-wordpress-sidebars-with-help-from-jquery/">Manage a Boatload of WordPress Sidebars With Help From jQuery</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/jquery/manage-a-boatload-of-wordpress-sidebars-with-help-from-jquery/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Game Over</title>
		<link>http://soulsizzle.com/projects/game-over/</link>
		<comments>http://soulsizzle.com/projects/game-over/#comments</comments>
		<pubDate>Tue, 04 May 2010 02:41:56 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=236</guid>
		<description><![CDATA[<p>We always welcome the opportunity to reminisce. So we took a time machine back to the eighties for inspiration this promotional flier for Game Over, a hip hop show featuring many of Indianapolis&#8217;s best emcees.</p><p>The post <a href="http://soulsizzle.com/projects/game-over/">Game Over</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>We always welcome the opportunity to reminisce. So we took a time machine back to the eighties for inspiration this promotional flier for Game Over, a hip hop show featuring many of Indianapolis&#8217;s best emcees.</p>
<p>The post <a href="http://soulsizzle.com/projects/game-over/">Game Over</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/projects/game-over/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brad Real &#8211; Mumble</title>
		<link>http://soulsizzle.com/projects/brad-real-mumble/</link>
		<comments>http://soulsizzle.com/projects/brad-real-mumble/#comments</comments>
		<pubDate>Tue, 04 May 2010 02:28:06 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=234</guid>
		<description><![CDATA[<p>Proving that once again, even a free product can benefit from good design. Sometimes, it is hard work to give something away. Brad Real planned on releasing his single &#8220;Mumble&#8221; as a free download in order to help spread his name. Soulsizzle Design produced what you see below, a design ensured to pique interest in [...]</p><p>The post <a href="http://soulsizzle.com/projects/brad-real-mumble/">Brad Real &#8211; Mumble</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Proving that once again, even a free product can benefit from good design. Sometimes, it is hard work to give something away. Brad Real planned on releasing his single &#8220;Mumble&#8221; as a free download in order to help spread his name. Soulsizzle Design produced what you see below, a design ensured to pique interest in the song across web, e-mail correspondence, and social networking.</p>
<p>The post <a href="http://soulsizzle.com/projects/brad-real-mumble/">Brad Real &#8211; Mumble</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/projects/brad-real-mumble/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Display a Different Number of Posts in WordPress Searches</title>
		<link>http://soulsizzle.com/wordpress/display-a-different-number-of-posts-in-wordpress-searches/</link>
		<comments>http://soulsizzle.com/wordpress/display-a-different-number-of-posts-in-wordpress-searches/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 02:10:08 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=217</guid>
		<description><![CDATA[<p>WordPress treats every page/post-listing just about the same. Whether it&#8217;s the homepage, a blog category, search results, or even your average page, the same basic logic is used to generate it. This also means that the same settings, including the number of posts displayed per page, are used across the board. However, this is not [...]</p><p>The post <a href="http://soulsizzle.com/wordpress/display-a-different-number-of-posts-in-wordpress-searches/">Display a Different Number of Posts in WordPress Searches</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>WordPress treats every page/post-listing just about the same. Whether it&#8217;s the homepage, a blog category, search results, or even your average page, the same basic logic is used to generate it. This also means that the same settings, including the number of posts displayed per page, are used across the board. However, this is not always desirable.<span id="more-217"></span></p>
<blockquote><p>
I have made some changes to the original code that appeared in this article. The new solution is nearly identical to Keith&#8217;s below. Though I did arrive at this solution independently, he does deserve some acknowledgment for beating me to the punch.
</p></blockquote>
<h3>The Goal</h3>
<p>The basic goal of a site search is to find information quickly; however, it is becoming more and more commonplace to see increasingly stylized post listings. In my eyes, this runs the risk of becoming counter-intuitive to this goal. Because of this, it is my personal preference to simplify my search results and to show more results. Because searches rely on the same setting (found in <em>Settings » Reading » Blog pages show at most)</em> as any other WordPress page when determining the number of listings to show, we have to get a little creative in order to show a different am amount.</p>
<h3>How Not to Do It</h3>
<p>Most blog posts or WordPress.org forum posts will recommend using the <code>query_posts()</code> function in order to alter the number of search listings shown. They advise inserting something similar before the loop in your themes search.php.</p>
<p>However, this neglects one important fact. WordPress already runs the query once before it even gets to this query_posts() call. This means that you are essentially doubling the number of database calls WordPress needs to do in order to retrieve the correct number of posts. If an efficient, quickly-loading site is important to you (I know it is to me), this should be a concern. This is even more important with the recent news that Google is now incorporating page-load time into its pagerank algorithm.</p>
<h3>A Better Solution</h3>
<p>The obvious solution is to alter the original query before it is executed. This is made fairly simple with WordPress filters (noticing a common theme in our WordPress-related posts?). Using the <code>pre_get_posts</code> filter, we can change the query parameters before it is translated into an actual MySQL query. Simply insert the following code into the <code>functions.php</code> file of your theme. It&#8217;s so simple, I hope this technique will become more commonplace.</p>
<pre class="wp-code-highlight prettyprint">
function change_wp_search_size($query) {
	if ( $query-&gt;is_search ) // Make sure it is a search page
		$query-&gt;query_vars[&#039;posts_per_page&#039;] = 10; // Change 10 to the number of posts you would like to show

	return $query; // Return our modified query variables
}
add_filter(&#039;pre_get_posts&#039;, &#039;change_wp_search_size&#039;); // Hook our custom function onto the request filter
</pre>
<p>Any function that is hooked into the <code>pre_get_posts</code> filter will automatically be passed an <a href="http://codex.wordpress.org/Function_Reference/WP_Query">WP_Query</a> Object containing any parameters that intends to use to generate the database query. All we have to do is change the <code>posts_per_page</code> parameter to the number of results we would like to show.</p>
<p>We must first determine if we are even on the search results page. This is as easy as testing to see if <code>$query->is_search</code> is set. Then, it&#8217;s simply a matter of returning our modified query paramaters to WordPress and letting WordPress do it&#8217;s magic. </p>
<h3>A few additional notes</h3>
<p>If you don&#8217;t want to limit the number of posts shown at all, simply set <code>$query->query_varts['posts_per_page']</code> to -1. Also, this technique is not limited to the search page only. You can also test for <code>$query->is_cateogry</code>, <code>$query->is_tag</code>, <code>$query->is_archive</code>, <code>$query->is_date</code>, and etc. And if you want to test for a specific category you can use a conditional statement similar to the following:
<pre class="wp-code-highlight prettyprint">if ($query-&gt;query_vars[&#039;cateogry_name&#039;] == &#039;category_slug&#039;)</pre>
<h3>The Wrap-up</h3>
<p>Though this solution may contain a few more lines of code than a <code>query_posts()</code> solution, it is still superior for two reasons.</p>
<ol>
<li>It is quicker by nearly halving the number of database calls</li>
<li>We separate logic and presentation as much as possible, which should be a ever-present goal in web programming and design</li>
</ol>
<p>The post <a href="http://soulsizzle.com/wordpress/display-a-different-number-of-posts-in-wordpress-searches/">Display a Different Number of Posts in WordPress Searches</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/wordpress/display-a-different-number-of-posts-in-wordpress-searches/feed/</wfw:commentRss>
		<slash:comments>69</slash:comments>
		</item>
		<item>
		<title>The Wake-Up</title>
		<link>http://soulsizzle.com/projects/the-wake-up/</link>
		<comments>http://soulsizzle.com/projects/the-wake-up/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 00:36:13 +0000</pubDate>
		<dc:creator>soulsizzle</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://soulsizzle.com/?p=211</guid>
		<description><![CDATA[<p>The design for Sleeper Cell&#8217;s mixtape &#8220;The Wake-Up&#8221; is proof that a small project can still have great design. The DJ-mixed album was created as a promotional tool to be given away for free digitally and in a limited-run physical pressing. Because of this, the budget was limited. However, they were still concerned with sticking [...]</p><p>The post <a href="http://soulsizzle.com/projects/the-wake-up/">The Wake-Up</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>The design for Sleeper Cell&#8217;s mixtape &#8220;The Wake-Up&#8221; is proof that a small project can still have great design. The DJ-mixed album was created as a promotional tool to be given away for <a href="http://bit.ly/aoyDzG">free digitally</a> and in a limited-run physical pressing. Because of this, the budget was limited. However, they were still concerned with sticking out amongst the slew of hastily-produced mixtapes that flood the internet.</p>
<p>The post <a href="http://soulsizzle.com/projects/the-wake-up/">The Wake-Up</a> appeared first on <a href="http://soulsizzle.com">SoulSizzle Design</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://soulsizzle.com/projects/the-wake-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
