<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://chrisalberto.site/</loc>
    <lastmod>2026-06-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://chrisalberto.site/blog/</loc>
    <lastmod>2026-07-10</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <!-- SITEMAP_URLS_START --><url>
      <loc>https://chrisalberto.site/blog/clean-data-clean-templates-a-sage-view-composer-for-your-000150/</loc>
      <lastmod>2026-09-14T18:04:44Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/your-first-reusable-flyntwp-component-building-a-000149/</loc>
      <lastmod>2026-09-14T17:01:00Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/from-pixel-perfect-to-whoops-why-my-clients-need-custom-000148/</loc>
      <lastmod>2026-09-14T05:32:57Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-flexible-layouts-with-flyntwp-the-twig-content-000145/</loc>
      <lastmod>2026-09-13T17:04:02Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-testimonial-section-massacre-why-guardrails-beat-000144/</loc>
      <lastmod>2026-09-13T05:27:29Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-secure-custom-wordpress-rest-endpoint-for-000143/</loc>
      <lastmod>2026-09-13T03:00:59Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/passing-custom-data-to-blade-templates-with-sage-view-000142/</loc>
      <lastmod>2026-09-12T17:16:05Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-sharable-twig-button-component-in-flyntwp-for-000141/</loc>
      <lastmod>2026-09-12T17:15:49Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-day-our-client-broke-their-own-design-why-guardrails-000136/</loc>
      <lastmod>2026-09-12T05:08:42Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-secure-custom-rest-endpoints-in-wordpress-for-000139/</loc>
      <lastmod>2026-09-12T03:40:20Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-wordpress-data-a-sage-view-composer-for-dynamic-000138/</loc>
      <lastmod>2026-09-11T17:10:51Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-smarter-layouts-reusable-twig-partials-in-flyntwp-000137/</loc>
      <lastmod>2026-09-11T17:00:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-secure-custom-wordpress-rest-endpoint-for-event-000134/</loc>
      <lastmod>2026-09-10T03:14:27Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/beyond-the-field-clean-data-with-sage-view-composers-000133/</loc>
      <lastmod>2026-09-09T17:21:49Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-reusable-button-component-in-flyntwp-with-twig-000132/</loc>
      <lastmod>2026-09-09T17:01:32Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/preventing-post-launch-mayhem-custom-blocks-for-bulletproof-000131/</loc>
      <lastmod>2026-09-09T05:28:25Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-case-of-the-exploding-team-page-why-guardrails-beat-000127/</loc>
      <lastmod>2026-09-09T05:12:16Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/securely-exposing-custom-post-type-data-via-wordpress-rest-000126/</loc>
      <lastmod>2026-09-09T03:42:10Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-custom-data-in-sage-a-view-composer-recipe-000129/</loc>
      <lastmod>2026-09-08T17:19:47Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/beyond-the-loop-sage-view-composers-for-clean-data-000125/</loc>
      <lastmod>2026-09-08T17:19:29Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-flexible-layout-wrappers-in-flyntwp-with-acf-pro-000128/</loc>
      <lastmod>2026-09-08T17:03:26Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/escaping-the-wordpress-mess-why-sage-delivers-true-000121/</loc>
      <lastmod>2026-09-07T17:42:31Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-reusable-call-to-action-component-in-flyntwp-000124/</loc>
      <lastmod>2026-09-07T17:10:11Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-secure-rest-endpoint-for-your-wordpress-product-000122/</loc>
      <lastmod>2026-09-07T03:38:13Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/automating-wordpress-org-plugin-deployment-with-github-000118/</loc>
      <lastmod>2026-09-07T03:37:54Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/flyntwp-tip-building-a-flexible-button-component-with-twig-000120/</loc>
      <lastmod>2026-09-06T18:16:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-reusable-link-component-in-flyntwp-for-core-web-000116/</loc>
      <lastmod>2026-09-06T18:16:34Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-homepage-incident-why-custom-wordpress-blocks-save-your-000119/</loc>
      <lastmod>2026-09-06T05:15:46Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/sculpting-clean-data-for-your-sage-templates-with-view-000117/</loc>
      <lastmod>2026-09-05T18:05:51Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-authenticated-custom-rest-api-routes-for-wordpress-000114/</loc>
      <lastmod>2026-09-05T03:38:26Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/view-composers-serving-up-clean-cpt-data-in-sage-10-000113/</loc>
      <lastmod>2026-09-04T17:41:37Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-twig-partials-for-flawless-flyntwp-core-000112/</loc>
      <lastmod>2026-09-04T17:41:21Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/streamlining-wordpress-deployments-with-wp-cli-and-github-000111/</loc>
      <lastmod>2026-09-04T03:28:32Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/that-time-a-page-builder-made-a-client-break-their-own-hero-000104/</loc>
      <lastmod>2026-09-03T23:04:13Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/sculpting-clean-data-for-your-sage-templates-with-view-000110/</loc>
      <lastmod>2026-09-03T17:10:57Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-reusable-svg-icon-component-in-flyntwp-with-twig-000109/</loc>
      <lastmod>2026-09-03T17:01:03Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-meet-our-team-meltdown-why-page-builders-lead-to-design-000108/</loc>
      <lastmod>2026-09-03T05:01:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-secure-specialized-rest-endpoints-in-wordpress-000107/</loc>
      <lastmod>2026-09-03T03:03:07Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/securing-custom-post-type-data-with-wordpress-rest-api-000103/</loc>
      <lastmod>2026-09-03T03:01:06Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/streamlining-custom-post-data-in-sage-with-view-composers-000106/</loc>
      <lastmod>2026-09-02T17:10:58Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-performance-first-image-component-in-flyntwp-for-000105/</loc>
      <lastmod>2026-09-02T17:02:00Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/clean-cpt-data-delivery-using-a-sage-view-composer-for-your-000102/</loc>
      <lastmod>2026-09-01T17:11:34Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-a-reusable-link-component-with-flyntwp-and-acf-pro-000101/</loc>
      <lastmod>2026-09-01T17:02:30Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-twig-components-in-flyntwp-the-icon-000093/</loc>
      <lastmod>2026-09-01T10:00:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-the-wordpress-wild-west-why-sage-is-your-developer-s-000076/</loc>
      <lastmod>2026-09-01T09:11:09Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-wordpress-data-clean-acf-with-sage-view-composers-000071/</loc>
      <lastmod>2026-09-01T09:10:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-robust-wordpress-deployments-with-wp-cli-and-000087/</loc>
      <lastmod>2026-09-01T09:01:11Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-case-of-the-exploded-team-page-guardrails-over-wild-000070/</loc>
      <lastmod>2026-09-01T09:00:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-day-the-client-broke-the-layout-guardrails-for-your-000100/</loc>
      <lastmod>2026-08-24T05:01:07Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-case-of-the-client-who-broke-their-own-layout-why-000096/</loc>
      <lastmod>2026-08-24T05:00:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/streamlining-wordpress-plugin-deployment-with-wp-cli-and-000099/</loc>
      <lastmod>2026-08-24T03:49:26Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-data-with-precision-a-view-composer-for-your-000098/</loc>
      <lastmod>2026-08-23T17:51:19Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-buttons-in-flyntwp-with-sub-components-000097/</loc>
      <lastmod>2026-08-23T17:35:06Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-true-cost-of-easy-when-your-wordpress-site-isn-t-truly-000092/</loc>
      <lastmod>2026-08-23T05:46:24Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-secure-custom-rest-endpoints-for-wordpress-event-000095/</loc>
      <lastmod>2026-08-23T03:51:31Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/automating-wordpress-plugin-deployment-with-wp-cli-and-000091/</loc>
      <lastmod>2026-08-23T03:11:48Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/keeping-your-templates-clean-with-sage-s-view-composers-000094/</loc>
      <lastmod>2026-08-22T17:18:45Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/no-more-messy-queries-in-blade-sage-view-composers-to-the-000090/</loc>
      <lastmod>2026-08-21T17:18:00Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-button-components-in-flyntwp-with-twig-000089/</loc>
      <lastmod>2026-08-21T17:17:43Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/mastering-modularity-crafting-a-reusable-button-component-000085/</loc>
      <lastmod>2026-08-21T17:17:27Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/bridging-wordpress-data-to-blade-a-view-composer-for-custom-000080/</loc>
      <lastmod>2026-08-21T17:17:09Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-case-of-acme-marketing-s-wild-west-homepage-why-fixed-000088/</loc>
      <lastmod>2026-08-21T05:51:58Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/keeping-blade-beautiful-a-sage-view-composer-tutorial-000086/</loc>
      <lastmod>2026-08-20T17:47:05Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-day-a-client-dragged-a-hero-image-into-a-paragraph-the-000084/</loc>
      <lastmod>2026-08-20T05:02:14Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/streamlining-wordpress-deployment-wp-cli-and-github-actions-000083/</loc>
      <lastmod>2026-08-20T03:01:07Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/routing-custom-post-type-data-cleanly-with-sage-view-000082/</loc>
      <lastmod>2026-08-19T17:10:44Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-lean-performant-cards-a-flyntwp-twig-component-000081/</loc>
      <lastmod>2026-08-19T17:09:46Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-twig-partials-for-flawless-flyntwp-builds-000079/</loc>
      <lastmod>2026-08-18T18:17:40Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-day-our-restaurant-menu-became-a-ransom-note-guardrails-000078/</loc>
      <lastmod>2026-08-18T05:00:58Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/orchestrating-wordpress-deployments-with-wp-cli-and-github-000077/</loc>
      <lastmod>2026-08-18T03:00:55Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/beyond-blocks-crafting-reusable-twig-elements-in-flyntwp-000075/</loc>
      <lastmod>2026-08-17T17:01:24Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-a-bulletproof-button-reusable-twig-components-in-000072/</loc>
      <lastmod>2026-08-17T17:01:00Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-case-for-code-how-custom-wordpress-themes-save-your-000074/</loc>
      <lastmod>2026-08-17T05:15:35Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-secure-custom-wordpress-rest-endpoints-for-project-000073/</loc>
      <lastmod>2026-08-17T03:29:04Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/securing-custom-wordpress-data-building-an-authenticated-000069/</loc>
      <lastmod>2026-08-16T03:12:33Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/routing-data-cleanly-with-sage-view-composers-a-practical-000068/</loc>
      <lastmod>2026-08-15T17:11:06Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-clean-ui-reusable-card-components-in-flyntwp-with-000067/</loc>
      <lastmod>2026-08-15T17:01:03Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-day-sarah-broke-her-site-why-page-builders-can-be-a-000066/</loc>
      <lastmod>2026-08-15T05:10:28Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-day-a-client-s-quick-edit-broke-the-homepage-and-why-i-000048/</loc>
      <lastmod>2026-08-15T05:10:10Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/when-flexible-means-fragile-guarding-your-wordpress-designs-000035/</loc>
      <lastmod>2026-08-15T05:09:32Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-secure-user-scoped-project-rest-endpoint-in-000065/</loc>
      <lastmod>2026-08-15T03:03:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/decoupling-wordpress-headless-architectures-rest-apis-and-000016/</loc>
      <lastmod>2026-08-15T03:03:07Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-custom-post-type-data-with-sage-view-composers-000064/</loc>
      <lastmod>2026-08-14T17:11:12Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-truly-reusable-buttons-with-flyntwp-s-twig-000063/</loc>
      <lastmod>2026-08-14T17:01:03Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/bridging-worlds-passing-external-api-data-to-blade-with-000062/</loc>
      <lastmod>2026-08-14T11:38:16Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/flyntwp-deep-dive-building-a-flexible-button-component-with-000061/</loc>
      <lastmod>2026-07-27T17:02:51Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-case-of-the-exploded-hero-section-why-guardrails-beat-000060/</loc>
      <lastmod>2026-07-27T05:01:18Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/designing-secure-custom-rest-endpoints-in-wordpress-for-000059/</loc>
      <lastmod>2026-07-27T03:53:03Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/sage-view-composers-keeping-your-blade-templates-000058/</loc>
      <lastmod>2026-07-26T17:29:16Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/flyntwp-s-secret-sauce-composing-reusable-twig-button-000057/</loc>
      <lastmod>2026-07-26T17:08:29Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/when-freedom-becomes-chaos-guarding-design-with-custom-000056/</loc>
      <lastmod>2026-07-26T05:00:32Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-a-custom-wordpress-rest-endpoint-for-tailored-data-000055/</loc>
      <lastmod>2026-07-26T03:18:16Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-your-wordpress-data-with-sage-view-composers-000054/</loc>
      <lastmod>2026-07-25T17:11:29Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-image-modules-in-flyntwp-with-twig-and-acf-000053/</loc>
      <lastmod>2026-07-25T17:01:27Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/beyond-drag-and-drop-guardrails-for-sanity-in-wordpress-000052/</loc>
      <lastmod>2026-07-25T05:41:40Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/automated-wordpress-plugin-deployment-with-github-actions-000051/</loc>
      <lastmod>2026-07-25T03:02:38Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/bringing-order-to-chaos-how-sage-view-composers-keep-your-000050/</loc>
      <lastmod>2026-07-24T17:10:39Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-a-flexible-call-to-action-with-flyntwp-components-000049/</loc>
      <lastmod>2026-07-24T17:00:45Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/guardrails-not-gridlock-why-custom-themes-prevent-design-000044/</loc>
      <lastmod>2026-07-24T05:12:37Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-secure-optimized-custom-rest-endpoints-in-wordpress-000047/</loc>
      <lastmod>2026-07-24T03:01:11Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/exposing-curated-data-building-authenticated-custom-rest-000043/</loc>
      <lastmod>2026-07-24T03:00:39Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/composing-clarity-how-sage-view-composers-keep-your-data-000046/</loc>
      <lastmod>2026-07-23T17:11:00Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/sage-view-composers-taming-your-custom-post-type-data-for-000042/</loc>
      <lastmod>2026-07-23T17:10:35Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-content-blocks-acf-pro-flexible-content-000045/</loc>
      <lastmod>2026-07-23T17:00:44Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/crafting-reusable-headers-with-flyntwp-partials-000041/</loc>
      <lastmod>2026-07-22T18:00:56Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-performance-edge-ditching-page-builders-for-custom-000040/</loc>
      <lastmod>2026-07-22T17:59:52Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/why-every-custom-post-type-i-ship-now-comes-with-a-000038/</loc>
      <lastmod>2026-07-22T17:59:27Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/the-pest-test-that-saved-a-client-s-checkout-flow-000034/</loc>
      <lastmod>2026-07-22T17:43:34Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/automating-wordpress-deploys-my-journey-from-ftp-to-github-000033/</loc>
      <lastmod>2026-07-22T17:43:01Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/streamlining-wordpress-data-with-sage-view-composers-a-real-000037/</loc>
      <lastmod>2026-07-22T08:10:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/my-flyntwp-pattern-for-truly-reusable-cta-components-000036/</loc>
      <lastmod>2026-07-22T08:00:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/locking-down-a-custom-rest-endpoint-the-auth-mistake-i-made-000039/</loc>
      <lastmod>2026-07-21T18:10:35Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/sculpting-maintainable-wordpress-why-sage-is-my-go-to-for-000032/</loc>
      <lastmod>2026-07-21T08:10:20Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/taming-wordpress-bloat-why-i-choose-flyntwp-for-lean-000031/</loc>
      <lastmod>2026-07-21T08:00:10Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/beyond-drag-and-drop-why-i-choose-custom-code-for-wordpress-000030/</loc>
      <lastmod>2026-07-21T05:00:31Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-modern-wordpress-why-i-chose-sage-over-page-000027/</loc>
      <lastmod>2026-07-20T08:10:23Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/flyntwp-my-go-to-for-building-lightning-fast-bloat-free-000026/</loc>
      <lastmod>2026-07-20T08:01:21Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/ditch-the-drag-and-drop-why-custom-wordpress-themes-reign-000025/</loc>
      <lastmod>2026-07-20T05:01:18Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/decoupling-wordpress-building-a-headless-frontend-with-next-000024/</loc>
      <lastmod>2026-07-20T04:56:21Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/reclaim-your-wordpress-why-custom-code-obliterates-bloated-000029/</loc>
      <lastmod>2026-07-19T17:44:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/ditch-the-bloat-why-vanilla-wordpress-custom-blocks-and-000028/</loc>
      <lastmod>2026-07-19T17:23:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/architecting-headless-wordpress-next-js-rest-and-automated-000020/</loc>
      <lastmod>2026-07-18T17:00:46Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/ditching-divi-why-i-code-my-wordpress-themes-from-scratch-000021/</loc>
      <lastmod>2026-07-18T16:40:46Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/tired-of-bloat-why-flyntwp-is-my-go-to-for-lean-fast-000022/</loc>
      <lastmod>2026-07-18T16:30:46Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-better-wordpress-how-sage-unlocks-clean-000023/</loc>
      <lastmod>2026-07-18T16:20:46Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-wordpress-themes-the-right-way-why-sage-cured-my-000019/</loc>
      <lastmod>2026-07-17T08:43:47Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/ditching-the-drag-and-drop-my-journey-to-faster-wordpress-000018/</loc>
      <lastmod>2026-07-17T08:40:47Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-beyond-the-builder-why-custom-wordpress-themes-win-000017/</loc>
      <lastmod>2026-07-17T07:15:26Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/from-bloatware-to-blade-why-sage-is-my-wordpress-000015/</loc>
      <lastmod>2026-07-16T17:34:40Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/building-better-why-i-chose-flyntwp-for-lightning-fast-000014/</loc>
      <lastmod>2026-07-16T17:26:40Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/decoupling-wordpress-building-a-headless-backend-with-ci-cd-000012/</loc>
      <lastmod>2026-07-16T06:52:08Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/from-bloat-to-brilliance-unpacking-the-power-of-custom-000013/</loc>
      <lastmod>2026-07-16T06:41:08Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/why-i-ditched-page-builders-for-hand-coded-wordpress-the-000011/</loc>
      <lastmod>2026-07-15T06:58:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/beyond-the-block-editor-architecting-headless-wordpress-000010/</loc>
      <lastmod>2026-07-15T06:38:50Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/that-lighthouse-score-and-the-headless-rabbit-hole-i-fell-000008/</loc>
      <lastmod>2026-07-14T11:41:22Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/that-time-i-rebuilt-a-site-after-its-page-builder-imploded-000009/</loc>
      <lastmod>2026-07-14T08:26:27Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/why-i-finally-went-headless-on-my-last-wordpress-project-000007/</loc>
      <lastmod>2026-07-13T17:45:03Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/why-your-wordpress-site-is-slow-the-hidden-cost-of-all-in-eb422c/</loc>
      <lastmod>2026-07-10T15:46:24.524Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><url>
      <loc>https://chrisalberto.site/blog/just-install-a-plugin-for-that-my-take-on-when-to-code-it-624b0f/</loc>
      <lastmod>2026-07-10T14:32:30.005Z</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url><!-- SITEMAP_URLS_END -->
  <!--
    Each publish prepends one url immediately after SITEMAP_URLS_START
    above, format:
    <url>
      <loc>{{canonicalUrl}}</loc>
      <lastmod>{{isoDate}}</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
    </url>

    This comment must stay OUTSIDE the SITEMAP_URLS_START/END pair, even
    though this file's insertion function doesn't currently parse that
    region (unlike feed.xml's) — kept consistent so both marker-based XML
    files follow the same, less fragile convention.

    Note: the static entries above use date-only lastmod values while
    {{isoDate}} here is a full ISO timestamp; both date-only and full-ISO
    lastmod are valid per the sitemaps.org spec, so this format difference
    is intentional, not a bug.
  -->
</urlset>
