<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>The RoundBorders Blog</title>
    <link>https://www.roundborders.com/blog/</link>
    <atom:link href="https://www.roundborders.com/blog/rss.xml" rel="self" type="application/rss+xml" />
    <description>Notes from the bench: what breaks in WordPress, how I fix it, and stories from real projects. Written by Bishoy Awad, founder of RoundBorders.</description>
    <language>en</language>
    <lastBuildDate>Sat, 10 Oct 2026 15:19:44 GMT</lastBuildDate>
    <item>
      <title>WooCommerce High-Performance Order Storage (HPOS): how to switch safely</title>
      <link>https://www.roundborders.com/blog/woocommerce-high-performance-order-storage/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/woocommerce-high-performance-order-storage/</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description>How to find what blocks the switch to WooCommerce's own order tables, copy and check every order, and make the switch with an undo button still in place.</description>
    </item>
    <item>
      <title>WooCommerce checkout errors: what each message means and how to fix it</title>
      <link>https://www.roundborders.com/blog/woocommerce-checkout-errors/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/woocommerce-checkout-errors/</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <description>Every checkout error was written by someone: WooCommerce, the payment plugin, the payment provider's own script, or the server in between. What the common messages mean, and how to trace one that isn't in WooCommerce at all.</description>
    </item>
    <item>
      <title>wp_actionscheduler_logs is huge: how to clean up Action Scheduler safely</title>
      <link>https://www.roundborders.com/blog/wp-actionscheduler-logs-huge/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/wp-actionscheduler-logs-huge/</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <description>Two tables you never created are most of your database. They belong to Action Scheduler, the job queue inside WooCommerce, and the cleanup that should empty them can't keep up. How to measure them, delete the finished rows in batches without touching pending work, and make the sweep run for real.</description>
    </item>
    <item>
      <title>WooCommerce orders in Google Sheets: the two-way sync that took a store's staff out of wp-admin</title>
      <link>https://www.roundborders.com/blog/woocommerce-orders-in-google-sheets-two-way-sync/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/woocommerce-orders-in-google-sheets-two-way-sync/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <description>A busy store, a slow admin, and a team that only needed to process orders. How I moved order handling into Google Sheets with Zapier and a little Apps Script, synced status changes back to WooCommerce, and what it fixed beyond speed.</description>
    </item>
    <item>
      <title>WordPress autoloaded options: how to find what is loading on every page, and fix it</title>
      <link>https://www.roundborders.com/blog/wordpress-autoloaded-options/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/wordpress-autoloaded-options/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <description>Every request starts by loading every wp_options row marked autoload into memory. On a healthy site that's a few hundred kilobytes. On most sites I open, it's megabytes of leftovers. How to measure it, read the list, find who is writing it, and clean it without breaking anything.</description>
    </item>
    <item>
      <title>How to fix &quot;There has been a critical error on this website&quot;, step by step</title>
      <link>https://www.roundborders.com/blog/fix-there-has-been-a-critical-error-on-this-website/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/fix-there-has-been-a-critical-error-on-this-website/</guid>
      <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
      <description>Your site is showing WordPress's white box with the grey text, and there's an email in your inbox you may not have opened yet. Seven steps, from easiest to last resort, in the order I do them. Most sites are back before step four.</description>
    </item>
    <item>
      <title>How to tell if your WordPress site is hacked, and what to do in the first ten minutes</title>
      <link>https://www.roundborders.com/blog/how-to-tell-if-your-wordpress-site-is-hacked/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/how-to-tell-if-your-wordpress-site-is-hacked/</guid>
      <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
      <description>Eleven signs, from the obvious redirect to the quiet ones that only Google notices, then the short list of things to do before you touch anything, so the evidence survives and the cleanup actually sticks.</description>
    </item>
    <item>
      <title>WordPress white screen of death: the fix, in order</title>
      <link>https://www.roundborders.com/blog/wordpress-white-screen-of-death/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/wordpress-white-screen-of-death/</guid>
      <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
      <description>A blank page, no error, no email, nothing to search for. The white screen is the critical-error screen with the lights off. Here's where the error is hiding, and the six places to look for it.</description>
    </item>
    <item>
      <title>How to reduce TTFB in WordPress (measure first, then fix)</title>
      <link>https://www.roundborders.com/blog/how-to-reduce-ttfb-in-wordpress/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/how-to-reduce-ttfb-in-wordpress/</guid>
      <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
      <description>Time to first byte is the one number that tells you whether your server or your page is the slow part. How to measure it properly, what a good number looks like, and the five things that actually move it, in the order that pays off fastest.</description>
    </item>
    <item>
      <title>Why wp-admin is slow when the front end is fine, and how to fix it</title>
      <link>https://www.roundborders.com/blog/why-wp-admin-is-slow/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/why-wp-admin-is-slow/</guid>
      <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
      <description>The site loads fast for visitors but the dashboard takes eight seconds and saving a post feels like dial-up. That gap has a short list of causes, none of which a caching plugin can reach. Here they are, with the check for each.</description>
    </item>
    <item>
      <title>Moving WordPress to a new host without losing rankings</title>
      <link>https://www.roundborders.com/blog/move-wordpress-to-a-new-host-without-losing-rankings/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/move-wordpress-to-a-new-host-without-losing-rankings/</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <description>The order of operations that keeps every URL, the DNS trick that means zero downtime, and the checks to run before you cancel the old host. Rankings don't drop because you moved; they drop because of what got skipped.</description>
    </item>
    <item>
      <title>WooCommerce checkout not working: the 8 usual causes</title>
      <link>https://www.roundborders.com/blog/woocommerce-checkout-not-working/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/woocommerce-checkout-not-working/</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <description>The place-order button spins forever, or says nothing, or the customer gets 'no shipping methods available'. Every one of these has a one-minute test that confirms it. Here they are, in the order I run them, from a WooCommerce Pro Partner who fixes this most weeks.</description>
    </item>
    <item>
      <title>The 29 GB WordPress database that was mostly nothing</title>
      <link>https://www.roundborders.com/blog/the-29-gb-wordpress-database/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/the-29-gb-wordpress-database/</guid>
      <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
      <description>A client's dashboard took eleven seconds to open. The database was 29 GB. The actual content, every post, product, order, and customer, was a small fraction of that. What was in the rest, how it got there, and the three queries that found it.</description>
    </item>
    <item>
      <title>Why I stopped selling hourly</title>
      <link>https://www.roundborders.com/blog/why-i-stopped-selling-hourly/</link>
      <guid isPermaLink="true">https://www.roundborders.com/blog/why-i-stopped-selling-hourly/</guid>
      <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
      <description>Hourly billing charges the client for the developer's learning curve and rewards the slow. What changed when every project got one fixed number, what it cost me, and why I'd never go back.</description>
    </item>
  </channel>
</rss>
