<?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>JeremyJaymes.com</title>
	<atom:link href="https://jeremyjaymes.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://jeremyjaymes.com</link>
	<description>WordPress Developer and Strategy Consultant</description>
	<lastBuildDate>Thu, 16 Mar 2017 12:02:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Managing Multiple SSH Keys for Git Push On WP Engine</title>
		<link>https://jeremyjaymes.com/managing-multiple-ssh-keys-git-push-wp-engine/</link>
		<pubDate>Fri, 06 Jan 2017 13:18:22 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">https://jeremyjaymes.com/?p=1879</guid>
		<description><![CDATA[If you ever find yourself in a situation where you need to manage multiple &#8220;Git Push&#8221; users, i.e. keys on the WP Engine platform, here&#8217;s a handy little trick to make things more manageable on your local system (Instructions for Mac based system, adjust as necessary.). $ cd ~/.ssh/ &#8211; Find and navigate to your...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/managing-multiple-ssh-keys-git-push-wp-engine/" title="ReadManaging Multiple SSH Keys for Git Push On WP Engine">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>If you ever find yourself in a situation where you need to manage multiple &#8220;Git Push&#8221; users, i.e. keys on the WP Engine platform, here&#8217;s a handy little trick  to make things more manageable on your local system (Instructions for Mac based system, adjust as necessary.).</p>
<p><code>$ cd ~/.ssh/</code> &#8211; Find and navigate to your ssh directory ($ indicates prompt)<br />
<code>$vim config</code> &#8211; open/edit your config file</p>
<p><span id="more-1879"></span></p>
<p>Add an entry similar to the following:<br />
<code><br />
Host mywpeuser<br />
Hostname git.wpengine.com<br />
PreferredAuthentications publickey<br />
IdentityFile ~/.ssh/key_file<br />
IdentitiesOnly yes<br />
</code></p>
<p>Repeat that step for additional users/keys replacing Host and IdentityFile with the appropriate info where host indicates an arbitrary name that helps to identify the host/user and IdentityFile indicates the path to your ssh key.</p>
<p>Next you&#8217;ll want to add or re-add your remote to the local repo like this:<br />
<code>$ git add remote production mywpeuser:production/install-name.git.</code></p>
<p>This will allow you to push to multiple git remotes across different WPE accounts using different keys while avoiding any conflicts that may occur if you follow the instructions in the WPE dashboard verbatim, i.e. <code>$git add remote production git@git.wpengine.com:production/install.git</code> </p>
<p>Note: The instructions in WPE are not incorrect by any means they might just not work perfectly depending on your set up and considering the potential for multiple keys in use. Also note that the above applies in any case where you might find yourself needing to manage multiple identities on a single system.</p>
<p>If that all makes sense to you and helps then this is probably as far as you need to read. If however you&#8217;re interested in why I&#8217;m writing this then read on.</p>
<h2>Why am I worrying about multiple keys on WPE?</h2>
<p>That&#8217;s a longer and less exciting story that ultimately boils down to my weirdness about naming conventions and how things appear to a client.</p>
<p><strong>On a related note.</strong> If there is one feature I&#8217;d like to see on WPE it would be better key management for the end user. If adding my key to the system makes it globally available then I&#8217;d personally like to be able to have a central user management feature that would allow me to remove said key from an install regardless of whether or not I have continued access to that install.</p>
<p>Anyway, hope the above helps.</p>
]]></content:encoded>
			</item>
		<item>
		<title>Scripts, Performance &#038; WordPress Themes</title>
		<link>https://jeremyjaymes.com/scripts-performance-wordpress-themes/</link>
		<comments>https://jeremyjaymes.com/scripts-performance-wordpress-themes/#respond</comments>
		<pubDate>Tue, 12 May 2015 14:35:47 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1820</guid>
		<description><![CDATA[WordPress performance and optimization starts at the code. Long before I consider caching, and even before I think about things like image optimization, I&#8217;m looking at the code behind the site. One of the areas I most often see &#8220;under optimized&#8221; is in script and style loading and it shouldn&#8217;t be since the time investment...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/scripts-performance-wordpress-themes/" title="ReadScripts, Performance &#038; WordPress Themes">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>WordPress performance and optimization starts at the code. Long before I consider caching, and even before I think about things like image optimization, I&#8217;m looking at the code behind the site. One of the areas I most often see &#8220;under optimized&#8221; is in script and style loading and it shouldn&#8217;t be since the time investment to optimize is minimal. </p>
<p>Here are a couple of very, to moderately easy methods for ensuring that your scripts and styles are being served in a way that allows you to squeeze a little extra performance out of your theme. (In some cases a lot extra.)  </p>
<p><span id="more-1820"></span></p>
<h2>Minify and combine where possible.</h2>
<p>Tools like Grunt and Gulp make it extremely easy to maintain an uncompressed development copy of your scripts while loading a minified version for optimal performance. </p>
<p>Here&#8217;s an example Gruntfile that watches both the main.css file as well as the main.js file for changes and creates a minified version with the help of grunt-contrib-cssmin and grunt-contrib-uglify. </p>
<p><script src="https://gist.github.com/jeremyjaymes/8b6a9fd5dcd568a3c875.js"></script></p>
<p>If you are using 3rd party libraries in your theme or plugin always be sure to grab the minified version. If for some reason it&#8217;s not provided with the package, consider minifying it yourself. Again you can use Grunt if that&#8217;s part of your workflow, or try one of the many online <a href="http://jscompress.com/">compressors</a>.</p>
<p><em>Keep in mind that if you are developing a theme with the intention that it will be submitted to WordPress.org for review, you will need to provide an uncompressed version of all scripts and styles.</em></p>
<h2>Be mindful of where you are loading.</h2>
<p>I see this issue a lot&#8230;  Use conditionals, use templates tags, use the appropriate hooks, custom code it (shouldn&#8217;t need to ), but make sure that you&#8217;re only enqueueing scripts where they are needed.</p>
<p>For example, I recently had a look at a theme that required a handful of scripts and styles be loaded on it&#8217;s custom options page. The developer correctly targeted the admin dashboard but could have taken it one step further by ensuring that the scripts where being enqueued on the options page only. Instead they were being loaded on every page which results in an entirely avoidable performance hit for the dashboard.</p>
<p>There&#8217;s a great, albeit brief overview in the codex <a href="https://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts#Example:_Target_a_Specific_Admin_Page" target="_blank">here</a> with a more in depth tutorial <a href="https://pippinsplugins.com/loading-scripts-correctly-in-the-wordpress-admin/" target="_blank">here</a>.</p>
<h2>Look to Core</h2>
<p>WordPress core comes with a few dozen pre-packaged scripts and popular libraries; I suggest you look <a href="https://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_Scripts_Included_and_Registered_by_WordPress" target="_blank">there</a> before considering a 3rd party library. You won&#8217;t always find what you need but you&#8217;d be surprise how often you will, especially when it comes to providing functionality in the dashboard.</p>
<p><strong>Off topic:</strong> Some people will scream, <em>replace core libraries with a CDN version for performance</em>. I&#8217;m not going to express my opinion one way or the other. But, should you decide to replace core libraries (e.g. jQuery) be mindful of how you&#8217;re doing it as well as how it will be maintained. Replacing core libraries can and <em>will</em> break things if not properly maintained. </p>
<h2>Delay Loading</h2>
<p>CSS will in most cases need to be loaded in the head of the page document (but not <a href="https://www.google.com/search?q=critical+css">always</a>), that is not however always the case with js files. Test and consider delaying the load of javascript until the bulk of the page renders by enqueueing your scripts in the footer by setting <code>$in_footer</code> to true.</p>
<p>e.g. <script src="https://gist.github.com/jeremyjaymes/4ae8f740b02d9373c20f.js"></script></p>
<h2>Clean up after yourself.</h2>
<p>If you started with my-fancy-navigation.js and, after developing for a while decide that my-other-fancy-navigation.js is going to do a job better&hellip; job, don&#8217;t forget to remove the first. </p>
<p>This seems obvious but I&#8217;ve seen it a number of times in taking over a project. Spend an hour trying to understand why abc.js is being loaded to the page only to find out that it was replaced by xyz.js at some point but never removed. (Also, why not just remove the file all together. No need to ship the project with code remnants.)</p>
<h2>Be Tidy</h2>
<p>Kind of like the above. When you&#8217;re writing your css be tidy. Remove unused or unnecessary classes, things change, it&#8217;s going to happen. Try to reuse rather than reinvent, consider reusable classes where possible. This takes a little more thinking about the project as a whole but it&#8217;s worth the extra effort.</p>
<p>Why? Because this will not only lead to more maintainable code but it will also (hopefully) cut down on file size allowing you to serve a smaller and speedier website. Every little bit counts.</p>
<h2>That&#8217;s a wrap.</h2>
<p>A few tips for your consideration when you start the next WordPress theme or plugin project.</p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/scripts-performance-wordpress-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anchor Links and Hashed Urls with Genesis Custom Post Class</title>
		<link>https://jeremyjaymes.com/anchor-links-genesis-custom-post-class/</link>
		<comments>https://jeremyjaymes.com/anchor-links-genesis-custom-post-class/#respond</comments>
		<pubDate>Fri, 14 Nov 2014 18:39:28 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1655</guid>
		<description><![CDATA[Here is a simple way to use the Genesis custom post class field to set up a nice little anchor link and hashed url. Background Recently I was involved in a project where the about (team) page required a nice smooth scroll that would link an employee&#8217;s headshot to an anchored position further down the...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/anchor-links-genesis-custom-post-class/" title="ReadAnchor Links and Hashed Urls with Genesis Custom Post Class">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Here is a simple way to use the Genesis custom post class field to set up a nice little anchor link and hashed url.</p>
<p><strong>Background</strong><br />
Recently I was involved in a project where the about (team) page required a nice smooth scroll that would link an employee&#8217;s headshot to an anchored position further down the page where more info about the employee could be found. We also wanted to keep in place a nice human readable hash so that the bio could be linked to directly (for those of you asking why we&#8217;re not using the_ID() to accomplish this). </p>
<p>With a few anchor links and a little jQuery this is typically pretty easy to pull off but it gets a little more challenging when you have consider the loop and intend to keep things dynamic.</p>
<p>After exploring Genesis and racking my brain for a bit I came up with a pretty decent solution.</p>
<p><span id="more-1655"></span></p>
<p><strong>The Solution</strong><br />
Employees are a custom post type, Genesis layout enabled, employees entered individually.</p>
<p>For each employee I enter a unique identifier in the Layout Settings &#8211; Custom Post Class. Could be the person&#8217;s last name or maybe their title, whatever works. Example &#8220;smith&#8221;.</p>
<p>With the class assigned above now accessible from within the loop it&#8217;s just a matter of using it to set up your anchors.</p>
<p>Usage will probably vary so I won&#8217;t go into detail with the code but here&#8217;s the general scenario.</p>
<p>For the page we created a custom template. In that template we have two loops. The first loop sets up a grid of all employees, headshot, name and title. Inside that loop we create the anchor link by echoing the custom post class and adding a hash, see step 1.</p>
<p>Further down the page we have the second loop. Single column, each employee listed out with additional information like their bio, a short video etc. Here we do the same thing only this time we echo out the custom post class as a div id wrapping each employee.</p>
<p>Code example truncated for brevity:</p>
<p><script src="https://gist.github.com/jeremyjaymes/59fbb68397a6353de9ad.js"></script></p>
<p>With that you have your anchor links set up!</p>
<p>Next I of course invoked some jquery to set up my smooth scroll, I prefer http://jpederson.com/Creep.js/, and we&#8217;re good to go.</p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/anchor-links-genesis-custom-post-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swapping Sidebars in a Genesis Template</title>
		<link>https://jeremyjaymes.com/swapping-sidebars-genesis-template/</link>
		<comments>https://jeremyjaymes.com/swapping-sidebars-genesis-template/#respond</comments>
		<pubDate>Fri, 17 Oct 2014 16:34:23 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1775</guid>
		<description><![CDATA[If you do any sort of complex development using the Genesis framework you will likely find yourself requiring additional sidebars outside of the packaged primary and secondary sidebars. Typically I&#8217;d recommend using the Genesis Simple Sidebars plugin. But for some that might seem like overkill when you only require a single additional widget area on...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/swapping-sidebars-genesis-template/" title="ReadSwapping Sidebars in a Genesis Template">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>If you do any sort of complex development using the Genesis framework you will likely find yourself requiring additional sidebars outside of the packaged primary and secondary sidebars. Typically I&#8217;d recommend using the <a href="https://wordpress.org/plugins/genesis-simple-sidebars/">Genesis Simple Sidebars</a> plugin.</p>
<p>But for some that might seem like overkill when you only require a single additional widget area on a single page template, and for that purpose I&#8217;d agree. This is how I handle swapping out sidebars in a Genesis child theme.<br />
<span id="more-1775"></span></p>
<p><strong>Context:</strong><br />
For the project that I&#8217;ll be using as an example I had a custom post type that required a custom post template to display the single posts for this post type. On these pages I needed a new widget area that would accommodate several widgets specific to the posts.</p>
<p><strong>Step 1</strong><br />
First thing you&#8217;ll want to do is register your new widget area, pretty basic knowledge required. For example:</p>
<p><script src="https://gist.github.com/jeremyjaymes/2cfe9924e4166e351a99.js"></script></p>
<p><strong>Step 2</strong><br />
The following two functions are added to my child theme&#8217;s custom single template, e.g. <strong>single-custom_post.php</strong>. Keep in mind that my custom post type required a custom template for other reasons so I am adding these functions directly to the template. This isn&#8217;t necessarily required as these functions could be used in your functions.php with some modification.</p>
<p>Please read the code comments for an explanation of each.</p>
<p><script src="https://gist.github.com/jeremyjaymes/3de69a2ebbd82c924ca3.js"></script> </p>
<p>You should now have a fully functional custom widget area on your single-post_type.php custom template. </p>
<p>And like I said, for anything more complex I&#8217;d definitely recommend that you check out the plugin I mentioned above. </p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/swapping-sidebars-genesis-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Custom Page Labels Plugin for Content Inventories</title>
		<link>https://jeremyjaymes.com/using-custom-page-labels-plugin-reorganize-site-content/</link>
		<comments>https://jeremyjaymes.com/using-custom-page-labels-plugin-reorganize-site-content/#respond</comments>
		<pubDate>Wed, 10 Sep 2014 15:54:51 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1728</guid>
		<description><![CDATA[How many times have you found yourself getting ready to start a big WordPress development project that requires a well-thought-out reorganization if not a complete restructuring of existing site content? You&#8217;ll likely start by taking inventory of what you have, carefully organizing all existing content into topic areas using content type labels or taxonomy. If you&#8217;re...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/using-custom-page-labels-plugin-reorganize-site-content/" title="ReadUsing the Custom Page Labels Plugin for Content Inventories">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>How many times have you found yourself getting ready to start a big WordPress development project that requires a well-thought-out reorganization if not a complete restructuring of existing site content?</p>
<p>You&#8217;ll likely start by taking inventory of what you have, carefully organizing all existing content into topic areas using content type labels or taxonomy.</p>
<p>If you&#8217;re anything like me you this is right around the time that you start feeling anxious and overwhelmed, staring at content, trying to figure out where to start.</p>
<p><strong>What if this process could be made easier by starting inside of WordPress?</strong></p>
<p><span id="more-1728"></span></p>
<p>In a recent project we started by exporting a copy of the existing site content. We then set up a &#8220;clean&#8221;, default installation of WordPress and imported the content. This is where we would start, and by going completely bare with the installation there was only one thing we could focus on &#8211; content.</p>
<p>Next, we installed the Custom Page Labels Plugin. We dove in, reviewing each piece of content,  fleshing out a structure, using Custom Page Labels to tag each piece of content with it&#8217;s respective type or taxonomy.</p>
<p>For example:</p>
<table>
<thead>
<tr>
<th>Page</th>
<th>Label</th>
</tr>
</thead>
<tbody>
<tr>
<td>ABC Widget</td>
<td>Products</td>
</tr>
<tr>
<td>ABC Widget Technical Details</td>
<td>Products &#8212; ABC Widget</td>
</tr>
<tr>
<td>XYZ Widget</td>
<td>Products</td>
</tr>
<tr>
<td>XYZ Widget Technical Details</td>
<td>Products &#8212; XYZ Widget</td>
</tr>
</tbody>
</table>
<p><small><em>You might do this in conjunction with a page/child page structure.</em></small></p>
<img class="aligncenter size-full wp-image-1748" src="http://jeremyjaymes.com/wp-content/uploads/2014/09/page-labels.jpg" alt="page-labels" width="650" height="284" srcset="https://jeremyjaymes.com/wp-content/uploads/2014/09/page-labels.jpg 650w, https://jeremyjaymes.com/wp-content/uploads/2014/09/page-labels-300x131.jpg 300w" sizes="(max-width: 650px) 100vw, 650px" />
<p>Easy to visualize, easy to identify within the admin pages list, and easy to edit when you change your mind.</p>
<p>This is only a small part of your information architecture project but it does prove to be an interesting and unexpected use case for the <a href="http://wordpress.org/plugins/custom-page-labels/">Custom Page Labels plugin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/using-custom-page-labels-plugin-reorganize-site-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charlene WordPress Theme V2 Beta Out</title>
		<link>https://jeremyjaymes.com/charlene-wordpress-theme-v2-beta/</link>
		<comments>https://jeremyjaymes.com/charlene-wordpress-theme-v2-beta/#respond</comments>
		<pubDate>Thu, 24 Jul 2014 20:13:11 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Journal]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1721</guid>
		<description><![CDATA[It&#8217;s taken forever, much longer than I&#8217;d hoped or thought but I finally have something to share in regards to the Charlene WordPress theme. It&#8217;s in beta and it&#8217;s up on GitHub. Honest, have a look https://github.com/jeremyjaymes/charlene. I&#8217;ll write a more comprehensive post regarding this version but here&#8217;s what I&#8217;ll say for now. The theme...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/charlene-wordpress-theme-v2-beta/" title="ReadCharlene WordPress Theme V2 Beta Out">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s taken forever, much longer than I&#8217;d hoped or thought but I finally have something to share in regards to the Charlene WordPress theme.</p>
<p>It&#8217;s in beta and it&#8217;s up on GitHub. Honest, have a look <a href="https://github.com/jeremyjaymes/charlene" target="_blank">https://github.com/jeremyjaymes/charlene</a>.</p>
<p>I&#8217;ll write a more comprehensive post regarding this version but here&#8217;s what I&#8217;ll say for now. The theme has been completely reworked from top to bottom, this is not to be considered an upgrade from V1 or older. It is however very similar with most of the same features so the transition should be fairly painless.</p>
<p>Here&#8217;s what&#8217;s on tap:</p>
<ul>
<li>HTML5 and Responsive</li>
<li>Post Formats Included</li>
<li>No more theme options</li>
<li>A few sensible customization options using the theme customizer</li>
<li>New default font</li>
<li>Same content focused layout</li>
</ul>
<p>You can see the demo here <a href="http://papertreedesign.com/themes">http://papertreedesign.com/themes</a>, it will be updated as I push new changes.</p>
<p>Which brings me to my next note. As mentioned above it is available on GitHub and I have enabled support for the <a href="https://github.com/afragen/github-updater" target="_blank">GitHub Updater</a>, so if you&#8217;re feeling brave and would like to give it a go please feel free but I do not recommend running it on a production site just yet. That said, if you do happen to play around with the theme a bit I would love to get your feedback, you can email me jeremy[at]papertreedesign.com.</p>
<p>That&#8217;s all for now.</p>
<p><strong>Update 7/30/2014</strong></p>
<p>I&#8217;ve been pushing some pretty steady updates over the past week, we&#8217;re getting closer. If anyone out there has taken the leap and activated the theme I&#8217;d love to get your feedback.</p>
<p><strong>Update 09/10/2014</strong></p>
<p>Charlene V2 is now considered stable. I&#8217;m hoping to have it approved for .org within the next week or two but for now you can grab a copy <a href="https://github.com/jeremyjaymes/charlene">here</a> and/or see a demo <a title="Charlene Theme Demo" href="http://papertreedesign.com/themes" target="_blank">here</a>. All feedback is welcome and appreciated!</p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/charlene-wordpress-theme-v2-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin: Custom Page Labels</title>
		<link>https://jeremyjaymes.com/wordpress-plugin-custom-page-labels/</link>
		<comments>https://jeremyjaymes.com/wordpress-plugin-custom-page-labels/#respond</comments>
		<pubDate>Tue, 17 Jun 2014 11:15:00 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1699</guid>
		<description><![CDATA[Custom Page Labels is a no frills WordPress plugin that allows you to add a custom label (identifier) to a page making it is easier to quickly identify a page on the all pages screen. Why? Not all page titles are as simple or as identifiable as &#8220;About Us&#8221; or &#8220;Home Page&#8221;. More often they&#8217;re...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/wordpress-plugin-custom-page-labels/" title="ReadWordPress Plugin: Custom Page Labels">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/jeremyjaymes/custom-page-labels" target="_blank">Custom Page Labels</a> is a no frills WordPress plugin that allows you to add a custom label (identifier) to a page making it is easier to quickly identify a page on the all pages screen.</p>
<p><strong>Why?</strong></p>
<p>Not all page titles are as simple or as identifiable as &#8220;About Us&#8221; or &#8220;Home Page&#8221;. More often they&#8217;re carefully crafted and even a bit lengthy. For example, about us becomes &#8220;Our Amazing Widget Company Employs Only the Best and the Brightest.&#8221; </p>
<p><span id="more-1699"></span></p>
<p>Now imagine you&#8217;re a busy site admin, in fact site admin is only one of your many roles. It&#8217;s been a few weeks since you last logged into the site, you&#8217;ve got a handful of edits ready and you need to move quickly. You gather your edits, login and head over to the pages screen. </p>
<p>Hmm, wait, what&#8217;s our about page titled again? Which one is the home page? Now you&#8217;re opening tabs, clicking quick edit to check page slugs. This is taking a bit longer than I&#8217;d hoped.</p>
<p>This plugin, in my opinion, creates a simple solution. It adds a single meta box to the page edit screen allowing you to tag the page with a simple descriptive label. That label is displayed in a custom column so that you the developer and your site authors can quickly jump in and identify the pages that need editing.</p>
<p>Interested? You can find it here <a href="https://github.com/jeremyjaymes/custom-page-labels">https://github.com/jeremyjaymes/custom-page-labels</a></p>
<p>The screenshots should clear up any confusion.</p>
<p>Oh and this is the first WordPress plugin I&#8217;ve put for public release, go easy on me. I welcome your comments and questions.</p>
<p>I do plan to submit it to the <strong>plugin repository</strong> in the near future I&#8217;d just like to make sure I have ample time to review before doing so.</p>
<p>Lastly, if you&#8217;re interested in receiving occasional updates about development, new releases and upcoming projects, consider signing up for my <a href="https://tinyletter.com/jeremyjaymes">newsletter</a>. </p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/wordpress-plugin-custom-page-labels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Display Attachment File Type in WordPress Theme</title>
		<link>https://jeremyjaymes.com/display-attachment-file-type-wordpress-theme/</link>
		<comments>https://jeremyjaymes.com/display-attachment-file-type-wordpress-theme/#respond</comments>
		<pubDate>Mon, 09 Jun 2014 21:25:20 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1678</guid>
		<description><![CDATA[Let&#8217;s say we have a list of downloadable items listed on a post or page, case studies for example. To help the end user understand what they will be downloading we&#8217;d like to display a file type adjacent to a download link. e.g. Click to Download &#124; PDF Background: In this particular example our Case...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/display-attachment-file-type-wordpress-theme/" title="ReadDisplay Attachment File Type in WordPress Theme">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Let&#8217;s say we have a list of downloadable items listed on a post or page, case studies for example. To help the end user understand what they will be downloading we&#8217;d like to display a file type adjacent to a download link.</p>
<p>e.g. <a href="#">Click to Download</a> | PDF</p>
<p><strong>Background:</strong> In this particular example our Case Studies are going to be a custom post type and the file attachments (downloads) are going to be added to each individual custom post type using custom fields. These custom fields are generated using the excellent <a href="https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress" target="_blank">Custom Metaboxes and Fields for WordPress</a>.</p>
<p>This bit of information is important because by using Custom Metaboxes and Fields we are able to easily retrieve the <strong>attachment ID</strong>, which is what we really need to make this work. (see <a href="https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/wiki/Field-Types#file" target="_blank">this example</a>)</p>
<p>So, keep that in mind, the following can be used as long as you have that attachment ID.</p>
<p><script src="https://gist.github.com/jeremyjaymes/9ee1505f346d15578bb6.js"></script></p>
<p><strong>Explanation:</strong> The above assumes that we&#8217;re in a loop of some sort and have already retrieved our attachment id, e.g. <code>$file_id = get_post_meta( get_the_ID(), '_my_download_id', 1)</code>.</p>
<p>Then we use wp_get_attachment_url( $file_id ); to get the url for our attachment. We need this to generate the actual download link but we also want to save it as a variable so that we can use it in the wp_check_filetype( $file_url ) function. wp_check_filetype() returns an array of values containing the extension and mime type. </p>
<p>We then use the $filetype variable to output the extension with <code>$filetype['ext']</code>.</p>
<p>I might expand on this a bit more in the future to explain in detail how this was used but there should be enough there to be potentially useful.</p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/display-attachment-file-type-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add Tax ID Column to WordPress Taxonomy Admin Columns</title>
		<link>https://jeremyjaymes.com/add-tax-id-column-wordpress-taxonomy-admin/</link>
		<comments>https://jeremyjaymes.com/add-tax-id-column-wordpress-taxonomy-admin/#respond</comments>
		<pubDate>Thu, 05 Jun 2014 21:30:21 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1665</guid>
		<description><![CDATA[Problem: In a recent WordPress project we needed to provide an easy way for the site manager to locate the numerical ID associated with a custom taxonomy. As WordPress developers we have a handful of methods at our disposal to recover that ID  but those options are not always that easy to explain to our clients....  <a class="excerpt-read-more" href="https://jeremyjaymes.com/add-tax-id-column-wordpress-taxonomy-admin/" title="ReadAdd Tax ID Column to WordPress Taxonomy Admin Columns">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p><strong>Problem:</strong> In a recent WordPress project we needed to provide an easy way for the site manager to locate the numerical ID associated with a custom taxonomy.</p>
<p>As WordPress developers we have a handful of methods at our disposal to recover that ID  but those options are not <em>always</em> that easy to explain to our clients.</p>
<p>So let&#8217;s make it easier.<br />
<span id="more-1665"></span></p>
<p><strong>Solution: </strong>Add the Tax ID as a custom column in the WordPress admin.</p>
<p><script src="https://gist.github.com/jeremyjaymes/3e418a883c94360d21ec.js"></script></p>
<p>In the first function we set up our new column with the header &#8220;ID&#8221;. We decided to filter the entire default list since you&#8217;ll notice that we also omitted the standard description column. For our particular use case we would not be using taxonomy descriptions so we decided to reduce the column clutter and remove it all together.</p>
<img class="alignright wp-image-1671 size-medium" src="http://jeremyjaymes.com/wp-content/uploads/2014/06/tax-id-column-168x300.png" alt="tax-id-column" width="168" height="300" />
<p>In the second function we go ahead and return our taxonomy ID for use in the new custom column.</p>
<p>Finally we use the appropriate hooks for adding and managing our custom columns.</p>
<p>The sortable column may not be useful as it just sorts the taxonomies by ID but I&#8217;ve included it here none the less.</p>
<p>In the end you end up with something like you see in the screenshot on the right, a much easier method for retrieving the ID associated with individual custom taxonomies.</p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/add-tax-id-column-wordpress-taxonomy-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add Microdata to WordPress Thumbnails</title>
		<link>https://jeremyjaymes.com/add-microdata-wordpress-thumbnail/</link>
		<comments>https://jeremyjaymes.com/add-microdata-wordpress-thumbnail/#respond</comments>
		<pubDate>Thu, 01 May 2014 14:09:28 +0000</pubDate>
		<dc:creator><![CDATA[Jeremy]]></dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyjaymes.com/?p=1635</guid>
		<description><![CDATA[In a recent custom WordPress build I needed to add microdata to all images output by the_post_thumbnail inside of a custom template and where a catch all function did not make sense. Specifically I needed to add itemtype=&#8221;photo&#8221; to thumbnail images associated with a &#8220;Place&#8221; in a custom place listings template but these are implementation...  <a class="excerpt-read-more" href="https://jeremyjaymes.com/add-microdata-wordpress-thumbnail/" title="ReadAdd Microdata to WordPress Thumbnails">Read more &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>In a recent custom WordPress build I needed to add microdata to all images output by the_post_thumbnail inside of a custom template and where a catch all function did not make sense. </p>
<p>Specifically I needed to add itemtype=&#8221;photo&#8221; to thumbnail images associated with a &#8220;Place&#8221; in a custom place listings template but these are implementation specific details that will vary based on your needs.  </p>
<p><span id="more-1635"></span></p>
<p>As it turns out, adding microdata to WordPress thumbnail images using the_post_thumbnail function is actually quite easy. You can accomplish this by using the $attr parameter of <a href="http://codex.wordpress.org/Function_Reference/the_post_thumbnail">the_post_thumbnail function</a>.</p>
<p>In the example below &#8220;image-size&#8221; is the required thumbnail size parameter and itemprop is the microdata attribute pair specified in the $attr parameter.</p>
<p>Again, these values will depend on your requirements.</p>
<p><script src="https://gist.github.com/jeremyjaymes/418003f5849719e17fae.js"></script></p>
<p>This is a very simple, no frills implementation but it get&#8217;s the job done. </p>
]]></content:encoded>
			<wfw:commentRss>https://jeremyjaymes.com/add-microdata-wordpress-thumbnail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
