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

<channel>
	<title>Michaelbox.net</title>
	<atom:link href="https://michaelbox.net/feed/" rel="self" type="application/rss+xml"/>
	<link>https://michaelbox.net</link>
	<description>A container of ideas, creativity, passions, and adventures </description>
	<lastBuildDate>Wed, 11 Mar 2026 02:32:31 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>My relationship with generative AI</title>
		<link>https://michaelbox.net/2025/08/my-relationship-with-generative-ai/</link>
					<comments>https://michaelbox.net/2025/08/my-relationship-with-generative-ai/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Thu, 28 Aug 2025 01:48:44 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1962</guid>

					<description><![CDATA[I don&#8217;t want to train something else to code, I want to learn and teach myself how to, including how to continue learning how to break down and dissect the logic and processes and patterns. If I don&#8217;t understand the code that has been spit out at me, I can&#8217;t be certain that it will <a class="read-more" href="https://michaelbox.net/2025/08/my-relationship-with-generative-ai/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> &lt; 1</span> <span class="rt-label rt-postfix">min</span></span><div class='e-content'>I don&#8217;t want to train something else to code, I want to learn and teach myself how to, including how to continue learning how to break down and dissect the logic and processes and patterns.</p>
<p>If I don&#8217;t understand the code that has been spit out at me, I can&#8217;t be certain that it will for sure work at all, work well, work efficiently, work securely.</p>
<p>I don&#8217;t want to train something else to write, I don&#8217;t want to feed other peoples works to train something else. I want to continue to learn how to clearly and effectively write and communicate myself. I would never be able to train some AI to effectively communicate with a client better than I already know and work with the client.</p>
<p>Tools come and go, fads get in style and then quickly get out of style. What will always be persistent is myself with my knowledge at that time, and my ability to grow myself, instead of some machine.</p></div>

<p><a href="https://michaelbox.net/2025/08/my-relationship-with-generative-ai/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2025/08/my-relationship-with-generative-ai/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Query Monitor Algolia</title>
		<link>https://michaelbox.net/2023/09/query-monitor-algolia/</link>
					<comments>https://michaelbox.net/2023/09/query-monitor-algolia/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Tue, 19 Sep 2023 02:16:04 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[5ftf]]></category>
		<category><![CDATA[algolia]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1844</guid>

					<description><![CDATA[One of the joys with my day job at WebDevStudios is the chance to work with and support Algolia Search. I&#8217;ve even posted about it a few times in the past here on the site. You can check those with the &#8220;algolia&#8221; tag. Not only did I get to work with it for clients, but <a class="read-more" href="https://michaelbox.net/2023/09/query-monitor-algolia/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> 2</span> <span class="rt-label rt-postfix">mins</span></span><div class='e-content'>
<p class="wp-block-paragraph">One of the joys with my day job at <a href="https://webdevstudios.com/" target="_blank" rel="noreferrer noopener">WebDevStudios</a> is the chance to work with and support <a href="https://www.algolia.com/" target="_blank" rel="noreferrer noopener">Algolia Search</a>. I&#8217;ve even posted about it a few times in the past here on the site. You can check those with the &#8220;<a href="https://michaelbox.net/tag/algolia/">algolia</a>&#8221; tag.</p>



<p class="wp-block-paragraph">Not only did I get to work with it for clients, but I also get to be a primary developer of the <a href="https://wordpress.org/plugins/wp-search-with-algolia/" target="_blank" rel="noreferrer noopener">WP Search with Algolia</a> plugin, and the <a href="https://pluginize.com/plugins/wp-search-with-algolia-pro/" target="_blank" rel="noreferrer noopener">Pro extension</a> that is bringing in some extra functionality so that you don&#8217;t need to do some of the coding. Both plugins keep me on the front lines of working with Algolia and helping site owners power their own site&#8217;s search experiences.</p>



<p class="wp-block-paragraph">However, there have been times where I&#8217;ve found it a little difficult to accurately troubleshoot things, or wished that I had a quick way to check on the current status of content inside any given Algolia index and it&#8217;s configuration. This got me thinking, and I remembered how I created my own plugin that extended the <a href="https://wordpress.org/plugins/query-monitor/" target="_blank" rel="noreferrer noopener">Query Monitor</a> plugin for the GiveWP donation platform.</p>



<p class="wp-block-paragraph">Thus, with #5FTF time, I came up with Query Monitor Algolia. You can download it at the link below.</p>



<p class="wp-block-paragraph"><a href="https://github.com/tw2113/query-monitor-algolia">https://github.com/tw2113/query-monitor-algolia</a></p>



<p class="wp-block-paragraph">However, before you go do that, let&#8217;s go over what it gathers and shows you all in a couple places.</p>



<h2 class="wp-block-heading">Constants</h2>



<p class="wp-block-paragraph">You will be able to see the value of these available constants:</p>



<ul class="wp-block-list">
<li>ALGOLIA_HIDE_HELP_NOTICES</li>



<li>ALGOLIA_SPLIT_POSTS</li>



<li>ALGOLIA_CONTENT_MAX_SIZE</li>



<li>ALGOLIA_INDEX_NAME_PREFIX</li>
</ul>



<h2 class="wp-block-heading">Index settings</h2>



<p class="wp-block-paragraph">You will also be able to see the currently configured settings for:</p>



<ul class="wp-block-list">
<li>Settings for each index associated with the site, or for the current site, if you have a multisite.</li>



<li> </li>
</ul>



<h2 class="wp-block-heading">Statuses</h2>



<p class="wp-block-paragraph">Lastly you will see a panel that provides all the information below.</p>



<ul class="wp-block-list">
<li>Used template path</li>



<li>Currently viewed content post type</li>



<li>Currently viewed content&#8217;s index-able status. Can it be indexed?</li>



<li>Currently viewed content&#8217;s indexed status. Is it indexed already?</li>



<li>Searchable post index enabled</li>



<li>All of your Index-able post types</li>



<li>Current indices, including last updated time.</li>



<li>If the API is reachable</li>



<li>Autocomplete configuration(s)</li>



<li>Search style. Is it backend, is it Instantsearch?</li>



<li>The prefix set for your indices.</li>



<li>Is &#8220;Powered by&#8221; enabled.</li>
</ul>



<p class="wp-block-paragraph">In terms of client work, I haven&#8217;t had a chance to really give it a try, but in terms of just testing things out locally, it seems to be working pretty well.</p>



<p class="wp-block-paragraph">I know we have another #5FTF coming up on the 29th, so hopefully I can start focusing on getting some integrations added around WP Search with Algolia Pro.</p>
</div>
<p><a href="https://michaelbox.net/2023/09/query-monitor-algolia/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2023/09/query-monitor-algolia/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Quick hit: “All Posts” vs Individual Post Types in WP Search with Algolia Autocomplete</title>
		<link>https://michaelbox.net/2022/12/quick-hit-all-posts-vs-individual-post-types-in-wp-search-with-algolia-autocomplete/</link>
					<comments>https://michaelbox.net/2022/12/quick-hit-all-posts-vs-individual-post-types-in-wp-search-with-algolia-autocomplete/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Fri, 02 Dec 2022 04:06:28 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[algolia]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1823</guid>

					<description><![CDATA[When setting up WP Search with Algolia you will see various available content types to include with your Autocomplete configuration. Most of them are available post types, many are also going to be various taxonomies, and even users can be indexed. However, one of the available post type based options is one labeled &#8220;All Posts&#8221;. <a class="read-more" href="https://michaelbox.net/2022/12/quick-hit-all-posts-vs-individual-post-types-in-wp-search-with-algolia-autocomplete/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> &lt; 1</span> <span class="rt-label rt-postfix">min</span></span><div class='e-content'>
<p class="wp-block-paragraph">When setting up <a rel="noreferrer noopener" href="https://wordpress.org/plugins/wp-search-with-algolia/" target="_blank">WP Search with Algolia</a> you will see various available content types to include with your Autocomplete configuration. Most of them are available post types, many are also going to be various taxonomies, and even users can be indexed.</p>



<p class="wp-block-paragraph">However, one of the available post type based options is one labeled &#8220;All Posts&#8221;. This is a bit of a &#8220;shortcut&#8221; that will index and utilize all of the post types that are registered as searchable. If you&#8217;ve configured your search settings, this Autocomplete setting will use the same <code>$prefix_searchable_posts</code> index..</p>



<p class="wp-block-paragraph">If you&#8217;re only wanting specific post types to be considered for autocomplete, you should not also include &#8220;All Posts&#8221;.</p>



<p class="wp-block-paragraph">Out of box, the Autocomplete template is going to show each content type in its own section. If you were to select &#8220;All Posts&#8221; as well as other individual post types at the same time, you&#8217;re going to be doubling up on content being indexed, as well as risk showing duplicate results in the different sections.</p>



<p class="wp-block-paragraph">In short, if you want to have the widest search with the least amount of work, when it comes to post type content, use &#8220;All Posts&#8221;, however, if there are any that you don&#8217;t want to include, either set them to non-search able, or selectively choose which to include in your Autocomplete configuration.</p>
</div>
<p><a href="https://michaelbox.net/2022/12/quick-hit-all-posts-vs-individual-post-types-in-wp-search-with-algolia-autocomplete/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2022/12/quick-hit-all-posts-vs-individual-post-types-in-wp-search-with-algolia-autocomplete/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce + Algolia = Awesome</title>
		<link>https://michaelbox.net/2022/11/woocommerce-algolia-awesome/</link>
					<comments>https://michaelbox.net/2022/11/woocommerce-algolia-awesome/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Wed, 23 Nov 2022 03:17:11 +0000</pubDate>
				<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[algolia]]></category>
		<category><![CDATA[wp-search-with-algolia]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1821</guid>

					<description><![CDATA[In the past year, I really got to up my experiences and skillsets with Algolia Search, specifically through WebDevStudios&#8217; maintained plugin WP Search With Algolia. This is thanks to a nice little handful of clients that all brought their own needs and usecases for the search application and Saas. One thing that I felt WebDevStudios <a class="read-more" href="https://michaelbox.net/2022/11/woocommerce-algolia-awesome/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> &lt; 1</span> <span class="rt-label rt-postfix">min</span></span><div class='e-content'>
<p class="wp-block-paragraph">In the past year, I really got to up my experiences and skillsets with <a rel="noreferrer noopener" href="https://www.algolia.com/" target="_blank">Algolia Search</a>, specifically through WebDevStudios&#8217; maintained plugin <a rel="noreferrer noopener" href="https://wordpress.org/plugins/wp-search-with-algolia/" target="_blank">WP Search With Algolia</a>. This is thanks to a nice little handful of clients that all brought their own needs and usecases for the search application and Saas.</p>



<p class="wp-block-paragraph">One thing that I felt WebDevStudios was kind of leaving on the table was WooCommerce integration. However, that doesn&#8217;t mean that we&#8217;re necessarily going to add WooCommerce portions to the core plugin. Instead I grabbed the brass ring with a specific client project to learn how to do WooCommerce integration with what was already available out of box. I then turned that into a three part post that was posted to the <a rel="noreferrer noopener" href="https://webdevstudios.com/blog/" target="_blank">WebDevStudios blog</a>. Thus the purpose of this post there. Cross posting!</p>



<p class="wp-block-paragraph">You can find the three parts at the following links:</p>



<ul class="wp-block-list">
<li><a href="https://webdevstudios.com/2022/09/13/wp-search-with-algolia-settings-configurations-woocommerce/" target="_blank" rel="noreferrer noopener">Settings and Configuration for WooCommerce</a></li>



<li><a href="https://webdevstudios.com/2022/10/11/wp-search-with-algolia-autocomplete-instantsearch-customization/" target="_blank" rel="noreferrer noopener">Autocomplete and Instantsearch Customization</a></li>



<li><a href="https://webdevstudios.com/2022/11/03/integrating-wp-search-with-algolia-instantsearch-widget/" target="_blank" rel="noreferrer noopener">InstantSearch Widget and Facet Customization</a></li>
</ul>



<p class="wp-block-paragraph">It is most definitely not the end-all-be-all of WooCommerce customization, but I definitely hope it&#8217;s a solid starting point that can be iterated on and built upon based on everyone&#8217;s needs.</p>



<p class="wp-block-paragraph">I am very proud of my own education and knowledge development in regards to Algolia Search and know that I&#8217;ve learned even more since I worked on the project that birthed the blog posts. I&#8217;m excited for what I can document and provide in the future.</p>
</div>
<p><a href="https://michaelbox.net/2022/11/woocommerce-algolia-awesome/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2022/11/woocommerce-algolia-awesome/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Change Algolia Autocomplete sources by location in WordPress</title>
		<link>https://michaelbox.net/2022/10/change-algolia-autocomplete-sources-by-location-in-wordpress/</link>
					<comments>https://michaelbox.net/2022/10/change-algolia-autocomplete-sources-by-location-in-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Sat, 29 Oct 2022 01:07:56 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[algolia]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[wp-search-with-algolia]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1813</guid>

					<description><![CDATA[Over the past year and a half, I&#8217;ve gotten to work with Algolia Search a lot. Whether it&#8217;s been through client work wanting to integrate their content through Algolia, or myself helping handle support on the WP Search with Algolia Github and Support Forums, I&#8217;ve been able to dig in a lot more with how <a class="read-more" href="https://michaelbox.net/2022/10/change-algolia-autocomplete-sources-by-location-in-wordpress/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> 3</span> <span class="rt-label rt-postfix">mins</span></span><div class='e-content'>
<p class="wp-block-paragraph">Over the past year and a half, I&#8217;ve gotten to work with Algolia Search a lot. Whether it&#8217;s been through client work wanting to integrate their content through Algolia, or myself helping handle support on the <a href="https://github.com/WebDevStudios/wp-search-with-algolia/">WP Search with Algolia Github</a> and <a href="https://wordpress.org/support/plugin/wp-search-with-algolia/">Support Forums</a>, I&#8217;ve been able to dig in a lot more with how it all works.</p>



<p class="wp-block-paragraph">About five months ago at the time of this post, someone posted a thread named &#8220;<a href="https://wordpress.org/support/topic/use-of-algolia-in-two-different-parts/">Use of Algolia in two different parts</a>&#8221; and what they were looking for is summed up as such:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I have 2 separated search boxes.<br>one search box for products.<br>one search box for blog posts.</p>
</blockquote>



<p class="wp-block-paragraph">Admittedly, I didn&#8217;t have an answer for him at the time, but I didn&#8217;t rule out whether or not it was possible. I&#8217;m also not posting here today saying that I&#8217;ve finally sat down and worked out how to do what this person was asking about. I am posting a similar solution that sort of fits what they were going for.</p>



<p class="wp-block-paragraph">What I&#8217;m going to do here is show how to conditionally change the sources that Algolia AutoComplete will consider, depending on WordPress conditionals.</p>



<h2 class="wp-block-heading" id="conditionals">Setting up our conditionals</h2>



<p class="wp-block-paragraph">For our tutorial here, I only have Autocomplete configured for the <code>post</code> post type and the <code>page</code> post type. You&#8217;ll need to configure things further in the event you have more than just those two, to make sure the rest are still considered.</p>



<p class="wp-block-paragraph">Say that I only want to have Autocomplete suggest blog posts when viewing the blog posts page, a single post, or the category and tag archive. To achieve this, we&#8217;re going to add some inline script that stores a javascript constant of Autocomplete indexes to search.</p>



<pre class="wp-block-code"><code>function algolia_support_conditional_sources() {
    $desired_sources = &#91;];

    if ( is_home() || is_single() || is_category() || is_tag() ) {
        $desired_sources&#91;] = 'posts_post';
    }

    wp_add_inline_script( 'algolia-autocomplete', 'const wanted_autocomplete_sources = \'' . json_encode( $desired_sources ) . '\'; ');
}
add_action( 'wp_enqueue_scripts', 'algolia_support_conditional_sources' );</code></pre>



<p class="wp-block-paragraph">Here we are constructing a PHP array that stores the index ID for the posts autocomplete index. You can find the index IDs listed as &#8220;index name&#8221; when you visit <code>/wp-admin/admin.php?page=algolia</code> in your own website, and check the &#8220;Index&#8221; column.</p>



<p class="wp-block-paragraph">Now, say I want to do the same for pages, where when on a page, only make suggestions for other pages. We do very similar to what we did above. Below is an amended version of our callback.</p>



<pre class="wp-block-code"><code>function algolia_support_conditional_sources() {
    $desired_sources = &#91;];

    if ( is_home() || is_single() || is_category || is_tag() ) {
        $desired_sources&#91;] = 'posts_post';
    }

    if ( is_page() ) {
        $desired_sources&#91;] = 'posts_page';
    }

    wp_add_inline_script( 'algolia-autocomplete', 'const wanted_autocomplete_sources = \'' . json_encode( $desired_sources ) . '\'; ');
}
add_action( 'wp_enqueue_scripts', 'algolia_support_conditional_sources' );</code></pre>



<h2 class="wp-block-heading" id="autocomplete-template">Customizing the autocomplete.php template</h2>



<p class="wp-block-paragraph">Now we&#8217;re ready to make use of this information. You will need to customize the <code>autocomplete.php</code> template file that we ship with the plugin. You can read more about how to do that at <a href="https://github.com/WebDevStudios/wp-search-with-algolia/wiki/Customize-the-Autocomplete-dropdown">Customize the Autocomplete dropdown wiki page</a></p>



<p class="wp-block-paragraph">By the time you read this blog post, version 2.3.x of WP Search with Algolia will very likely already be released, and for the tutorial I&#8217;ll be using the <code>autocomplete.php</code> copy from that release.</p>



<p class="wp-block-paragraph">We want to find the lines that look like this:</p>



<pre class="wp-block-code"><code>/* Setup autocomplete.js sources */
var sources = &#91;];</code></pre>



<p class="wp-block-paragraph">and add the following right below it.</p>



<pre class="wp-block-code"><code>/* Setup autocomplete.js sources */
var sources = &#91;];
var desired_sources = &#91;];
if (typeof wanted_autocomplete_sources !== 'undefined') {
    desired_sources = JSON.parse(wanted_autocomplete_sources);
}</code></pre>



<p class="wp-block-paragraph">Here we are setting up an empty array, which will be important, and then also checking for our inlined constant declared earlier. If we have the constant, we are parsing its value out from its JSON. This should give us a populated <code>desired_sources</code> array now.</p>



<p class="wp-block-paragraph">Only one more line down, you should see these:</p>



<pre class="wp-block-code"><code>algolia.autocomplete.sources.forEach( function( config, i ) {
    var suggestion_template = wp.template( config&#91; 'tmpl_suggestion' ] );
    sources.push( {
        ...
    } );</code></pre>



<p class="wp-block-paragraph">I have truncated a little bit for brevity. Here we will see a foreach loop running on all of the autocomplete sources that we&#8217;ve configured for the install. In this case, it&#8217;d be only <code>post</code> and <code>page</code>. What we need to do here is wrap the <code>sources.push( { ... } )</code> calls in an if statement to start conditionally pushing our sources to look in.</p>



<pre class="wp-block-code"><code>if ( desired_sources.length === 0 || desired_sources.includes(config.index_id) ) {
    sources.push( {
        ...
    } );
}</code></pre>



<p class="wp-block-paragraph">Here we are checking if we have any desired sources configured at all. If no, then we push them all. This helps prevent NO sources being available in case of none conditionally set earlier. Finally we check if the currently iterated config index_id property is one of the ones in our desired sources. If yes, push that source.</p>



<p class="wp-block-paragraph">If all went well, then I should now only be able to see blog posts suggested when on the blog page, single posts, or category/tag archives, and only see pages when on blog pages. Goal achieved!</p>



<p class="wp-block-paragraph">Let me know of any questions you have in the comments.</p>
</div>
<p><a href="https://michaelbox.net/2022/10/change-algolia-autocomplete-sources-by-location-in-wordpress/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2022/10/change-algolia-autocomplete-sources-by-location-in-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>My continued shifts within WebDevstudios</title>
		<link>https://michaelbox.net/2022/05/my-continued-shifts-within-webdevstudios/</link>
					<comments>https://michaelbox.net/2022/05/my-continued-shifts-within-webdevstudios/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Thu, 12 May 2022 07:45:51 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1798</guid>

					<description><![CDATA[I am one who has always rolled with the changes for myself at WebDevStudios, and that hasn&#8217;t changed yet, as we&#8217;re well into 2022. Back in May of 2013, I received a mini-promotion and started taking on responsibility for support and development of WDS&#8216; free plugins, including the massively popular Custom Post Type UI. In <a class="read-more" href="https://michaelbox.net/2022/05/my-continued-shifts-within-webdevstudios/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> 3</span> <span class="rt-label rt-postfix">mins</span></span><div class='e-content'>
<p class="wp-block-paragraph">I am one who has always rolled with the changes for myself at WebDevStudios, and that hasn&#8217;t changed yet, as we&#8217;re well into 2022.</p>



<p class="wp-block-paragraph">Back in May of 2013, I received a <a href="https://michaelbox.net/2013/05/webdevstudios-and-a-new-title/">mini-promotion</a> and started taking on responsibility for support and development of <abbr title="WebDevStudios">WDS</abbr>&#8216; free plugins, including the massively popular <a rel="noreferrer noopener" href="https://wordpress.org/plugins/custom-post-type-ui/" target="_blank">Custom Post Type UI</a>.</p>



<p class="wp-block-paragraph">In March of 2015, I went <a href="https://michaelbox.net/2015/03/insane-in-the-maintainn/">Insane in the Maintainn</a> and was moved out of the agency side of WebDevStudios and into the support and maintenance branch of our overall services. A position that I had held well in to 2021. More on that in a moment.</p>



<p class="wp-block-paragraph">Some time in 2015, the higher ups at WebDevStudios decided to finally pull the proverbial trigger and formally start a <a rel="noreferrer noopener" href="https://pluginize.com/introducing-pluginize-and-cptui-extended/" target="_blank">products division for WDS</a>, and it was named Pluginize. Not only were we delving into the world of premium products, but we were also continuing the development of our free products under that banner as well. Since I was already so ingrained in many of these areas, I was brought in as one of the developers and still lead support engineer with Pluginize. We had a products manager, dedicated engineers, and I had a lot of fire in my belly because I have always enjoyed helping make tools that help others make websites.</p>



<p class="wp-block-paragraph">However, I wasn&#8217;t exclusively doing work on Pluginize. I was actually splitting my time between Pluginize and Maintainn. Over time though, the Pluginize side slowed down, and while we never shut down by any means, we weren&#8217;t as actively working within that brand. It went into &#8220;hibernation&#8221; so to speak, and the team was largely just myself, continuing to work on products as need arose and when able, adding in new features. I never stopped with the support and we were still getting enough trickles to keep my finger on the overall pulse. We still had Custom Post Type UI growing at impressive rates and it&#8217;s more popular than ever (No pressure Michael!).</p>



<p class="wp-block-paragraph">So Pluginize was a team of me, with majority of my time still focused on Maintainn&#8217;s client base&#8230;until late 2021. That October, decisions were made and Maintainn&#8217;s team was cut in half. This was a notable shock for everyone involved, and definitely put a fair amount of stress on me as well since I was now the sole dedicated support technician for our workload at the time. Other engineers within the company were definitely available as able to help out, but in terms of longevity and client familiarity, it was largely just me for the on the ground development work. Thankfully we still had others helping handle all the routine tasks that we advertised as part of our weekly services. Things in our support world were evolving, and as always, I did the best I could going forward, and things evened out over time. As it was put, the separate brand was being moved officially back in to WebDevStudios and instead of being a &#8220;separate entity&#8221;, it was now all part of one.</p>



<p class="wp-block-paragraph">March of 2022 ushered in the next notable shift in Maintainn and our support program. We let one more person go, reducing us from four people to three, but on top of that, we were being &#8220;split up&#8221; to a degree. We were all thankfully employed, but our positions and primary focuses were going to be changing. We still have a client base who purchase ongoing support and are able to buy hours for custom development, but that base has also been reduced down as well, as there have been services partings along the way. As things come up, I&#8217;m still the one providing estimates as needed and when approved, handling the work. Others are continuing to handle routine updates and sysadmin style work as needed. So the support team not dead, per say.</p>



<p class="wp-block-paragraph">Internally I have been moved to a new team on the agency side, and I will once be helping with clients and retainers on the agency side. That&#8217;s going to be part of my week. The other part of the week is allowed to focus more extensively on Pluginize and our products there. To say the least, this has me excited, because that proverbial hibernation is starting to wake up. It&#8217;s still early in this phase, but I know I have already made some great headway with Pluginize in 2022, including Custom Post Type UI Extended and its first proper WordPress block. I am loving being able to dedicate more of my time to Pluginize and give it much more active care, along with being back in the agency fold to help with retainers that my new team is being brought in to.</p>



<p class="wp-block-paragraph">I&#8217;ve been with WebDevStudios officially since the start of January 2013, &#8220;unofficially&#8221; since September 2012 with a long-ish trial period. That means my 10 year anniversary is not far off in the horizon and if all goes well, I&#8217;ll still be around to celebrate it. Until that day arrives, I&#8217;ll keep rolling with the changes.</p>



<p class="wp-block-paragraph"></p>
</div>
<p><a href="https://michaelbox.net/2022/05/my-continued-shifts-within-webdevstudios/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2022/05/my-continued-shifts-within-webdevstudios/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Up All Night Movies Practical Block Pattern Examples</title>
		<link>https://michaelbox.net/2022/04/practical-block-pattern-examples/</link>
					<comments>https://michaelbox.net/2022/04/practical-block-pattern-examples/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Tue, 05 Apr 2022 17:02:26 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[block patterns]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1777</guid>

					<description><![CDATA[Have you ever been working with the WordPress Block Editor and your content and realized that you&#8217;re repeating a lot of the same layouts, or have routine content types that need to follow the same consistent layout? If yes, have you been doing a lot of copy/pasting of the blocks to try and make sure <a class="read-more" href="https://michaelbox.net/2022/04/practical-block-pattern-examples/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> 4</span> <span class="rt-label rt-postfix">mins</span></span><div class='e-content'>
<p class="wp-block-paragraph">Have you ever been working with the WordPress Block Editor and your content and realized that you&#8217;re repeating a lot of the same layouts, or have routine content types that need to follow the same consistent layout? If yes, have you been doing a lot of copy/pasting of the blocks to try and make sure they&#8217;re as consistent as can be each time? </p>



<p class="wp-block-paragraph">My friend, I am glad you&#8217;re here because I am about to show you how you could make your work a whole lot easier. Instead of copy/pasting and hoping that you&#8217;re getting all the details right each time, instead you could make yourself what&#8217;s called a Block Pattern, and have everything re-usable and configured upon click to insert the pattern.</p>



<p class="wp-block-paragraph">In this post, I am not going to go into how to make a block pattern, you can read more about that over on <a rel="noreferrer noopener" href="https://learn.wordpress.org/lesson-plan/how-to-create-and-register-a-block-pattern__trashed/" target="_blank">How to Create and Register a Block Pattern</a>. What I am going to discuss here is a quick difference between block patterns vs reusable blocks, and then also provide some quick examples of how I&#8217;ve used block patterns over on my movie blog <a rel="noreferrer noopener" href="https://upallnightmovies.com" target="_blank">Up All Night Movies</a>.</p>



<h2 class="wp-block-heading" id="pattern-vs-reusable">Block Pattern vs Reusable block</h2>



<p class="wp-block-paragraph">Something to keep in mind is that these terms are not interchangeable. They do vastly different things. As per the &#8220;<a rel="noreferrer noopener" href="https://learn.wordpress.org/lesson-plan/how-to-use-wordpress-block-patterns/#block-patterns-vs-reusable-blocks" target="_blank">How to use WordPress Block Patterns</a>&#8221; page over at learn.wordpress.org:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Reusable blocks </strong>are blocks or groups of blocks that are centrally managed within a site. Making changes to a reusable block affects all instances used across the site. This is particularly helpful if you have content that will be used in multiple locations across your site and want to be able to manage updates from a single location.</p></blockquote>



<p class="wp-block-paragraph">Meanwhile, a block pattern is this:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Block patterns, </strong>on the other hand, are registered through WordPress Core software, themes, or plugins. In many ways, block patterns act as starter content to include in a post or page.</p><p>Block patterns are created by WordPress developers with the intention that the site owner or user will update, customize, and change these patterns once inserted into a post or page.</p><p>Changes made to a block pattern do not affect the registered block pattern or any other content that using that particular block pattern.</p></blockquote>



<p class="wp-block-paragraph">Since we would not be wanting to have only ONE instance, and instead be able to edit for each post uniquely, we definitely want to make use of Block Patterns.</p>



<h2 class="wp-block-heading" id="uanm">Up All Night Movies</h2>



<p class="wp-block-paragraph">Last summer, I decided I wanted to start a blog about movies. Not just any movies, or popular/Oscar nominated movies. No, I wanted to write about the &#8220;bad&#8221; movies from the past. Whether they be just extremely low budget, extremely campy, cult, b-side, etc. You get the idea.</p>



<p class="wp-block-paragraph">With this, I also decided that I wanted to get some reader participation involved. I knew that friends <a rel="noreferrer noopener" href="https://twitter.com/HarmlessMedia/" target="_blank">Harmless Entertainment</a> had monthly movie polls that they post for their listenership, and then Thoreau and his friends all watch the winning movie and then discuss it for their podcast. This is a Patreon exclusive thing for them for those wanting to help support the show. The reason I bring this up is because I liked the idea of user voting, instead of me just picking whatever I may feel like writing about at the time.</p>



<h3 class="wp-block-heading" id="links-poll-description-example">Links, Poll, and descriptions, oh my.</h3>



<p class="wp-block-paragraph">To help with this process, I create a poll that has its own block available, as well as link to corresponding IMDb pages for each movie. Eventually I also started adding in quick movie descriptions for each movie. This way, visitors can easily assess the chosen 4 movies each time, and hopefully cast a confident vote.</p>



<p class="wp-block-paragraph">Because these fields were being used regularly, I turned them into block patterns for easy insertion and I just need to edit little details afterwards.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions.png"><img fetchpriority="high" decoding="async" width="1024" height="745" src="https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions-1024x745.png" alt="Screenshot of the IMDb Links, Poll, and Descriptions block patterns" class="wp-image-1779" srcset="https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions-1024x745.png 1024w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions-300x218.png 300w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions-768x559.png 768w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions-1536x1117.png 1536w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/links-poll-descriptions.png 1798w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>IMDb Links, Poll block, and Movie Descriptions.</figcaption></figure></div>



<p class="wp-block-paragraph">Eventually the polls end, and we get ourselves a winner. It&#8217;s at this point where I will watch the winning movie a couple of times, do some research, try to find interesting trivia and tidbits about the film, and write up a hopefully funny, not at all serious &#8220;review&#8221; of the movie. All for the sake of entertainment, and if lucky, encouraging someone else to check the movie out.</p>



<h3 class="wp-block-heading" id="after-the-post">After the post is written</h3>



<p class="wp-block-paragraph">This is where my last block pattern example comes in. At the end of each writeup for a given movie, I will provide a few more extras including the trailer once more, as well as links to where someone can stream the movie. For this, I make use of the Youtube block and by default list out services like TubiTV, Amazon Prime, Netflix, and Shudder. In the future I may switch to just linking to a service like JustWatch.com which is a streaming aggregate service. We&#8217;ll see.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern.png"><img decoding="async" width="1024" height="714" src="https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern-1024x714.png" alt="Screenshot of the &quot;Extras&quot; panel including empty Youtube Block and links to streaming services" class="wp-image-1780" srcset="https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern-1024x714.png 1024w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern-300x209.png 300w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern-768x535.png 768w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern-1536x1071.png 1536w, https://michaelbox.net/wp-content/uploads/sites/2/2022/04/extras-pattern.png 1744w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>Youtube block ready for an embed, and streaming urls ready to be filled in.</figcaption></figure></div>



<p class="wp-block-paragraph">These are just some examples of ways that you could make flexible, reusable blocks for things you&#8217;re posting consistently and want to retain that layout/formatting consistency each time. Ultimately they are just individual block elements grouped together with settings being able to be saved and inserted in wherever needed.</p>



<p class="wp-block-paragraph">What are some ways you&#8217;ve found block patterns useful in your own content? Or what are you thinking about making a pattern for, with your own site, after reading about these above? Would love to hear about them in the comments.</p>
</div>
<p><a href="https://michaelbox.net/2022/04/practical-block-pattern-examples/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2022/04/practical-block-pattern-examples/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pomp and circumstance: Custom Post Type UI’s one million active installs</title>
		<link>https://michaelbox.net/2021/04/one-million-custom-post-type-ui-installs/</link>
					<comments>https://michaelbox.net/2021/04/one-million-custom-post-type-ui-installs/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Sun, 25 Apr 2021 19:10:42 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[custom post type ui]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1732</guid>

					<description><![CDATA[A little under six years ago, I wrote up a post for the WebDevStudios blog celebrating and retrospecting having achieved one million all time downloads. I also went into some details about growing pains experienced and lessons during that process. It is a post that I feel still holds up today and I am definitely <a class="read-more" href="https://michaelbox.net/2021/04/one-million-custom-post-type-ui-installs/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> 5</span> <span class="rt-label rt-postfix">mins</span></span><div class='e-content'>
<p class="wp-block-paragraph">A little under six years ago, I wrote up a post for the WebDevStudios blog celebrating and retrospecting having achieved one million all time downloads. I also went into some details about growing pains experienced and lessons during that process. It is a post that I feel still holds up today and I am definitely proud of it.</p>



<p class="wp-block-paragraph"><a href="https://webdevstudios.com/2015/07/17/the-custom-post-type-ui-million-download-celebration/">https://webdevstudios.com/2015/07/17/the-custom-post-type-ui-million-download-celebration/</a></p>



<p class="wp-block-paragraph">Today I am writing a new followup to celebrate another milestone. At the time of this writing, Custom Post Type UI is on the verge of achieving one million active installs.</p>



<p class="wp-block-paragraph">In my post above, we were at 200,000 active and sporting a 4.6 out of 5 rating, with 87 5-star ratings.</p>



<p class="wp-block-paragraph">Right now at the time of this writing, we have moved up to a 4.7 out of 5 rating, and 199 5-star ratings.</p>



<p class="wp-block-paragraph">On top of that, we&#8217;re now at 7,960,438 all time downloads.</p>



<p class="wp-block-paragraph">I think it is a testament of a solid product and support system that we have continued the stellar reviews and increased our overall calculated rating of the course of six years.</p>



<h2 class="wp-block-heading" id="observations">Observations and reflections</h2>



<p class="wp-block-paragraph">I can never claim this plugin as my own, as it very much is owned by WebDevStudios. However, I am able to say that I&#8217;m still the only active core developer of Custom Post Type UI. We really don&#8217;t need a lot of hands on deck for its development, and I&#8217;m happy to maintain this role.</p>



<p class="wp-block-paragraph">There&#8217;s not a huge amount of moving and shaking by WordPress core around the topic of post types, so Custom Post Type UI has managed to remain largely stable with each release. Usually the biggest changes are in the form of newly available labels for post types or taxonomies.</p>



<p class="wp-block-paragraph">One million active installs is most definitely nothing to sneeze at, and I need to stay vigilant with what new features and development I do make. While it never actually happens, can you imagine suddenly having one million new support forum threads or replies chiming in about how a detail broke their website? Or caused them to lose a healthy amount of income that they rely on each day? NO PRESSURE MICHAEL!</p>



<h2 class="wp-block-heading" id="lessons-learned">New lessons learned</h2>



<p class="wp-block-paragraph">One thing that has always intrigued me is how people use Custom Post Type UI, or are lead to it as a plugin of choice.</p>



<p class="wp-block-paragraph">Every now and then, myself or our Marketing Specialist <a href="https://webdevstudios.com/team/laura-coronado/" target="_blank" rel="noreferrer noopener">Laura Coronado</a> will stumble upon a media mention or a tutorial of some sort that is making use of custom post types. Custom Post Type UI gets utilized for easing the tutorial readers into a quickly spun up post type, so that they can continue onto the rest of the tutorial.</p>



<p class="wp-block-paragraph">Sometimes people, myself included, make use of it as a code generator, using our &#8220;Get Code&#8221; functionality that outputs the post type and taxonomy chosen settings into a ready-to-paste format for a custom plugin or the <code>functions.php</code> file for their active theme. We&#8217;ve long valued helping keep your content yours with portability as a consideration. People just happened to also realize that this is also a form of a generator.</p>



<p class="wp-block-paragraph">Then, sometimes, people are &#8220;lazy&#8221; in good ways. They know full well how to register their own content types via code, and perhaps even have their own helper libraries to achieve that and like having these version controlled. But, they still sometimes make use of Custom Post Type UI for their own purposes or their clients sites.</p>



<p class="wp-block-paragraph">I know through my own time with <a href="https://maintainn.com/" target="_blank" rel="noreferrer noopener">Maintainn</a> it can very often be preferred to make use of settings and UI based options for changing settings and configuration, over dropping a bit of code in a file somewhere, that may or may not be easily found. If you&#8217;re not guaranteed to always be the one handling a site, making it easier for the people after you to find configuration is a big help. This is no different than utilizing Custom Post Type UI as well.</p>



<h2 class="wp-block-heading" id="quality-support">Quality support</h2>



<p class="wp-block-paragraph">Continued superb support is no doubt a key driving force for a growing active install base. If the support is sub-par or worse, people are not going to want to keep using it, and they are not going to recommend to their friends or their clients. Content writers who are helping others learn how to make the best use of WordPress are not going to use and recommend the plugin within their tutorials. It just would not be good.</p>



<p class="wp-block-paragraph">This is why I always strive to provide the best support I can with every person who starts a thread or contacts via the support form over at <a href="https://pluginize.com/" target="_blank" rel="noreferrer noopener">Pluginize</a>. It comes with the territory that a healthy amount of the questions we get asked are along the lines of &#8220;How do I do this with custom post types?&#8221; and not always &#8220;How do I do this with custom post types registered with Custom Post Type UI?&#8221;. From the very start, we inherited the need to be knowledgeable about post types and taxonomies in general, and we happily accept this responsibility.</p>



<p class="wp-block-paragraph">We know our plugin does not handle everything under the sun with content types. We are going to be a piece of the solution, we are not the entire puzzle. Regardless, with every support request we receive, if it&#8217;s for something we don&#8217;t handle with the plugin itself, we still try our best to provide resources and potential solutions that the person can explore further. If it&#8217;s potentially an issue with a different part of the site, for example integration with a third party page builder or tool, we recommend reaching out to those products&#8217; support channels but remind that if there&#8217;s something we need to do on our end, this person can come back with the feedback so we can lend our help as best possible.</p>



<p class="wp-block-paragraph">A product is never going to sustain a perfect 5 rating forever, and sometimes it&#8217;s just not going to be what a person is expecting, necessitating a lower rating. It&#8217;s my personal goal to always maintain that the lower rating is not received in part because of subpar support attempts.</p>



<h2 class="wp-block-heading" id="the-future">The future</h2>



<p class="wp-block-paragraph">What is in store for the future of Custom Post Type UI is a great question.</p>



<p class="wp-block-paragraph">It&#8217;s very tempting to just hold the proverbial fort here, and keep things as stable and rock solid as they already are. At the same time though, that&#8217;s not as fun. I know of one primary &#8220;sticking&#8221; point that come up from time to time in our support requests, and that is internationalization.</p>



<p class="wp-block-paragraph">I want to state this upfront that it is not a promise, but is an intent to more actively see what we can do and what can be done.</p>



<h3 class="wp-block-heading" id="i18n">Internationalization</h3>



<p class="wp-block-paragraph">Keeping things internationalization friendly with Custom Post Type UI, most specifically the labels as well as the rewrite fields presents a challenge because of the fact that we do store our settings in the database.</p>



<p class="wp-block-paragraph">I know that tools like WPML and Loco Translate exist, among probably various others. However, I don&#8217;t necessarily want to directly tie Custom Post Type UI to any of them and create a dependency. All those other tools may also be moving at a quicker pace than we maintain, which is awesome for them, but not necessarily for us.</p>



<p class="wp-block-paragraph">Longer term, I believe I&#8217;d prefer a more homegrown solution that we provide on our own. We don&#8217;t have a huge amount of fields to worry about which helps keep maintenance costs minimal. The bigger question is how to build it all out.</p>



<p class="wp-block-paragraph">Perhaps I&#8217;ll dust off this very early attempt below, to start internationalization in Custom Post type UI as part of an upcoming #5FTF</p>



<p class="wp-block-paragraph"><a href="https://github.com/tw2113/custom-post-type-ui-i18n">https://github.com/tw2113/custom-post-type-ui-i18n</a></p>



<p class="wp-block-paragraph">If things went well, it wouldn&#8217;t be permanently an extension of Custom Post Type UI, it would end up getting merged in to the core plugin for everyone.</p>



<h3 class="wp-block-heading" id="version-two">Version 2.0.0</h3>



<p class="wp-block-paragraph">At the time of this writing, we are on version 1.9.1 of Custom Post Type UI. Beyond the internationalization topic above, I&#8217;m not quite sure what I may want to have as part of a version 2.0.0 release. Typically changes in the first number for a product&#8217;s version indicates &#8220;HUGE&#8221; changes. WordPress core got the block editor with 5.0.0 for example, and that&#8217;s no doubt had ripple effects we will see for awhile.</p>



<p class="wp-block-paragraph">What could Custom Post Type UI do in the same vein? Do you have any ideas? Cause I&#8217;d love to hear them.</p>



<h2 class="wp-block-heading" id="conclusion">Conclusion</h2>



<p class="wp-block-paragraph">I remember it being a proverbial wild ride at the one million all time download mark back in 2015, and that hasn&#8217;t changed in the years since. Out of everything with my time at WebDevStudios, the ongoing development and support of this one plugin is something I&#8217;ve always taken great pride in and will continue to take pride in for the foreseeable future. I appreciate the trust and faith that <a href="https://webdevstudios.com/team/brad-williams/" target="_blank" rel="noreferrer noopener">Brad Williams</a> and <a href="https://webdevstudios.com/team/lisa-sabin-wilson/" target="_blank" rel="noreferrer noopener">Lisa Sabin-Wilson</a> have continued to put in me to represent WebDevStudios here.</p>



<p class="wp-block-paragraph">&nbsp;</p>
</div>
<p><a href="https://michaelbox.net/2021/04/one-million-custom-post-type-ui-installs/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2021/04/one-million-custom-post-type-ui-installs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Blogroll Block feature on WPTavern</title>
		<link>https://michaelbox.net/2021/03/blogroll-block-feature-on-wptavern/</link>
					<comments>https://michaelbox.net/2021/03/blogroll-block-feature-on-wptavern/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Thu, 11 Mar 2021 04:42:04 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1709</guid>

					<description><![CDATA[https://wptavern.com/a-throwback-to-the-past-introducing-the-blogroll-block-wordpress-plugin]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> &lt; 1</span> <span class="rt-label rt-postfix">min</span></span><div class='e-content'>
<p class="wp-block-paragraph"><a href="https://wptavern.com/a-throwback-to-the-past-introducing-the-blogroll-block-wordpress-plugin">https://wptavern.com/a-throwback-to-the-past-introducing-the-blogroll-block-wordpress-plugin</a></p>
</div>
<p><a href="https://michaelbox.net/2021/03/blogroll-block-feature-on-wptavern/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2021/03/blogroll-block-feature-on-wptavern/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5FTF recap for February 26th, 2021</title>
		<link>https://michaelbox.net/2021/02/5ftf-recap-for-february-26th-2021/</link>
					<comments>https://michaelbox.net/2021/02/5ftf-recap-for-february-26th-2021/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Michael Beckwith</span>]]></dc:creator>
		<pubDate>Sat, 27 Feb 2021 03:23:47 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[5ftf]]></category>
		<guid isPermaLink="false">https://michaelbox.net/?p=1698</guid>

					<description><![CDATA[My #5FTF participation kind of sputtered out in the last half of 2020. This is not necessarily a bad thing, as most of it was either because I had higher priority client work to take care of, or holidays and PTO happened to fall on the same days and I looked forward to the extra <a class="read-more" href="https://michaelbox.net/2021/02/5ftf-recap-for-february-26th-2021/">Read More...</a>]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">⏲️ Time: </span> <span class="rt-time"> 3</span> <span class="rt-label rt-postfix">mins</span></span><div class='e-content'>
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">My #5FTF participation kind of sputtered out in the last half of 2020. This is not necessarily a bad thing, as most of it was either because I had higher priority client work to take care of, or holidays and <abbr title="paid time off">PTO</abbr> happened to fall on the same days and I looked forward to the extra time away.</p>



<p class="wp-block-paragraph">That said, I&#8217;ve come roaring back, so to speak in 2021, though I didn&#8217;t document January&#8217;s event. Today I feel that I accomplished quite a lot.</p>



<h2 class="wp-block-heading" id="blogrollblock">Blogroll Block</h2>



<p class="wp-block-paragraph">I recently had my Blogroll Block plugin approved for inclusion in the <a rel="noreferrer noopener" href="https://wordress.org" target="_blank">WordPress.org</a> plugin repository, and after a brief delay in getting the SVN repository set up, I was able to get this handled. <a rel="noreferrer noopener" href="https://wordpress.org/plugins/blogroll-block/" target="_blank">Blogroll Block 1.0.0</a> is officially available for download, and hopefully soon it will also appear in the <a rel="noreferrer noopener" href="https://wordpress.org/plugins/browse/block" target="_blank">Block Directory</a>. It&#8217;s my understanding that this is a special area of the plugin repository for plugins that do only one thing, and that&#8217;s provide a block. The items listed there are also searchable and install-able right from the editor screen when creating content, assuming the user has the right install capabilities. I&#8217;m very excited about this prospect.</p>



<p class="wp-block-paragraph">On top of releasing the code for Blogroll Block, I also decided to dust off whatever graphic design skills I still have, and create a new icon for the plugin. I tried to keep it simple, with just a scroll that&#8217;s unrolled a little, and an abstracted &#8220;list&#8221; of items on the rolled out portion. I added a small touch of shadow in the appropriate places, but nothing that&#8217;s overbearing. Lastly, I decided to go with my old high school colors of royal blue and orange for something that will hopefully pop out and attract someone&#8217;s attention.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://michaelbox.net/wp-content/uploads/sites/2/2021/02/icon-256x256-1.png"><img decoding="async" width="256" height="256" src="https://michaelbox.net/wp-content/uploads/sites/2/2021/02/icon-256x256-1.png" alt="Orange scroll on blue background, with lines intended to represent a list of links." class="wp-image-1703" srcset="https://michaelbox.net/wp-content/uploads/sites/2/2021/02/icon-256x256-1.png 256w, https://michaelbox.net/wp-content/uploads/sites/2/2021/02/icon-256x256-1-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /></a><figcaption>The icon I designed for Blogroll Block</figcaption></figure></div>



<h2 class="wp-block-heading" id="core">WordPress Core</h2>



<p class="wp-block-paragraph">Typically, over the past number of years, I&#8217;ve generally shied away from trying to contribute to WordPress Core. This is at least in regards to looking around and trying to find some easy things to provide a fix for within a day, and certainly not something that would necessitate weeks or months of active attention to get ready for potential inclusion.</p>



<p class="wp-block-paragraph">No, instead I went for some really small things in forgotten areas of the WordPress admin panel. The first one I wanted to tackle was some UI adjustments for the links/blogroll management area. So, I copied down the development repo for WordPress, got an install setup that used it, and went to find the broken UI. It wasn&#8217;t there, it was fixed and looking good. Went and checked the commit history for the file(s) in question, and sure enough someone had beat me to it, and those changes will make it in to WordPress 5.7.</p>



<p class="wp-block-paragraph">I was not deterred by any means, as I had another of what I consider a bug in mind. If you try to visit the old links/blogroll area on a new install of WordPress, you get some messaging about installing <a rel="noreferrer noopener" href="https://wordpress.org/plugins/link-manager/" target="_blank">Link Manager</a> first to restore this area. They provide a link that sends you to the plugin install page in your site, and fill in &#8220;link manager&#8221; as the keyword for a search. That&#8217;s nice of them, except for the fact that there are over 2000 results returned for that query. Good luck finding the plugin they intended!</p>



<p class="wp-block-paragraph">I wanted this fixed. I knew there were ways to create links that install a plugin for you, I knew there were ways to create links that activate a plugin too. Just a matter of determining how to safely and accurately create those.</p>



<p class="wp-block-paragraph">After a couple hours of digging, coding, and testing, I had my patch ready that uses the same methods for installing and activating. Moseyed on over to <a rel="noreferrer noopener" href="https://core.trac.wordpress.org/" target="_blank">WordPress Core Trac</a> and opened <a rel="noreferrer noopener" href="https://core.trac.wordpress.org/ticket/52669" target="_blank">my ticket</a>. I was quite confident that I was not going to make it in time for the WordPress 5.7 release, as that&#8217;s in beta right now, and due pretty soon. However, I wasn&#8217;t sure if it would even be accepted since the Links area is generally forgotten at this point.</p>



<p class="wp-block-paragraph">Thankfully, and to my relief, it got accepted and has a milestone of WordPress 5.8. Can&#8217;t wait to see my name in props again. While I was at it, I checked all my open tickets and remembered a small <a rel="noreferrer noopener" href="https://core.trac.wordpress.org/ticket/47955" target="_blank">ticket</a> regarding some of the RSS feed files. So I nudged about it and asked if it was worth considering for 5.8 as well, and not long after it got accepted too. Huzzah! Two tickets covering small details. At the end of the day here, I&#8217;m quite happy with how the day went.</p>
</div>
<p><a href="https://michaelbox.net/2021/02/5ftf-recap-for-february-26th-2021/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://michaelbox.net/2021/02/5ftf-recap-for-february-26th-2021/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss><!-- plugin=object-cache-pro client=phpredis metric#hits=1600 metric#misses=11 metric#hit-ratio=99.3 metric#bytes=459587 metric#prefetches=91 metric#store-reads=40 metric#store-writes=4 metric#store-hits=120 metric#store-misses=4 metric#sql-queries=1 metric#ms-total=755.51 metric#ms-cache=124.70 metric#ms-cache-avg=2.9000 metric#ms-cache-ratio=16.5 sample#redis-hits=53815314 sample#redis-misses=3911685 sample#redis-hit-ratio=93.2 sample#redis-ops-per-sec=26 sample#redis-evicted-keys=14477 sample#redis-used-memory=52991752 sample#redis-used-memory-rss=59613184 sample#redis-memory-fragmentation-ratio=1.1 sample#redis-connected-clients=1 sample#redis-tracking-clients=0 sample#redis-rejected-connections=0 sample#redis-keys=54602 -->