<?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>apmeyer</title>
	<atom:link href="https://apmeyer.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://apmeyer.com/</link>
	<description>Independent Web Developer &#124; Twin Cities, Minnesota</description>
	<lastBuildDate>Tue, 26 May 2026 21:55:11 +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>Fixing CSS view transitions when developing with Local</title>
		<link>https://apmeyer.com/fixing-css-view-transitions-when-developing-with-local/</link>
		
		<dc:creator><![CDATA[APMeyer]]></dc:creator>
		<pubDate>Tue, 26 May 2026 20:35:55 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://apmeyer.com/?p=142</guid>

					<description><![CDATA[I've been running into an issue where CSS view transitions would sometimes work, sometimes times not when using Local by Flywheel. It's a little tricky to troubleshoot legitimate view transition issues (like mismatched classes and elements) when the transition would fail for other mysterious reasons.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;ve been running into an issue where CSS view transitions would sometimes work, sometimes not when using Local by Flywheel. It&#8217;s a little tricky to troubleshoot legitimate view transition issues (like mismatched classes and elements) when the transition would fail for <em>other</em> mysterious reasons. It turns out the culprit is WordPress&#8217;s speculative loading rules coupled with Flywheel&#8217;s nginx configuration.</p>



<p class="wp-block-paragraph">Starting with WordPress 6.8, <a href="https://make.wordpress.org/core/2025/03/06/speculative-loading-in-6-8/">speculative loading</a> is enabled by default, prefetching pages that users are <em>likely</em> to navigate to. As a result, using <code>navigation:auto</code> within <code>@view-transition{}</code> in CSS <em>sometimes</em> leads to an issue in Chrome (and likely other Chromium based browsers), where pages load so fast the view transition is skipped and the browser console reports a general view transition error.</p>



<p class="wp-block-paragraph">Local by Flywheel compounds this using&nbsp;<code>Cache-Control: no-store</code>&nbsp;on all responses, which seems to conflict with Chrome&#8217;s prefetch cache.</p>



<p class="wp-block-paragraph">WordPress exposes a&nbsp;<code>wp_speculation_rules_configuration</code>&nbsp;filter to control speculation behavior. Switching from <code>prefetch</code> mode to <code>prerender</code> resolves the conflict. I wrap this with a local conditional check, allowing the defaults be used in other environments.</p>




    <pre class="apm-block-code language-plaintext"          ><code class="language-plaintext">add_filter( &#039;wp_speculation_rules_configuration&#039;, &#039;apm_configure_speculation_rules&#039; );

function apm_configure_speculation_rules( $config ) {

    if ( wp_get_environment_type() === &#039;local&#039; ) {
        $config[&#039;mode&#039;] = &#039;prerender&#039;;
        $config[&#039;eagerness&#039;] = &#039;conservative&#039;;
    }

    return $config;

}</code></pre>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Litmus to Testi@</title>
		<link>https://apmeyer.com/litmus-to-testi/</link>
		
		<dc:creator><![CDATA[APMeyer]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 20:58:04 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://apmeyer.com/?p=135</guid>

					<description><![CDATA[I have a love-hate relationship with email templates. On one hand, email development reminds me of the late 90s and early 2000s, where tabular layouts and a toolbox of hacks were a way of life. It's fun to reminisce, knowing how far we've come. On the other hand... ugh, email development.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I have a love-hate relationship with email templates. On one hand, email development reminds me of the late 90s and early 2000s, where tabular layouts and a toolbox of hacks were a way of life. It&#8217;s fun to reminisce, knowing how far we&#8217;ve come. On the other hand&#8230; ugh, email development.</p>



<p class="wp-block-paragraph">For a recent project with en email component I planned to fire up a month of my on-again off-again Litmus.com subscription for testing. Unfortunately, their new enterprise-focused pricing model put a quick stop to that. Call to learn about pricing? No thanks.</p>



<p class="wp-block-paragraph">Enter <a href="https://testi.at">Testi@</a>.</p>



<p class="wp-block-paragraph">My requirements for an email testing platform aren&#8217;t complex:</p>



<ul class="wp-block-list">
<li>tests against all popular email clients</li>



<li>has generous testing limits</li>



<li>has sharable test results</li>



<li>has an editor/previewer UI</li>



<li>offers <em>some</em> level of feedback on potential issues in code</li>
</ul>



<p class="wp-block-paragraph">Testi@ checks all the boxes, and it&#8217;s tough to beat their $16/mo pricing. I may still kick the tires of <a href="https://www.emailonacid.com">Email on Acid</a> at some point. But, for now, I&#8217;m all set.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Selectively filtering errors from the WordPress debug.log</title>
		<link>https://apmeyer.com/selectively-filtering-errors-from-the-wordpress-debug-log/</link>
		
		<dc:creator><![CDATA[APMeyer]]></dc:creator>
		<pubDate>Sat, 26 Apr 2025 18:50:24 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://apmeyer.com/?p=91</guid>

					<description><![CDATA[From time to time you need to filter stuff out of the WordPress debug.log. Notices or errors from your own code should be fixed, but what if your code is not the offender?]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">From time to time you need to filter stuff out of the WordPress debug.log. Notices or errors from your own code should be fixed, but what if your code is not the offender? Perhaps a plugin has not yet been updated to account for changes to WordPress core, polluting your log. Case in point:</p>




    <pre class="apm-block-code language-plaintext"          ><code class="language-plaintext">PHP Notice: Function _load_textdomain_just_in_time was called incorrectly.
Translation loading for the wp-migrate-db domain was triggered too early.
This is usually an indicator for some code in the plugin or theme running
too early. Translations should be loaded at the init action or later.
Please see https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
Debugging in WordPress for more information. (This message was added in
version 6.7.0.) in /.../wp-includes/functions.php on line 6121</code></pre>




<p class="wp-block-paragraph">The log becomes useless for your own testing and debugging if it&#8217;s cluttered with other people&#8217;s garbage, and simply disabling the plugin isn&#8217;t always feasible.</p>



<p class="wp-block-paragraph">Fortunately, there&#8217;s an action/hook you can leverage to selectively filter stuff out of the debug log, but you <strong>must</strong> configure the hook as an <a href="https://developer.wordpress.org/advanced-administration/plugins/mu-plugins/">MU (must-use) plugin</a>.</p>




    <pre class="apm-block-code"          ><code class="language-php">
&lt;?php
/**
 * Plugin Name: Suppress Errors
 * Description: Prevents certain errors from being logged in WordPress
 */

 add_action( &#039;muplugins_loaded&#039;, function() {

    // Override WordPress error handler for this specific case
    $original_handler = set_error_handler( function( $errno, $errstr, $errfile, $errline ) use ( &amp;$original_handler ) {
        
        // Check if this is our specific error
        if ( str_contains( $errstr, &#039;_load_textdomain_just_in_time&#039; ) ) { 
            // Suppress this error only
            return true;
        }

        // Use the original handler for all other errors
        if ( is_callable( $original_handler ) ) {
            return call_user_func_array( $original_handler, func_get_args() );
        }

        // Default error handling
        return false;

    } );

}, 0 );</code></pre>




<p class="wp-block-paragraph">I&#8217;ll try to come back to this post later and step through what&#8217;s happening in this function, but for now, know the <code>str_contains</code> conditional is where you&#8217;ll check a bit of text that&#8217;s unique to the error you&#8217;d like to disable. Add multiple conditions as necessary.</p>



<p class="wp-block-paragraph">I don&#8217;t recommend using this in a production environment. It could have performance implications or conflicts. I only occasionally use it my local dev environment, and only if I really have to. This should be considered a very temporary measure. Don&#8217;t block errors or notices indefinitely. Let the developers of the offending plugin know about the error. In the case of my example above from <a href="https://deliciousbrains.com/wp-migrate-db-pro/">WP Migrate Pro</a>, the issue was fixed before I was even able to publish this article.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Enabling footnotes on WordPress custom post types</title>
		<link>https://apmeyer.com/enabling-footnotes-on-wordpress-custom-post-types/</link>
		
		<dc:creator><![CDATA[APMeyer]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 21:46:56 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://apmeyer.com/?p=68</guid>

					<description><![CDATA[Are footnote options/blocks not available in the block editor for your custom post type? As of WordPress 6.5 footnotes are available for custom post types.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Are footnote options/blocks not available in the block editor for your custom post type? As of WordPress 6.5 footnotes are available for custom post types, but only if the following options are enabled during post type registration:</p>



<ol class="wp-block-list">
<li>Custom Fields</li>



<li>Editor</li>



<li>Revisions</li>
</ol>



<p class="wp-block-paragraph">The custom post type must also be accessible to the WordPress REST API.</p>



<p class="wp-block-paragraph">Aside from this <a href="https://github.com/WordPress/gutenberg/pull/57353">github pull request</a> (which outlines the above prerequisites) I couldn&#8217;t find documentation on footnote requirements for custom post types. But, enabling those post type options seems to do the trick.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ACF Block Bindings not working? Enable REST API and content editor access</title>
		<link>https://apmeyer.com/dont-forget-to-enable-the-rest-api-options-to-use-acf-block-bindings/</link>
		
		<dc:creator><![CDATA[APMeyer]]></dc:creator>
		<pubDate>Mon, 18 Nov 2024 21:08:14 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://apmeyer.com/?p=31</guid>

					<description><![CDATA[If you’re attempting to leverage ACF block bindings don’t forget to enable a couple Field and Field Group settings.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I haven&#8217;t had a chance to use ACF block bindings in production, but wanted to start dabbling to better understand how I might use them. There&#8217;s no ACF documentation on block bindings yet aside from an <a href="https://www.advancedcustomfields.com/blog/acf-chat-fridays-using-the-block-bindings-api/">ACF Chat Fridays post and video</a>. I believe the video was created before a field-specific security option was added to ACF that needs to be enabled to expose meta data for bindings.</p>



<p class="wp-block-paragraph">If you&#8217;re attempting to leverage ACF block bindings, don&#8217;t forget to enable REST API access in the Field Group Settings panel. On each field you wish to expose, enable the &#8220;Allow Access to Value in Editor UI&#8221; option under the Presentation tab.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1446" height="2072" src="https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings.webp" alt="A screen shot showing the ACF settings screen for a field and field group with specific checkboxes enabled." class="wp-image-40" srcset="https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings.webp 1446w, https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings-209x300.webp 209w, https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings-715x1024.webp 715w, https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings-768x1100.webp 768w, https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings-1072x1536.webp 1072w, https://apmeyer.com/wp-content/uploads/2024/11/acf-block-bindings-settings-1429x2048.webp 1429w" sizes="(max-width: 1446px) 100vw, 1446px" /></figure>



<p class="wp-block-paragraph">I have a project on the docket that will utilize a hybrid theme (block editor + php templates) atop an existing database, and this feature will allow us to save some time by referencing existing meta data via block variations.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Twin Cities WordCamp 2024 Recap</title>
		<link>https://apmeyer.com/twin-cities-wordcamp-2024-recap/</link>
		
		<dc:creator><![CDATA[APMeyer]]></dc:creator>
		<pubDate>Sun, 18 Aug 2024 21:32:21 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://apmeyer.com/?p=12</guid>

					<description><![CDATA[WordCamp made a triumphant return to the Twin Cities with a one-day sold-out event at the Mall of America.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://minneapolis.wordcamp.org/2024/">WordCamp</a> made a triumphant return to the Twin Cities this year (2024) with a one-day sold-out event at the Mall of America (MoA). As a resident of the Twin Cities I tend to avoid MoA, but I think it was actually a decent location for this event. The keynote/sponsor area was a considerable jaunt from the breakout sessions, but the energy of the mall, convenient parking, dining choices and the after-party location being right on site made for a great overall experience.</p>



<p class="wp-block-paragraph">The sessions I attended were solid. <a href="https://tobycryns.com/">Toby Cryns</a> had great tips for making more money as a freelancer while not increasing workload. <a href="https://twitter.com/tapps">Tracy Apps</a> presented a well-considered thesis on AI (artificial intelligence) and our social responsibilities when considering its application it to our work. <a href="https://www.binarygary.com/">Gary Kovar</a> demonstrated how WordPress is used at scale on <a href="https://nasa.gov">nasa.gov</a>. <a href="https://profiles.wordpress.org/wolfpaw/">David Wolfpaw</a> talked custom block development, and <a href="https://github.com/Firestorm980">Jon Christensen</a> discussed 10up&#8217;s approach to block-based themes. Finally, <a href="https://atendesigngroup.com/about/jennifer-dust-ms-mba">Jennifer Dust</a> and <a href="https://atendesigngroup.com/about/eli-frigoli">Eli Frigoli</a> talked accessibility, offering practical tips and a demonstration of using Wave for testing.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
