Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
/*M!999999\- enable the sandbox mode */ -- MariaDB dump 10.19 Distrib 10.6.22-MariaDB, for Linux (x86_64) -- -- Host: localhost Database: admin_thinkteq -- ------------------------------------------------------ -- Server version 10.6.22-MariaDB /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `thinkteq_commentmeta` -- DROP TABLE IF EXISTS `thinkteq_commentmeta`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_commentmeta` ( `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `comment_id` bigint(20) unsigned NOT NULL DEFAULT 0, `meta_key` varchar(255) DEFAULT NULL, `meta_value` longtext DEFAULT NULL, PRIMARY KEY (`meta_id`), KEY `comment_id` (`comment_id`), KEY `meta_key` (`meta_key`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_commentmeta` -- LOCK TABLES `thinkteq_commentmeta` WRITE; /*!40000 ALTER TABLE `thinkteq_commentmeta` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_commentmeta` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_comments` -- DROP TABLE IF EXISTS `thinkteq_comments`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_comments` ( `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT 0, `comment_author` tinytext NOT NULL, `comment_author_email` varchar(100) NOT NULL DEFAULT '', `comment_author_url` varchar(200) NOT NULL DEFAULT '', `comment_author_IP` varchar(100) NOT NULL DEFAULT '', `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `comment_content` text NOT NULL, `comment_karma` int(11) NOT NULL DEFAULT 0, `comment_approved` varchar(20) NOT NULL DEFAULT '1', `comment_agent` varchar(255) NOT NULL DEFAULT '', `comment_type` varchar(20) NOT NULL DEFAULT 'comment', `comment_parent` bigint(20) unsigned NOT NULL DEFAULT 0, `user_id` bigint(20) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`comment_ID`), KEY `comment_post_ID` (`comment_post_ID`), KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`), KEY `comment_date_gmt` (`comment_date_gmt`), KEY `comment_parent` (`comment_parent`), KEY `comment_author_email` (`comment_author_email`(10)) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_comments` -- LOCK TABLES `thinkteq_comments` WRITE; /*!40000 ALTER TABLE `thinkteq_comments` DISABLE KEYS */; INSERT INTO `thinkteq_comments` VALUES (1,1,'A WordPress Commenter','wapuu@wordpress.example','https://wordpress.org/','','2025-06-16 14:43:46','2025-06-16 14:43:46','Hi, this is a comment.\nTo get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.\nCommenter avatars come from Gravatar.',0,'post-trashed','','comment',0,0); /*!40000 ALTER TABLE `thinkteq_comments` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_e_events` -- DROP TABLE IF EXISTS `thinkteq_e_events`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_e_events` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `event_data` text DEFAULT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `created_at_index` (`created_at`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_e_events` -- LOCK TABLES `thinkteq_e_events` WRITE; /*!40000 ALTER TABLE `thinkteq_e_events` DISABLE KEYS */; INSERT INTO `thinkteq_e_events` VALUES (1,'{\"event\":\"modal load\",\"version\":\"\",\"details\":\"{\\\"placement\\\":\\\"Onboarding wizard\\\",\\\"step\\\":\\\"account\\\",\\\"user_state\\\":\\\"anon\\\"}\",\"ts\":\"2025-06-18T07:20:59.243+04:00\"}','2025-06-18 07:20:59'),(2,'{\"event\":\"close modal\",\"version\":\"\",\"details\":\"{\\\"placement\\\":\\\"Onboarding wizard\\\",\\\"step\\\":\\\"account\\\"}\",\"ts\":\"2025-06-18T07:21:01.334+04:00\"}','2025-06-18 07:21:01'); /*!40000 ALTER TABLE `thinkteq_e_events` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_e_notes` -- DROP TABLE IF EXISTS `thinkteq_e_notes`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_e_notes` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `route_url` text DEFAULT NULL COMMENT 'Clean url where the note was created.', `route_title` varchar(255) DEFAULT NULL, `route_post_id` bigint(20) unsigned DEFAULT NULL COMMENT 'The post id of the route that the note was created on.', `post_id` bigint(20) unsigned DEFAULT NULL, `element_id` varchar(60) DEFAULT NULL COMMENT 'The Elementor element ID the note is attached to.', `parent_id` bigint(20) unsigned NOT NULL DEFAULT 0, `author_id` bigint(20) unsigned DEFAULT NULL, `author_display_name` varchar(250) DEFAULT NULL COMMENT 'Save the author name when the author was deleted.', `status` varchar(20) NOT NULL DEFAULT 'publish', `position` text DEFAULT NULL COMMENT 'A JSON string that represents the position of the note inside the element in percentages. e.g. {x:10, y:15}', `content` longtext DEFAULT NULL, `is_resolved` tinyint(1) NOT NULL DEFAULT 0, `is_public` tinyint(1) NOT NULL DEFAULT 1, `last_activity_at` datetime DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `route_url_index` (`route_url`(191)), KEY `post_id_index` (`post_id`), KEY `element_id_index` (`element_id`), KEY `parent_id_index` (`parent_id`), KEY `author_id_index` (`author_id`), KEY `status_index` (`status`), KEY `is_resolved_index` (`is_resolved`), KEY `is_public_index` (`is_public`), KEY `created_at_index` (`created_at`), KEY `updated_at_index` (`updated_at`), KEY `last_activity_at_index` (`last_activity_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_e_notes` -- LOCK TABLES `thinkteq_e_notes` WRITE; /*!40000 ALTER TABLE `thinkteq_e_notes` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_e_notes` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_e_notes_users_relations` -- DROP TABLE IF EXISTS `thinkteq_e_notes_users_relations`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_e_notes_users_relations` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(60) NOT NULL COMMENT 'The relation type between user and note (e.g mention, watch, read).', `note_id` bigint(20) unsigned NOT NULL, `user_id` bigint(20) unsigned NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `type_index` (`type`), KEY `note_id_index` (`note_id`), KEY `user_id_index` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_e_notes_users_relations` -- LOCK TABLES `thinkteq_e_notes_users_relations` WRITE; /*!40000 ALTER TABLE `thinkteq_e_notes_users_relations` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_e_notes_users_relations` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_e_submissions` -- DROP TABLE IF EXISTS `thinkteq_e_submissions`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_e_submissions` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(60) DEFAULT NULL, `hash_id` varchar(60) NOT NULL, `main_meta_id` bigint(20) unsigned NOT NULL COMMENT 'Id of main field. to represent the main meta field', `post_id` bigint(20) unsigned NOT NULL, `referer` varchar(500) NOT NULL, `referer_title` varchar(300) DEFAULT NULL, `element_id` varchar(20) NOT NULL, `form_name` varchar(60) NOT NULL, `campaign_id` bigint(20) unsigned NOT NULL, `user_id` bigint(20) unsigned DEFAULT NULL, `user_ip` varchar(46) NOT NULL, `user_agent` text NOT NULL, `actions_count` int(11) DEFAULT 0, `actions_succeeded_count` int(11) DEFAULT 0, `status` varchar(20) NOT NULL, `is_read` tinyint(1) NOT NULL DEFAULT 0, `meta` text DEFAULT NULL, `created_at_gmt` datetime NOT NULL, `updated_at_gmt` datetime NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `hash_id_unique_index` (`hash_id`), KEY `main_meta_id_index` (`main_meta_id`), KEY `hash_id_index` (`hash_id`), KEY `type_index` (`type`), KEY `post_id_index` (`post_id`), KEY `element_id_index` (`element_id`), KEY `campaign_id_index` (`campaign_id`), KEY `user_id_index` (`user_id`), KEY `user_ip_index` (`user_ip`), KEY `status_index` (`status`), KEY `is_read_index` (`is_read`), KEY `created_at_gmt_index` (`created_at_gmt`), KEY `updated_at_gmt_index` (`updated_at_gmt`), KEY `created_at_index` (`created_at`), KEY `updated_at_index` (`updated_at`), KEY `referer_index` (`referer`(191)), KEY `referer_title_index` (`referer_title`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_e_submissions` -- LOCK TABLES `thinkteq_e_submissions` WRITE; /*!40000 ALTER TABLE `thinkteq_e_submissions` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_e_submissions` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_e_submissions_actions_log` -- DROP TABLE IF EXISTS `thinkteq_e_submissions_actions_log`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_e_submissions_actions_log` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `submission_id` bigint(20) unsigned NOT NULL, `action_name` varchar(60) NOT NULL, `action_label` varchar(60) DEFAULT NULL, `status` varchar(20) NOT NULL, `log` text DEFAULT NULL, `created_at_gmt` datetime NOT NULL, `updated_at_gmt` datetime NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `submission_id_index` (`submission_id`), KEY `action_name_index` (`action_name`), KEY `status_index` (`status`), KEY `created_at_gmt_index` (`created_at_gmt`), KEY `updated_at_gmt_index` (`updated_at_gmt`), KEY `created_at_index` (`created_at`), KEY `updated_at_index` (`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_e_submissions_actions_log` -- LOCK TABLES `thinkteq_e_submissions_actions_log` WRITE; /*!40000 ALTER TABLE `thinkteq_e_submissions_actions_log` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_e_submissions_actions_log` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_e_submissions_values` -- DROP TABLE IF EXISTS `thinkteq_e_submissions_values`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_e_submissions_values` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `submission_id` bigint(20) unsigned NOT NULL DEFAULT 0, `key` varchar(60) DEFAULT NULL, `value` longtext DEFAULT NULL, PRIMARY KEY (`id`), KEY `submission_id_index` (`submission_id`), KEY `key_index` (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_e_submissions_values` -- LOCK TABLES `thinkteq_e_submissions_values` WRITE; /*!40000 ALTER TABLE `thinkteq_e_submissions_values` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_e_submissions_values` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_links` -- DROP TABLE IF EXISTS `thinkteq_links`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_links` ( `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `link_url` varchar(255) NOT NULL DEFAULT '', `link_name` varchar(255) NOT NULL DEFAULT '', `link_image` varchar(255) NOT NULL DEFAULT '', `link_target` varchar(25) NOT NULL DEFAULT '', `link_description` varchar(255) NOT NULL DEFAULT '', `link_visible` varchar(20) NOT NULL DEFAULT 'Y', `link_owner` bigint(20) unsigned NOT NULL DEFAULT 1, `link_rating` int(11) NOT NULL DEFAULT 0, `link_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `link_rel` varchar(255) NOT NULL DEFAULT '', `link_notes` mediumtext NOT NULL, `link_rss` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`link_id`), KEY `link_visible` (`link_visible`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_links` -- LOCK TABLES `thinkteq_links` WRITE; /*!40000 ALTER TABLE `thinkteq_links` DISABLE KEYS */; /*!40000 ALTER TABLE `thinkteq_links` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `thinkteq_options` -- DROP TABLE IF EXISTS `thinkteq_options`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `thinkteq_options` ( `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `option_name` varchar(191) NOT NULL DEFAULT '', `option_value` longtext NOT NULL, `autoload` varchar(20) NOT NULL DEFAULT 'yes', PRIMARY KEY (`option_id`), UNIQUE KEY `option_name` (`option_name`), KEY `autoload` (`autoload`) ) ENGINE=InnoDB AUTO_INCREMENT=458 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `thinkteq_options` -- LOCK TABLES `thinkteq_options` WRITE; /*!40000 ALTER TABLE `thinkteq_options` DISABLE KEYS */; INSERT INTO `thinkteq_options` VALUES (1,'cron','a:11:{i:1750272229;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1750288379;a:1:{s:21:\"wp_update_user_counts\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1750301026;a:1:{s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1750301029;a:1:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1750331579;a:3:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1750332053;a:1:{s:28:\"elementor/tracker/send_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1750344226;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1750398927;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1750776226;a:1:{s:30:\"wp_site_health_scheduled_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1750850056;a:1:{s:30:\"wp_delete_temp_updater_backups\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}s:7:\"version\";i:2;}','on'),(2,'siteurl','https://think-teq.designsfunnelserver.com','on'),(3,'home','https://think-teq.designsfunnelserver.com','on'),(4,'blogname','Think-teq Solutions','on'),(5,'blogdescription','Think-teq Solutions','on'),(6,'users_can_register','0','on'),(7,'admin_email','designsfunnel@gmail.com','on'),(8,'start_of_week','1','on'),(9,'use_balanceTags','0','on'),(10,'use_smilies','1','on'),(11,'require_name_email','1','on'),(12,'comments_notify','1','on'),(13,'posts_per_rss','10','on'),(14,'rss_use_excerpt','0','on'),(15,'mailserver_url','mail.example.com','on'),(16,'mailserver_login','login@example.com','on'),(17,'mailserver_pass','','on'),(18,'mailserver_port','110','on'),(19,'default_category','1','on'),(20,'default_comment_status','open','on'),(21,'default_ping_status','open','on'),(22,'default_pingback_flag','1','on'),(23,'posts_per_page','10','on'),(24,'date_format','F j, Y','on'),(25,'time_format','g:i a','on'),(26,'links_updated_date_format','F j, Y g:i a','on'),(27,'comment_moderation','0','on'),(28,'moderation_notify','1','on'),(29,'permalink_structure','/%postname%/','on'),(30,'rewrite_rules','a:123:{s:11:\"^wp-json/?$\";s:22:\"index.php?rest_route=/\";s:14:\"^wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:21:\"^index.php/wp-json/?$\";s:22:\"index.php?rest_route=/\";s:24:\"^index.php/wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:17:\"^wp-sitemap\\.xml$\";s:23:\"index.php?sitemap=index\";s:17:\"^wp-sitemap\\.xsl$\";s:36:\"index.php?sitemap-stylesheet=sitemap\";s:23:\"^wp-sitemap-index\\.xsl$\";s:34:\"index.php?sitemap-stylesheet=index\";s:48:\"^wp-sitemap-([a-z]+?)-([a-z\\d_-]+?)-(\\d+?)\\.xml$\";s:75:\"index.php?sitemap=$matches[1]&sitemap-subtype=$matches[2]&paged=$matches[3]\";s:34:\"^wp-sitemap-([a-z]+?)-(\\d+?)\\.xml$\";s:47:\"index.php?sitemap=$matches[1]&paged=$matches[2]\";s:47:\"category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:52:\"index.php?category_name=$matches[1]&feed=$matches[2]\";s:42:\"category/(.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:52:\"index.php?category_name=$matches[1]&feed=$matches[2]\";s:23:\"category/(.+?)/embed/?$\";s:46:\"index.php?category_name=$matches[1]&embed=true\";s:35:\"category/(.+?)/page/?([0-9]{1,})/?$\";s:53:\"index.php?category_name=$matches[1]&paged=$matches[2]\";s:17:\"category/(.+?)/?$\";s:35:\"index.php?category_name=$matches[1]\";s:44:\"tag/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?tag=$matches[1]&feed=$matches[2]\";s:39:\"tag/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?tag=$matches[1]&feed=$matches[2]\";s:20:\"tag/([^/]+)/embed/?$\";s:36:\"index.php?tag=$matches[1]&embed=true\";s:32:\"tag/([^/]+)/page/?([0-9]{1,})/?$\";s:43:\"index.php?tag=$matches[1]&paged=$matches[2]\";s:14:\"tag/([^/]+)/?$\";s:25:\"index.php?tag=$matches[1]\";s:45:\"type/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?post_format=$matches[1]&feed=$matches[2]\";s:40:\"type/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?post_format=$matches[1]&feed=$matches[2]\";s:21:\"type/([^/]+)/embed/?$\";s:44:\"index.php?post_format=$matches[1]&embed=true\";s:33:\"type/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?post_format=$matches[1]&paged=$matches[2]\";s:15:\"type/([^/]+)/?$\";s:33:\"index.php?post_format=$matches[1]\";s:46:\"e-floating-buttons/[^/]+/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:56:\"e-floating-buttons/[^/]+/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:76:\"e-floating-buttons/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:71:\"e-floating-buttons/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:71:\"e-floating-buttons/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:52:\"e-floating-buttons/[^/]+/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:35:\"e-floating-buttons/([^/]+)/embed/?$\";s:51:\"index.php?e-floating-buttons=$matches[1]&embed=true\";s:39:\"e-floating-buttons/([^/]+)/trackback/?$\";s:45:\"index.php?e-floating-buttons=$matches[1]&tb=1\";s:47:\"e-floating-buttons/([^/]+)/page/?([0-9]{1,})/?$\";s:58:\"index.php?e-floating-buttons=$matches[1]&paged=$matches[2]\";s:54:\"e-floating-buttons/([^/]+)/comment-page-([0-9]{1,})/?$\";s:58:\"index.php?e-floating-buttons=$matches[1]&cpage=$matches[2]\";s:43:\"e-floating-buttons/([^/]+)(?:/([0-9]+))?/?$\";s:57:\"index.php?e-floating-buttons=$matches[1]&page=$matches[2]\";s:35:\"e-floating-buttons/[^/]+/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:45:\"e-floating-buttons/[^/]+/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:65:\"e-floating-buttons/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:60:\"e-floating-buttons/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:60:\"e-floating-buttons/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:41:\"e-floating-buttons/[^/]+/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:45:\"elementskit-content/.+?/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:55:\"elementskit-content/.+?/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:75:\"elementskit-content/.+?/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:70:\"elementskit-content/.+?/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:70:\"elementskit-content/.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:51:\"elementskit-content/.+?/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:34:\"elementskit-content/(.+?)/embed/?$\";s:52:\"index.php?elementskit_content=$matches[1]&embed=true\";s:38:\"elementskit-content/(.+?)/trackback/?$\";s:46:\"index.php?elementskit_content=$matches[1]&tb=1\";s:46:\"elementskit-content/(.+?)/page/?([0-9]{1,})/?$\";s:59:\"index.php?elementskit_content=$matches[1]&paged=$matches[2]\";s:53:\"elementskit-content/(.+?)/comment-page-([0-9]{1,})/?$\";s:59:\"index.php?elementskit_content=$matches[1]&cpage=$matches[2]\";s:42:\"elementskit-content/(.+?)(?:/([0-9]+))?/?$\";s:58:\"index.php?elementskit_content=$matches[1]&page=$matches[2]\";s:12:\"robots\\.txt$\";s:18:\"index.php?robots=1\";s:13:\"favicon\\.ico$\";s:19:\"index.php?favicon=1\";s:12:\"sitemap\\.xml\";s:24:\"index.php??sitemap=index\";s:48:\".*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\\.php$\";s:18:\"index.php?feed=old\";s:20:\".*wp-app\\.php(/.*)?$\";s:19:\"index.php?error=403\";s:18:\".*wp-register.php$\";s:23:\"index.php?register=true\";s:32:\"feed/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:27:\"(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:8:\"embed/?$\";s:21:\"index.php?&embed=true\";s:20:\"page/?([0-9]{1,})/?$\";s:28:\"index.php?&paged=$matches[1]\";s:27:\"comment-page-([0-9]{1,})/?$\";s:39:\"index.php?&page_id=12&cpage=$matches[1]\";s:41:\"comments/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:36:\"comments/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:17:\"comments/embed/?$\";s:21:\"index.php?&embed=true\";s:44:\"search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:39:\"search/(.+)/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:20:\"search/(.+)/embed/?$\";s:34:\"index.php?s=$matches[1]&embed=true\";s:32:\"search/(.+)/page/?([0-9]{1,})/?$\";s:41:\"index.php?s=$matches[1]&paged=$matches[2]\";s:14:\"search/(.+)/?$\";s:23:\"index.php?s=$matches[1]\";s:47:\"author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:42:\"author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:23:\"author/([^/]+)/embed/?$\";s:44:\"index.php?author_name=$matches[1]&embed=true\";s:35:\"author/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?author_name=$matches[1]&paged=$matches[2]\";s:17:\"author/([^/]+)/?$\";s:33:\"index.php?author_name=$matches[1]\";s:69:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:64:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:45:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/embed/?$\";s:74:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&embed=true\";s:57:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]\";s:39:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$\";s:63:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]\";s:56:\"([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:51:\"([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:32:\"([0-9]{4})/([0-9]{1,2})/embed/?$\";s:58:\"index.php?year=$matches[1]&monthnum=$matches[2]&embed=true\";s:44:\"([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]\";s:26:\"([0-9]{4})/([0-9]{1,2})/?$\";s:47:\"index.php?year=$matches[1]&monthnum=$matches[2]\";s:43:\"([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:38:\"([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:19:\"([0-9]{4})/embed/?$\";s:37:\"index.php?year=$matches[1]&embed=true\";s:31:\"([0-9]{4})/page/?([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&paged=$matches[2]\";s:13:\"([0-9]{4})/?$\";s:26:\"index.php?year=$matches[1]\";s:27:\".?.+?/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:37:\".?.+?/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:57:\".?.+?/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\".?.+?/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\".?.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:33:\".?.+?/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:16:\"(.?.+?)/embed/?$\";s:41:\"index.php?pagename=$matches[1]&embed=true\";s:20:\"(.?.+?)/trackback/?$\";s:35:\"index.php?pagename=$matches[1]&tb=1\";s:40:\"(.?.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:35:\"(.?.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:28:\"(.?.+?)/page/?([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&paged=$matches[2]\";s:35:\"(.?.+?)/comment-page-([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&cpage=$matches[2]\";s:24:\"(.?.+?)(?:/([0-9]+))?/?$\";s:47:\"index.php?pagename=$matches[1]&page=$matches[2]\";s:27:\"[^/]+/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:37:\"[^/]+/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:57:\"[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\"[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\"[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:33:\"[^/]+/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:16:\"([^/]+)/embed/?$\";s:37:\"index.php?name=$matches[1]&embed=true\";s:20:\"([^/]+)/trackback/?$\";s:31:\"index.php?name=$matches[1]&tb=1\";s:40:\"([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?name=$matches[1]&feed=$matches[2]\";s:35:\"([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?name=$matches[1]&feed=$matches[2]\";s:28:\"([^/]+)/page/?([0-9]{1,})/?$\";s:44:\"index.php?name=$matches[1]&paged=$matches[2]\";s:35:\"([^/]+)/comment-page-([0-9]{1,})/?$\";s:44:\"index.php?name=$matches[1]&cpage=$matches[2]\";s:24:\"([^/]+)(?:/([0-9]+))?/?$\";s:43:\"index.php?name=$matches[1]&page=$matches[2]\";s:16:\"[^/]+/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:26:\"[^/]+/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:46:\"[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:41:\"[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:41:\"[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:22:\"[^/]+/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";}','on'),(31,'hack_file','0','on'),(32,'blog_charset','UTF-8','on'),(33,'moderation_keys','','off'),(34,'active_plugins','a:4:{i:0;s:31:\"elementor-pro/elementor-pro.php\";i:1;s:23:\"elementor/elementor.php\";i:2;s:37:\"elementskit-lite/elementskit-lite.php\";i:3;s:35:\"envato-elements/envato-elements.php\";}','on'),(35,'category_base','','on'),(36,'ping_sites','http://rpc.pingomatic.com/','on'),(37,'comment_max_links','2','on'),(38,'gmt_offset','0','on'),(39,'default_email_category','1','on'),(40,'recently_edited','a:4:{i:0;s:97:\"/home/admin/think-teq.designsfunnelserver.com/wp-content/themes/think-teq-solutions/functions.php\";i:2;s:93:\"/home/admin/think-teq.designsfunnelserver.com/wp-content/themes/think-teq-solutions/style.css\";i:3;s:89:\"/home/admin/think-teq.designsfunnelserver.com/wp-content/themes/hello-elementor/style.css\";i:4;s:0:\"\";}','off'),(41,'template','hello-elementor','on'),(42,'stylesheet','think-teq-solutions','on'),(43,'comment_registration','0','on'),(44,'html_type','text/html','on'),(45,'use_trackback','0','on'),(46,'default_role','subscriber','on'),(47,'db_version','58975','on'),(48,'uploads_use_yearmonth_folders','1','on'),(49,'upload_path','','on'),(50,'blog_public','1','on'),(51,'default_link_category','2','on'),(52,'show_on_front','page','on'),(53,'tag_base','','on'),(54,'show_avatars','1','on'),(55,'avatar_rating','G','on'),(56,'upload_url_path','','on'),(57,'thumbnail_size_w','150','on'),(58,'thumbnail_size_h','150','on'),(59,'thumbnail_crop','1','on'),(60,'medium_size_w','300','on'),(61,'medium_size_h','300','on'),(62,'avatar_default','mystery','on'),(63,'large_size_w','1024','on'),(64,'large_size_h','1024','on'),(65,'image_default_link_type','none','on'),(66,'image_default_size','','on'),(67,'image_default_align','','on'),(68,'close_comments_for_old_posts','0','on'),(69,'close_comments_days_old','14','on'),(70,'thread_comments','1','on'),(71,'thread_comments_depth','5','on'),(72,'page_comments','0','on'),(73,'comments_per_page','50','on'),(74,'default_comments_page','newest','on'),(75,'comment_order','asc','on'),(76,'sticky_posts','a:0:{}','on'),(77,'widget_categories','a:0:{}','on'),(78,'widget_text','a:0:{}','on'),(79,'widget_rss','a:0:{}','on'),(80,'uninstall_plugins','a:1:{s:23:\"elementor/elementor.php\";a:2:{i:0;s:21:\"Elementor\\Maintenance\";i:1;s:9:\"uninstall\";}}','off'),(81,'timezone_string','','on'),(82,'page_for_posts','0','on'),(83,'page_on_front','12','on'),(84,'default_post_format','0','on'),(85,'link_manager_enabled','0','on'),(86,'finished_splitting_shared_terms','1','on'),(87,'site_icon','270','on'),(88,'medium_large_size_w','768','on'),(89,'medium_large_size_h','0','on'),(90,'wp_page_for_privacy_policy','3','on'),(91,'show_comments_cookies_opt_in','1','on'),(92,'admin_email_lifespan','1765637026','on'),(93,'disallowed_keys','','off'),(94,'comment_previously_approved','1','on'),(95,'auto_plugin_theme_update_emails','a:0:{}','off'),(96,'auto_update_core_dev','enabled','on'),(97,'auto_update_core_minor','enabled','on'),(98,'auto_update_core_major','enabled','on'),(99,'wp_force_deactivated_plugins','a:0:{}','on'),(100,'wp_attachment_pages_enabled','0','on'),(101,'initial_db_version','58975','on'),(102,'thinkteq_user_roles','a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:68:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;s:6:\"export\";b:1;s:26:\"create_notes_elementor-pro\";b:1;s:24:\"edit_notes_elementor-pro\";b:1;s:26:\"delete_notes_elementor-pro\";b:1;s:24:\"read_notes_elementor-pro\";b:1;s:31:\"edit_others_notes_elementor-pro\";b:1;s:33:\"delete_others_notes_elementor-pro\";b:1;s:39:\"read_others_private_notes_elementor-pro\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}','on'),(103,'fresh_site','0','off'),(104,'user_count','1','off'),(105,'widget_block','a:6:{i:2;a:1:{s:7:\"content\";s:19:\"\";}i:3;a:1:{s:7:\"content\";s:154:\"

Recent Posts

\";}i:4;a:1:{s:7:\"content\";s:227:\"

Recent Comments

\";}i:5;a:1:{s:7:\"content\";s:146:\"

Archives

\";}i:6;a:1:{s:7:\"content\";s:150:\"

Categories

\";}s:12:\"_multiwidget\";i:1;}','auto'),(106,'sidebars_widgets','a:2:{s:19:\"wp_inactive_widgets\";a:5:{i:0;s:7:\"block-2\";i:1;s:7:\"block-3\";i:2;s:7:\"block-4\";i:3;s:7:\"block-5\";i:4;s:7:\"block-6\";}s:13:\"array_version\";i:3;}','auto'),(107,'widget_pages','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(108,'widget_calendar','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(109,'widget_archives','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(110,'widget_media_audio','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(111,'widget_media_image','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(112,'widget_media_gallery','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(113,'widget_media_video','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(114,'widget_meta','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(115,'widget_search','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(116,'widget_recent-posts','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(117,'widget_recent-comments','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(118,'widget_tag_cloud','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(119,'widget_nav_menu','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(120,'widget_custom_html','a:1:{s:12:\"_multiwidget\";i:1;}','auto'),(121,'recovery_keys','a:0:{}','off'),(122,'theme_mods_twentytwentyfive','a:2:{s:18:\"custom_css_post_id\";i:-1;s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1750245262;s:4:\"data\";a:3:{s:19:\"wp_inactive_widgets\";a:0:{}s:9:\"sidebar-1\";a:3:{i:0;s:7:\"block-2\";i:1;s:7:\"block-3\";i:2;s:7:\"block-4\";}s:9:\"sidebar-2\";a:2:{i:0;s:7:\"block-5\";i:1;s:7:\"block-6\";}}}}','off'),(123,'_transient_wp_core_block_css_files','a:2:{s:7:\"version\";s:5:\"6.8.1\";s:5:\"files\";a:536:{i:0;s:23:\"archives/editor-rtl.css\";i:1;s:27:\"archives/editor-rtl.min.css\";i:2;s:19:\"archives/editor.css\";i:3;s:23:\"archives/editor.min.css\";i:4;s:22:\"archives/style-rtl.css\";i:5;s:26:\"archives/style-rtl.min.css\";i:6;s:18:\"archives/style.css\";i:7;s:22:\"archives/style.min.css\";i:8;s:20:\"audio/editor-rtl.css\";i:9;s:24:\"audio/editor-rtl.min.css\";i:10;s:16:\"audio/editor.css\";i:11;s:20:\"audio/editor.min.css\";i:12;s:19:\"audio/style-rtl.css\";i:13;s:23:\"audio/style-rtl.min.css\";i:14;s:15:\"audio/style.css\";i:15;s:19:\"audio/style.min.css\";i:16;s:19:\"audio/theme-rtl.css\";i:17;s:23:\"audio/theme-rtl.min.css\";i:18;s:15:\"audio/theme.css\";i:19;s:19:\"audio/theme.min.css\";i:20;s:21:\"avatar/editor-rtl.css\";i:21;s:25:\"avatar/editor-rtl.min.css\";i:22;s:17:\"avatar/editor.css\";i:23;s:21:\"avatar/editor.min.css\";i:24;s:20:\"avatar/style-rtl.css\";i:25;s:24:\"avatar/style-rtl.min.css\";i:26;s:16:\"avatar/style.css\";i:27;s:20:\"avatar/style.min.css\";i:28;s:21:\"button/editor-rtl.css\";i:29;s:25:\"button/editor-rtl.min.css\";i:30;s:17:\"button/editor.css\";i:31;s:21:\"button/editor.min.css\";i:32;s:20:\"button/style-rtl.css\";i:33;s:24:\"button/style-rtl.min.css\";i:34;s:16:\"button/style.css\";i:35;s:20:\"button/style.min.css\";i:36;s:22:\"buttons/editor-rtl.css\";i:37;s:26:\"buttons/editor-rtl.min.css\";i:38;s:18:\"buttons/editor.css\";i:39;s:22:\"buttons/editor.min.css\";i:40;s:21:\"buttons/style-rtl.css\";i:41;s:25:\"buttons/style-rtl.min.css\";i:42;s:17:\"buttons/style.css\";i:43;s:21:\"buttons/style.min.css\";i:44;s:22:\"calendar/style-rtl.css\";i:45;s:26:\"calendar/style-rtl.min.css\";i:46;s:18:\"calendar/style.css\";i:47;s:22:\"calendar/style.min.css\";i:48;s:25:\"categories/editor-rtl.css\";i:49;s:29:\"categories/editor-rtl.min.css\";i:50;s:21:\"categories/editor.css\";i:51;s:25:\"categories/editor.min.css\";i:52;s:24:\"categories/style-rtl.css\";i:53;s:28:\"categories/style-rtl.min.css\";i:54;s:20:\"categories/style.css\";i:55;s:24:\"categories/style.min.css\";i:56;s:19:\"code/editor-rtl.css\";i:57;s:23:\"code/editor-rtl.min.css\";i:58;s:15:\"code/editor.css\";i:59;s:19:\"code/editor.min.css\";i:60;s:18:\"code/style-rtl.css\";i:61;s:22:\"code/style-rtl.min.css\";i:62;s:14:\"code/style.css\";i:63;s:18:\"code/style.min.css\";i:64;s:18:\"code/theme-rtl.css\";i:65;s:22:\"code/theme-rtl.min.css\";i:66;s:14:\"code/theme.css\";i:67;s:18:\"code/theme.min.css\";i:68;s:22:\"columns/editor-rtl.css\";i:69;s:26:\"columns/editor-rtl.min.css\";i:70;s:18:\"columns/editor.css\";i:71;s:22:\"columns/editor.min.css\";i:72;s:21:\"columns/style-rtl.css\";i:73;s:25:\"columns/style-rtl.min.css\";i:74;s:17:\"columns/style.css\";i:75;s:21:\"columns/style.min.css\";i:76;s:33:\"comment-author-name/style-rtl.css\";i:77;s:37:\"comment-author-name/style-rtl.min.css\";i:78;s:29:\"comment-author-name/style.css\";i:79;s:33:\"comment-author-name/style.min.css\";i:80;s:29:\"comment-content/style-rtl.css\";i:81;s:33:\"comment-content/style-rtl.min.css\";i:82;s:25:\"comment-content/style.css\";i:83;s:29:\"comment-content/style.min.css\";i:84;s:26:\"comment-date/style-rtl.css\";i:85;s:30:\"comment-date/style-rtl.min.css\";i:86;s:22:\"comment-date/style.css\";i:87;s:26:\"comment-date/style.min.css\";i:88;s:31:\"comment-edit-link/style-rtl.css\";i:89;s:35:\"comment-edit-link/style-rtl.min.css\";i:90;s:27:\"comment-edit-link/style.css\";i:91;s:31:\"comment-edit-link/style.min.css\";i:92;s:32:\"comment-reply-link/style-rtl.css\";i:93;s:36:\"comment-reply-link/style-rtl.min.css\";i:94;s:28:\"comment-reply-link/style.css\";i:95;s:32:\"comment-reply-link/style.min.css\";i:96;s:30:\"comment-template/style-rtl.css\";i:97;s:34:\"comment-template/style-rtl.min.css\";i:98;s:26:\"comment-template/style.css\";i:99;s:30:\"comment-template/style.min.css\";i:100;s:42:\"comments-pagination-numbers/editor-rtl.css\";i:101;s:46:\"comments-pagination-numbers/editor-rtl.min.css\";i:102;s:38:\"comments-pagination-numbers/editor.css\";i:103;s:42:\"comments-pagination-numbers/editor.min.css\";i:104;s:34:\"comments-pagination/editor-rtl.css\";i:105;s:38:\"comments-pagination/editor-rtl.min.css\";i:106;s:30:\"comments-pagination/editor.css\";i:107;s:34:\"comments-pagination/editor.min.css\";i:108;s:33:\"comments-pagination/style-rtl.css\";i:109;s:37:\"comments-pagination/style-rtl.min.css\";i:110;s:29:\"comments-pagination/style.css\";i:111;s:33:\"comments-pagination/style.min.css\";i:112;s:29:\"comments-title/editor-rtl.css\";i:113;s:33:\"comments-title/editor-rtl.min.css\";i:114;s:25:\"comments-title/editor.css\";i:115;s:29:\"comments-title/editor.min.css\";i:116;s:23:\"comments/editor-rtl.css\";i:117;s:27:\"comments/editor-rtl.min.css\";i:118;s:19:\"comments/editor.css\";i:119;s:23:\"comments/editor.min.css\";i:120;s:22:\"comments/style-rtl.css\";i:121;s:26:\"comments/style-rtl.min.css\";i:122;s:18:\"comments/style.css\";i:123;s:22:\"comments/style.min.css\";i:124;s:20:\"cover/editor-rtl.css\";i:125;s:24:\"cover/editor-rtl.min.css\";i:126;s:16:\"cover/editor.css\";i:127;s:20:\"cover/editor.min.css\";i:128;s:19:\"cover/style-rtl.css\";i:129;s:23:\"cover/style-rtl.min.css\";i:130;s:15:\"cover/style.css\";i:131;s:19:\"cover/style.min.css\";i:132;s:22:\"details/editor-rtl.css\";i:133;s:26:\"details/editor-rtl.min.css\";i:134;s:18:\"details/editor.css\";i:135;s:22:\"details/editor.min.css\";i:136;s:21:\"details/style-rtl.css\";i:137;s:25:\"details/style-rtl.min.css\";i:138;s:17:\"details/style.css\";i:139;s:21:\"details/style.min.css\";i:140;s:20:\"embed/editor-rtl.css\";i:141;s:24:\"embed/editor-rtl.min.css\";i:142;s:16:\"embed/editor.css\";i:143;s:20:\"embed/editor.min.css\";i:144;s:19:\"embed/style-rtl.css\";i:145;s:23:\"embed/style-rtl.min.css\";i:146;s:15:\"embed/style.css\";i:147;s:19:\"embed/style.min.css\";i:148;s:19:\"embed/theme-rtl.css\";i:149;s:23:\"embed/theme-rtl.min.css\";i:150;s:15:\"embed/theme.css\";i:151;s:19:\"embed/theme.min.css\";i:152;s:19:\"file/editor-rtl.css\";i:153;s:23:\"file/editor-rtl.min.css\";i:154;s:15:\"file/editor.css\";i:155;s:19:\"file/editor.min.css\";i:156;s:18:\"file/style-rtl.css\";i:157;s:22:\"file/style-rtl.min.css\";i:158;s:14:\"file/style.css\";i:159;s:18:\"file/style.min.css\";i:160;s:23:\"footnotes/style-rtl.css\";i:161;s:27:\"footnotes/style-rtl.min.css\";i:162;s:19:\"footnotes/style.css\";i:163;s:23:\"footnotes/style.min.css\";i:164;s:23:\"freeform/editor-rtl.css\";i:165;s:27:\"freeform/editor-rtl.min.css\";i:166;s:19:\"freeform/editor.css\";i:167;s:23:\"freeform/editor.min.css\";i:168;s:22:\"gallery/editor-rtl.css\";i:169;s:26:\"gallery/editor-rtl.min.css\";i:170;s:18:\"gallery/editor.css\";i:171;s:22:\"gallery/editor.min.css\";i:172;s:21:\"gallery/style-rtl.css\";i:173;s:25:\"gallery/style-rtl.min.css\";i:174;s:17:\"gallery/style.css\";i:175;s:21:\"gallery/style.min.css\";i:176;s:21:\"gallery/theme-rtl.css\";i:177;s:25:\"gallery/theme-rtl.min.css\";i:178;s:17:\"gallery/theme.css\";i:179;s:21:\"gallery/theme.min.css\";i:180;s:20:\"group/editor-rtl.css\";i:181;s:24:\"group/editor-rtl.min.css\";i:182;s:16:\"group/editor.css\";i:183;s:20:\"group/editor.min.css\";i:184;s:19:\"group/style-rtl.css\";i:185;s:23:\"group/style-rtl.min.css\";i:186;s:15:\"group/style.css\";i:187;s:19:\"group/style.min.css\";i:188;s:19:\"group/theme-rtl.css\";i:189;s:23:\"group/theme-rtl.min.css\";i:190;s:15:\"group/theme.css\";i:191;s:19:\"group/theme.min.css\";i:192;s:21:\"heading/style-rtl.css\";i:193;s:25:\"heading/style-rtl.min.css\";i:194;s:17:\"heading/style.css\";i:195;s:21:\"heading/style.min.css\";i:196;s:19:\"html/editor-rtl.css\";i:197;s:23:\"html/editor-rtl.min.css\";i:198;s:15:\"html/editor.css\";i:199;s:19:\"html/editor.min.css\";i:200;s:20:\"image/editor-rtl.css\";i:201;s:24:\"image/editor-rtl.min.css\";i:202;s:16:\"image/editor.css\";i:203;s:20:\"image/editor.min.css\";i:204;s:19:\"image/style-rtl.css\";i:205;s:23:\"image/style-rtl.min.css\";i:206;s:15:\"image/style.css\";i:207;s:19:\"image/style.min.css\";i:208;s:19:\"image/theme-rtl.css\";i:209;s:23:\"image/theme-rtl.min.css\";i:210;s:15:\"image/theme.css\";i:211;s:19:\"image/theme.min.css\";i:212;s:29:\"latest-comments/style-rtl.css\";i:213;s:33:\"latest-comments/style-rtl.min.css\";i:214;s:25:\"latest-comments/style.css\";i:215;s:29:\"latest-comments/style.min.css\";i:216;s:27:\"latest-posts/editor-rtl.css\";i:217;s:31:\"latest-posts/editor-rtl.min.css\";i:218;s:23:\"latest-posts/editor.css\";i:219;s:27:\"latest-posts/editor.min.css\";i:220;s:26:\"latest-posts/style-rtl.css\";i:221;s:30:\"latest-posts/style-rtl.min.css\";i:222;s:22:\"latest-posts/style.css\";i:223;s:26:\"latest-posts/style.min.css\";i:224;s:18:\"list/style-rtl.css\";i:225;s:22:\"list/style-rtl.min.css\";i:226;s:14:\"list/style.css\";i:227;s:18:\"list/style.min.css\";i:228;s:22:\"loginout/style-rtl.css\";i:229;s:26:\"loginout/style-rtl.min.css\";i:230;s:18:\"loginout/style.css\";i:231;s:22:\"loginout/style.min.css\";i:232;s:25:\"media-text/editor-rtl.css\";i:233;s:29:\"media-text/editor-rtl.min.css\";i:234;s:21:\"media-text/editor.css\";i:235;s:25:\"media-text/editor.min.css\";i:236;s:24:\"media-text/style-rtl.css\";i:237;s:28:\"media-text/style-rtl.min.css\";i:238;s:20:\"media-text/style.css\";i:239;s:24:\"media-text/style.min.css\";i:240;s:19:\"more/editor-rtl.css\";i:241;s:23:\"more/editor-rtl.min.css\";i:242;s:15:\"more/editor.css\";i:243;s:19:\"more/editor.min.css\";i:244;s:30:\"navigation-link/editor-rtl.css\";i:245;s:34:\"navigation-link/editor-rtl.min.css\";i:246;s:26:\"navigation-link/editor.css\";i:247;s:30:\"navigation-link/editor.min.css\";i:248;s:29:\"navigation-link/style-rtl.css\";i:249;s:33:\"navigation-link/style-rtl.min.css\";i:250;s:25:\"navigation-link/style.css\";i:251;s:29:\"navigation-link/style.min.css\";i:252;s:33:\"navigation-submenu/editor-rtl.css\";i:253;s:37:\"navigation-submenu/editor-rtl.min.css\";i:254;s:29:\"navigation-submenu/editor.css\";i:255;s:33:\"navigation-submenu/editor.min.css\";i:256;s:25:\"navigation/editor-rtl.css\";i:257;s:29:\"navigation/editor-rtl.min.css\";i:258;s:21:\"navigation/editor.css\";i:259;s:25:\"navigation/editor.min.css\";i:260;s:24:\"navigation/style-rtl.css\";i:261;s:28:\"navigation/style-rtl.min.css\";i:262;s:20:\"navigation/style.css\";i:263;s:24:\"navigation/style.min.css\";i:264;s:23:\"nextpage/editor-rtl.css\";i:265;s:27:\"nextpage/editor-rtl.min.css\";i:266;s:19:\"nextpage/editor.css\";i:267;s:23:\"nextpage/editor.min.css\";i:268;s:24:\"page-list/editor-rtl.css\";i:269;s:28:\"page-list/editor-rtl.min.css\";i:270;s:20:\"page-list/editor.css\";i:271;s:24:\"page-list/editor.min.css\";i:272;s:23:\"page-list/style-rtl.css\";i:273;s:27:\"page-list/style-rtl.min.css\";i:274;s:19:\"page-list/style.css\";i:275;s:23:\"page-list/style.min.css\";i:276;s:24:\"paragraph/editor-rtl.css\";i:277;s:28:\"paragraph/editor-rtl.min.css\";i:278;s:20:\"paragraph/editor.css\";i:279;s:24:\"paragraph/editor.min.css\";i:280;s:23:\"paragraph/style-rtl.css\";i:281;s:27:\"paragraph/style-rtl.min.css\";i:282;s:19:\"paragraph/style.css\";i:283;s:23:\"paragraph/style.min.css\";i:284;s:35:\"post-author-biography/style-rtl.css\";i:285;s:39:\"post-author-biography/style-rtl.min.css\";i:286;s:31:\"post-author-biography/style.css\";i:287;s:35:\"post-author-biography/style.min.css\";i:288;s:30:\"post-author-name/style-rtl.css\";i:289;s:34:\"post-author-name/style-rtl.min.css\";i:290;s:26:\"post-author-name/style.css\";i:291;s:30:\"post-author-name/style.min.css\";i:292;s:26:\"post-author/editor-rtl.css\";i:293;s:30:\"post-author/editor-rtl.min.css\";i:294;s:22:\"post-author/editor.css\";i:295;s:26:\"post-author/editor.min.css\";i:296;s:25:\"post-author/style-rtl.css\";i:297;s:29:\"post-author/style-rtl.min.css\";i:298;s:21:\"post-author/style.css\";i:299;s:25:\"post-author/style.min.css\";i:300;s:33:\"post-comments-form/editor-rtl.css\";i:301;s:37:\"post-comments-form/editor-rtl.min.css\";i:302;s:29:\"post-comments-form/editor.css\";i:303;s:33:\"post-comments-form/editor.min.css\";i:304;s:32:\"post-comments-form/style-rtl.css\";i:305;s:36:\"post-comments-form/style-rtl.min.css\";i:306;s:28:\"post-comments-form/style.css\";i:307;s:32:\"post-comments-form/style.min.css\";i:308;s:26:\"post-content/style-rtl.css\";i:309;s:30:\"post-content/style-rtl.min.css\";i:310;s:22:\"post-content/style.css\";i:311;s:26:\"post-content/style.min.css\";i:312;s:23:\"post-date/style-rtl.css\";i:313;s:27:\"post-date/style-rtl.min.css\";i:314;s:19:\"post-date/style.css\";i:315;s:23:\"post-date/style.min.css\";i:316;s:27:\"post-excerpt/editor-rtl.css\";i:317;s:31:\"post-excerpt/editor-rtl.min.css\";i:318;s:23:\"post-excerpt/editor.css\";i:319;s:27:\"post-excerpt/editor.min.css\";i:320;s:26:\"post-excerpt/style-rtl.css\";i:321;s:30:\"post-excerpt/style-rtl.min.css\";i:322;s:22:\"post-excerpt/style.css\";i:323;s:26:\"post-excerpt/style.min.css\";i:324;s:34:\"post-featured-image/editor-rtl.css\";i:325;s:38:\"post-featured-image/editor-rtl.min.css\";i:326;s:30:\"post-featured-image/editor.css\";i:327;s:34:\"post-featured-image/editor.min.css\";i:328;s:33:\"post-featured-image/style-rtl.css\";i:329;s:37:\"post-featured-image/style-rtl.min.css\";i:330;s:29:\"post-featured-image/style.css\";i:331;s:33:\"post-featured-image/style.min.css\";i:332;s:34:\"post-navigation-link/style-rtl.css\";i:333;s:38:\"post-navigation-link/style-rtl.min.css\";i:334;s:30:\"post-navigation-link/style.css\";i:335;s:34:\"post-navigation-link/style.min.css\";i:336;s:27:\"post-template/style-rtl.css\";i:337;s:31:\"post-template/style-rtl.min.css\";i:338;s:23:\"post-template/style.css\";i:339;s:27:\"post-template/style.min.css\";i:340;s:24:\"post-terms/style-rtl.css\";i:341;s:28:\"post-terms/style-rtl.min.css\";i:342;s:20:\"post-terms/style.css\";i:343;s:24:\"post-terms/style.min.css\";i:344;s:24:\"post-title/style-rtl.css\";i:345;s:28:\"post-title/style-rtl.min.css\";i:346;s:20:\"post-title/style.css\";i:347;s:24:\"post-title/style.min.css\";i:348;s:26:\"preformatted/style-rtl.css\";i:349;s:30:\"preformatted/style-rtl.min.css\";i:350;s:22:\"preformatted/style.css\";i:351;s:26:\"preformatted/style.min.css\";i:352;s:24:\"pullquote/editor-rtl.css\";i:353;s:28:\"pullquote/editor-rtl.min.css\";i:354;s:20:\"pullquote/editor.css\";i:355;s:24:\"pullquote/editor.min.css\";i:356;s:23:\"pullquote/style-rtl.css\";i:357;s:27:\"pullquote/style-rtl.min.css\";i:358;s:19:\"pullquote/style.css\";i:359;s:23:\"pullquote/style.min.css\";i:360;s:23:\"pullquote/theme-rtl.css\";i:361;s:27:\"pullquote/theme-rtl.min.css\";i:362;s:19:\"pullquote/theme.css\";i:363;s:23:\"pullquote/theme.min.css\";i:364;s:39:\"query-pagination-numbers/editor-rtl.css\";i:365;s:43:\"query-pagination-numbers/editor-rtl.min.css\";i:366;s:35:\"query-pagination-numbers/editor.css\";i:367;s:39:\"query-pagination-numbers/editor.min.css\";i:368;s:31:\"query-pagination/editor-rtl.css\";i:369;s:35:\"query-pagination/editor-rtl.min.css\";i:370;s:27:\"query-pagination/editor.css\";i:371;s:31:\"query-pagination/editor.min.css\";i:372;s:30:\"query-pagination/style-rtl.css\";i:373;s:34:\"query-pagination/style-rtl.min.css\";i:374;s:26:\"query-pagination/style.css\";i:375;s:30:\"query-pagination/style.min.css\";i:376;s:25:\"query-title/style-rtl.css\";i:377;s:29:\"query-title/style-rtl.min.css\";i:378;s:21:\"query-title/style.css\";i:379;s:25:\"query-title/style.min.css\";i:380;s:25:\"query-total/style-rtl.css\";i:381;s:29:\"query-total/style-rtl.min.css\";i:382;s:21:\"query-total/style.css\";i:383;s:25:\"query-total/style.min.css\";i:384;s:20:\"query/editor-rtl.css\";i:385;s:24:\"query/editor-rtl.min.css\";i:386;s:16:\"query/editor.css\";i:387;s:20:\"query/editor.min.css\";i:388;s:19:\"quote/style-rtl.css\";i:389;s:23:\"quote/style-rtl.min.css\";i:390;s:15:\"quote/style.css\";i:391;s:19:\"quote/style.min.css\";i:392;s:19:\"quote/theme-rtl.css\";i:393;s:23:\"quote/theme-rtl.min.css\";i:394;s:15:\"quote/theme.css\";i:395;s:19:\"quote/theme.min.css\";i:396;s:23:\"read-more/style-rtl.css\";i:397;s:27:\"read-more/style-rtl.min.css\";i:398;s:19:\"read-more/style.css\";i:399;s:23:\"read-more/style.min.css\";i:400;s:18:\"rss/editor-rtl.css\";i:401;s:22:\"rss/editor-rtl.min.css\";i:402;s:14:\"rss/editor.css\";i:403;s:18:\"rss/editor.min.css\";i:404;s:17:\"rss/style-rtl.css\";i:405;s:21:\"rss/style-rtl.min.css\";i:406;s:13:\"rss/style.css\";i:407;s:17:\"rss/style.min.css\";i:408;s:21:\"search/editor-rtl.css\";i:409;s:25:\"search/editor-rtl.min.css\";i:410;s:17:\"search/editor.css\";i:411;s:21:\"search/editor.min.css\";i:412;s:20:\"search/style-rtl.css\";i:413;s:24:\"search/style-rtl.min.css\";i:414;s:16:\"search/style.css\";i:415;s:20:\"search/style.min.css\";i:416;s:20:\"search/theme-rtl.css\";i:417;s:24:\"search/theme-rtl.min.css\";i:418;s:16:\"search/theme.css\";i:419;s:20:\"search/theme.min.css\";i:420;s:24:\"separator/editor-rtl.css\";i:421;s:28:\"separator/editor-rtl.min.css\";i:422;s:20:\"separator/editor.css\";i:423;s:24:\"separator/editor.min.css\";i:424;s:23:\"separator/style-rtl.css\";i:425;s:27:\"separator/style-rtl.min.css\";i:426;s:19:\"separator/style.css\";i:427;s:23:\"separator/style.min.css\";i:428;s:23:\"separator/theme-rtl.css\";i:429;s:27:\"separator/theme-rtl.min.css\";i:430;s:19:\"separator/theme.css\";i:431;s:23:\"separator/theme.min.css\";i:432;s:24:\"shortcode/editor-rtl.css\";i:433;s:28:\"shortcode/editor-rtl.min.css\";i:434;s:20:\"shortcode/editor.css\";i:435;s:24:\"shortcode/editor.min.css\";i:436;s:24:\"site-logo/editor-rtl.css\";i:437;s:28:\"site-logo/editor-rtl.min.css\";i:438;s:20:\"site-logo/editor.css\";i:439;s:24:\"site-logo/editor.min.css\";i:440;s:23:\"site-logo/style-rtl.css\";i:441;s:27:\"site-logo/style-rtl.min.css\";i:442;s:19:\"site-logo/style.css\";i:443;s:23:\"site-logo/style.min.css\";i:444;s:27:\"site-tagline/editor-rtl.css\";i:445;s:31:\"site-tagline/editor-rtl.min.css\";i:446;s:23:\"site-tagline/editor.css\";i:447;s:27:\"site-tagline/editor.min.css\";i:448;s:26:\"site-tagline/style-rtl.css\";i:449;s:30:\"site-tagline/style-rtl.min.css\";i:450;s:22:\"site-tagline/style.css\";i:451;s:26:\"site-tagline/style.min.css\";i:452;s:25:\"site-title/editor-rtl.css\";i:453;s:29:\"site-title/editor-rtl.min.css\";i:454;s:21:\"site-title/editor.css\";i:455;s:25:\"site-title/editor.min.css\";i:456;s:24:\"site-title/style-rtl.css\";i:457;s:28:\"site-title/style-rtl.min.css\";i:458;s:20:\"site-title/style.css\";i:459;s:24:\"site-title/style.min.css\";i:460;s:26:\"social-link/editor-rtl.css\";i:461;s:30:\"social-link/editor-rtl.min.css\";i:462;s:22:\"social-link/editor.css\";i:463;s:26:\"social-link/editor.min.css\";i:464;s:27:\"social-links/editor-rtl.css\";i:465;s:31:\"social-links/editor-rtl.min.css\";i:466;s:23:\"social-links/editor.css\";i:467;s:27:\"social-links/editor.min.css\";i:468;s:26:\"social-links/style-rtl.css\";i:469;s:30:\"social-links/style-rtl.min.css\";i:470;s:22:\"social-links/style.css\";i:471;s:26:\"social-links/style.min.css\";i:472;s:21:\"spacer/editor-rtl.css\";i:473;s:25:\"spacer/editor-rtl.min.css\";i:474;s:17:\"spacer/editor.css\";i:475;s:21:\"spacer/editor.min.css\";i:476;s:20:\"spacer/style-rtl.css\";i:477;s:24:\"spacer/style-rtl.min.css\";i:478;s:16:\"spacer/style.css\";i:479;s:20:\"spacer/style.min.css\";i:480;s:20:\"table/editor-rtl.css\";i:481;s:24:\"table/editor-rtl.min.css\";i:482;s:16:\"table/editor.css\";i:483;s:20:\"table/editor.min.css\";i:484;s:19:\"table/style-rtl.css\";i:485;s:23:\"table/style-rtl.min.css\";i:486;s:15:\"table/style.css\";i:487;s:19:\"table/style.min.css\";i:488;s:19:\"table/theme-rtl.css\";i:489;s:23:\"table/theme-rtl.min.css\";i:490;s:15:\"table/theme.css\";i:491;s:19:\"table/theme.min.css\";i:492;s:24:\"tag-cloud/editor-rtl.css\";i:493;s:28:\"tag-cloud/editor-rtl.min.css\";i:494;s:20:\"tag-cloud/editor.css\";i:495;s:24:\"tag-cloud/editor.min.css\";i:496;s:23:\"tag-cloud/style-rtl.css\";i:497;s:27:\"tag-cloud/style-rtl.min.css\";i:498;s:19:\"tag-cloud/style.css\";i:499;s:23:\"tag-cloud/style.min.css\";i:500;s:28:\"template-part/editor-rtl.css\";i:501;s:32:\"template-part/editor-rtl.min.css\";i:502;s:24:\"template-part/editor.css\";i:503;s:28:\"template-part/editor.min.css\";i:504;s:27:\"template-part/theme-rtl.css\";i:505;s:31:\"template-part/theme-rtl.min.css\";i:506;s:23:\"template-part/theme.css\";i:507;s:27:\"template-part/theme.min.css\";i:508;s:30:\"term-description/style-rtl.css\";i:509;s:34:\"term-description/style-rtl.min.css\";i:510;s:26:\"term-description/style.css\";i:511;s:30:\"term-description/style.min.css\";i:512;s:27:\"text-columns/editor-rtl.css\";i:513;s:31:\"text-columns/editor-rtl.min.css\";i:514;s:23:\"text-columns/editor.css\";i:515;s:27:\"text-columns/editor.min.css\";i:516;s:26:\"text-columns/style-rtl.css\";i:517;s:30:\"text-columns/style-rtl.min.css\";i:518;s:22:\"text-columns/style.css\";i:519;s:26:\"text-columns/style.min.css\";i:520;s:19:\"verse/style-rtl.css\";i:521;s:23:\"verse/style-rtl.min.css\";i:522;s:15:\"verse/style.css\";i:523;s:19:\"verse/style.min.css\";i:524;s:20:\"video/editor-rtl.css\";i:525;s:24:\"video/editor-rtl.min.css\";i:526;s:16:\"video/editor.css\";i:527;s:20:\"video/editor.min.css\";i:528;s:19:\"video/style-rtl.css\";i:529;s:23:\"video/style-rtl.min.css\";i:530;s:15:\"video/style.css\";i:531;s:19:\"video/style.min.css\";i:532;s:19:\"video/theme-rtl.css\";i:533;s:23:\"video/theme-rtl.min.css\";i:534;s:15:\"video/theme.css\";i:535;s:19:\"video/theme.min.css\";}}','on'),(130,'_transient_wp_styles_for_blocks','a:2:{s:4:\"hash\";s:32:\"1a7f8946efbf284a4c14585980ade540\";s:6:\"blocks\";a:5:{s:11:\"core/button\";s:0:\"\";s:14:\"core/site-logo\";s:0:\"\";s:18:\"core/post-template\";s:0:\"\";s:12:\"core/columns\";s:0:\"\";s:14:\"core/pullquote\";s:69:\":root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}\";}}','on'),(131,'_site_transient_update_core','O:8:\"stdClass\":4:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":10:{s:8:\"response\";s:6:\"latest\";s:8:\"download\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.8.1.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":5:{s:4:\"full\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.8.1.zip\";s:10:\"no_content\";s:70:\"https://downloads.wordpress.org/release/wordpress-6.8.1-no-content.zip\";s:11:\"new_bundled\";s:71:\"https://downloads.wordpress.org/release/wordpress-6.8.1-new-bundled.zip\";s:7:\"partial\";s:0:\"\";s:8:\"rollback\";s:0:\"\";}s:7:\"current\";s:5:\"6.8.1\";s:7:\"version\";s:5:\"6.8.1\";s:11:\"php_version\";s:6:\"7.2.24\";s:13:\"mysql_version\";s:5:\"5.5.5\";s:11:\"new_bundled\";s:3:\"6.7\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1750246239;s:15:\"version_checked\";s:5:\"6.8.1\";s:12:\"translations\";a:0:{}}','off'),(166,'_site_transient_timeout_php_check_38979a08dcd71638878b7b4419751271','1750785412','off'),(167,'_site_transient_php_check_38979a08dcd71638878b7b4419751271','a:5:{s:19:\"recommended_version\";s:3:\"7.4\";s:15:\"minimum_version\";s:6:\"7.2.24\";s:12:\"is_supported\";b:1;s:9:\"is_secure\";b:1;s:13:\"is_acceptable\";b:1;}','off'),(168,'_transient_health-check-site-status-result','{\"good\":18,\"recommended\":5,\"critical\":0}','on'),(181,'_site_transient_timeout_browser_0fe6feb54289f4c67027ec06cc2131f8','1750849979','off'),(182,'_site_transient_browser_0fe6feb54289f4c67027ec06cc2131f8','a:10:{s:4:\"name\";s:6:\"Chrome\";s:7:\"version\";s:9:\"137.0.0.0\";s:8:\"platform\";s:7:\"Windows\";s:10:\"update_url\";s:29:\"https://www.google.com/chrome\";s:7:\"img_src\";s:43:\"http://s.w.org/images/browsers/chrome.png?1\";s:11:\"img_src_ssl\";s:44:\"https://s.w.org/images/browsers/chrome.png?1\";s:15:\"current_version\";s:2:\"18\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;s:6:\"mobile\";b:0;}','off'),(184,'_site_transient_timeout_community-events-27942e5093522bc034c075ad1ffdc11d','1750288383','off'),(185,'_site_transient_community-events-27942e5093522bc034c075ad1ffdc11d','a:4:{s:9:\"sandboxed\";b:0;s:5:\"error\";N;s:8:\"location\";a:1:{s:2:\"ip\";s:13:\"103.244.179.0\";}s:6:\"events\";a:1:{i:0;a:10:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:72:\"Deep Dives: The Future of Agencies (How Businesses Scale With the Cloud)\";s:3:\"url\";s:64:\"https://www.meetup.com/wordpress-karachi-meetup/events/308525351\";s:6:\"meetup\";s:24:\"WordPress Karachi Meetup\";s:10:\"meetup_url\";s:48:\"https://www.meetup.com/WordPress-Karachi-Meetup/\";s:4:\"date\";s:19:\"2025-06-19 17:00:00\";s:8:\"end_date\";s:19:\"2025-06-19 19:00:00\";s:20:\"start_unix_timestamp\";i:1750334400;s:18:\"end_unix_timestamp\";i:1750341600;s:8:\"location\";a:4:{s:8:\"location\";s:17:\"Karachi, Pakistan\";s:7:\"country\";s:2:\"pk\";s:8:\"latitude\";d:24.881730999999998488192431977950036525726318359375;s:9:\"longitude\";d:67.111660000000000536601874046027660369873046875;}}}}','off'),(186,'_transient_timeout_feed_9bbd59226dc36b9b26cd43f15694c5c3','1750288383','off'),(187,'_transient_feed_9bbd59226dc36b9b26cd43f15694c5c3','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:52:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:8:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"The latest news about WordPress and the WordPress community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 12 Jun 2025 14:44:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://wordpress.org/?v=6.9-alpha-60318\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"image\";a:1:{i:0;a:6:{s:4:\"data\";s:11:\"\n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:3:\"url\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://s.w.org/favicon.ico?2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"width\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:6:\"height\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:63:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"WCEU 2025: A Community Celebration in the Swiss Sun\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"https://wordpress.org/news/2025/06/wceu-2025-a-community-celebration-in-the-swiss-sun/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 19:19:18 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:4:\"WCEU\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18776\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:362:\"Over 1,723 attendees from 84 countries gathered at the Messe and Congress Center Basel in Switzerland, and 20,353 more joined online for WordCamp Europe 2025. I’m personally very excited… There’s so much I want to do. I think there’s a clear pathway to 7.0 and beyond. Matt Mullenweg, WordPress Cofounder The flagship WordPress event kicked […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:60714:\"\n
\"\"
Photo by Nilo Velez
\n\n\n\n

Over 1,723 attendees from 84 countries gathered at the Messe and Congress Center Basel in Switzerland, and 20,353 more joined online for WordCamp Europe 2025.

\n\n\n\n
\n

I’m personally very excited… There’s so much I want to do. I think there’s a clear pathway to 7.0 and beyond.

Matt Mullenweg, WordPress Cofounder
\n
\n\n\n\n

The flagship WordPress event kicked off in Basel, Switzerland, with a dedicated Contributor Day. It was followed by two days of engaging talks, panels, hands-on workshops, and vibrant community connections. WordPress Cofounder Matt Mullenweg and Executive Director Mary Hubbard joined a diverse lineup of speakers and panelists, sharing insights in the heart of one of Europe’s most charming cities.

\n\n\n\n

Set against the backdrop of Basel’s historic streets and Rhine-side views, the sponsor hall buzzed with activity as companies from across the WordPress ecosystem showcased their latest innovations, offered live demos, and connected with attendees. Each day, participants refueled with a range of local and international cuisine — from Swiss specialties to global favorites — making mealtime a lively space for networking, collaboration, and sparking new ideas.

\n\n\n\n

A Global Gathering in Basel

\n\n\n\n

WordCamp Europe has long been one of the most anticipated WordPress events of the year — a space where community, creativity, and collaboration thrive. This year in Basel, the conference delivered an exciting and diverse program that reached every corner of the WordPress ecosystem.

\n\n\n\n

Here’s what attendees experienced:

\n\n\n\n\n\n\n\n

Contributor Day

\n\n\n\n

WordCamp Europe began with a vibrant Contributor Day that brought together 640 contributors—including many first-timers—to collaborate, share knowledge, and support the WordPress project. Guided by 33 dedicated table leads, with 21 teams, attendees of all experience levels came together to exchange ideas, solve real challenges, and make meaningful contributions to open source. From accessibility improvements to theme development and translation efforts, every table played a part in moving WordPress forward.

\n\n\n\n\n\n\n\n

Contributor Day at WordCamp Europe 2025 brought together a mix of first-time and returning contributors across a wide range of teams, from Core and Accessibility to Polyglots, Training, and Community. Attendees tackled everything from onboarding and ticket triage to translating strings, improving documentation, and enhancing tools and workflows. Development-focused teams explored performance and testing improvements and worked through live coding exercises. Meanwhile, accessibility testers, support volunteers, and photo moderators contributed to efforts that directly impact users around the world.

\n\n\n\n

In parallel, teams like Marketing, Meta, Hosting, and Sustainability focused on future-facing initiatives—from promoting WordPress through the Showcase and social media campaigns to refining infrastructure, increasing accessibility, and preparing for long-term project growth. Whether contributing to plugins, themes, documentation, or new contributor experiences, participants reinforced the values that power the WordPress project: collaboration, inclusivity, and openness. The day served as a reminder that WordPress is not just software—it’s a community built by and for everyone.

\n\n\n\n

Tomorrow Starts with WordPress

\n\n\n\n

The first full day of WordCamp Europe 2025 brought the community together to celebrate the power of open source collaboration and innovation. Opening remarks from both global and local event leads reflected on the journey of WordCamp Europe—from its beginnings in 2013 in Leiden, Netherlands, to the vibrant event in Basel today. This full-circle moment underscored the growth of the WordPress community, united by a shared commitment to an open web.

\n\n\n\n

The day launched into an inspiring program with the keynote session, WordPress Without Borders – The Fight for Digital Freedom, delivered by Noel Tock. Drawing from his experiences—including time on the frontlines in Ukraine—Tock illustrated how open source supports global resilience and serves as a digital human right. His message called on contributors to see their work as part of something greater, offering a compelling and forward-looking vision to energize and unify the WordPress community.

\n\n\n\n
\n\n
\n\n\n\n

From there, the program unfolded across multiple tracks—each one sparking new conversations and insights. One standout session highlighted social entrepreneurship in Bulgaria, where WordPress is helping grassroots organizations drive change in education, journalism, and social justice. Petya Raykovska shared how nonprofits like Teenovator and the Bulgarian Fund for Women are using WordPress to amplify their work and strengthen their communities.

\n\n\n\n

Designers and developers explored ways to improve workflows and collaboration. In Bridging Design and Development, attendees learned how Figma Design Systems can connect design and development through shared structures mapped to block themes. Real-world examples, like the Novus Media Newspaper Design System, demonstrated how scalable, consistent design can power multi-brand platforms.

\n\n\n\n

Workshops played a key role throughout the day, including the interactive Block Developer Cookbook: WCEU 2025 Edition, where attendees worked through community-voted code recipes featuring the latest WordPress APIs. Sessions also dove into emerging technologies, such as Automating WordPress Setup with Modern AI Tools, which showcased how WP-CLI, scripting, and AI can accelerate project setup and reduce repetitive tasks.

\n\n\n\n
\"\"
Photo by Marc Wieland
\n\n\n\n

Day Two of WordCamp Europe 2025 opened with a focus on the evolving role of the WordPress community in a rapidly changing digital world. Sessions explored how contributors—from local meetup organizers to global advocates—play a vital part in shaping WordPress’s future. Talks on inclusivity, such as Over the Rainbow, encouraged attendees to consider how individual actions can help build a more welcoming, representative open source ecosystem. Throughout the morning, the spirit of collaboration and shared purpose remained front and center.

\n\n\n\n

As the day progressed, attention turned to the tools and technologies pushing WordPress forward. From sessions on scaling multilingual sites and managing observability to hands-on workshops, developers explored new ways to streamline workflows and enhance performance. Highlights included WordPress Gems for Devs, which introduced the Interactivity API through live coding, and Client-side Web AI Agents, a look at cutting-edge browser-based AI that unlocks new possibilities for web experiences. These talks reflected the platform’s growing capacity to adapt to emerging trends while staying true to its open foundations.

\n\n\n\n

The afternoon brought a blend of practical guidance and inspiring stories across tracks. A case study on accessibility from Switzerland showed how thoughtful design can benefit all users, while a session on brand-building for women entrepreneurs highlighted the creative and economic opportunities WordPress enables. With topics spanning content strategy, business growth, regulatory readiness, and more, the second day of WCEU 2025 affirmed the strength of the WordPress ecosystem—not only as a technology platform, but as a global movement fueled by people, purpose, and possibility.

\n\n\n\n

Fireside Chat

\n\n\n\n

As the final day drew to a close, Matt and Mary shared some thoughts on EU regulation (Open Web Alliance), AI, and the introduction of the WordPress AI team, and then answered questions from the audience.

\n\n\n\n
\n\n
\n\n\n\n

Closing

\n\n\n\n

A heartfelt thank you to the dedicated organizers who brought WordCamp Europe 2025 to life in Basel, the speakers who shared their insights, the attendees who joined us in person, and those who followed along from afar. We hope you leave with fresh ideas, meaningful connections, and renewed energy to help shape the future of the open web.

\n\n\n\n\n\n\n\n

Be sure to mark your calendars for the final major WordPress events in 2025: WordCamp US (Portland, Oregon, USA). Then join us in Kraków, Poland for WordCamp Europe 2026! Also, if you want to get involved with WCEU, the call for organisers is already open for 2026.

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18776\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"Announcing the Formation of the WordPress AI Team\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://wordpress.org/news/2025/05/announcing-the-formation-of-the-wordpress-ai-team/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 May 2025 16:28:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18769\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:397:\"Today, I’m pleased to announce the formation of a new WordPress AI Team, a dedicated group focused on accelerating and coordinating artificial intelligence projects across the WordPress ecosystem. AI is already transforming how people create and manage content online. As this technology evolves, it’s essential that WordPress remains at the forefront, ensuring innovation happens in […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mary Hubbard\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2961:\"\n

Today, I’m pleased to announce the formation of a new WordPress AI Team, a dedicated group focused on accelerating and coordinating artificial intelligence projects across the WordPress ecosystem.

\n\n\n\n

AI is already transforming how people create and manage content online. As this technology evolves, it’s essential that WordPress remains at the forefront, ensuring innovation happens in the open, guided by community values, and built to core standards.

\n\n\n\n

Why This Matters

\n\n\n\n\n\n\n\n

What to Expect

\n\n\n\n

The AI Team will:

\n\n\n\n\n\n\n\n

Meet the Team

\n\n\n\n

The WordPress AI Team brings deep experience in open-source, performance, and product development and a strong commitment to building AI features the WordPress way. The team will launch with the following team contributors:

\n\n\n\n\n\n\n\n

To help get things started, James and Felix will serve as the initial Team Reps in supporting team organization, communication, and coordination with other Make WordPress teams.

\n\n\n\n

This is an exciting and important step in WordPress’s evolution. I look forward to seeing what we’ll create together and in the open.

\n\n\n\n

If you’re interested in contributing or following along, please join the conversations in #core-ai and watch for upcoming meeting announcements on https://make.wordpress.org/ai/.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18769\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"WordPress Campus Connect Expands\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"https://wordpress.org/news/2025/05/wordpress-campus-connect-expands/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 07 May 2025 12:40:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18726\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:391:\"WordPress Campus Connect, initially launched in October 2024 as a pilot program, has now been formally established as an official event series due to its resounding success. The inaugural program, spearheaded by myself, Anand Upadhyay, garnered immense enthusiasm from 400 Indian students who were eager to engage in hands-on WordPress training. WordPress Campus Connect transcends […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Anand Upadhyay\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:27805:\"\n

WordPress Campus Connect, initially launched in October 2024 as a pilot program, has now been formally established as an official event series due to its resounding success. The inaugural program, spearheaded by myself, Anand Upadhyay, garnered immense enthusiasm from 400 Indian students who were eager to engage in hands-on WordPress training.

\n\n\n\n\n\n\n\n

WordPress Campus Connect transcends the conventional workshop model by fostering a holistic learning community. It couples on-campus event learning with a diverse range of post-event activities, including meetups, website challenges, scholarships, and volunteering opportunities, all geared towards nurturing student development. The program’s efficacy has prompted other organizations in India to express interest in replicating its structure.

\n\n\n\n

Looking ahead, multiple local WordPress communities in India aim to reach more students in India through WordPress Campus Connect events. The curriculum will include beginner content, delve into more advanced WordPress concepts, and feature specialized sessions tailored for students with prior WordPress experience. 

\n\n\n\n
\n
\"\"
\n
\n\n\n\n

The official recognition of WordPress Campus Connect as an event series paves the way for further expansion, giving the series similar support and standing as WordCamps but with a student education-first goal and focus. Future plans include organizing large-scale student events, establishing WordPress clubs on college campuses, and facilitating mentorship connections for students.

\n\n\n\n

To support these ambitious goals, volunteers identified several key next steps:

\n\n\n\n\n\n\n\n

The overwhelming success of WordPress Campus Connect and the enthusiasm it has generated serve as a testament to the transformative power of passion and dedication. As WordPress Campus Connect continues to evolve and expand, it holds the promise of shaping the future of WordPress education and community engagement.

\n\n\n\n

If you’re interested in helping shape the future of education with WordPress, join us in the #campusconnect Make Slack channel today!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18726\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"WordPress 6.8.1 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/04/wordpress-6-8-1-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 30 Apr 2025 17:17:09 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18721\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:371:\"WordPress 6.8.1 is now available! This minor release includes fixes for 15 bugs throughout Core and the Block Editor addressing issues affecting multiple areas of WordPress including the block editor, multisite, and REST API. For a full list of bug fixes, please refer to the release candidate announcement. WordPress 6.8.1 is a short-cycle maintenance release. […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Aaron Jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:6967:\"\n

WordPress 6.8.1 is now available!

\n\n\n\n

This minor release includes fixes for 15 bugs throughout Core and the Block Editor addressing issues affecting multiple areas of WordPress including the block editor, multisite, and REST API. For a full list of bug fixes, please refer to the release candidate announcement.

\n\n\n\n

WordPress 6.8.1 is a short-cycle maintenance release. More maintenance releases will be made available throughout 2025.

\n\n\n\n

If you have sites that support automatic background updates, the update process will begin automatically.

\n\n\n\n

You can download WordPress 6.8.1 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please visit the HelpHub site.

\n\n\n\n

Thank you to these WordPress contributors

\n\n\n\n

This release was led by Aaron Jorbin.

\n\n\n\n

WordPress 6.8.1 would not have been possible without the contributions of the following people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.

\n\n\n\n

Aaron Jorbin, Adam Silverstein, Aki Hamano, Ankit Panchal, bernhard-reiter, Carolina Nymark, Code Amp, Daniel Richards, David Baumwald, David Levine, Dilip Bheda, Dion Hulse, dsawyers, eduwass, Erick Hitter, Estela Rueda, Fabian Kägy, George Mamadashvili, Greg Ziółkowski, H. Kabir, hideishi, Himanshu Pathak, jarekmorawski, Jb Audras, Jeffrey Paul, Jeffro, Jeremy Felt, Joe Dolson, Joe McGill, Joen A., John James Jacoby, Jonathan Desrosiers, Jonny Harris, Joshua Goode, Karthikeya Bethu, Kingsley Felix, Konstantin Obenland, Lena Morita, LilGames, megane9988, Michelle Schulp Hunt, Mitchell Austin, Mukesh Panchal, nickwilmot, Nikunj Hatkar, Pascal Birchler, Paul Biron, Peter Wilson, Pratik Londhe, Presskopp, Sainath Poojary, Scott Kingsley Clark, Scott Reilly, Sergey Biryukov, SirLouen, Sören Wünsch, Sourav Pahwa, Stephen Bernhardt, takuword, Tushar Patel, Weston Ruter, Yogesh Bhutkar

\n\n\n\n

How to contribute

\n\n\n\n

To get involved in WordPress core development, head over to Trac, pick a ticket, and join the conversation in the #core and #6-8-release-leads channels. Need help? Check out the Core Contributor Handbook.

\n\n\n\n

Props to @estelaris and @joedolson for proofreading.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18721\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"WordPress Jubilee\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://wordpress.org/news/2025/04/jubilee/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 22 Apr 2025 02:07:36 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18716\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:289:\"As I said, we’re dropping all the human blocks. Community guidelines, directory guidelines, and such will need to be followed going forward, but whatever blocks were in place before are now cleared. It may take a few days, but any pre-existing blocks are considered bugs to be fixed.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:298:\"\n

As I said, we’re dropping all the human blocks. Community guidelines, directory guidelines, and such will need to be followed going forward, but whatever blocks were in place before are now cleared. It may take a few days, but any pre-existing blocks are considered bugs to be fixed.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18716\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:66:\"\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"WordPress 6.8 “Cecil”\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:41:\"https://wordpress.org/news/2025/04/cecil/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 15 Apr 2025 17:00:45 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:4:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18701\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:395:\"WordPress 6.8, code-named “Cecil,” refines your creative workflow with a streamlined Style Book, now available in select Classic themes. Enjoy faster navigation via speculative loading, stronger security with bcrypt password hashing, and over 100 accessibility improvements. With thoughtful editor upgrades and behind-the-scenes performance boosts, 6.8 delivers polish, power, and precision.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:80555:\"\n
\"Simulated
\n\n\n\n

Each WordPress release celebrates an artist who has left an indelible mark on music.  WordPress 6.8, code-named “Cecil,” honors the legendary pianist and jazz pioneer Cecil Taylor.

\n\n\n\n

Classically trained yet relentlessly unconventional, Taylor reimagined the piano as a percussive instrument—layering tone clusters, polyphony, and rhythm into a sound both chaotic and precise. His music defied expectation, finding form in disorder and harmony in dissonance.

\n\n\n\n

That same spirit drives WordPress 6.8. Embrace its bold new features with the same curiosity and experimentation that defined Cecil’s sound.

\n\n\n\n

Welcome to WordPress 6.8!

\n\n\n\n

WordPress 6.8 polishes and refines the tools that you use every day, making your site faster, more secure, and easier to manage.  The Style Book now has a structured layout and works with Classic themes, giving you more control over global styles. Speculative loading speeds up navigation by preloading links before users navigate to them, bcrypt hashing strengthens password security automatically, and database optimizations improve performance.

\n\n\n\n

Download WordPress 6.8 “Cecil”

\n\n\n\n

A release polished to a high sheen.

\n\n\n\n

The Style Book gets a cleaner look—and a few new tricks.

\n\n\n\n

The Style Book has a new, structured layout and clearer labels, to make it even easier to edit colors, typography—almost all your site styles—in one place.

\n\n\n\n

Plus, now you can see it in Classic themes that have editor-styles or a theme.json file.  Find the Style Book under Appearance > Design and use it to preview your theme’s evolution, as you edit CSS or make changes in the Customizer.

\n\n\n\n
\"\"
\n\n\n\n

Editor improvements

\n\n\n\n

Easier ways to see your options in Data Views, and you can exclude sticky posts from the Query Loop.  Plus, you’ll find lots of little improvements in the editor that smooth your way through everything you build.

\n\n\n\n
\"\"
\n\n\n\n

Near-instant page loads, thanks to Speculative Loading

\n\n\n\n

In WordPress 6.8, pages load faster than ever.  When you or your user hovers over or clicks a link, WordPress may preload the next page, for a smoother, near-instant experience. The system balances speed and efficiency, and you can control how it works, with a plugin or your own code.  This feature only works in modern browsers—older ones will simply ignore it without any impact.

\n\n\n\n
\"\"
\n\n\n\n

Stronger password security with bcrypt

\n\n\n\n

Now passwords are harder to crack with bcrypt hashing, which takes a lot more computing power to break.  This strengthens overall security, as do other encryption improvements across WordPress.  You don’t need to do anything—everything updates automatically.

\n\n\n\n
\"\"
\n\n\n\n

Accessibility improvements

\n\n\n\n

100+ accessibility fixes and enhancements touch a broad spectrum of the WordPress experience.  This release includes fixes to every bundled theme, improvements to the navigation menu management, the customizer, and simplified labeling.  The Block Editor has over 70 improvements to blocks, DataViews, and to its overall user experience.

\n\n\n\n

Performance updates

\n\n\n\n

WordPress 6.8 packs a wide range of performance fixes and enhancements to speed up everything from editing to browsing.  Beyond speculative loading, WordPress 6.8 pays special attention to the block editor, block type registration, and query caching.  Plus, imagine never waiting longer than 50 milliseconds—for any interaction.  In WordPress 6.8, the Interactivity API takes a first step toward that goal.

\n\n\n\n

And much more

\n\n\n\n

For a comprehensive overview of all the new features and enhancements in WordPress 6.8, please visit the feature-showcase website.

\n\n\n\n

Check out what’s new

\n\n\n\n

Learn more about WordPress 6.8

\n\n\n\n

Learn WordPress is a free resource for new and experienced WordPress users.  Learn is stocked with how-to videos on using various features in WordPress, interactive workshops for exploring topics in-depth, and lesson plans for diving deep into specific areas of WordPress.

\n\n\n\n

Read the WordPress 6.8 Release Notes for information on installation, enhancements, fixed issues, release contributors, learning resources, and the list of file changes.

\n\n\n\n

Explore the WordPress 6.8 Field Guide.  Learn about the changes in this release with detailed developer notes to help you build with WordPress.

\n\n\n\n

The 6.8 release squad

\n\n\n\n

Every release comes to you from a dedicated team of enthusiastic contributors who help keep things on track and moving smoothly.  The team that has led 6.8 is a cross-functional group of contributors who are always ready to champion ideas, remove blockers, and resolve issues.

\n\n\n\n\n\n\n\n

Thank you, contributors

\n\n\n\n

The mission of WordPress is to democratize publishing and embody the freedoms that come with open source.  A global and diverse community of people collaborating to strengthen the software supports this effort.

\n\n\n\n

WordPress 6.8 reflects the tireless efforts and passion of more than 900 contributors in more than 60 countries all over the world. This release also welcomed over 250 first-time contributors! 

\n\n\n\n

Their collaboration delivered more than 320 enhancements and fixes, ensuring a stable release for all—a testament to the power and capability of the WordPress open source community.

\n\n\n

Aaron Jorbin · Aaron Robertshaw · Aashish Sharma · Abha Thakor · Abhay Kulkarni · Abhishek Sharma · AdaKaleh · Adam Silverstein · Adam Zieliński · Adhun Anand · Aditya Bansode · Adrian Jagusch · aduth · Ahir Hemant · Ahmar Zaidi · Ahmed Kabir Chaion · Ahmed Saeed · Ahsan Khan · Aishwarrya Pande · Ajay Ghaghretiya · Ajay Maurya · Ajit Bohra · Akanshu Singh · Aki Hamano · Akira Tachibana · aks30498 · Akshat Kakkad · Akshay Dhere · Albert Juhé Lluveras · Alessio · Alex Concha · Alex Florisca · Alex Lende · Alex Stine · Alexander Bigga · Alexandre Buffet · Alexei Samarschi · alexschmitz · Ali Akbar Reyad · allilevine · alpipego · Alvaro Gómez · Amaan Khan · Amber Hinds · Amimul Ihsan · Amin · Amin Charoliya · Amit Bhosale · Amit Raj · Ammar Mohamed Fath Allah Abd-Elaaty Massoud · amolebonde · Anand Raj · Anders Norén · Andrea Fercia · Andrea Roenning · Andreas Pedersen · Andrei Draganescu · Andrei Lupu · Andrew Nacin · Andrew Ozz · Andrew Serong · Andrew Ssanya · Andrey \"Rarst\" Savchenko · André Maneiro · Andy Fragen · Anh Tran · Ankit Gade · Ankit K Gupta · Ankit Kumar Shah · Ankit Panchal · Ankit Patel · Anmol Verma · annchichi · Anne-Mieke Bovelett · annezazu · Anthony Burchell · Anthony Hortin · Anton Vlasenko · Anuj Singh · Anveshika Srivastava · Ari Stathopoulos · Ariel Maidana · arnaudbroes · arnoutblueshell · Artemio Morales · Ashish Jain · Asish Chandra Mohon · Au · autotutorial · Ayesh Karunaratne · Azhar Deraiya · Béryl de La Grandière · back2backdvm · BackuPs · Balu B · Barry · Bayejid Ahmed · Beatriz Fialho · ben · Ben Dwyer · Ben Sutcliffe · Benazeer · Benedikt Ledl · Benjamin Zekavica · Benoit Chantre · bernhard-reiter · Bero · bgermann · Bhavik Kalpesh · Bijit Deb · Birgir Erlendsson (birgire) · Birgit Pauli-Haack · Bishal Shrestha · BjornW · bluantinoo · BogdanUngureanu · Boro Sitnikovski · Brad · Brad Jorsch · Bradley Taylor · Brandon Hubbard · Brandon Payton · brettsmason · brevilo · Brian Alexander · Brian Coords · Brian Haas · Bronson Quick · Bryan Schneidewind · burak · burnuser · Calvin Alkan · Calvin Alkan · Carlos Bravo · Carolina Nymark · cbirdsong · cgastrell · charleslf · chiilog (Chiaki Okamoto) · chintanmachhi207 · ChriCo · chriscct7 · chrisdotdotdot · Christoph Daum · claimableperch · Claudiu Lodromanean · Code Amp · codebymikey · codersantosh · Colin Stewart · ColinD · colinleroy · Corey Worrell · Courtney Robertson · Cris Busquets · Crisoforo Gaspar · ctienshi · cweiske · cybeardjm · Cyrille · Cyrille Sanson · Daedalon · Dakota Chichester · Damien Alleyne · Damon Cook · Dan Knauss · danht · Dani Guardiola · Daniel Bachhuber · Daniel Post · Daniel Richards · Daniele Scasciafratte · danielpataki · danielvann · Darin Kotter · Darren Hewer · Dave Loodts · David Aguilera · David Arenas · David Arnado · David Baumwald · David Biňovec · David Bowman · David Calhoun · David FARGIER · David Herrera · David Innes · David Levine · David Rozando · David Shanske · David Smith · daymobrew · deadduck169 · Dean Sas · Debabrata Karfa · DEBARGHYA BANERJEE · Deep Patel · Deepak Rohilla · Dennis Ploetner · Dennis Snell · Densi Nakum · designsimply · Devansh Chaudhary · Dhananjay Kuber · Dharmesh Patel · Dhaval Kapadane · Dheeraj Bhosale · Dhrumil Kumbhani · Dhruvang21 · Dhruvi Shah · Dhruvik Malaviya · Digvijay Zite · dilip · Dilip Bheda · Dilip Hingarajiya · Dilip Modhavadiya · DingGuodong · Dion Hulse · Divyesh_kakrecha · dj.cowan · Django · dnnsjsk · Doeke Norg · dogee · domenicdenicola · Dominik Schilling · donalirl · dooperweb · Doug Wollison · dretzlaff · Drew Jaynes · Drivingralle · dsawyers · Dwain Maralack · Earthman Media · eclev91 · Eddy · eduwass · Edward Caissie · efc · Elena Brescacin · elizaan36 · Ella van Durpe · Emerson Maningo · Emilie LEBRUN · Emmanuel Atsé · Enrico Battocchi · Eric Dye · Erick Hitter · Erik · Erik · Eshaan Dabasiya · Estela Rueda · Evan Herman · Even Tobiesen · Fabian Kägy · Fabian Todt · Faisal Ahammad · Faisal Alvi · Faizan Nabi · Felix Arntz · Felix Renicks · finntown · Firoz Sabaliya · Francesca Marano · Francis Cabusas · Francisco · Frank B. · Frank Klein · Fransisca H · frkly · fushar · FX Bénard · gaellebesson · Gajendra Singh · Galib Hayder · Gan Eng Chin · Garrett Hyder · Gary Jones · Gary Pendergast · Gennady Kovshenin · George Mamadashvili · Gerardo Pacheco · ghinamt · Girish Panchal · giuriani · Glen Davies · Glynn Quelch · Gopal Krishnan · Grant M. Kinney · Greg Ziółkowski · gregbenz · grgarside · GrowwBuddy · Guido · Guillaume TURPIN · Gulamdastgir Momin · Héctor Prieto · H. Kabir · Halil Kaya · Halyna Yampolska · Hameem Mahdad Kader · Hannes Leismann · Hans-Gerd Gerhards · Hardip Parmar · Hareesh S · Hari Shanker R · harrym · Harshal Kadu · Haz · hekuranredev · Helen Hou-Sandi · Hemant Kothari · Henrique Iamarino · Henry Wright · Herve THOMAS · hideishi · Hidekazu Ishikawa · Hilay Trivedi · Himani Panchal · Himanshu Pathak · Hit Bhalodia · Hitendra Chopda · Hitesh Dhokai · Hovhannes Hovakimyan · hueitan · humanify · hussain896 · huubl · Huzaifa Al Mesbah · Ian Dunn · ilovecats7 · Imran · Imran Hossain (a11n) · Indira Biswas · indithemes · Isabel Brison · iseulde · Isu · Ivan Kristianto · Jack · Jagir Bahesh · Jainil Shah · Jake Spurlock · James Koster · James Monroe · James Payne · James Robinson · James Sansbury · Jamie Blomerus · jammycakes · Jan Lysý · janak Kaneriya · janusdev · Jarda Snajdr · jarekmorawski · Jason Cosper · Jason LeMahieu (MadtownLems) · Jason Sauerwald · Javier Casares · Jayaram · Jaydip Ahir · jdnd · Jean-Baptiste Audras · Jeff Chi · Jeff Golenski · Jeff Ong · Jeff Paul · Jeffro · jeflopo · Jenny Dupuy · jepperask · Jeremy Felt · jeremy80 · jeremyroman · jeryj · jessedyck · Jessica Lyschik · Jigar Bhanushali · Jigar Panchal · jnweaver · Joan Artes · jodamo5 · Joe Dolson · Joe Hoyle · Joe McGill · joecsmalley · Joen Asmussen · Johannes Jülg · John Blackbourn · John James Jacoby · John Regan · Jomar Jay Corona · Jomon Thomas Lobo · Jon Surrell · Jonathan Bossenger · Jonathan Desrosiers · Jong · Joni Erkkilä · Jonny Harris · jonnyauk · joomskys · Joost de Valk · jordesign · Jorge Costa · Jos Velasco · Jose Varghese · Josef Seidl · Joseph Scott · Joshua Goode · Joshua Wold · jottevanger · Jouni Kananen · Joy · Juan Aldasoro · juanbuis · JuanMa Garrido · juanwp22 · Jules Colle · julianmar · Julie Moynat · Juliette Reinders Folmer · Julio Potier · Justin Tadlock · Juzar · K. Adam White · KafleG · Kai Hao · Kaito Hanamori · Kamal Hosen · KAP ASIAs · Kapil Paul · karlgroves · Karol Manijak · Karthick Murugan · Karthik Thayyil · Karthikeya Bethu · Kaspars · Kathryn Presner · Kausar Alam · keithdevon · Kel Santiago-Pilarski · Kelly Choyce-Dwan · Kelly Mears · keoshi · Ketan Niruke · Ketan Patel · Kevin Leary · Kharis Sulistiyono · Kingsley Felix · Kira Schroder · KJ Roelke · kkmuffme · Knut Sparhell · kohheepeace · Konstantin Obenland · Konstantinos Galanakis · Konstantinos Xenos · kristastevens · Krupa Nanda · Krupal Lakhia · laurelfulford · Lax Mariappan · Laxman Prajapati · lcarevic · Lee · Lee Willis · leedxw · Lena Morita · lenasterg · leszeks · leup · levskipg · Liam Gladdy · LilGames · Louis · Lourens · Love Soni · Lovekesh Kumar · lovewpmu · Lovro Hrust · Lox · ltrihan · Luigi Teschio · Luis Felipe Zaguini · luisherranz · Lukasz · Luke Cavanagh · Mário Santos · maciejmackowiak · Madhu Dollu · madpeter · Magda Rogier · Maggie Cabrera · Mahesh Prajapati · Mai · maikelraow · Maja Benke · Makarand G. Mane · mallorydxw-old · manfcarlo · Manoj Maharrshi · Manzoor Wani · Marc · Marcelo de Moraes Serpa · marchalyoan · Marchetti Design · Marco Ciampini · Maria Yohana · marian1 · Marianna · Marie · Marin Atanasov · Marine EVAIN · Mario Peshev · Mario Santos · Marius L. J. · Mark Howells-Mead · Mark Uraine · Mark-k · martin.krcho · Mary Baum · Mary Hubbard · Masud Rana · Mathieu Paapst · Matias Benedetto · Matias Ventura · Matt (Thomas) Miklic · Matt Mullenweg · Matt Robinson · Matt West · Matteo Enna · Matthew · Matthew Boynes · mattryanwalker · Mauriac AZOUA · Maxime Meganck · maximebj · Mayank Tripathi · Mayur Prajapati · Md Abdullah Al Arif · Md Abul Bashar · Md Hafijur Rahman · MD Kawsar Chowdhury · Md Mahdi Hasan · Md. Ibrahim Khalil · Md. Najmul Islam · Md.Mehedi Hasan · mdviralsampat · megane9988 · MelissaH · metropolis_john · Michael Adams (mdawaffe) · Michael Burridge · Michael Willman · Michal Czaplinski · Michelle Frechette · Michelle Schulp Hunt · micromadness · Miguel Fonseca · Miguel Torres · Mijo T J · Mikael Korpela · Mike Bijon · Mike Ritter · Mikin Chauhan · Milana Cap · Milind More · mimi · miroku · Mitchell Austin · Modi Sahil · modulbuero · Mohamed Aboelfotoh Mohamed · Mohit Dadhich · mojorob · Morais Junior · Moses Cursor Ssebunya · Mosne / Paolo Tesei · mr660 · mreishus · mrunalkulkarni · mrwweb · mt · Muhibul Haque · mujuonly · Mukesh Panchal · Mukul Singh · My1 · n8finch · Nadir Seghir · nandow · NANI SAMIREDDY · Narendra Sishodiya · Naresh Bheda · Nasim Miah · Natalia T · Nathan Johnson · navneet · Navneet Kaur · Nazmul Hasan Robin · Ned Zimmerman · neotrope · NerQuiles · net · Nick Diego · nickgalvez · nickwilmot · Nicolas RIVIERE · nicolasleroy · nidhidhandhukiya · Nik Tsekouras · Nikan Radan · Nikita Solanki · Nikunj Hatkar · Nilesh Shiragave · Niraj Giri · Nithin SreeRaj · Noam Eppel · Noel Santos · Noruzzaman · nosilver4u · oceantober · Olaf Lederer · Olga Gleckler · Oliver Campion · Omer Korner · Oscar Arzola · Oskari Groenroos · Ov3rfly · Paal Joachim Romdahl · pampfelimetten · Parin Panjari · Parth Dodiya · Parth vataliya · Pascal Birchler · Pascal Casier · Patel Jaymin · Patricia BT · Patrick Lumumba · Paul · Paul Bearne · Paul Biron · Paul English · Paul Kevan · paullb · Paulo Pinto · Paulo Trentin · Pavan Patil · Pawan Kumar · Pedro Mendonça · Peter Rubin · Peter Westwood · Peter Wilson · peter8nss · peterdavehello · petitphp · philliproth · philwebs · Pitam Dey · pixlpirate · podpirate · Pooja Bhimani · Pooja Killekar (Muchandikar) · pooja9712 · Praful Patel · Prasad Karmalkar · prashant · Prashant Baldha · Prashant Patil · Prathamesh Shirke · prathameshbhagat1511 · Pratik Bhatt · Pratik Gandhi · Pratik Londhe · Presskopp · Pritam Sonone · Priyank Vadhavana · Pushpender Singh · Q · qhaensler · Rafael Fischmann · Rahul Prajapati · Raj Patel · Rajat Patel · Rajendra Patel · Rajendra Patil · Rajesh Radadiya · Rajesh Rathod · Rajin Sharwar · Ramon Ahnert · Ramon Corrales · Ramon James · Ravi Gadhiya · redkite · Rehan Ali · Rejaul Alom Khan · Remco · Renatho · Renz Jay Sanchez · Riad Benguella · Rich Tabor · Riddhi Dave · Rinkal Pagdar · Rishav Dutta · Rishi Mehta · Rishi Shah · Rishit Gupta · rkyburz · Robert Anderson · Robert Chapin · Robert Ghetau · Robert Seyfriedsberger · robertstaddon · Robin Martijn · Rodrigo Arias · Rodrigo Primo · Rogier Lankhorst · Rohan Jha · rohitmathur7 · rohjay · room34 · Rotem Gelbart · Roy Orbitson · Roy Tanck · roybellingan · Ruchir Goswami · Rudrakshi Gupta · Rupesh Patil · rupw · Ruturaj Raval · rvoigt · Ryan Fredlund · Ryan Hellyer · Ryan McCue · Ryan Welcher · Ryo · S P Pramodh · Sébastien SERRE · Sérgio Gomes · Sören Wünsch · Sabbir Ahmed · sabrineg · Saeed Piri · Sagar Lakhani · Sagar Prajapati · Sagar Tamang · sailpete · Sainath Poojary · Sajjad Hossain Sagor · sally · samiamnot · Sampat Viral · Samsul Islam Rana · Samuel Wood (Otto) · Sanyogg Shelar · Sarah Norris · Sarath AR · Sarthak Nagoshe · Sathiya Venkatesan · Saul Fougnier · saurabh.dhariwal · Saxon Fletcher · Sayan Datta · Sayedul Sayem · sbathompson · Scott Arciszewski · Scott Kingsley Clark · Scott Reilly · scribu · Sean Fisher · seanlanglands · Sebastian Pisula · Seif Radwane · Sergey Biryukov · sergiogutierrez · Seth Rubenstein · Severine Pozzo · Shadi G شادي جـ · Shail Mehta · Shalin Shah · Shane Muirhead · Shoe · Shraddha Gore · shreyashd21 · Shubham Kumar Bansal · Shubham Patil · shulard · Shyam Kariya · Siddharth Thevaril · siliconforks · Simone Maranzana · SirLouen · sjefen6 · Slava Abakumov · Slavco Mihajloski · smerriman · Sneha Patil · snehal5774 · Soham sham joshi · Sourabh Jain · Sourav Pahwa · soyeb salar · Spencer Finnell · Spenser Hale · spmultidots · spncr · Sridhar Katakam · Stefan Seidner-Britting · Stefano Minoia · stein2nd · Stephen Bernhardt · Stephen Edgar · Steve Dufresne · stimul · strarsis · Stuart McAlpine · Subodh Rajpopat · Subrata Sarkar · SUHAS SUTAR · Sukhendu Sekhar Guria · Sumit Bagthariya · Sumit Singh · Sumon Sarker · SunilPrajapati · Suraj Sutar · swalkinshaw · Sybre Waaijer · Synchro · t.schwarz · Taco Verdonschot · Taegon Kim · Takashi Irie · Takashi Kitajima · Takayuki Miyoshi · Takuro · Tammie Lister · Tanbir Ahmod · Tapan Kumer Das · th23 · Thakor Darshil · thelmachido a11n · ThemeBeans · thomaswm · threadi · Thrijith Thankachan · tiago · TigriWeb · Till Krüss · Tim Brathärig · Tim Sheehan · Tim W · Timi Wahalahti · Timothée Brosille · Timothy Jacobs · Timur Kamaev · Tirth Doshi · TJarrett · Tobias Bäthge · tobifjellner (Tor-Bjorn “Tobi” Fjellner) · Tom Gugel · Tom Rhodes · Tomoki Shimomura · Toni Viemerö · Tonya Mork · Toro_Unit (Hiroshi Urabe) · Torsten Landsiedel · tropicalista · Troy Chaplin · Trupti Kanzariya · Trusha · tunetheweb · Tung Du · Tushar Patel · TyB · tysonlmao · Ugyen Dorji · Umesh Singh · Unsal Korkmaz · up1512001 · upadalavipul · utrenkner · Vagelis · Vaibhav Singh Web · Vaibhav Tukaram Nawale · Valérie Galassi · Vania · vee · Vegard S. · vgnavada · Vicente Canales · Victoria - a11n · Vijayan · Vijaysinh Zala · Vikram · Viktor Szépe · Vinit · Vipul Gupta · Vipul Patil · Virgildia · Virginie Garnier · virginienacci · Vishy Moghan · vivekawsm · Vrishabh Jasani · vykesmac · wadowad · Web-Pepper · WebMan Design | Oliver Juhas · Wes Theron · Weston Ruter · whaze · Will Skora · williampatton · wongjn · World Web Technology · wpgerd · wplmillet · wprockstar2 · wwdes · xate · xavilc · xpurichan · Yahil Madakiya · Yani · Yash Kukreja · yellowafterlife · Yogesh Bhutkar · yudhisthirnahar · Yui · Yuliyan Slavchev · yuu · zaoyao · Zargarov · Zebulan Stanphill · zeelthakkar · Zunaid Amin · 耗子

\n\n\n\n

More than 60 locales have fully translated WordPress 6.8 into their language making this one of the most translated releases ever on day one.  Community translators are working hard to ensure more translations are on their way.  Thank you to everyone who helps make WordPress available in 200 languages.

\n\n\n\n

Last but not least, thanks to the volunteers who contribute to the support forums by answering questions from WordPress users worldwide.

\n\n\n\n

Get involved

\n\n\n\n

Participation in WordPress goes far beyond coding. And learning more and getting involved is easy.  Discover the teams that come together to Make WordPress and use this interactive tool to help you decide which is right for you.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18701\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:66:\"\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"WordCamp Europe 2025: Sali, Basel!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"https://wordpress.org/news/2025/04/wordcamp-europe-2025-sali-basel/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 14 Apr 2025 19:16:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:4:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:4:\"WCEU\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:9:\"WordCamps\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18683\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:411:\"WordCamp Europe 2025 will be held in gorgeous Basel, Switzerland, from June 5 to 7. It will bring together open source enthusiasts, developers, and WordPress professionals from across the region—and the world! This year’s event offers fresh perspectives, engaging conversations, and countless opportunities to connect with the WordPress community, agencies, and innovators over three action-packed […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:6552:\"\n
\"\"
\n\n\n\n

WordCamp Europe 2025 will be held in gorgeous Basel, Switzerland, from June 5 to 7. It will bring together open source enthusiasts, developers, and WordPress professionals from across the region—and the world!

\n\n\n\n

This year’s event offers fresh perspectives, engaging conversations, and countless opportunities to connect with the WordPress community, agencies, and innovators over three action-packed days of learning, networking, and collaboration.

\n\n\n\n
\n
\n\n\n\n

\"🎟\" Tickets are limited—secure yours today!

\n\n\n\n
\n\n\n\n
\n\n
\n\n\n\n
\n
\n\n\n\n

Keynotes, panels, and deep dives

\n\n\n\n

The main conference, which will be held on June 6th and 7th, will feature a lineup of notable keynote sessions, including diverse sessions on business strategy and building innovative modern features, open-source advocacy, accessibility, and more. For those looking to sharpen their skills, presentations will dive deep into topics like SEO for WordPress, performance optimization, speed-builds, and leveraging AI.

\n\n\n\n

Q&A Fireside Chat

\n\n\n\n

You can join Mary Hubbard, the WordPress Executive Director, and Matt Mullenweg, co-founder of the WordPress project on June 7th to discuss WordPress and its community, followed by an in-person Q&A session here in Basel.

\n\n\n\n

Explore Basel

\n\n\n\n

Basel, the third-largest city in Switzerland, is filled with historical buildings, a cathedral, museums, and hidden gems! You can get around Basel and experience it yourself using your BaselCard, which allows you to hop on and off all public transportation without a worry. A walk down Basel’s river Rhine could be the perfect evening during your visit to WordCamp Europe!

\n\n\n\n

\"🛏\" Find accommodations in Basel
\"🚌\" Learn about BaselCard benefits
\"📄\" Need a visa? Apply by May 10, 2025

\n\n\n\n

\"📅\" Plan Your WordCamp Europe Experience See the full schedule, plan your sessions, and maximize your time in Basel.

\n\n\n\n

Get WordCamp-ready

\n\n\n\n

\"🎟\" Make sure to secure your WordCamp Europe 2025 tickets (if you haven’t already!)

\n\n\n\n

Follow WordCamp Europe news on Bluesky, Instagram, Facebook, LinkedIn, Threads, Mastodon, and X/Twitter for real-time updates!

\n\n\n\n

You can also help us spread the word about WordCamp Europe this year! Post about your attendance using our ready-made texts or we also encourage you to use your own voice – you know your community best.

\n\n\n\n

And as always, be part of the conversation! Whether you’re attending in-person in Basel or following along online, share your experiences using the tags #WCEU and #WordPress on all social media networks!

\n\n\n\n

Basel is calling—see you at WordCamp Europe 2025! \"🇨🇭\"

\n\n\n\n
\n\n\n\n

Thank you to @dolgelukkig for drafting this copy.

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18683\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 15:54:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6-8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18673\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:260:\"WordPress 6.8 RC 3 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing over the next week is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8765:\"\n

The third release candidate (“RC3”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC3 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC3
WordPress PlaygroundUse the 6.8 RC3 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts leading up to next week’s release for further details.

\n\n\n\n

What’s in WordPress 6.8 RC3?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC2, you can browse the following links:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community that collaborates and contributes to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable. It’s also a meaningful way for anyone to contribute. This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.  For more details on developer-related changes in 6.8, please review the WordPress 6.8 Field Guide.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC3, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本語? हिन्दी? मराठी? বাংলা?  You can help translate WordPress into more than 100 languages.

\n\n\n\n

An RC3 haiku

\n\n\n\n

The launch draws closer,
Six-eight sings through RC3,
Almost time to shine.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @audrasjb, @mamaduka, @krupajnanda, @benjamin_zekavica, @narenin, @joedolson, @courane01, @joemcgill, @marybaum, @kmgalanakis, @umeshsinghin, @wildworks, @mkrndmane.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18673\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 15:53:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18662\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:367:\"The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing! This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site. Reaching this phase […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8741:\"\n

The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone. While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC2 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update –version=6.8-RC2
WordPress PlaygroundUse the 6.8 RC2 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC2?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC1, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases. With RC2, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English? ¿Español? Français? Русский? 日本語? हिन्दी? বাংলা? मराठी? ಕನ್ನಡ?  You can help translate WordPress into more than 100 languages. This release milestone (RC2) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC2 haiku

\n\n\n\n

Testing, 1, 2, 3
It’s almost April fifteenth
Squashing all the bugs

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @michelleames, @tacoverdo, @jopdop30, @vgnavada, @jeffpaul.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18662\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/03/wordpress-6-8-release-candidate-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 16:19:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18639\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:267:\"WordPress 6.8 RC 1 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing over the next three weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:9475:\"\n

The first Release Candidate (“RC1”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC1 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC1 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC1 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC1
WordPress PlaygroundUse the 6.8 RC1 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC1?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement.  For more technical information related to issues addressed since Beta 3, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development.  The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC1, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本語? हिन्दी? বাংলা? मराठी?  You can help translate WordPress into more than 100 languages.  This release milestone (RC1) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC1 haiku

\n\n\n\n

March fades, nearly there,
Six-eight hums—a steady beat,
RC greets the world.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @joemcgill @benjamin_zekavica @courane01 @mkrndmane @audrasjb @areziaal @ankit-k-gupta @krupajnanda @bph.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18639\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:32:\"https://wordpress.org/news/feed/\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:44:\"http://purl.org/rss/1.0/modules/syndication/\";a:2:{s:12:\"updatePeriod\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"\n hourly \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:15:\"updateFrequency\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"\n 1 \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:4:\"site\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"14607090\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:12:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Wed, 18 Jun 2025 11:13:03 GMT\";s:12:\"content-type\";s:34:\"application/rss+xml; charset=UTF-8\";s:4:\"vary\";s:37:\"Accept-Encoding, accept, content-type\";s:25:\"strict-transport-security\";s:12:\"max-age=3600\";s:6:\"x-olaf\";s:3:\"⛄\";s:13:\"last-modified\";s:29:\"Thu, 12 Jun 2025 14:44:19 GMT\";s:4:\"link\";s:63:\"; rel=\"https://api.w.org/\"\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1727736620;s:21:\"cache_expiration_time\";i:1750288383;s:23:\"__cache_expiration_time\";i:1750288383;}','off'),(188,'_transient_timeout_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1750288384','off'),(189,'_transient_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1750245184','off'),(190,'can_compress_scripts','0','on'),(191,'_transient_timeout_feed_d117b5738fbd35bd8c0391cda1f2b5d9','1750288384','off'),(192,'_transient_feed_d117b5738fbd35bd8c0391cda1f2b5d9','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:112:\"\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"WordPress Planet\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"en\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"WordPress Planet - http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:50:{i:0;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:107:\"Do The Woo Community: How to Tell If Your WordPress News Is Really Newsworthy with Rae Morey and Adam Weeks\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=99023\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"https://openchannels.fm/how-to-tell-if-your-wordpress-news-is-really-newsworthy-with-rae-morey-and-adam-weeks/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:213:\"In the first of the series, Media Playbook, Rae and Adam discuss how to connect WordPress businesses with the media. They share tips on crafting newsworthy stories and building relationships for better visibility.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 17 Jun 2025 09:51:08 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Do The Woo Community: We Are Welcoming Woo As a New Sponsor\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=98641\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"https://openchannels.fm/we-are-welcoming-woo-as-a-new-sponsor/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:196:\"Since 2018, WooCommerce has been a vital partner for Do the Woo, promoting the brand and providing resources. They will now sponsor Open Channels FM to strengthen community engagement and support.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 16 Jun 2025 08:31:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:131:\"Gutenberg Times: Gutenberg Changelog 118 – WordCamp Europe, WordPress New AI Team, the Pride Photo Drive, Gutenberg 20.9 and 21.0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"https://gutenbergtimes.com/?post_type=podcast&p=40707\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:103:\"https://gutenbergtimes.com/podcast/gutenberg-changelog-118-wordpress-new-ai-team-the-pride-photo-drive/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:44750:\"

Hosted by Birgit Pauli-Haack, with special guest Anne McCarthy, this episode dives into recent happenings in the WordPress ecosystem, including updates from WordCamp Europe, the launch of the new WordPress AI Team, the Pride Photo Drive initiative, and the latest Gutenberg releases (20.9 and 21.0).

\n\n\n\n

WordCamp Europe Recap

\n\n\n\n

The community celebrated new milestones, including all workshops being recorded and promptly published to WordPress TV, making it easier for everyone to catch up. Notable sessions covered digital freedom, block development, and innovative ways to extend WordPress without custom blocks. There was also a special mention of the WordPress Campus Connect pilot at the University of Pisa, enabling students to earn credits through WordPress contributions.

\n\n\n\n

WordPress AI Team Launch

\n\n\n\n

WordPress has officially formed a core AI Team, supported by both Automattic and Google contributors, focusing on foundational tools and integrations to bring AI capabilities to the platform. The team is working on projects like the AI Services plugin, the Model Context Protocol (MCP), and the WP Feature API, each designed to provide standardized and extensible AI solutions for the WordPress ecosystem.

\n\n\n\n

Pride Photo Drive

\n\n\n\n

Anne McCarthy introduced the Pride Photo Drive: an open photo submission event to boost LGBTQ+ representation in the WordPress Photo Directory. The initiative encourages everyone (not just the LGBTQ+ community) to contribute, with fun incentives and cash prizes, emphasizing the importance of diverse, high-quality imagery for web creators.

\n\n\n\n

Gutenberg 20.9 & 21.0 Releases

\n\n\n\n

The latest Gutenberg plugin releases bring a host of improvements and enhancements:

\n\n\n\n\n\n\n\n

Community & Contribution

\n\n\n\n

Anne and Birgit emphasize the power of direct community feedback—how user suggestions shape features and workflows. There’s an open call for more engagement, hallway hangouts, and broad collaboration beyond just in-person events.

\n\n\n\n

This episode is packed with optimism and opportunities for WordPress users and contributors of all backgrounds to get involved—whether that’s through new tech like AI, creative community projects, or by shaping the future of Gutenberg.

\n\n\n\n

Show Notes / Transcript

\n\n\n\n\n\n\n\n

Show Notes

\n\n\n\n

Special Guest: Anne McCarthy

\n\n\n\n\n\n\n\n

Celebrating Pride Month

\n\n\n\n\n\n\n\n

WordPress AI Team

\n\n\n\n\n\n\n\n

WordCamp Europe Recordings

\n\n\n\n\n\n\n\n

Gutenberg Releases

\n\n\n\n\n\n\n\n

Stay in Touch

\n\n\n\n
\n\n
\n\n\n\n

Transcript

\n\n\n\n

Birgit Pauli-Haack: Ladies and gentlemen, welcome to our 118th episode of the Gutenberg Changelog podcast. In today’s episode, we will talk about WordCamp Europe and the WordPress new AI team, and Pride Photo Drive and the Gutenberg 20.9 and 21.0 releases. I’m your host, Birgit Pauli-Haack, curator at the Gutenberg Times, a developer advocate at Automattic, and core contributor to the WordPress open source project. With me today, relatively fresh back from the sabbatical, is Anne McCarthy. Thank you, Anne. Welcome back and I’m thrilled you’re on the show. How are you today?

\n\n\n\n

Anne McCarthy: Thank you for having me. It is incredible to be back from sabbatical and also to be back to contributing with sponsorship, which is amazing. I was trying to do it coming back without it and to have to have that change so quickly. Coming back from sabbatical has been so energizing combined with Pride Month, so I can’t complain. I’m just excited to get into stuff and excited to be back in this space talking about this important work.

\n\n\n\n

Birgit Pauli-Haack: Wonderful. Yeah, no, we’re all back contributing. It will be. We still have to kind of figure that out. I know that every team is kind of trying to get unplugged from what they were doing as part so they can contribute back. So the last time you were on the show, it was in November last year. Episode 111. So, so much has changed for the project and for you. What are you now working on at Automattic and respectively for WordPress? Yeah.

\n\n\n\n

Anne McCarthy: So my job title has shifted a bit as well, to align with some of the changes that have happened. So we. I am now an architecture wrangler is the title I’m rolling with right now. And essentially the core of my job is the same. I’m looking across Automattic the community to find shared patterns, to accelerate work, to do work and to connect work. And so trying to make sure we’re moving in the same direction in the project. So working on things like roadmaps, breaking down work, helping for the future, teams get into contributing and figuring out important projects they can work on and providing support there, as well as collecting user feedback across different places and how it impacts things. So if we hear something, for example, from like an enterprise client, I recently did this. A couple weeks ago, there was a bug that came out from an enterprise client. I said, hey, who else has dealt with this? Aaron Jordan used to in publishing. What do you think? Hey, can we get someone to work on this? What are you all seeing? What feedback are you seeing? Here’s the feedback I’m seeing. So I’m still doing the same kind of work. Cool thing is now instead of working with about 100 engineers, I’m working with about 300, about 50 different teams. So internally there’s a lot more spread. But I’m really excited because it can really help influence and move faster on some of the stuff we do in the core project. So instead of things being a bit divorced and separated, especially from customer feedback and customer needs, we can now, you know, using Automattic spread of customers, use that to bring things that are foundational for all WordPress, because we cover so many different use cases between themes and plugins and hosting and enterprise and bloggers and all sorts of stuff. So I’m really excited to see increased collaboration there, including with the broader Five for the future groups, and encourage everyone to get involved, to share that feedback and join in the fun.

\n\n\n\n

Birgit Pauli-Haack: That’s wonderful. Yeah, it sounds exciting. It also sounds like a lot of work, but, yeah.

\n\n\n\n

Anne McCarthy: It’S good work. It’s good work because you get to kind of see things at the root, which is fine.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah. And you can also kind of see it happening when it’s fixed or something like that, or come together in a. In a very creative way. Yeah.

\n\n\n\n

Announcements

\n\n\n\n

So you also are the instigator of the Pride Photo Drive. Tell us about it.

\n\n\n\n

Pride Photo Drive

\n\n\n\n

Anne McCarthy: Yeah, so it’s inspired by what I’ve seen with other photo directories. And something that I think is really near and dear to me is representation really matters. And so if you can find things that actually resonate, whether with your culture, part of your identity, or where you live, it makes it easier when you’re creating websites. Like, websites are inherently quite visual. And so having really good photos that represent queer people is really awesome. And so, of course, you can’t have faces in this. But the whole point of the photo drive is to inspire some folks to contribute photos, increase representation in the photo directory, and honestly, just have some fun. Like, I think there is something fun about going out and having a reason to take a photo that I think, at least I enjoy someone who takes a lot of photos. There are some cash prizes for winners, both in terms of most submitted photos, and we’ll have some folks select the top photos. But honestly, like, you don’t need to be a part of the LGBTQ community to participate. It’s for everyone. And it’s just mainly to ensure when folks go and look for something that represents them, there’s a higher chance of finding high quality work for that. So I hope to see more kind of initiatives like that. And so if anyone wants to talk about doing more drives, I’m happy to share what I’ve done. It’s been very. It’s been pretty simple. So more people can do this for sure.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And we have a link to the call for photos on the LGBTDPress.com and there are also the rules and how you actually can upload it to WordPress photo directory. And I’m really excited about that. I, yeah. Was last year, not this year I missed it, but last year was at the Christopher Street Day here in Munich and that was kind of. Wow. I didn’t realize how big that was. Yeah. And it was about 600,000 people on the road and 60,000 people in the parade and yeah, totally took over the. The downtown. But I probably have a few pictures made there that I can upload there. Yeah. So yeah, but it was a good point for you to say no photos or no faces or people out there. People, yes, but no faces. Yeah. So that’s cool. Yeah. So, yeah.

\n\n\n\n

WordPress New AI Team

\n\n\n\n

And the second piece of announcement that we have is that WordPress has now an AI team. AI stands for artificial intelligence. There are two, three links actually that I can share with you. One is the welcome to the core AI team blog post, then the announcement and the hallway hangout and recap for the first hangout.

\n\n\n\n

So the mission I understood it is to build foundational building blocks for AI integration in WordPress and the timing is ideal because of the rapid evolution of AI. Some people at WordCamp EU said, okay, are we not a little bit late or something like that? No, you can’t. Yeah, it’s just the right time because now the emerging standards are there, and WordPress could be an ideal platform for AI driven web apps. There are immediate plans to integrate LMMs directly into WordPress, but there are canonical plugins that are on the roadmap and packages that are abstracting the AI provider like AI Services or. And the core integration would be more like. Yeah, a little. A second step. And we know that everything is kind of in place. It has the full support from WordPress leadership, including Matt and Mary. And because they recognize the importance of the open web and ensure it’s central in the evolving landscape.

\n\n\n\n

So what are the current initiatives? One is the AI services plugin from Felix Arntz. He’s on the team. But the team are right now James LePage from Automattic, Felix Arntz from Google as well as Pascal Bichler from Google and then Jeff Paul from TenUp. And all four have already some experience with AI in the space. And so there are three plugins that are being worked on. One is the AI services plugin Felix already publish that, and I’ll share links in the show Notes so you can look it up. And it’s an abstraction layer for multiple AI providers to enable plugin authors to unify the API for AI interactions. So you need your OpenAI API key or your CLAUDE API key or whatever you use, but then it helps you to include those services into whatever you want to do on the website. The other, the second one is the called MCP WP. MCP means Model Context Protocol. Those are servers to enable WordPress advanced AI integration with command line or plugins. So plugins say, okay, my plugin can do that with WordPress and you register those services and the AI can discover those on the site. I know that Jonathan Brassinger as well as Ryan Welcher have done some live streams on that and I can share some of that, the latest ones for on the show notes with the videos, so you can kind of follow along with that.

\n\n\n\n

And the last plugin is the WP feature API. That’s a plugin coming from Automattic, and it structures WordPress features for better AI integration. It’s kind of pretty much it’s a standardized way to register resources for AI. That’s pretty much what I can say there. It exposes the server and client side functionality in WordPress so LMMs can tap into it if they have the right credentials. Yes. So that’s kind of what I know about it. I read quite a bit about AI agents and MCP and it’s all still a little murky, but I think that’s with any of the new services and new technologies that are kind of coming out that we all need to figure out the smallest use case to figure it all out. Jamie Marsland has interviewed James LePage about the new AI team. And it’s a video, it’s called Very Clicky. It’s called WordPress AI fights back, fight Back Begins. So but it’s really insightful and Jamie asked some great questions in it. Any thoughts from you?

\n\n\n\n

Anne McCarthy: Yeah, that was such a good rundown. One of the big questions I’ve heard from people and I’ve been getting pings about is like, how do I join? How do I join? The team is creating a handbook at its early stages. You can join the core AI Slack channel. That’s the best place they’re holding meetings and they’re pulling together that context. So please get involved. The idea is to create a shared group of tooling that then plugin authors can reuse. It’s meant to provide a shared base. So for the MCP thing, the way I’ve been kind of thinking of it is like rather than rewriting every AI integration from scratch, you can reuse this to Talk, to have WordPress talk to LLMs. So like those sorts of things are kind of the current focus to provide tooling for people who want to use AI with WordPress, including with plugin authors and stuff like that. So that’s the current perspective. And if that appeals to you, you have ideas there, you have personal experience. Trying to make that work like that definitely is a great place to give feedback. And these are the early stages. So it’s a great time to get involved. But yeah, that to me is the biggest takeaway to do a great job covering everything. And I love that each team member has direct experience building stuff in line with that mission and value. I’m really excited about the canonical plugins and what we can do and packages that we can do to move this work forward and iterate following a similar model as the performance team.

\n\n\n\n

Birgit Pauli-Haack: Yeah, Fabian Kagy and I were on a podcast with Nathan Wrigley on the WP Builds podcast and we talked a little bit. We talked about a lot of things, but we also talked a little bit about the 10up plugin classify, especially because the latest release actually included an open source way to have LMMs on your server. So every time you ask the AI something, it doesn’t go out to a central server, it stays on your site.

\n\n\n\n

Well, you need of course a server with a little bit more oomph. But yeah, for those that want to use it for their internal communications or documentation, it’s definitely a great way to do this. And that’s why TenUp is also part of the team, and I share that also in the Show Notes, of course, both the podcast and the plugin.

\n\n\n\n

So other news the what’s New for developer edition June 2025 is available now. Justin Tadlock collected lots of information speaking about being back to contributing, lots of information relevant to plugin authors, theme builders and agency freelancers, the freelance developers for Core, Gutenberg and Playground. And it’s pretty much the best post to catch up on the last two months of updates on WordPress. So check it out with the link on the show notes or you go to developer.WordPress.org news or blog. Either way, Both of them get you to the developer blog.

\n\n\n\n

Community Contributions – WordCamp Europe

\n\n\n\n

All right, so now that brings us to WordCamp Europe, first time. In contrast to previous WordCamps, all workshops have been recorded and all recordings have been already submitted to WordPress TV. That I only saw. That’s so cool. I only saw this on smaller WordCamps like in Karlsruhe or in Leipzig where there’s only one track or one or two tracks in only one day. But having two days with three tracks, everything already on WordPress TV, that’s a phenomenal achievement.

\n\n\n\n

So I have a few favorites I want to kind of suggest to you. One is of course, the fireside chat with Mary Hubbard and Matt Mullerweg. They discussed, among other things, a lot of other things, but the. The WordPress Campus Connect project that’s being rolled out as the official program from the WordPress Foundation. And also Mary announced a pilot project with the University of Pisa in Italy where 5,000 students have 150 mandatory contribution hours and those will equate to six credits for college. So that’s going to be a phenomenal place.

\n\n\n\n

Anne McCarthy: I’m so excited for that.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah. Getting the young folks involved in WordPress evolved in open source and also bringing them together with mentors in the technical fields. Yeah. So I’m really excited about that. It’s also more focused on the translations because that’s the humanities department there. But yeah, yeah, everything helps. Anything helps. Yeah.

\n\n\n\n

Anne McCarthy: So I got my start in college so I would have loved. This would have been amazing. I was working on a WordPress multi site in college and if I could have had this as a chance to get to know the WordPress community rather than learning about it four years after. I think it would have been amazing to have this kind of opportunity and access and experience of open source early on. So I’m very, I agree with you. I’m very excited about that program.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah. I also had about. Took me about four years to kind of get into the community here. So yeah, it’s always something, something. Another great talk was by Noel Tock. The title was WordPress Without Borders, the Fight for Digital Freedom. And he not only shared his about his own charity work in the Ukraine, about rescuing dogs and bringing them back to their owners, but also about other charities who helped with finding kids, providing a roof over the head for people that were bombed out and other hardships. And he made us realize the True Impact of WordPress because all the agencies use WordPress, not all the agencies, but over 50% of them use WordPress for the website to fundraise and to connect with the communities.

\n\n\n\n

So sorry my voice kind of gave out but that has partly to do with something like that. But I also got a gift from WordCamp Europe at home to suffer. There’s another cold that I’m fighting. That’s why I’m also sound so horsy. So sorry for that. Check it out. The block related talks were Ryan Welch’s workshop for the Block Development Cookbook and Milana Cap’s workshop around the Interactivity API. And that last one is really I didn’t see the first one, but the last one I saw and I learned more about the source and the namespace and how you can interact from one block to the next and exchange data. So that’s a really eye opener. Ellen Bauer talked about how block themes speed up stores and sites in WooCommerce and Robert O’ Rourke asks and provides answers to do you really need a custom block? And he walks you through how you can extend the block editor own blocks without writing your own custom blocks. But really, all the many great talks about the WordCamp Europe are online and there are many for content creators, developers, entrepreneurs, educators, contributors as well. So check out the WordPress TV space with all the recordings.

\n\n\n\n

What’s Released – Gutenberg 20.9

\n\n\n\n

And that brings us to Gutenberg releases. We start out with Gutenberg 20.9. So 20.9 was released on May 28th. We were a little late, but I was traveling and so do you want to start us off?

\n\n\n\n

Enhancements

\n\n\n\n

Anne McCarthy: Yeah, I totally can. In terms of enhancements, the base styles have been updated to a modern Saas module system, and this was basically an obstacle to the Gutenberg project overall, migrating to the dart SaaS format in the future. So I love this kind of proactive unblocking that’s happening, kind of moving away from some of the legacy import statements. Great work by Aki per usual, but one of those just kind of foundational pieces to work on and make sure we have up to date just to unblock future things.

\n\n\n\n

This one, I actually was involved in this one previously, but a revert was done for how the edit site link works. When you’re viewing your site, you’re using a block theme and you see edit site. There’s been a debate; does it open the current template you’re looking at or does it open just the site editor and the homepage? And this has gone back and forth since the dawn of time. So this is a revert that previously had it update. Basically whenever you hit edit site, it would bring you just to the general homepage of your site editor. Now it brings you to the current template. We got a bunch of feedback and this is where I love the WordPress project and love the feedback that we get straight from folks. Whenever that was implemented in 6.8, people came back and said, hang on, what’s going on? This is different. This isn’t interrupting my workflow. This now takes three clicks for me to get to the current template I was looking at rather than bringing me there. I see the argument on both sides. There’s definitely. I think Rich shared a great video of himself with. If you set a homepage or set a page as your homepage, what the experience of that looks like and how it can be confusing for end users, I have a feeling this is something that will continue to be a conversation and something that hopefully in the overarching issue there was a discussion around having more granularity. So maybe edit site has a little drop down menu, kind of like an ad post thing where you can see it says like edit template, edit homepage, edit, whatever. Like having edit styles, like having something with more granularity. We’ll see where that ends up. But this is. As of now, this experience has changed. Thanks to feedback. Do you want to jump into…

\n\n\n\n

Birgit Pauli-Haack: The only thing that I wanted to say about that was that there are actually at least one plugin out there who actually tried to implement a dropdown with and kind of. So you can check it out. I’m going to do some research and share it in the show notes. Yeah, so and with the block library we had a few changes that I wanted to talk about. One is that the search settings. So for the search block there were a lot of settings in the toolbar, and it seems that most end users are kind of now trained to open up the sidebar for the settings. So developers have now moved some of the settings into the inspector to the right hand side in the sidebar so they’re all together. I think that’s just for. It’s also for consistency of the interface. So I like that. And then there were. For the first and the pre-formatted blocks, there were transformers missing and they were added. So people do not have to copy paste things and not delete a block and then add another block and copy paste the content and they just can transform them from paragraph to verse and back and forth. Yeah. And now Anne, we’re coming to a topic that you know a lot about. One is developers are enhancing content only editing experience. So what does that mean?

\n\n\n\n

Anne McCarthy: Yeah, this is. The names on this are rough. So right now there’s this idea of write mode. We need a new name because basically what it does and this is something to zoom back out. Whenever I ran the outreach program, one of the things we repeatedly found is that dropping people straight into the site editor is pretty overwhelming. There’s a lot of options open, there’s a lot of tools open and it’s like, how do we add a simplified layer on top? That’s what write mode is intending to do.

\n\n\n\n

So you can imagine a way to toggle between a simplified site editing version and then like boom, all the tools you want and having a way to switch in between those modes as you you’d like. The underpinning technology used for that is content only. And what that does is it basically allows you to only edit the content. So it’s a lot of fancy names. But this is. I’m trying to like set the scene. And so there are some updates I think across both releases we’re covering that improves different blocks and how they work with this option because out of the box, not every block works with it and something has to be done manually to basically add support for it. Now there’s questions around specific blocks, like how much should be exposed, what should it look like, what should the experience be? I actually did some user testing at work campus last year with random people and recorded them going through this. And so there’s a lot to be figured out there. At the core it’s making way and taking steps towards a simplified site editing experience that folks can toggle on. You can imagine the first time in the site editor, maybe you have that experience and then if you run into something where you want to do more, you can have a quick way to just switch into like show me all the tools. Kind of like the idea of when you’re editing a presentation and like a slide slides for something and you want to go into the overall view of everything, you can do that. Otherwise you can just add text, move things around and have some like simplified experience. So that’s the context for that. This covers the details block, the code block, the read more block, the post block. There’s a lot of blocks that were changed for this and we’ll continue to see this. I think over the future releases we’ll see iteration on this area. So stay tuned.

\n\n\n\n

Birgit Pauli-Haack: Awesome, awesome.

\n\n\n\n

Anne McCarthy: Does that help explain it?

\n\n\n\n

Birgit Pauli-Haack: Definitely helped me, yeah. And it also helped me to understand why there all of a sudden were different things in the sidebar. Because the different icons on there, they’re just identifying the places where you can edit the content but not, you’re not Having anything else in there. There are no display options or settings or something like that. So now I understand that. I also understand why plugin authors or agency for instance, are quite excited about that because they can curate the interface for their clients and kind of keep them out of the design and out of the have some more guardrails for them. And I think that’s because you can implement that through a plugin as well. So yeah, you can tap into the block JSON and say put this into content only mode because it’s not a default thing. So yeah, I like it.

\n\n\n\n

The two components had some changes. One is that the color. The color picker now has visual cues when you copy value. That’s definitely great. The interaction there. So you don’t have to wonder, did I copy it or did I not copy it? And then the snack bar, that’s the term that developers use for the notifications that are on bottom on your screen that come up when you do something. So if you have to, if you save your post, you get the little note. Click here to view it. And now this is also now available to open the links in new tabs, especially when you are a plugin author for your whatever plugin you do. You can also use the snack arx component. And then now you have the options to open links in a new tab, which is controversial, but yeah, just having the option in the components should be fine. It’s controversial because you take over the freedom of the user to decide if they want it into a new tab or new window or just right there because all of a sudden they don’t have the choice anymore.

\n\n\n\n

Anne McCarthy: I think that I’m curious how that bland with. With folks. Yeah, that one I was surprised to see a bit.

\n\n\n\n

Birgit Pauli-Haack: But yeah, yeah, I think that was it for Gutenberg 20.9.

\n\n\n\n

Gutenberg 21.0

\n\n\n\n

Gutenberg 21 was just released this week. And do you want to take that next step there?

\n\n\n\n

Enhancements

\n\n\n\n

Anne McCarthy: Yeah, let’s dive into it. One of the main enhancements that I love to see is a refactor, the settings panel to use Tools panel. So across a bunch of different blocks to zoom back out, there’s different ways in which we display settings. And that can cause those little inconsistencies really add up, especially when you’re looking, you’re trying to do something in one block and you do something in a different one and it looks slightly different or appears slightly differently. So the more we can have really smart, intuitive defaults where for any block, whenever you want to change something in one block, it’s the same in another the better and especially just experience wise and using the latest components. It’s a really important thing to continue to iterate on. And so across a number of different blocks the Tools panel was implemented and there’s a lot of benefits. I don’t know if you want to talk about the benefits of it just because it’d be good to hear your perspective on this too.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I would because I was trying to figure out what is actually that the user gets out of it and. Or the developers that use the blocks or extend those blocks. You get more control for the display. It’s every time the same thing. That’s what you mentioned. But it’s also an easier mechanism for injecting additional settings into an existing group. I’m not quite sure if that’s exposed for the third party to. For the extensibility, but that will definitely enable it. And then there is a visual parity between the styles that are already in the Tools panel and those who don’t. Yeah. So it’s really. It’s all the comments block. It’s. There’s a tracking issue 67813 where you can kind of see all the progress on this project and also the list of the blocks that are handled with that. Yeah.

\n\n\n\n

So another change is that the separator has now. Well, we talked about earlier. Well in the last episode about that. That the separator now has an additional. You can have now a div instead of an HR so you can style it more. And with this release that HTML element option is much more visible. It’s now kind of moved up in the advanced section and it’s not hidden anymore. So you can just toggle that and can change the options there. I really like that there was another block about that. I think the same thing happens with a button block. They also move the HTML element section up so you can change through between the element of a button or the element of a link, an anchor. So that’s why I’m kind of hesitating about moving forward there. In the video Block has now an additional option to set a track as default and the track is actually the caption track. So you can select the default language there. And that’s really helpful for anybody who has videos on the website and is not an English speaker or doesn’t have the audience of any English speaker. So they could set the default but they had to really specifically do it. And if there’s not one uploaded, it was a little janky, so buggy for things. So I think that was it on the enhancements.

\n\n\n\n

Bug Fixes

\n\n\n\n

Anne McCarthy: Yeah. Now we can jump into bug fixes if you want to. I can start with that.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah.

\n\n\n\n

Anne McCarthy: One of the first bug fixes which I do want to call out is from, I’m pretty sure a new contributor. Yep, first-time contributor, which is always really cool to see. Super awesome. McCool I think is the name. Apologies if I’m mispronouncing that, but this work basically fixed an issue where the pull quotes site element couldn’t be styled or overridden by theme JSON due to basically conflicting CSS specificity. And so this is a nice win for blocking developers because they can now customize citation styles as they’d like. And it was some nice collaboration with Aki again to basically resolve this by reducing the specificity of the class selector so that theme JSON styles can actually work. I love when that actually works out. So yeah, keep the feedback coming, especially block theme authors around limitations you run into like this. It’s always really helpful to start to continue to fix these sorts of things. So I was excited to see that bug fix there.

\n\n\n\n

Birgit Pauli-Haack: Definitely. It’s also, if you want to read up about it and see how such a collaboration between veteran contributors and new contributors actually happens. It’s a great example where a lot of people have some opinions, but then you move forward and you get a nice PR merged that helps a lot of people. So it’s definitely a great way to contribute. I don’t think I see any other bug fixes that I would want to talk about.

\n\n\n\n

Accessibility

\n\n\n\n

So there’s one on the component that’s more on accessibility thing, that the toolbar now adjusts the colors for dark mode support. And that’s really cool because now you can also have the toolbar on the block in dark mode. For a lot of people that are around in dark mode, it’s really cool.

\n\n\n\n

Documentation

\n\n\n\n

And then there is one documentation issue I need to look at that, but it is that the block schema now also has a roll field and the role field is important for.

\n\n\n\n

Anne McCarthy: It looks like it was added before in 6.7. Like the roll field was stabilized but it wasn’t exposed in the schema. Which, you know, might be good to follow up on.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah, it happens with 6.7 it was. Yeah. And that’s for the content mode.

\n\n\n\n

Anne McCarthy: Yeah, that’s right.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So that’s it. I think we’re through that. We have Gutenberg 20.9 and 21 and we are at the last bit of our show.

\n\n\n\n

What’s in Active Development or Released

\n\n\n\n

And that is what’s in active development or discussed. And with a few more talks on flagship WordCamps, the interactivity becomes more and more popular, and the team worked in the last few months with the WordPress team together to implement additional features, and those are now with the start of contributing again backported to the Gutenberg repo. There are many issues and you can follow along on the tracking issue. Backport WooCommerce Interactivity API improvements. That’s tracking issue 70372. It’s like a phone number. Yeah, there are actually quite a few issues in there. I’m really excited about that because there is a new feature that’s the interactivity router that lets you organize your pages better or the links between blocks. And also what was the other one?

\n\n\n\n

Anne McCarthy: I know there’s some client side navigation work that’s been done too, which I’m really excited about. I’ve been using that in the Block Museum for a while now and it just makes it super quick to switch between pages and to have it be pulled in and hopefully stabilize soon. It’d be really, really neat to have as an option. I have loved having it on the Block Museum.

\n\n\n\n

Birgit Pauli-Haack: So yeah, yeah, that was also something, that was an experiment I think in Gutenberg for the, for the query block. Yeah, yes, yes. So, okay, so now we’re kind of moving forward on that and I’m quite excited about that, and I hope you dear listeners are too. All right, is there anything else that you wanted to talk about on the show?

\n\n\n\n

Anne McCarthy: But nothing on my mind. I mean I would love this is a selfish ask, but as I get back into the project, mainly coming back from sabbatical, I would love to know what sort of hallway hangouts or conversations folks want to have. I’m really keen on making sure we continue to have a lot of those community wide conversations, not just at WordCamps because not everyone can join those. And like that’s some inspiration I took from the COVID times is to continue the conversation. So if folks have ideas or suggestions, I’m Nzazu and WordPress at org Slack, my site Snowmad Blog, you can contact me there. I’m not on X or any of the social media so you cannot find me. But yeah, I, I just am. I’m very curious to see what’s on people’s minds, what feels like hot topics to discuss and what feels important to hear more about and how we can facilitate sharing that knowledge and inviting more folks into the work. That’s the only other thing I’d love to add.

\n\n\n\n

Birgit Pauli-Haack: Awesome. Awesome. Yes. And as always, the show notes will be published on GutenbergTimes.com/podcast this is episode 118. And if you have questions or suggestions or news you want us to include, send them to changelog@gutenbergtimes.com that’s changelog@gutenbergtimes.com and this is the end of this show.

\n\n\n\n

Thank you all for listening, and thank you so much for taking the time out of your busy, busy schedule to be on the show with me. And thank you all for listening. And until the next time, bye.

\n\n\n\n

Anne McCarthy: Bye.

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 15 Jun 2025 14:52:18 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:119:\"Gutenberg Times: From WordCamp Europe to AI and Beyond: Figma, Fresh Courses, and Block Style — Weekend Edition #332\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=40572\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:121:\"https://gutenbergtimes.com/from-wordcamp-europe-to-ai-and-beyond-figma-fresh-courses-and-block-style-weekend-edition-332/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:28057:\"
\n\n\n\n

Hi there,

\n\n\n\n

WordCamp Europe is over. I had a blast and also caught a bug.\"🤧\"

\n\n\n\n

The next flagship WordCamp is just around the corner: WordCamp US will take place August 26 – 29 with Contributor Day, Showcase Day and a two-day conference. The call for speakers is open, notice the deadline June 20 for your submission. Also open are the call for sponsors and for volunteers.

\n\n\n\n

I am so excited as I will finally connect with my WordPress friends from the US again. It took me three years to get back to WordCamp US after our move to Germany.

\n\n\n\n

With Automattic getting back to contributions, the team caught up on Gutenberg release posts and there is a new Gutenberg version available. I also have a few notes and links collected about the new AI team and their work.

\n\n\n\n

I hope to see you at WordCamp US, too

\n\n\n\n

Yours, \"💕\"
Birgit

\n\n\n\n\n\n\n
\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

In the latest edition of What’s New for Developers (June 2025), Justin Tadlock collected lots of information relevant for plugin authors, themes builders and agency freelance developers from Core, Gutenberg, and Playground. It’s the best post to catch up on the last to month of updates in WordPress.

\n\n\n\n
\n\n\n\n

Carlos Bravo release Gutenberg 21.0. In his release post What’s new in Gutenberg 21.0? he highlighted.

\n\n\n\n\n\n\n\n
\n\n\n\n

Jessica Lyschik used the time during Contributor Day at WordCamp Europe to get a head start on catching up with the release posts for earlier Gutenberg releases.

\n\n\n\n\n\n\n\n
\n\n\n\n
\n

\"🎙\" The latest episode Gutenberg Changelog 118 – WordCamp Europe, WordPress New AI Team, the Pride Photo Drive, Gutenberg 20.9 and 21.0  Anne McCarthy is back from sabbatical and we talked about WordCamp Europe, the new WordPress AI team, the Pride Photo Drive, and Gutenberg 20.9 and 21.0 .

\n\n\n\n

If you are listing via Spotify, leave a comment. If you listen via other podcast apps, leave a review. It’ll help with the distribution.

\n\n\n\n
\"\"
\n
\n\n\n\n

New WordPress AI Team

\n\n\n\n

Just ahead of WordCamp Europe, Mary Hubbard announce the new AI team, identifying James LePage and Felix Arnzt as team reps. James LePage followed up with his post Welcome to the Core AI Team Blog.

\n\n\n\n

The community came together for the Introducing the AI Team Hallway Hangout and Anne McCarthy published the recap and the recording.

\n\n\n\n

What I learned:

\n\n\n\n\n\n\n\n
\n\n\n\n

The current initiatives / plugins have been mentioned in early editions of the newsletter:

\n\n\n\n\n\n\n\n
\n\n\n\n

The WordPress AI Team chats in the WPSlack #core-ai channel and holds meetings every other Thursday at 16:00 UTC. You can read the summary of this week’s meeting on the Make AI blog.

\n\n\n\n
\n\n\n\n

In his video The WordPress AI fightback begins! Jamie Marsland interviews James LePage about AI in WordPress and the new team.

\n\n\n
\n
\n\n
\n
\n\n\n

WordCamp Europe

\n\n\n\n

It was a fantastic WordCamp at a great venue. I enjoyed the many, many conversations with attendees, sponsors, contributors and fellow speakers. The organizing team has done a fabulous job, in all areas, and the volunteers were awesome. The speaker team was first-class in their support. As a first time WCEU speaker, I felt very well cared for. I loved the bright and brilliant designs at the venue as well as on the website and on screens.

\n\n\n\n

The most astonishing work was done by the AV team, who uploaded all videos to WordPress TV by the end of the WordCamp. In contrast to previous WordCamps, all workshops were also recorded, and you can watch them at your own speed.

\n\n\n\n

As always, I share my opinionated list of favorites:

\n\n\n\n

During Fire side Chat with Mary Hubbard and Matt Mullenweg they discussed, among other things, the WordPress Campus Connect project that’s being rolled out as an official program. Hubbard also announced the start of a pilot project for student internships with the University of Pisa, encompassing 5000 students to contribute 150 hours and received six college credits.

\n\n\n\n
\"Mary
\n\n\n\n

Another great talk was by Noel Tock WordPress without Borders – The Fight for Digital Freedom. Tock not only shared from his charity work in Ukraine but also about other charities who help with finding kids, providing a roof over the head of people who lost their homes, and trying to alleviate other hardships. Tock made us realize the true impact of WordPress has to all the agencies who use it for their web site to fundraise and connect with communities. The pictures from Ukraine are heart-wrenching.

\n\n\n\n

The Block related talks:

\n\n\n\n\n\n\n\n

If you are interested in working with Playground, two workshops might help you get started depending on your needs

\n\n\n\n\n\n\n\n

This is only a small list, and there are many great talks about all WordPress topics, for content creators, developers, entrepreneurs, and educators. Check them out.

\n\n\n\n

A few attendees published recap posts:

\n\n\n\n\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n


Carlo Daniele
, Kinsta, dug deeper in the term WordPress Hybrid Themes. He covered two approaches. The first is how hybrid themes bridge the gap between Classic and Block Themes by supporting modern block features. They maintain compatibility with traditional plugins and templates. The second highlights ways developers can enhance hybrid themes with global styles. They can use block patterns and template parts for flexible site building.

\n\n\n\n
\n\n\n\n

In her post, From Page Builders to Blocks, Johanne Courtright, founder of Groundworx, explains why it’s time to move from page builders to Gutenberg, the built-in block editor. She points out its built-in stability, better performance, and easier design control. Courtright tackles common worries, then suggests starting small—like switching your blog first, updating your theme, and helping users learn—showing that Gutenberg’s block system is the way forward for WordPress.

\n\n\n\n
\n\n\n\n

In here post Design Once, Build Everywhere:The Lego Principle for Page Builders, Tammie Lister reflects on the fragmented world of page builders, arguing for a “Lego principle” where design components are created once and used everywhere. She suggests that adopting shared foundations and modular systems—much like Lego’s approach—would unlock creativity, improve portability, and better meet modern demands. Ultimately, Lister envisions a future where page builders are collaborative, flexible, and empower users to build without barriers.

\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Fabian Kägy, director of Editorial Engineering, introduced Fueled’s open-source Figma to WordPress plugin, which exports design tokens from Figma directly into a WordPress theme.json file, reducing a 10–15 hour manual process to about an hour and enabling rapid, consistent theme development without extra frameworks or licenses

\n\n\n\n
\"Screenshot
\n\n\n\n
\n\n\n\n

Jeremy Holcombe at Kinsta, also researched How to convert a Figma project to WordPress and walks you through three methods. He covers using the Figma plugin by Yotako for automation, manually rebuilding designs in WordPress for precision, and hiring professional services, highlighting the pros, cons, and best use cases for each approach..

\n\n\n\n
\n\n\n\n

Mike McAlister introduced the Ollie Theme Academy video course a free and in-depth video course teaching everything from the basics to advanced techniques of WordPress block theme development. The course covers full site editing, global styles, patterns, and aims to help anyone modernize their WordPress workflow for 2025 and beyond.

\n\n\n\n

10 days later, McAlister followed up with the announcement of a Block Development course. This is a new resource to help developers master building custom WordPress blocks. It provides practical, hands-on video lessons focused on modern block development. This approach aims to make it easier for anyone to create powerful, custom blocks for their WordPress sites.

\n\n\n\n
\"Screenshot
\n\n\n\n
\n\n\n\n

Bernhard Kau explored Implementing a custom block style variation using only JSON files in WordPress block themes. He explains how to make a perfectly round button by defining a new style in a JSON file. This approach bypasses the need for PHP or JavaScript. Despite some limitations, this approach allows for easy customization. There is incomplete support for certain properties. Nevertheless, it enables consistent design without writing traditional code.

\n\n\n
\n

“Keeping up with Gutenberg – Index 2025”
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n
\n\n\n

Building Blocks and Tools for the Block editor

\n\n\n\n


Alfredo Navas, developer at WebDevStudios, explored the MCP server plugin. He shared his findings and highlighted how it enables external tools or AI agents to interact with WordPress. These interactions are useful for tasks like creating posts or debugging. He notes its usefulness for automating workflows, its extensibility, and that it’s still under active development.

\n\n\n\n
\n\n\n\n

Eric Karkovack explains how to add custom style variations to WordPress blocks using a custom plugin. He guides you through creating custom style variations for WordPress blocks. He details building a plugin, using the ‎`register_block_style()` function, and applying unique styles—like a “Unicorn” button—via PHP or JSON. This way you empower your users to personalize block designs and enhance site consistency.

\n\n\n\n
\n\n\n\n

I mentioned DeepWiki before, in WE #329, and now Jonathan Bossenger invites you in you YouTube video to learn more about DeepWiki | AI powered documentation you can talk to.

\n\n\n\n

I asked DeepWiki the following questions, click on the links to get to the answers.

\n\n\n\n\n\n\n
\n
\n\n
\n
\n\n\n
\n\n\n
\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n
\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n
\n

Featured Image: WordCamp Europe 2025 photo by Kostas Fryganiotis, found on Flickr

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 14 Jun 2025 09:50:37 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Gravatar: Building Better Social Networks Through Decentralization\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3324\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://blog.gravatar.com/2025/06/13/decentralized-social-media/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:10070:\"

Let’s face it. Social media is starting to feel like a rigged game. Users are burnt out, brands are boxed in, and algorithms act more like black boxes than helpful curators.

\n\n\n\n

Enter the promise of decentralized social networks: platforms that ditch the central command center and run on independently managed servers. They promise a fairer, freer internet – but pulling it off isn’t easy.

\n\n\n\n

And the numbers tell an interesting story.

\n\n\n\n

The Great Migration: What’s Really Driving Growth?

\n\n\n\n

Bluesky has been absolutely exploding lately, adding millions of users in just the past few months. Meanwhile, Mastodon has been puttering along with steady but modest growth for years, never quite hitting that mainstream breakout moment.

\n\n\n\n

But here’s the question: are people flocking to Bluesky because they genuinely want decentralization, or because they just want somewhere that ain’t X?

\n\n\n\n

Most folks don’t wake up thinking “I need a decentralized social network.” They wake up frustrated that their posts aren’t reaching their followers, or worried their account might vanish overnight, or just plain tired of dealing with whatever chaos is happening on their current platform.

\n\n\n\n

Bluesky offers an escape hatch that feels familiar. Mastodon? Well, that’s where you go when you really, truly care about the principles behind decentralization.

\n\n\n\n

Is Bluesky Actually Decentralized?

\n\n\n\n

Here’s where things get interesting. Bluesky runs on the AT Protocol, which is designed for decentralization. But right now? There’s essentially one big server doing all the heavy lifting.

\n\n\n\n

It’s like having a decentralized highway system with only one on-ramp.

\n\n\n\n

Bluesky promises you can eventually take your data and followers elsewhere if things go south. That’s a big improvement over traditional platforms. But as of today, “elsewhere” doesn’t really exist yet. You’re still trusting one company with your digital life – they just promise to be nicer about it.

\n\n\n\n

That doesn’t make Bluesky worthless. The data portability and algorithmic choice features are genuinely useful. And the fact that you can use your own domain as your username? That’s actually pretty brilliant.

\n\n\n\n

But calling it fully decentralized right now is like calling a blueprint a building.

\n\n\n\n

How True Decentralization Works: The Fediverse

\n\n\n\n

Real decentralization looks more like Mastodon and the fediverse – a sprawling network of independently run servers that all speak the same digital language thanks to open protocols.

\n\n\n\n

It’s a bit like email. Your Gmail can talk to someone’s Outlook, Yahoo, or that one person still clinging to AOL, because they all follow the same basic rules.

\n\n\n\n

In the fediverse, you don’t sign up with one big platform. You choose an instance to call home. Each comes with its own vibe, community guidelines, and moderation style. Some are havens for coders, others filled with artists, activists, or people very, very into vintage tractors.

\n\n\n\n

This setup hands users real control over moderation and community culture. No black-box algorithm deciding who sees what. No getting locked into a single app. And if your current server starts feeling off? You can pack up your followers and posts and move to another instance.

\n\n\n\n

The fediverse includes:

\n\n\n\n\n\n\n\n

But here’s the catch. All this freedom comes with complexity that makes most people’s heads spin.

\n\n\n\n

The Identity Problem Nobody Talks About

\n\n\n\n

The biggest challenge with decentralized social media isn’t technical – it’s practical. How do you maintain a consistent identity when you’re scattered across multiple platforms, instances, and protocols?

\n\n\n\n

That dream handle you grabbed on mastodon.social? Already taken on hachyderm.io. Now you’re stuck with @yourname2024 or something equally clunky. Your bio works perfectly on Mastodon’s 500-character limit but gets chopped off everywhere else. Profile links follow no consistent format.

\n\n\n\n

The result? Your digital presence looks different everywhere, making it harder for people to find and recognize you across platforms.

\n\n\n\n

This is where domain-based usernames start making sense. Whether it’s Bluesky’s @yourname.yourdomain.com handles or setting up your own domain for the fediverse, owning your name means owning your identity.

\n\n\n\n

And that’s not just about vanity – it’s about being findable when you inevitably need to move platforms again.

\n\n\n\n

Making Yourself Findable in a Fragmented World

\n\n\n\n
\"\"
\n\n\n\n

Here’s something that might sound contradictory: one way to navigate decentralized social media is through a centralized identity service.

\n\n\n\n

I know, I know. Using Gravatar to manage your presence across decentralized platforms sounds backwards. Some folks specifically chose Mastodon to escape centralized identity systems. That tension is real, and worth acknowledging.

\n\n\n\n

But here’s the thing – when you’re bouncing between Mastodon, Bluesky, PeerTube, and whatever comes next, consistency becomes valuable. Not for data collection or advertising, but for basic human recognition.

\n\n\n\n

Unlike your all-in-one identity on places like Facebook or Instagram, the decentralized world hands you a juggling act. Different apps, different instances, different handles. Not ideal.

\n\n\n\n

When someone sees @yourname.link posting on Bluesky, then spots the same name and face commenting on a GitHub issue or WordPress blog, that consistency builds trust and recognition. It’s the difference between being a random username and being a recognizable person.

\n\n\n\n

Gravatar handles this by creating a portable identity hub that follows you around like a digital business card. Set it up once, and it appears automatically on thousands of sites whenever you use your email to register or comment.

\n\n\n\n

You choose what to share. You update it when you want. No algorithm meddles with your identity, and your data stays yours.

\n\n\n\n

For Bluesky specifically, Gravatar supports custom domain handles, so you can claim @yourname.bio without the technical hassle of setting up your own server.

\n\n\n\n

The Real Value: Being Found When You Move

\n\n\n\n

The benefit ain’t about convenience – it’s about portability. When you inevitably need to jump platforms (and you will), your followers can find you because your identity remains consistent.

\n\n\n\n

Your Gravatar profile becomes a lighthouse, pointing people to wherever you’ve landed next. Mastodon handle? Listed there. PeerTube channel? Yep. New platform that launches next year? Add it to the list.

\n\n\n\n

This matters more in a decentralized world where there’s no central directory, no “suggested users” algorithm to help people discover you on a new platform. You’re responsible for being findable.

\n\n\n\n
\"\"
\n\n\n\n

What’s Next for Decentralized Social Media

\n\n\n\n

The momentum is real, but the direction isn’t clear yet. Will Bluesky eventually become truly decentralized, or will it remain a benevolent centralized platform with decentralized features? Will Mastodon find its mainstream moment, or stay the principled-but-niche option?

\n\n\n\n

And will regular folks – not just tech enthusiasts – actually want the complexity that comes with true decentralization?

\n\n\n\n

The answer probably depends on whether platforms can solve the basic human problems (finding your people, keeping your identity, avoiding harassment) better than what we have now.

\n\n\n\n

What we know for sure is that the old model is cracking. People want more control, more transparency, and more choice in how they connect online. Whether that comes through truly decentralized networks or just better-behaved centralized ones remains to be seen.

\n\n\n\n

But either way, making yourself consistently findable across this changing landscape? That’s just good sense.

\n\n\n\n

Navigating the challenges of cross-platform identity mana

\n\n\n\n

So, step into the future.

\n\n\n\n

Take two minutes (seriously, that’s all it takes) to set up your free Gravatar profile, and take charge of your identity across the decentralized web.

\n\n\n\n
\"\"
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 13 Jun 2025 14:45:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"Gravatar: Vibe Better With Custom LLM Instructions\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3315\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://blog.gravatar.com/2025/06/12/vibe-better-with-custom-llm-instructions/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1651:\"

Are you creating code with AI tools like Cursor, Loveable, or Claude? We just made it way easier.

\n\n\n\n

We’ve created a single page of custom instructions that developers can copy-paste into any LLM or AI tool to instantly understand how Gravatar works. No more explaining our API from scratch or watching your AI assistant guess how profile data flows.

\n\n\n\n

What’s In The Box?

\n\n\n\n

Our custom instructions give AI tools everything they need to integrate with Gravatar properly:

\n\n\n\n\n\n\n\n

Think of it as the ultimate cheat sheet for building with Gravatar.

\n\n\n\n

Perfect For Developers Who Vibe

\n\n\n\n

Whether you’re prototyping with v0, building with ChatGPT, or coding alongside any AI assistant, these instructions ensure your AI actually gets what Gravatar does.

\n\n\n\n

Your AI will understand profile-as-a-service, know our REST API endpoints, and suggest the right integration approach for your project.

\n\n\n\n

Copy, Paste, Build

\n\n\n\n

We’ve done the heavy lifting.

\n\n\n\n

The instructions work with any LLM that accepts custom prompts. Paste them in, start your project, and watch your AI assistant become a Gravatar integration expert.

\n\n\n\n

Grab the instructions here →

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 12 Jun 2025 21:10:25 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"Gravatar: 10 Essential Tips for DIY Professional Headshots\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3299\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://blog.gravatar.com/2025/06/12/professional-headshot-tips/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:22246:\"

So, you’ve decided it’s time for a headshot that doesn’t look like it was taken at 11 pm under your kitchen light. Sensible move. But then – bam! You check out the prices and suddenly consider just cropping yourself out of a group photo from 2017.

\n\n\n\n

You’re not overreacting.

\n\n\n\n

The professional route is painfully pricey. As for the DIY route, one minute you’re adjusting lighting, the next you’re wondering why you suddenly resemble a startled meerkat.

\n\n\n\n

And yet, the stakes are high. Research shows people form an impression of you from your photo in 1/10th of a second. That’s faster than your thumb can scroll.

\n\n\n\n

Like it or not, your headshot is your always-on personal brand billboard, beaming across LinkedIn, Zoom, your email signature… basically, everywhere.

\n\n\n\n

But the truth is, you don’t need a Hollywood budget or a Nikon the size of a shoebox to nail it.

\n\n\n\n

With just your smartphone, a few clever tricks, and a sprinkle of intention, you can snap a headshot that says “professional,” not “panicked.”

\n\n\n\n

Below you’ll find 10 practical strategies to help you:

\n\n\n\n\n\n\n\n

This guide will take you from “I guess this will do?” to a polished, professional headshot that opens doors, lands clients, or gets you into that next big role.

\n\n\n\n

Let’s get snapping!

\n\n\n\n

1. Choose your equipment

\n\n\n\n

Good news: The best camera you own is probably already in your pocket. Today’s smartphones are absolute powerhouses, easily capable of snapping headshots that look straight out of a studio… if you know how to wield them.

\n\n\n\n

Here’s what you’ll need:

\n\n\n\n\n\n\n\n
\"Phone
\n\n\n\n

Take note: As tempting as it is to use the front-facing camera, the back camera’s where the magic happens. It’s higher quality, gives you more control, and won’t leave you with that slightly fuzzy “FaceTime screenshot” look.

\n\n\n\n

To get it right:

\n\n\n\n\n\n\n\n

\"✨\" Pro tip: Some phones flip selfies by default, turning text (and your face) backward. If you insist on the front camera, dig into your settings and switch off image mirroring before you start. That way, your photo looks polished and professional everywhere it shows up.

\n\n\n\n

2. Find your ideal lighting

\n\n\n\n

Lighting. It’s the make-or-break factor; the difference between “Oh wow, did you get that done professionally?” and “Cute… but why does it look like you’re hiding in a cave?”

\n\n\n\n

Don’t worry. Your best lighting? Totally free. Natural light is your secret weapon.

\n\n\n\n

Start by parking yourself near a big window – bonus points if it faces away from the sun, that way light stays soft and steady, skipping those harsh, unflattering shadows. Aim to stand about 3–5 feet away so that the gentle glow wraps your face like a flattering Instagram filter.

\n\n\n\n

And yes, timing totally matters:

\n\n\n\n\n\n\n\n

And don’t just snap and hope for the best. Play around. Shuffle a little left or right of the window. Step closer, then further away. Test different angles to find your best side.

\n\n\n\n

\"✨\" Pro tip: If you’re wearing spectacles, tilt your chin slightly down, and if you’re using extra lights, angle them upward to give you the no glare, natural, polished look you want.

\n\n\n\n

Go on, work that window.

\n\n\n\n

3. Pick your background

\n\n\n\n

Your background is the unsung hero of your headshot. Typically, you’ll want a backdrop so subtle, no one even notices it. All eyes should be on you, not whatever’s lurking behind you.

\n\n\n\n

The easiest win is to stick to plain, neutral tones:

\n\n\n\n\n\n\n\n
\"\"
\n\n\n\n

These shades quietly do their job, keeping attention exactly where it belongs – on your face. And no, you don’t need a fancy studio to pull this off. Try one of these simple DIY setups:

\n\n\n\n\n\n\n\n

\"✨\" Pro tip: Do not stand right up against the background. Step forward 3-4 feet to:
\"✅\" Add natural depth
\"✅\" Dodge harsh shadows
\"✅\" Get a subtle blur in portrait mode

\n\n\n\n

A few things to avoid: Bright colors that clash with your skin tone. Busy patterns screaming for attention. Random clutter (bookshelves, kitchen counter, laundry pile). Remember, you’re the star. Everything else needs to fade into the background. And if all else fails, you can always swap out the backdrop later when you edit your pic.

\n\n\n\n

There you have it: Pro-looking backdrop, no studio required.

\n\n\n\n

4. Dress for success

\n\n\n\n

Let’s talk wardrobe. Color psychology isn’t just fluff, it shapes how people see you. In corporate settings, blues and grays quietly say “trustworthy” and “competent.” Whereas in creative industries, brighter colors scream “innovative.” Rule of thumb: Dress for your industry and purpose.

\n\n\n\n

Your outfit also needs to work with your background:

\n\n\n\n\n\n\n\n

Necklines matter too:

\n\n\n\n\n\n\n\n

Heads-up: The camera spots everything – gaps, seams, button strain. If it doesn’t fit perfectly, fix it or swap it.

\n\n\n\n
\"Gravatar
\n\n\n\n

And once you’ve nailed that shot? Upload it to Gravatar. It syncs your headshot across platforms like WordPress, GitHub, and Slack – no manual updates needed.

\n\n\n\n

In just 5 minutes, you can create your free profile, upload your pic, and let your digital presence do the talking.

\n\n\n\n

5. Apply makeup strategically

\n\n\n\n

Here’s the thing about cameras: They’re sneaky little flatteners. What looks defined and dimensional in real life can end up weirdly washed out or featureless in a photo. That’s why a little strategic makeup can make a big difference for headshots.

\n\n\n\n

If makeup’s already in your routine, dial it up a notch – think a touch more definition around the eyes and cheekbones than your everyday look. This helps counteract the camera’s flattening effect and keeps your face looking sculpted and alive in the final shot.

\n\n\n\n

A few things to skip before your shoot:

\n\n\n\n\n\n\n\n

For men – or anyone who doesn’t usually reach for makeup – consider a few subtle tweaks:

\n\n\n\n\n\n\n\n

But here’s the best bit: You don’t need to chase perfection on the day. A good photo editor can easily tackle things like redness, uneven skin tone, or tiny blemishes after the fact.

\n\n\n\n

6. Use confident body language

\n\n\n\n

Body language matters more than you think in a headshot. Research shows small posture tweaks can boost how competent and approachable you seem. Plus, striking confident poses doesn’t just influence others, it literally boosts your confidence while lowering stress.

\n\n\n\n

Try the “turtle method.”

\n\n\n\n\n\n\n\n

Skip perfect symmetry – it reads stiff. Instead:

\n\n\n\n\n\n\n\n

Before the shutter clicks, use this breathing hack to ditch tension:

\n\n\n\n\n\n\n\n

End result: Less “awkward passport photo,” more polished, confident professional.

\n\n\n\n

7. Find your facial expressions

\n\n\n\n

Here’s the thing: Everyone’s got signature expressions that photograph well, but you probably won’t stumble upon them on first try. The secret is to indulge in a little trial and error.

\n\n\n\n

Block out some time, grab your phone, and take test shots from different angles. What feels natural in the mirror doesn’t always translate on camera. You’ll need to push past your usual go-to faces and experiment.

\n\n\n\n

Here’s what to try:

\n\n\n\n\n\n\n\n

Take note: Each industry carries its own preferences.

\n\n\n\n\n\n\n\n

And if you’ve ever sworn you’re “just not photogenic”? Join the club. The trick is capturing enough variations to catch those magic in-between moments. Use your phone’s burst mode (hold that shutter down) to snap 10–15 shots at once. Those sneaky, subtle shifts mid-blink or mid-laugh are often the gold you’d never have deliberately posed for.

\n\n\n\n

8. Tweak those phone camera settings

\n\n\n\n

Your smartphone camera is smarter than you think. With a few tweaks, you can take your headshot from “meh” to “wow.” Here’s how:

\n\n\n\n\n\n\n\n
    \n
  1. Apply the rule of thirds and align the eyes along the top horizontal line.
  2. \n\n\n\n
  3. Center your face at a grid intersection.
  4. \n\n\n\n
  5. Voilà: Pro-level framing.
  6. \n
\n\n\n\n
\"Grid
\n\n\n\n\n\n\n\n

With these settings dialled in, you’ll be cranking out headshots that punch well above their weight.

\n\n\n\n

9. Time for a quick polish: Edit that headshot

\n\n\n\n

Even the best DIY headshots can use a little finesse. But don’t worry, you don’t need Photoshop or a degree in digital media. A few smart tweaks with free (or cheap) apps can level up your photo without draining your wallet:

\n\n\n\n\n\n\n\n

Here’s where to focus your edits:

\n\n\n\n

Cropping

\n\n\n\n\n\n\n\n

Brightness & contrast

\n\n\n\n\n\n\n\n

White balance

\n\n\n\n\n\n\n\n

Vignette

\n\n\n\n\n\n\n\n

A few editing don’ts to steer clear of:

\n\n\n\n\n\n\n\n

And when you’re done, always save in high-res (at least 1000×1000 pixels) to keep things crisp across every platform.

\n\n\n\n

10. Use Gravatar to display your perfect headshot everywhere

\n\n\n\n

You’ve finally nailed the perfect headshot – great lighting, solid pose, zero double chin. Congrats! But now comes the tedious part: Uploading it everywhere. LinkedIn. Company intranet. Slack. GitHub. That random forum you signed up for in 2014. Each site wants a different size, a different crop, a different format. Ugh.

\n\n\n\n

Enter Gravatar: The no-fuss, no-hassle way to make your headshot follow you around the internet like the loyal professional sidekick it was born to be.

\n\n\n\n

Here’s how it works:

\n\n\n\n\n\n\n\n

And it doesn’t stop at just your photo. Gravatar also lets you round out your online presence with:

\n\n\n\n\n\n\n\n
\"Example
\n\n\n\n

The cherry on top? It’s 100% free. Spend five minutes setting up your profile today, and you’ll save yourself countless “ugh-I-need-to-update-my-photo-there-too” headaches down the line – all you need for a polished online presence.

\n\n\n\n

Your perfect headshot + Gravatar = instant professional glow-up

\n\n\n\n

Turns out, you can create a killer professional headshot at home – no fancy cameras, no overpriced photographers, no awkward studio backdrops required. Just your smartphone, some decent lighting, and a little know-how.

\n\n\n\n

By following these 10 steps, you’ve already cracked the code – the gear, the angles, the lighting, the editing – to turn your humble selfie into a headshot that can go toe-to-toe with the pros.

\n\n\n\n

Pair that polished photo with Gravatar, and suddenly your face shows up everywhere you show up – LinkedIn, blogs, email signatures, you name it – without you lifting another finger. You just update your Gravatar once to instantly refresh across the board.

\n\n\n\n

So, carve out an hour to snap that headshot, then take five minutes to set up your (free!) Gravatar profile today.

\n\n\n\n
\"\"
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 12 Jun 2025 20:59:04 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"Matt: Play With Clay\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=143265\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:27:\"https://ma.tt/2025/06/clay/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1699:\"

Happy to announce that the amazing Clay.earth product and team is joining Automattic. If you haven’t tried the app out yet, here’s a quick video to give you a taste.

\n\n\n\n
\n\n
\n\n\n\n

TechCrunch has covered the broader strategy pretty well: One of the top requests we’ve heard from Beeper beta testers is they want to tie in more context, like a personal CRM, and some even requested Clay by name. We’ll keep the apps separate, as Clay also has some interesting team uses, but they will complement and integrate with each other as part of our all-in-one messaging strategy.

\n\n\n\n

We share a vision to integrate Clay’s technology, which manages over 140 million relationships, as a layer across many of our products and experiences at Automattic. I’m excited to work with the founders, Matt and Zach, to bring this vision to life. I’ve always felt the missing primitive in WordPress’ content management data architecture was a scalable concept of a Person and Relationships outside of our user table.

\n\n\n\n

Here’s the beautiful announcement on the Clay site and on Automattic’s.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 12 Jun 2025 18:37:46 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"Do The Woo Community: Wrapping Up the Rebrand Series with BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97958\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"https://openchannels.fm/wrapping-up-the-rebrand-series-with-bobwp/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:207:\"BobWP wraps up the rebranding of Do the Woo into Open Channels FM. The new channel features five diverse shows, maintaining core values while offering more structure for listeners to explore their interests.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 12 Jun 2025 08:30:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:117:\"WPTavern: #172 – Reyes Martínez and Héctor De Prada on Website Maintenance for WordPress Agencies and Freelancers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=196556\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:129:\"https://wptavern.com/podcast/172-reyes-martinez-and-hector-de-prada-on-website-maintenance-for-wordpress-agencies-and-freelancers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:50854:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, website maintenance for WordPress agencies and freelancers.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today, we have Reyes Martínez, and Héctor de Prada.

\n\n\n\n

Reyes has been involved in the WordPress community since 2015, with a background in journalism, digital communications, and early stage startups. From 2021 to 2024, she was sponsored by Automattic to contribute full-time to global marketing and communication efforts for the WordPress Open Source project, She led several initiatives during that time, including the experimental WordPress Media Corps. Reyes currently serves as content lead at Modular DS.

\n\n\n\n

Héctor has been building websites since he was 12, and has worked with WordPress for nearly a decade, first as a freelancer, then running his own agency. Today, he’s one of the co-founders of Modular DS. He co-organizes the WordPress meetup in León in Spain, and writes a Spanish newsletter that keeps readers updated with the latest news from the WordPress ecosystem.

\n\n\n\n

In this episode, we get into the nitty gritty of WordPress maintenance. What it takes to effectively manage multiple websites, and why maintenance is such a crucial, if often overlooked, part of running a successful client business.

\n\n\n\n

You might think that updating plugins and themes is all there is to it, but Reyes and Héctor explained that there’s much more involved, performing regular backups, monitoring, uptime, and performance, checking for security vulnerabilities, database cleanups, and ensuring essential features like contact forms continue working as expected.

\n\n\n\n

We discuss best practices for educating clients, how to position ongoing maintenance as an investment rather than a cost, and solutions which can help automate and streamline these essential tasks.

\n\n\n\n

We also chat about how the maintenance landscape is changing with upcoming legal requirements around accessibility and privacy, and the emerging business opportunities for professionals specializing solely in website care.

\n\n\n\n

If you’re a freelancer or agency owner looking to scale up your business, perhaps you offer care plans to clients, or are considering adding maintenance plans to your service, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast. Where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Reyes Martínez and Héctor de Prada.

\n\n\n\n

I am joined on the podcast today by Reyes Martinez and by Héctor de Prada. Hello Both.

\n\n\n\n

[00:03:53] Héctor de Prada: Hello Nathan.

\n\n\n\n

[00:03:54] Reyes Martínez: Hello Nathan.

\n\n\n\n

[00:03:55] Nathan Wrigley: I’m so pleased to have both of you on. This is going to be interesting because I’m going to be speaking to Héctor in about a week’s time as well, which will be kind of interesting. So there’ll be two podcasts coming out in quick succession featuring Héctor.

\n\n\n\n

But the topic will be very different, and I’ll explain in a moment what the topic is going to be about.

\n\n\n\n

But before that, I wonder if we could just get a little bit of an introduction to both of you. If we can keep it around the subject of WordPress that would be helpful.

\n\n\n\n

So let’s go to Reyes first. Tell us exactly who you are, who you work for, what do they do, whatever you like in your little potted bio.

\n\n\n\n

[00:04:29] Reyes Martínez: Yeah, sure. I’m Reyes and I have been part of the WordPress community since 2015. My background is in journalism and digital marketing and communications, and over the past 10 years, more or less, I have worked with startups and tech companies closely connected to the WordPress ecosystem.

\n\n\n\n

And from 2021 and 2024, I was sponsored by Automattic to contribute full time to the WordPress project, where I had the opportunity to contribute to different marketing and communications initiatives.

\n\n\n\n

And now I am the content lead at Modular DS. We’re building a tool to help freelancers and agencies manage multiple WordPress sites more efficiently.

\n\n\n\n

[00:05:13] Nathan Wrigley: Thank you so much. And let’s move over to Héctor. Similar question really, just give us your little potted bio.

\n\n\n\n

[00:05:19] Héctor de Prada: Of course. Well, I have been making websites, I always say almost all my life, since I was like very young, at 12, 13 years old. At the beginning, not with WordPress, I have to say. But I started working with WordPress around 8, 9 years ago when I started freelancing as a web designer, and that evolved to creating a web design agency.

\n\n\n\n

So I have been doing web design and websites, WordPress websites, for a long time. And 4 years ago almost, it’s when my partner and I, David and I, we started our current company, which is Modular DS, which is now where Reyes is working.

\n\n\n\n

I am also part of the community. This is what you were saying, Nathan, that we are going to talk about, WordCamp Europe, because I am one of the organisers at the meetup in León, in my city. So this is also something I like a lot because we go to a lot of WordCamps, a lot of WordPress events, and it’s very nice to be able to do that in our own city as well.

\n\n\n\n

[00:06:20] Nathan Wrigley: Thank you both so much. So if we stray into anything today, like a blog post is mentioned or a homepage or anything like that is mentioned, I will endeavor to link to that into the show notes. So if you head to wptavern.com and then search for the episode with these two fine people, then you’ll be able to find all of those links. It’s going to be easier to do it that way than to read anything out in an audio podcast.

\n\n\n\n

The approach I think I want to take with this episode is one of somebody fairly new in the WordPress space. So if you are new in the WordPress space, then you might just have the one website. And maintaining that one simple website is probably a reasonably straightforward thing to do. You know, you log in, you update the plugins, you update the themes and what have you.

\n\n\n\n

But if you’ve got any aspirations of becoming a bigger player in the WordPress space, perhaps you want to take on the job of maintaining multiple websites, perhaps you want to have clients and you want to maintain their websites, it becomes fairly obvious, fairly quickly, it’s a bit of a chore. There’s quite a lot of tasks that you need to do in order to keep those websites live.

\n\n\n\n

So that’s what we’re going to talk about. What are those tasks? What’s important to notice if you are a WordPress freelancer or agency owner. What are the things that you need to make sure that your clients are getting updated with and for? And then I guess we’ll sort of mention right at the beginning that Modular DS is something which kind of can take that process off your shoulders and make it fairly automated. But you can go and check out that of your own accord.

\n\n\n\n

So let’s just get into it then. What are the things that you would need to worry about? You can interrupt each other as you see fit. What are the kind of tasks that as a newbie WordPress we may not even know are coming our way, when we’ve got 2, 3, 5, 50 websites that we’ve got to keep maintained?

\n\n\n\n

[00:08:14] Héctor de Prada: I don’t think it’s, how to say, like that we don’t know we have to do that, or that we don’t expect to do it when we are trying to manage a few websites. Reyes and I, we were talking this morning, normally maintenance or maintenance tasks are something nobody is very thrilled about doing, okay. It’s not like the best job. Like, you can be a designer because you love creativity and designing things, or a developer because you love to build things.

\n\n\n\n

But I haven’t met anybody that is like, oh, my dream is to update plugins, create backups, and restore the website when it’s broken, you know? I think that’s the number one challenge, okay. Normally I see that one of the biggest problems is that we know maintenance has to be done in a website, but we don’t always do it. And when we have more and more websites, it becomes even a bigger problem, because we also let it aside more and more because it’s too much work. So that’s one of the main problems.

\n\n\n\n

[00:09:17] Nathan Wrigley: One of the things that in my life, I don’t know what the number of websites was, but there was a point where each morning, because I decided to do the updating on a more or less daily basis, there came a point where you realise that you’d now logged into X number of websites. So you’d gone to the URL to log in, you’d found the username and password, you’d logged in, you’d inspected whether there were plugins or themes to be updated. You’d gone to them individually, you’d update them in a careful manner to make sure nothing got broken, and you moved on to the next website. And at some point you kind of have the intuition, how many minutes or hours have I just lost?

\n\n\n\n

And whilst for one or two websites this really isn’t a problem, I guess what we’re talking about here is something at scale, when you’re over a, let’s say 2 or 3 or 5, or whatever that number is. It does start to add up, and you can’t afford to waste time in that way. And I think it’s exactly like you said, you don’t really know going into it that this is what you’re going to end up doing with your WordPress websites. But you’re right, nobody wrote down on their bucket list of things to do in life, I would like to update plugins for a living.

\n\n\n\n

[00:10:23] Héctor de Prada: And it’s very important at the same time. Like we said, yeah, maybe Reyes, you can say a little bit more about it. But maintenance, it’s really important for many reasons, in particular in the WordPress ecosystem.

\n\n\n\n

[00:10:34] Reyes Martínez: Yeah, I would say that it’s just that, that it’s not the most glamorous part of managing a website, like all the maintenance tasks. But I think it’s also what keep things running smoothly and professionally. I guess that’s the difference between being reactive and being proactive as well. I mean, that makes all the difference. So even though it’s not the most, I don’t know, glamorous part, it’s still very important to keep things professionally.

\n\n\n\n

[00:11:03] Nathan Wrigley: What are the things that we’re updating? So we’ve covered plugins and themes, and I suspect that they’re the ones most people, and again, the audience for this podcast is really broad, so obviously that sentence will be really blindingly obvious to many people. But there may be a proportion of people who don’t even know that that kind of stuff needs to be updated. So let’s just work from the basics upwards. There’s plugins and themes. When you talk about maintenance, what else are you bringing into that?

\n\n\n\n

[00:11:30] Héctor de Prada: You have the updates, both plugin, themes and the Core of WordPress, because it also gets updated. Now it’s once a year, it used to be like two, three times a year so those are also very important updates. But normally it’s mostly, because some people might ask, why should I update a plugin? If my website is working, if it’s perfectly fine, why do I have to update a plugin or a theme?

\n\n\n\n

Well, one of the biggest things in maintenance, because we have to do these updates, is the security part. I am positive that WordPress is a secure solution, that is why it powers 40 something percent of the web. But at the same time, we have 60,000 different plugins just in the WordPress repository. Each one of them is created by an independent team or developers. And even when everybody tries to create the best possible plugin, a secure plugin, and everything, there is human error, of course. And there is always people, since WordPress is so popular, trying to find vulnerabilities to attack these kind of plugins or themes.

\n\n\n\n

So many times, the most important updates are security updates. To avoid that, you have an older version of a plugin or a theme that maybe got exposed, and somebody found a vulnerability, and your website might get hacked because you didn’t do the updates. So even if your website is functioning perfectly, you should still do those updates. And this is something, for example, a lot of end clients, they normally don’t understand when you run an agency and stuff, because they don’t see the point of doing this. But this is one of the reasons, it’s super important.

\n\n\n\n

[00:13:08] Nathan Wrigley: In the normal experience in life, you go into a shop and you buy a thing, like some new sunglasses or a pair of shoes. You don’t anticipate having to update the shoes or update the sunglasses. You kind of just bought the thing and the thing is now yours and off it goes. You know, you expect it to function as sunglasses from now on, and the shoes will keep going as shoes. You know, you might have to replace them from time to time, but that’s another thing altogether. So it’s kind of hard to encapsulate that.

\n\n\n\n

But also, I suspect that most clients wouldn’t even know that there’s this sort of specter of security problems and the fact that bad things could potentially happen. Most clients I imagine have just come to you, the agency, the freelancer, because they want a website. They’re not interested particularly in all of that, but you have to explain that to them. And I always thought that was quite hard. I always got an intuition that the clients kind of thought, what are you on about? I’ve just bought this thing from you, why do I need to update it? Why do I need to keep doing these things?

\n\n\n\n

[00:14:07] Héctor de Prada: Education is one of the biggest parts in having a WordPress maintenance service in your agency or as a professional. Most people, end clients, many people is not tech people so they won’t understand. Updates, backups, these are all very not tangible things. So it’s not hard to explain, but it is more, it’s not like you go to a store, okay? You buy something, it normally doesn’t need maintenance. But I would say it’s like, you buy a house, you buy a car, it needs maintenance, okay? Because you can keep running with a car, but even if the car still works, maybe the brakes, at some point they will stop working and you will have a crash and nobody wants that. So I would say a website is more like a car than a normal product.

\n\n\n\n

[00:14:49] Nathan Wrigley: Yeah, that’s a really nice example because with a car particularly, there are bad people who are literally trying to break into the car and take the car away, or do damage to the car, or steal bits from the car. That explains it really well.

\n\n\n\n

Okay, let’s imagine that you’ve had that conversation, you’ve done that education piece, you’ve said to the clients, look, we need some kind of thing going on in the background. There has to be some kind of ongoing relationship between me, the website builder, the developer, and you, the client. But what are those tasks? What are the things, I guess your software will handle these kind of things, but just talking about them hypothetically, what are the list of things just beyond plugin, theme, Core updates? Are there any other things which you recommend?

\n\n\n\n

[00:15:32] Reyes Martínez: Besides updates there are also, for example, like I think it’s very important making regular backups. Monitoring up time and performance. Checking for security issues, you were just talking about that as well. Vulnerabilities, cleaning up the database, and in general, like making sure the site is running smoothly, like contact forms and links are working.

\n\n\n\n

Because there are things that even people think they might have not, I don’t know, like they are not very important. They can have an impact on their business as well. For example, like a broken contact form, that’s just like a very small example, but yeah, those things come to mind. I don’t know, Héctor, if you want to add anything else.

\n\n\n\n

[00:16:15] Héctor de Prada: I think those are the main ones, like your backups and the restoration of the backups when you have a problem. It happened to me I have to say. When we had the agency, I remember more than a few times having a client calling me and telling me, hey Héctor, the website is not working. And I was like, I didn’t know. So it’s like a very, very embarrassing moment because you’re supposed to be taking care of the website, but you didn’t know it wasn’t working until the client told you.

\n\n\n\n

So things like monitoring. When I started making websites, I couldn’t monitor them at all. If they break, I wouldn’t find out because somebody told me or I was just trying to do something and I found out. So monitoring as well. Security Monitoring, like you said, for vulnerabilities, for malware. There are a bunch of tools. I mean, it’s not only tools, maintenance tools, like it can be Modular or others.

\n\n\n\n

There are a bunch of tools in WordPress, like for everything in WordPress, that can help you with this maintenance task. Because the ideal thing, like we were saying, is to automate them so they don’t take so much time. Even if you only have one website, the ideal thing is that backups, monitoring, you have most of it automated, so you make sure even if you forget, if you go on holiday or whatever, it will still be running.

\n\n\n\n

[00:17:30] Reyes Martínez: Yeah, and you can get alerts, for example. Like Héctor was saying, if a website goes down, you can get alerts so you don’t have to be monitoring all the time. Imagine like manual monitoring or going site by site, just checking if everything is working correctly. And monitoring, it’s exactly a big task as well of maintenance and because it can help you catch problems early.

\n\n\n\n

[00:17:55] Nathan Wrigley: Okay, let’s just break all that now and then. So we’re imagining a scenario where we’ve built a website, we’ve handed it over to a client, and then we’re sort of presenting with the client the scenario, look, although we’ve given you the thing, here’s the website, there it is, it’s on the internet, there’s a whole load of other things that we need to do in the background.

\n\n\n\n

And there’s an education piece there, but there’s also a bit of sales that has to go on there because you have to persuade them, presumably that the thing that I’m suggesting here, you are going to need to pay for probably, there’ll be a, some kind of subscription model going on there. We will do all of these things in return for a monthly fee or whatever it might be.

\n\n\n\n

But broadly it is updating things. So that’s plugins, themes and Core. Making sure that those things are available. Then there’s the backup piece, a different thing altogether, and that’s just basically storing in multiple locations, an entire version of the website, the database, and the files to make sure that if an absolute catastrophe occurs, you can go back to whenever the website was last saved successfully, minus any security problems that you might have.

\n\n\n\n

And then another thing is uptime monitoring, which is the process of just alerting you, and I presume it’s you, not the client, that something’s gone wrong. The website that was there 10 minutes ago is not here now. And that’s a really, really, you know, that’s not a once a day thing, that’s once every two minutes kind of thing. You want to know the minute the website goes down, so that you can be the person that contacts the client to say, look, we see that the website’s gone down. And in some curious sense, you actually paint yourself in a good light by admitting something before they’ve even learned about it.

\n\n\n\n

But also something that you said that I never really think about is the idea of bits of the website, which may appear to work, but which don’t work. So the contact form is a big one. You know that whole egg on your face moment where you realise that possibly for six months, the contact form hasn’t worked, has never worked, and you have no way of saying to your client, look, sorry, we’ll be able to reverse that, we’ll be able to get all of the contact forms that would have been submitted over the last six months, because you won’t. It’s gone. And if it wasn’t working, that’s a catastrophe.

\n\n\n\n

But then my mind then goes to things like e-commerce. The site might look fine. Everything might check out okay, when I say checkout, I don’t mean checkout through the cart, I mean, looks fine. But the checkout might not work. Maybe people can’t actually buy things off your website, so it’s up but it’s not working.

\n\n\n\n

So there’s all this stuff. And I guess what Modular DS is doing, and the rivals that you’ve got in that space, is they’re trying to take all of those tasks, package them up into a wrapper piece of software, and basically you don’t really have to worry too much about it. You just sort of set it all up, make sure that all the dominoes are set up in the right place. And then it will do all of those things for you without you having to do too much. Have I got that about right?

\n\n\n\n

[00:20:54] Héctor de Prada: Yeah, of course. That’s the idea, to try to centralise everything when you have a lot of websites. And at the same time, like we were saying, yeah, automate these kinds of tasks so they don’t slip away. And it’s a great point about the WooCommerce because one thing about maintenance is that it’s very dependent on the type of website you have. I mean, it’s not the same maintenance you have to do for maybe a small corporate website, like the Meetup group website, for example, than a big e-commerce that is selling hundreds of products every day. You won’t need to have the same systems in place, not for backups, not for monitoring, not for any kind of checks. So that’s also very important to know. Maintenance is very different depending on the website.

\n\n\n\n

[00:21:38] Nathan Wrigley: So in the case of this whole idea of being able to do this for your client, I’m guessing your position would be that this is something that you can in fact sell to your clients on a regular basis. It’s not like you built the site back in 2024 and you’ve charged a fee for it, and then that’s the end of that. This is more of a, you charged a fee to build the website, and now we have this kind of, I think the term which I hear used a lot is like Care Plan or something like that.

\n\n\n\n

Some kind of process of, on a monthly basis, annual basis, whatever it might be, you offer these different things in return for a subscription fee, and therefore kind of have recurring revenue. And in many cases that recurring revenue might not need a lot of work. You know, fingers crossed, if everything works out okay, and WordPress updates itself correctly, and the plugins all work out and there are no security vulnerabilities, you might have days, weeks, entire months go by where your revenue is really not that difficult to manage.

\n\n\n\n

[00:22:39] Héctor de Prada: In what you said there, it’s like all the main things. Not only you can offer Care Plans or Web Maintenance Plans, but you should as a professional. Because I’ve heard you talk on another podcast, Nathan, you were saying that when you’re a freelancer or an agency, you are always waiting for next projects to see when they come. What’s going to be next? And if you’re going to have enough work to keep going.

\n\n\n\n

And that’s why recurring revenue, it’s so important for us as professionals. And in web design or web development, it’s not so easy to get besides web maintenance. It might be if you want to go to plugin development or theme development or do something like that, you can start getting recurring revenue.

\n\n\n\n

But if it’s just building websites, I think the only way to get that recurring revenue is by offering Care Plans. That’s why I always say, the critical thing that you were also mentioning before, is that it’s of course also a sales job to sell this to a client, but I don’t think it has to be once the website is generated, and you try to tell the client, okay, we did the website, it’s looking good, it’s working. And now we are going to do maintenance on the website, and you have to pay this or that.

\n\n\n\n

I think it has to go way before that. When we were an agency, what worked really good for us, so I always give this advice because it really worked for us, is that we used to talk about maintenance with the clients before we started the website project. If somebody would come to us saying, okay, we want a new website design for our company, we’d include it always in our proposal. It’ll be, okay, we are going to design the website, we are going to do the development of the website, and then after that we are going to care for the website.

\n\n\n\n

So we are going to do a maintenance on the website because this is very important. We are not going to just leave you there with your website, out in the open. Like, you don’t really know how it works, but we are going to be there with you. And this was like a massive change for us because when we were selling it this way, once the website was completed and we would tell the client, okay, now is the time to start the web maintenance job, and they were like, oh great, so this what we were talking about. It is not even a discussion anymore. It is like, oh great, it’s finally the time. So that’s like crucial. It was crucial for us.

\n\n\n\n

[00:25:00] Nathan Wrigley: Yeah, I think when people do get recurring revenue into their business, especially around maintenance, it does feel like, why didn’t I do this before? Because it really is kind of, I hate to use the phrase, you are kind of leaving money on the table a little bit.

\n\n\n\n

I wonder what both of you have in your head around the way to pitch that product. Because I went through lots of different ways of doing it. Some of them I’m not that proud of. So for example, in some cases I would emphasise the problems that could happen. You know, your website could go down. The internet can be a bit of a dark place, there’s hackers out there. And in the end it felt a bit like, I’m trying to scare you into giving me this maintenance deal. But then on the other hand, there was the sort of more positive way of doing it. You know, we’ll make sure that your website is always up and just different ways.

\n\n\n\n

I wonder how you, both of you, tackle that. Do you have a particular kind of language? Do you have like a brochure or a booklet that you pass on to somebody which outlines it all?

\n\n\n\n

[00:25:59] Héctor de Prada: For us, at least when we were an agency, you are seeing that I like to talk a lot. So for me it was like I could talk a lot with the clients. I would just try to be very educational, like we said from the beginning, in calls or in meetings I could talk about maintenance, the task it requires. Trying to explain it for everybody, of course, like not trying to make it sound technical or anything. Just trying to make them understand that technology evolves, WordPress evolves, the needs that the website, or the business, might have change so we should keep the website evolving with the business so it always stays in good shape.

\n\n\n\n

Luckily, even when this is a terrible thing for our field, is that many, many clients, they come to you when they have had a bad experience before, having a website design. And this experience, so many times has more to do about not having maintenance than about the web design itself. Because they might come after three, four years and they might tell you, somebody did this website for me four years ago and now nothing works.

\n\n\n\n

And it’s like, okay, when they did the website, everything worked. What happened? Nobody looked at the website for four years, so now nothing is working, which is understandable. So that also helps you a lot to make them understand that you don’t want that to happen again.

\n\n\n\n

[00:27:22] Reyes Martínez: I think it’s also important to maybe reframe things or just showing clients that that’s part of, I mean that you care about their success over time. So it’s not just about launching their site. I don’t know, sometimes I like to think about maintenance as insurance. You hope you don’t need it, but if something goes wrong, you’ll be glad to have it. So I think it’s the same. Like, if you have someone who’s taking care of your website to make sure it’s healthy, that it is performant and that everything is running smoothly. I think you are investing in its long-term success as well.

\n\n\n\n

[00:27:57] Nathan Wrigley: Framing it as an investment is quite a good way around it, isn’t it? As opposed to a, it’s not like a cost, it’s an investment. You’re putting something in so that it maintains. Spending money kind of feels like, oh, I’ve spent it, it’s all gone. Whereas an investment, you feel a bit more like, okay, I’ve spent some money, but as a result, things are going to be better in the future.

\n\n\n\n

[00:28:15] Héctor de Prada: You both said it, Reyes, you said right now that it is kind of an insurance also, if something bad happens. Because when something really bad, like the website crashes or gets hacked or whatever, because it can always happen, at some point everybody will be glad to have a professional taking care of things.

\n\n\n\n

Because another way to frame this, and you were saying that before Nathan, is that I’ve seen many, many professionals that they are like, okay, so the client doesn’t want to pay for maintenance, so I’m just going to wait until they have a huge problem that will come sooner or later. When they come without the maintenance deal, I’m going to charge them a bunch and then they will be glad they get the maintenance package. And they will start paying for that. I’m not saying I recommend that, I haven’t done that, but I’ve seen so many people do that at the same time.

\n\n\n\n

[00:29:04] Nathan Wrigley: Yeah, I think describing his insurance is quite interesting. The curious thing about insurance is, how to describe it, at some point you might begin to resent paying the insurance if you never have an accident or nothing is ever stolen. So one of the things that I often got with the Care Plans was this whole thing of years would go by, I would do my job well, so nothing ever happened.

\n\n\n\n

And so after 24 months of nothing ever happening, the client would turn around and say, what am I actually spending the money on? And then it occurred to me, okay, maybe there should have been some process of telling you what I was doing each month. Some kind of report or something to give to the client to say, look, literally things are happening. It’s not like we’ve gone away with your monthly subscription and done nothing.

\n\n\n\n

So I wondered if you had any thoughts around those, you know those clients who think nothing’s happening, why am I spending this each month in order for apparently nothing to happen? It’s just a black hole.

\n\n\n\n

[00:30:02] Reyes Martínez: That’s actually one of the hardest parts as well, like showing all the work that professionals are, like us are doing in the background. That work, that it’s not so visible as well, and how to communicate the value of all that work.

\n\n\n\n

So I think there are, I don’t know, there are many different ways to communicate that value, but for example, like reports are pretty common. Showing, not just task, but all you have been monitoring and performance data, updates. And just, again, like educating on how all the work done have an impact on their business.

\n\n\n\n

Because I think it’s also easy to go maybe, or to get into technical details, but I think clients don’t really care if you update a plugin or if you, you know, how you are maintaining their site. I think they care that their website is secure, fast and it’s working. It’s always working.

\n\n\n\n

[00:30:58] Nathan Wrigley: One of the things that I ended up doing, which I think worked well was, I eventually landed on the idea of this report thing. So I would issue a report and it would say, during the course of the last month, these things have happened. And it would be a list of all the plugins that been updated, maybe WordPress Core had been updated, maybe I’d done some work on the server to update that, a PHP version or something like that. So all of those kind of things. And then some kind of indication of how the uptime went. You know, it was 99.9% last month, we had a little glitch on Tuesday or whatever, but that was taken care of within five minutes.

\n\n\n\n

But the thing which worked best for me was I offered a proportion of time, based upon the plan that they gave me, of my actual time. And that could be deployed in any which way they wanted.So, for example, it could have been, I will just tell you what that report means or let’s just knock our heads together for half an hour or an hour, and figure out if there’s anything you wanted doing on the website. Maybe you want a telephone number updating or you want to have a different design on the homepage because Christmas is coming or whatever it might be.

\n\n\n\n

And interestingly, most clients never took me up on it, but the mere fact that it was offered, and I’d offered the time, there was just something a bit more to it. There was something more tangible and more credible about it. And then when the clients did take me up on it, and I could explain what had happened and that it wasn’t this black hole where the money was just falling into for the maintenance plan and nothing happened, that really worked.

\n\n\n\n

But I had the time available. And it may be that some people, most people don’t have that time available. For me, that was a good thing, you know, that kind of personal touch was a way to make it work.

\n\n\n\n

[00:32:33] Héctor de Prada: Also another thing that is very important to solve, for example, in client reports, and it’s not so obvious, it’s because it is not a job you are doing. It’s some stats about how the website is working for their business. Because 99% of the time a website comes from a business that needs an online presence.

\n\n\n\n

So it should be very important for them to know how this is performing or how this is helping the business. And I found this hundreds of times, that people have a website and they don’t know if somebody’s visiting the website, if you can find it on Google. They don’t know anything about the website. They are just like, yeah, I have a website there, but I don’t really know what’s happening with it.

\n\n\n\n

So I think adding things like, I don’t know, like Google Analytics or any other analytics. Or search console results so you know, it’s somebody coming from Google or where is people coming. Or if you have an international website, from which countries is people coming. Things like that, I think it’s like very valuable for the end client, for the business, to know how the website is performing. And it’s not always added, but I think it’s crucial to also put that information.

\n\n\n\n

[00:33:41] Nathan Wrigley: Do you know if anybody actually makes a business out of what you do? So, do people have a business of maintaining websites? Just doing that work. So they’ve decided they don’t want to be involved in creating the website, but they want to turn this product, if you like, that we’re talking about now. Is that a thing? Do people do that for a living? They maintain other people’s websites for them. Maybe you could bind yourself to an agency and they would hand the maintenance side to you. You are both nodding, so I’m guessing the answer’s yes.

\n\n\n\n

[00:34:11] Héctor de Prada: We know many people, but we are kind of biased because most of our clients are agencies or freelancers that manage a lot of websites. So many of them are actually specialised in this kind of service. So we have freelancers that manage like 120 websites, and that’s all they do. They don’t do any websites, they just manage websites.

\n\n\n\n

And then we have agencies that they are like fully specialised in web maintenance, web caring, and maybe if you have an urgency in your site because it’s broken or something, they can help you with that also. But they don’t design websites or create new websites.

\n\n\n\n

So I think, yes. And one example I always say is that, at least in Spain, if you search in Google for WordPress maintenance, there are so many page results. So that means it’s a profitable business, okay? There is a lot of competence of people trying to get leads out of those keywords. I would imagine in most countries it could be the same. So yeah, definitely. I think it’s possible. I see it every day, so yeah, a hundred percent

\n\n\n\n

[00:35:10] Nathan Wrigley: That’s kind of interesting because it may be that you are, I don’t know, you just want to take a break from actually building websites, and this might be an interesting way to pivot, especially if you’ve got your foot in the door with a bunch of agencies, and you know people that could supply you that work and they don’t wish to be involved in that. That’s curious.

\n\n\n\n

[00:35:27] Héctor de Prada: You can automate much more stuff than in a web design process, or web development. In maintenance, like we were saying, with tools like Modular or other tools, you can automate most of the maintenance tasks. So many times, yeah, like one person can manage like 120 websites. Imagine how long it would take to build 120 websites. It’s almost impossible. You could say, oh, I don’t know, like five years, seven years. But you can maintain every week or every month, 120 websites by yourselves, just with the tools that are available. So that’s a really big difference.

\n\n\n\n

[00:36:04] Nathan Wrigley: Does this maintenance landscape change? Because I’m just curious, the web industry changes all the time, but broadly, you know, plugins and theme updates, that’s been around since WordPress got plugins and themes. Hosting and backups, again, similar.

\n\n\n\n

But there have been developments in the more recent past where I’m thinking, okay, you could definitely push that into the maintenance idea. So things that come to mind are, I don’t know, optimisation, Core Web Vital scores, maybe something like that could leak in.

\n\n\n\n

And the one at the minute, which I think would be really interesting, and again, maybe it’s a thing already, is accessibility. Some kind of report about, okay, it looks like these pages need a particular bit of attention, or something’s gone wrong here from an accessibility point of view. And so really my question there is, does the landscape of maintenance change, or is it broadly fixed with whatever it is now is how it’ll be in a decade?

\n\n\n\n

[00:36:57] Héctor de Prada: Now also with AI, I don’t even know what’s going to happen in a decade. But I do think things change. For example, with accessibility, like you said, now in Europe it’s going to be big changes. With security as well, with the new Cyber Resilience Act, it’s going to be changes.

\n\n\n\n

And for example, we saw it a few years ago with the data privacy law in Europe. I’ve seen so many agencies offering legal checks for the cookie banners and things like that. To also add in maintenance, I don’t know, like seven years ago, that wasn’t a theme because it wasn’t mandatory, so nobody really cared that much. And it is the same with accessibility.

\n\n\n\n

A few years ago, nobody, almost nobody cared about that. And I think now because of the law changes, this is going to change drastically and almost every professional is going to start doing things related to accessibility, and is going to care about that. And it’s also going to be able to offer that to their clients as an upsell, or as an extra value, they’re going to give in their care plans.

\n\n\n\n

So yeah, I do think it changes. We don’t have a lot of changes because the basics are always the same, the updates, the backups, the monitoring. But there are things that, yeah, might bring big changes every once in a while and we have to adapt.

\n\n\n\n

[00:38:12] Reyes Martínez: I just wanted to add that also with AI and no-code tools, I mean, it’s easier than ever to launch a website. But what happens after that? Because maybe we find that more and more sites are being left behind with no updates, no backups.

\n\n\n\n

What I mean with this is that maybe, maybe not, there’s already a growing maybe opportunity, because there are more and more sites that we don’t know what would happen with them. And they will need maintenance for sure. So I think we are seeing a growing opportunity as well, there for people who want to manage or dedicate themselves to maintain websites, yeah.

\n\n\n\n

[00:38:51] Nathan Wrigley: Yeah, it does feel like in the year 2025 when we’re recording this, there are some key bits of legislation which are coming. You know, the European Accessibility Act very, very soon going to be completely mandatory across the whole of the EU. I mean, basically it should be something that you’ve taken care of already, but nevertheless.

\n\n\n\n

And so these kind of things I imagine, will become part of the platform, the ethos of doing maintenance in the future. So that’s kind of interesting.

\n\n\n\n

Just for the last moment or two, minute or two, let’s talk a little bit about what you have. So Modular DS, I’ll put a link into the show notes, but is the URL, is it modulards.com? Is that where we would go?

\n\n\n\n

[00:39:30] Héctor de Prada: Yeah, we could say dash EN for the English version.

\n\n\n\n

[00:39:33] Nathan Wrigley: Lovely, okay, so I will link to that into the show notes. I’ll link to the English version in this case, just because I think that makes most sense given that we’re all talking in English.

\n\n\n\n

This is what you do. This is that in a nutshell. You have a service that you can sign up to. Is it plugin based? Is it a SaaS? Is it a mixture of SaaS and a plugin? How does it work and what kind of things can you do?

\n\n\n\n

[00:39:56] Héctor de Prada: It’s kind of a mixture. It’s a SaaS outside of WordPress, we are going to say, but it needs a connector plugin to connect your websites to Modular DS. So basically what you do is you connect your different websites, the ones you manage, to Modular, and then from there you can like centralise most of the maintenance tasks, do updates, for example, in all the sites at the same time.

\n\n\n\n

And also you can automate monitoring, vulnerability analysis. You can automate client reports like the generation of this client reports. So it basically tries to help, yeah, agencies, freelancer to save time, to have a good maintenance business. And also, like we have been saying, to sell the maintenance business to their clients, which we all know is not easy. So that’s what we try to do.

\n\n\n\n

[00:40:42] Nathan Wrigley: So if I were somebody looking after my site and a bunch of others, you cater to that market, but also you are catering towards the more agency owner, if you know what I mean, where they’ve got multiple websites.

\n\n\n\n

Is it possible to, white label is often the word I hear surrounding this. Is it possible to sort of make it so that it appears your own? That seems to be something that people really like, but I don’t know if you offer that feature.

\n\n\n\n

[00:41:04] Héctor de Prada: You can white label everything that goes to the client. Let’s say, client reports. Of course, you can white label that, like your agency logo, your agency email to send the reports. Also, you can white label the plugin. So in the WordPress installation, you can change the plugin info so the client doesn’t know you’re using Modular, if you don’t want them to know. So yeah, of course, that’s important for many professionals, yeah.

\n\n\n\n

[00:41:27] Nathan Wrigley: You could definitely be checking that out. And obviously this entire episode really was to provide an education piece around what it is that you might need to do, especially for those people who are new. You may not realise that there’s an actual business opportunity here for you, but also that there’s a whole cavalcade of different things that you can do.

\n\n\n\n

So just to reprise, plugin, theme, updates, plus up time monitoring, backups, client reports. There’s a whole laundry list of things in there.

\n\n\n\n

Yeah, I think that’s everything I wanted to ask. So if that’s the case, I will say, Reyes and Héctor, thank you very much for chatting to me today. I really appreciate it.

\n\n\n\n

[00:42:04] Héctor de Prada: Well, thank you, Nathan.

\n\n\n\n

[00:42:05] Reyes Martínez: Thank you.

\n
\n\n\n\n

On the podcast today we have Reyes Martínez and Héctor De Prada.

\n\n\n\n

Reyes has been involved in the WordPress community since 2015, with a background in journalism, digital communications, and early-stage startups. From 2021 to 2024, she was sponsored by Automattic to contribute full-time to global marketing and communication efforts for the WordPress open-source project. She led several initiatives during that time, including the experimental WordPress Media Corps. Reyes currently serves as Content Lead at Modular DS.

\n\n\n\n

Héctor has been building websites since he was 12 and has worked with WordPress for nearly a decade, first as a freelancer, then running his own agency. Today, he’s one of the co-founders of Modular DS. He co-organizes the WordPress meetup in León in Spain, and writes a Spanish newsletter that keeps readers updated with the latest news from the WordPress ecosystem.

\n\n\n\n

In this episode, we get into the nitty-gritty of WordPress maintenance. What it takes to effectively manage multiple websites, and why maintenance is such a crucial, if often overlooked, part of running a successful client business.

\n\n\n\n

You might think that updating plugins and themes is all there is to it, but Reyes and Héctor explain that there’s much more involved: performing regular backups, monitoring uptime and performance, checking for security vulnerabilities, database clean-ups, and ensuring essential site features like contact forms continue working as expected.

\n\n\n\n

We discuss best practices for educating clients, how to position ongoing maintenance as an investment rather than a cost, and solutions which can help automate and streamline these essential tasks.

\n\n\n\n

We also chat about how the maintenance landscape is changing, with upcoming legal requirements around accessibility and privacy, and the emerging business opportunities for professionals specializing solely in website care.

\n\n\n\n

If you’re a freelancer or agency owner looking to scale up your business, perhaps you offer care plans to clients, or are considering adding maintenance plans to your services, this episode’s for you.

\n\n\n\n

Useful links

\n\n\n\n

Modular DS

\n\n\n\n

Meetup in  León, Spain

\n\n\n\n

Cyber Resilience Act

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 11 Jun 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"Do The Woo Community: Rebrand: Amplifying with the Open Source Reach Show\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97948\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"https://openchannels.fm/rebrand-amplifying-with-the-open-source-reach-show/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:140:\"Bob\'s getting close to wrapping up the series and introducing \"Open Source Reach,\" exploring open source\'s real-world impacts beyond coding.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 11 Jun 2025 09:44:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"Do The Woo Community: Thanks to The Repository for Sharing Our Next Chapter\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=98164\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://openchannels.fm/thanks-to-the-repository-for-sharing-our-next-chapter/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"It means a lot to be recognized by a publication that truly gets the WordPress ecosystem.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 10 Jun 2025 09:22:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"Do The Woo Community: Rebrand: Moving the Needle with the Content Sparks Show\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97940\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"https://openchannels.fm/rebrand-moving-the-needle-with-the-content-sparks-show/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:372:\"On today’s BobWP Unplugged, host BobWP walks us through day five of the OpenChannel FM rebranding series. He gives us a look at Content Sparks, and each series designed to help creators make smarter digital content, from streamlining workflows and harnessing AI, to mastering storytelling and media strategy. If you’re passionate about creating great content […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 10 Jun 2025 08:32:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"Aaron Jorbin: Some initial questions about FAIR\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://aaron.jorb.in/?p=192654\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://aaron.jorb.in/some-initial-questions-about-fair/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3344:\"

Congratulations to the FAIR team on thier launch. 1.0 is the lonliest number, so getting to to this milestone is something for them to celebrate and I hope the team behind it feels great about getting this far.

\n\n\n\n

One of the best parts of getting to a public release is that you start getting feedback from real users. Some of that is coming out and I’m sure I will have some to add, at this point I don’t yet have a solid opinion on FAIR. What I do have are some questions I haven’t found the answer to while reading the protocol documentation. I am hoping someone can either point me to the documentation for each of these or answer directly while I continue to digest as much as I can:

\n\n\n\n
    \n
  1. How does someone report a bad actor in a federated repository? If I discover someone who is acting in bad faith, do I need to track down every discovery aggregator, inform them independetly, and have each do its own investigation before users are protected?\n
      \n
    • For this purpose, I’m using Bad Actor in all of it’s possible meanings including introducing intentional and unintentional security issues, hacked accounts, and people being jerks.
    • \n
    \n
  2. \n\n\n\n
  3. What happens if different aggregagtors accept the same name for a plugin/theme? What can be done to prevent user confusion?\n
      \n
    • I think this is also important since someone doing local development with one aggregator but using a different in production feels like a distinct possibility.
    • \n
    \n
  4. \n\n\n\n
  5. In order to be listed in the plugin, is there a standard for the aggregator and the standards that they set for inclusion?\n
      \n
    • Similiarly, how will these standards be monitored for potential exclusion later on?
    • \n
    \n
  6. \n\n\n\n
  7. If the Decentralized ID is based on the repo, does that mean you can not transfer ownership of a plugin?\n
      \n
    • The documentaiton states “Vendors SHOULD use DID methods that are future-proof for data portability, and which avoid encoding trademarks or potentially-ephemeral names or domains.” Does this mean that Github should be avoided since it is a trademark?
    • \n
    \n
  8. \n\n\n\n
  9. Does FAIR have a concept of release confirmations or other 2nd factor for releases?
  10. \n\n\n\n
  11. How do reviews work in a decentralized manner? If I have an opinion on a plugin, will I need to share it with all aggregators?\n
      \n
    • On a similiar basis, if reviews are going to multiple places, what is the plan to combat sock puppets?
    • \n
    \n
  12. \n
\n\n\n\n

I imagine some of these are questions that will need to get answered over time, and also that for some, today’s answer may not be tomorrow’s. As with all open source projects, I can only imagine FAIR will change over time.

\n

The post Some initial questions about FAIR appeared first on Aaron Jorbin.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 09 Jun 2025 15:19:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"Do The Woo Community: Rebrand: Our New Show WP Voices\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97908\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"https://openchannels.fm/rebrand-our-new-show-wp-voices/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:231:\"BobWP is shaking things up with a rebrand of his podcast, introducing \"WP Voices\", where community members share their WordPress experiences. Expect humor, familiar faces, and new shows focusing on agency life, core and multisites.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 09 Jun 2025 09:02:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:15;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"Tammie Lister: Defining roadmaps in the open\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=1858\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"https://binatethoughts.com/defining-roadmaps-in-the-open/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:6251:\"

WordCamp Europe has just concluded, and one term that emerged during the contribution day discussions across a wide range of areas was ‘roadmaps’. As someone who appreciates the power of a roadmap and aligning with it, working towards agreed-upon goals, this couldn’t make me happier. It makes me think curiously whether everyone is using the term in the same way, and I wanted to examine how we could define these terms openly and come to a shared understanding of what they mean.

\n\n\n\n
\"\"
\n\n\n\n

Basic definitions

\n\n\n\n

The reality is that even in companies, the definition and use of the term ‘roadmap’ can vary significantly. This may be due to frameworks and processes, or it may simply be a matter of personal preference. In order, though, to have them work on an open project, some common understanding has to be reached. We start at the beginning, and it is clear what the vision is and what a roadmap is.

\n\n\n\n

Vision: a high-level, inspirational description of what you hope to achieve in the long term. This is often seen as the “why” and “what” and the ultimate destination everyone works towards.

\n\n\n\n

A roadmap is a practical, time-based plan that involves action and outlines how to achieve a vision through specific steps. It includes milestones, notes, priorities and ties to deliverables.

\n\n\n\n

Why not both?

\n\n\n\n

To answer this, we need both in most projects. WordPress is no exception, and it is similar to other open source platforms; both are essential. To have both, though, you need clear definitions and differences between them.

\n\n\n\n

The vision needs to be clear about where you want to go, broad, inspiring, and strategic. It’s a partner that helps with the roadmap and the plan for getting there. This is detailed, tactical and tied to times.

\n\n\n\n
\n

“A vision gives people a reason to care; a roadmap gives them a way to help.”

\n\n\n\n

Nadia Eghbal

\n
\n\n\n\n

Combining both is essential. The roadmap gets you towards the vision, but it doesn’t define it. In my opinion, as the wider project has a vision, each team and component also likely has a vision, but these should always align with and add up to support the broad vision. This is why defining roadmaps and visions in isolation is often problematic in larger projects.

\n\n\n\n

Essential duplicity

\n\n\n\n

To look more at why both matter in an open-source project, you can split each into relatively easy formats:

\n\n\n\n

A vision:

\n\n\n\n\n\n\n\n

A roadmap:

\n\n\n\n\n\n\n\n

Whilst they aren’t the same, they certainly are companions to each other. A roadmap without a vision is a guess. It’s placing things on a calendar and hoping for delivery. A roadmap that lacks a clear vision is unable to gain focus and often spirals due to a lack of delivery. A vision that serves as a roadmap is uninspiring and fails to clarify or unite.

\n\n\n\n

Defining in open

\n\n\n\n

This is the more complex piece. It’s all well and good to know the difference and want to do this. You then need to take these seeds, grow them into roadmaps and visions, and collectively agree, because that is how open things get buy-in.

\n\n\n\n

A simple process is a first pass from those leading the work, facilitated, distilled, and then shared, reviewed, and iterated. This is typical amongst open source projects. In WordPress, we have had several variations over time, and now we need to determine what works today. Both need to be shared; a roadmap is a document to check and measure against, a living thing.

\n\n\n\n

Beyond defining

\n\n\n\n

As we move forward into the second half of this year, the topic of roadmaps arises. Let’s make sure they are roadmaps. We could collaborate on a project to define what they are for us and share the results somewhere. Having an agreed-upon definition and working from it helps everyone, regardless of their approach to this topic.

\n\n\n\n
\n

“Open source thrives on clarity. A vision tells us why to show up, and a roadmap shows us how to move forward together.”

\n\n\n\n

Danese Cooper

\n
\n\n\n\n

The reality is we need both vision and roadmaps, and all too often, we easily have a vision. Most likely, WordPress has not only a project vision, but we also need to gather some team visions to unite those working together. If you were to think of this as an adventure, think of them not as side quests but as storyline quest points that lead to the end point.

\n\n\n\n

Roadmaps get us to delivery, and what we need more of is that right now in WordPress across all areas. They also allow us to start thinking about measuring, but they shouldn’t be where we end the measuring. That is another conversation but an essential one. We are at step one on the path to collectively growing our processes.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 09 Jun 2025 08:14:31 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:16;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:72:\"Do The Woo Community: Rebrand: Expanding the Open Web Conversations Show\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97900\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://openchannels.fm/rebrand-expanding-the-open-web-conversations-show/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:248:\"The episode introduces the show Open Web Conversatioins during the Open Channel FM\'s rebranding series, featuring insights from builders and innovators on digital identity, emerging technologies, and online creativity, inviting listeners to engage.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 08 Jun 2025 09:20:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:17;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"WordPress.org blog: WCEU 2025: A Community Celebration in the Swiss Sun\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18776\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"https://wordpress.org/news/2025/06/wceu-2025-a-community-celebration-in-the-swiss-sun/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:28388:\"
\"\"
Photo by Nilo Velez
\n\n\n\n

Over 1,723 attendees from 84 countries gathered at the Messe and Congress Center Basel in Switzerland, and 20,353 more joined online for WordCamp Europe 2025.

\n\n\n\n
\n

I’m personally very excited… There’s so much I want to do. I think there’s a clear pathway to 7.0 and beyond.

Matt Mullenweg, WordPress Cofounder
\n
\n\n\n\n

The flagship WordPress event kicked off in Basel, Switzerland, with a dedicated Contributor Day. It was followed by two days of engaging talks, panels, hands-on workshops, and vibrant community connections. WordPress Cofounder Matt Mullenweg and Executive Director Mary Hubbard joined a diverse lineup of speakers and panelists, sharing insights in the heart of one of Europe’s most charming cities.

\n\n\n\n

Set against the backdrop of Basel’s historic streets and Rhine-side views, the sponsor hall buzzed with activity as companies from across the WordPress ecosystem showcased their latest innovations, offered live demos, and connected with attendees. Each day, participants refueled with a range of local and international cuisine — from Swiss specialties to global favorites — making mealtime a lively space for networking, collaboration, and sparking new ideas.

\n\n\n\n

A Global Gathering in Basel

\n\n\n\n

WordCamp Europe has long been one of the most anticipated WordPress events of the year — a space where community, creativity, and collaboration thrive. This year in Basel, the conference delivered an exciting and diverse program that reached every corner of the WordPress ecosystem.

\n\n\n\n

Here’s what attendees experienced:

\n\n\n\n\n\n\n\n

Contributor Day

\n\n\n\n

WordCamp Europe began with a vibrant Contributor Day that brought together 640 contributors—including many first-timers—to collaborate, share knowledge, and support the WordPress project. Guided by 33 dedicated table leads, with 21 teams, attendees of all experience levels came together to exchange ideas, solve real challenges, and make meaningful contributions to open source. From accessibility improvements to theme development and translation efforts, every table played a part in moving WordPress forward.

\n\n\n\n\n\n\n\n

Contributor Day at WordCamp Europe 2025 brought together a mix of first-time and returning contributors across a wide range of teams, from Core and Accessibility to Polyglots, Training, and Community. Attendees tackled everything from onboarding and ticket triage to translating strings, improving documentation, and enhancing tools and workflows. Development-focused teams explored performance and testing improvements and worked through live coding exercises. Meanwhile, accessibility testers, support volunteers, and photo moderators contributed to efforts that directly impact users around the world.

\n\n\n\n

In parallel, teams like Marketing, Meta, Hosting, and Sustainability focused on future-facing initiatives—from promoting WordPress through the Showcase and social media campaigns to refining infrastructure, increasing accessibility, and preparing for long-term project growth. Whether contributing to plugins, themes, documentation, or new contributor experiences, participants reinforced the values that power the WordPress project: collaboration, inclusivity, and openness. The day served as a reminder that WordPress is not just software—it’s a community built by and for everyone.

\n\n\n\n

Tomorrow Starts with WordPress

\n\n\n\n

The first full day of WordCamp Europe 2025 brought the community together to celebrate the power of open source collaboration and innovation. Opening remarks from both global and local event leads reflected on the journey of WordCamp Europe—from its beginnings in 2013 in Leiden, Netherlands, to the vibrant event in Basel today. This full-circle moment underscored the growth of the WordPress community, united by a shared commitment to an open web.

\n\n\n\n

The day launched into an inspiring program with the keynote session, WordPress Without Borders – The Fight for Digital Freedom, delivered by Noel Tock. Drawing from his experiences—including time on the frontlines in Ukraine—Tock illustrated how open source supports global resilience and serves as a digital human right. His message called on contributors to see their work as part of something greater, offering a compelling and forward-looking vision to energize and unify the WordPress community.

\n\n\n\n
\n\n
\n\n\n\n

From there, the program unfolded across multiple tracks—each one sparking new conversations and insights. One standout session highlighted social entrepreneurship in Bulgaria, where WordPress is helping grassroots organizations drive change in education, journalism, and social justice. Petya Raykovska shared how nonprofits like Teenovator and the Bulgarian Fund for Women are using WordPress to amplify their work and strengthen their communities.

\n\n\n\n

Designers and developers explored ways to improve workflows and collaboration. In Bridging Design and Development, attendees learned how Figma Design Systems can connect design and development through shared structures mapped to block themes. Real-world examples, like the Novus Media Newspaper Design System, demonstrated how scalable, consistent design can power multi-brand platforms.

\n\n\n\n

Workshops played a key role throughout the day, including the interactive Block Developer Cookbook: WCEU 2025 Edition, where attendees worked through community-voted code recipes featuring the latest WordPress APIs. Sessions also dove into emerging technologies, such as Automating WordPress Setup with Modern AI Tools, which showcased how WP-CLI, scripting, and AI can accelerate project setup and reduce repetitive tasks.

\n\n\n\n
\"\"
Photo by Marc Wieland
\n\n\n\n

Day Two of WordCamp Europe 2025 opened with a focus on the evolving role of the WordPress community in a rapidly changing digital world. Sessions explored how contributors—from local meetup organizers to global advocates—play a vital part in shaping WordPress’s future. Talks on inclusivity, such as Over the Rainbow, encouraged attendees to consider how individual actions can help build a more welcoming, representative open source ecosystem. Throughout the morning, the spirit of collaboration and shared purpose remained front and center.

\n\n\n\n

As the day progressed, attention turned to the tools and technologies pushing WordPress forward. From sessions on scaling multilingual sites and managing observability to hands-on workshops, developers explored new ways to streamline workflows and enhance performance. Highlights included WordPress Gems for Devs, which introduced the Interactivity API through live coding, and Client-side Web AI Agents, a look at cutting-edge browser-based AI that unlocks new possibilities for web experiences. These talks reflected the platform’s growing capacity to adapt to emerging trends while staying true to its open foundations.

\n\n\n\n

The afternoon brought a blend of practical guidance and inspiring stories across tracks. A case study on accessibility from Switzerland showed how thoughtful design can benefit all users, while a session on brand-building for women entrepreneurs highlighted the creative and economic opportunities WordPress enables. With topics spanning content strategy, business growth, regulatory readiness, and more, the second day of WCEU 2025 affirmed the strength of the WordPress ecosystem—not only as a technology platform, but as a global movement fueled by people, purpose, and possibility.

\n\n\n\n

Fireside Chat

\n\n\n\n

As the final day drew to a close, Matt and Mary shared some thoughts on EU regulation (Open Web Alliance), AI, and the introduction of the WordPress AI team, and then answered questions from the audience.

\n\n\n\n
\n\n
\n\n\n\n

Closing

\n\n\n\n

A heartfelt thank you to the dedicated organizers who brought WordCamp Europe 2025 to life in Basel, the speakers who shared their insights, the attendees who joined us in person, and those who followed along from afar. We hope you leave with fresh ideas, meaningful connections, and renewed energy to help shape the future of the open web.

\n\n\n\n\n\n\n\n

Be sure to mark your calendars for the final major WordPress events in 2025: WordCamp US (Portland, Oregon, USA). Then join us in Kraków, Poland for WordCamp Europe 2026! Also, if you want to get involved with WCEU, the call for organisers is already open for 2026.

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 19:19:18 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:18;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:198:\"WordCamp Central: WordCamp Jinja 2025 Recap: An impactful 2 days of learning, diverse speakers, hands-on workshops, contributions, charity website hackathon, and celebration of WordPress on the Nile\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://central.wordcamp.org/?p=10743950\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:217:\"https://central.wordcamp.org/news/2025/06/wordcamp-jinja-2025-recap-an-impactful-2-days-of-learning-diverse-speakers-hands-on-workshops-contributions-charity-website-hackathon-and-celebration-of-wordpress-on-the-nile/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:15797:\"
\"\"
\n\n\n\n

From May 24th to 25th, 2025, we had the fourth annual WordCamp Jinja at the largest educational institution in the region Jinja Senior Secondary School. This year’s event was our biggest and most impactful yet both in numbers and key demographics, having over 250 attendees and participants that primarily included students as well as developers, designers, bloggers, educators, and entrepreneurs from across Uganda and East Africa.

\n\n\n\n

With the theme “Create, Impact, and Explore with WordPress!”, the event was a celebration of open-source innovation, practical skills, and community spirit, all set against the stunning backdrop of the Nile.

\n\n\n\n

A WordCamp Designed for Student WordPressers, Developers and Creatives Alike

\n\n\n\n

Students were at the heart of WordCamp Jinja 2025, reflecting their role as a key and growing demographic in both the WordPress Jinja community and the wider Ugandan community. This year’s venue Jinja Senior Secondary School—was purposefully chosen to bring the WordPress experience closer to students, ensuring greater accessibility, relevance, and impact.

\n\n\n\n

We welcomed enthusiastic participation from students of Jinja SS, Makerere University, Macedonian Vocational School, Ezone School of Computing, and others. For most, it was their first exposure to open-source tools, and the excitement was palpable. At Jinja SS, the event left a lasting impression—inspiring students to launch their very own ICT Club to continue learning and collaborating long after the event, thus we left a standing souvenir at the school.

\n\n\n\n

As a community, we are intentional about balancing engagement between our student and creative/developer communities. We do this by alternating venues each year to better suit both these key groups and demographics, whether it’s schools, colleges or innovation hubs. We are excited to continue our outreach programs and student-focused initiatives at both Jinja Senior Secondary School and Macedonian Vocational School among other schools, nurturing future WordPress contributors, creators, and tech leaders as well as having creative and developer oriented meetups and next-gen events.

\n\n\n\n

Diverse Speaker Sessions

\n\n\n\n

Attendees enjoyed powerful sessions across two tracks led by speakers from Uganda, Kenya, Rwanda, USA, and beyond. Talks covered everything from advanced contributions, development and accessibility to blogging, diversity, SEO, and AI tools for content creators—sparking learning, inspiration, and engagement throughout the event.

\n\n\n\n\n\n\n\n\n\n\n\n

Contributor Day sessions and Website Hackathon Track

\n\n\n\n

Teams collaborated in a WordPress Website Hackathon, that we have been holding each year, building websites for NGOs, community initiatives, and personal projects—all powered by WordPress. It was an energetic, purpose-driven space where learning met real-world impact.

\n\n\n\n\n\n\n\n\n\n\n\n

Throughout the event during the hackathon track and culminating on May 25th, participants joined the global open-source movement through the Contributor Day and sessions. From learning how to translate and reviewing content to contributing to the WordPress Photos and Polyglots teams, attendees learned how to give back and make an impact in the WordPress ecosystem.

\n\n\n\n

After-Party on the Nile

\n\n\n\n

The event concluded with an unforgettable after-party at the Source of the Nile, where participants networked, shared stories, and reflected on two days of community connection and creative exploration. The boat ride to the source of the Nile closed off such an eventful experience.

\n\n\n\n\n\n\n\n
\"\"
\n\n\n\n

Thank You!

\n\n\n\n

We are deeply grateful to:

\n\n\n\n\n\n\n\n

Your commitment and passion made this year’s WordCamp Jinja the biggest and most impactful yet!

\n\n\n\n
\n
\n
\n
\n

Happening Now: Patrick Lumumba @lumiblog from Kenya delivering his presentation on Contributing to WordPress: Making an Impact on the Test Team—With or Without Coding Skills @WordPressJinjahttps://t.co/yponyClmwm #WordCampJinja pic.twitter.com/W75ZJ23dIA

— Mukalele Rogers (@mrogers4christ) May 24, 2025
\n
\n\n\n\n
\n

Happening now! #WordCampJinja 2025 is live at Jinja S.S School with insightful sessions
Extending WordPress Block Editor with Spectra and Website Hackathon workshops led by @rogersmukalele@wmjackson @WordPressJinja@NorahBetsy pic.twitter.com/sej7sEcfPl

— Jinja WordPress Meetup (@WordPressJinja) May 24, 2025
\n
\n\n\n\n
\n

Jinja day 2 \"🇺🇬\"
I\'m glad to see students and Genzs this committed\"❤\"\"❤\"#WordCampJinja#WordPressOnTheNile2025 #TechWithTwin pic.twitter.com/9DcQnGtseQ

— TechWithTwin (@techwithtwin) May 25, 2025
\n
\n
\n\n\n\n
\n
\n

Don\'t miss out on the amazing learning, networking and fun at #WordCampJinja 24th-25th May 2025. We have an amazing set of speakers, sessions and activities this year.

Secure your spot here: https://t.co/PVtyJ87ePr#WordCampJinja #WordPress #Jinja 1/6 pic.twitter.com/riQhoIiRmo

— Jinja WordPress Meetup (@WordPressJinja) May 14, 2025
\n
\n\n\n\n
\n

We’re excited to be part of #WordCampJinja 2025!
Connecting with the amazing WordPress community, sharing ideas, and learning from others.
Grateful for the energy, inspiration, and all the new connections!#WordCampJinja #WordPressUG #WordCamp2025 #sharebilityug pic.twitter.com/GJP1QfdMd0

— MACARENA (@renadevug) May 25, 2025
\n
\n\n\n\n
\n
\n
\n
\n\n\n\n

What Next

\n\n\n\n

Don’t forget to follow @WordPressJinja for continued updates.

\n\n\n\n

Uganda is one of the places with the highest turnover of WordPress events and a vibrant, supportive, and passionate WordPress community with over 8 WordPress events a year. Including Next Gens and Do Actions. Next inline is the Uganda Websites Projects Competition on 20th June 2025 and WordCamp Masaka on 18th and 19th July 2025 with more to follow in the coming months.

\n\n\n\n

Remember to join our WordPress Jinja Meetup community for timely updates as well. We can’t wait to welcome you to all WordPress Jinja meetups, creative and developer centric next-gen events and WordCamp Jinja 2026 — which shall be even bigger and more impactful, let’s continue to create, impact, and explore together with WordPress!

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 13:18:58 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Mohammed Kateregga\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:19;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Do The Woo Community: Version 6.0 OpenChannels.fm Changelog\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97751\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"https://openchannels.fm/version-6-0-openchannels-fm-changelog/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"An update to our changelog for OpenChannels.fm 6.0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 10:19:32 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:20;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"Jonathan Desrosiers: The Impact of Open Source Work\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://jonathandesrosiers.com/?p=4976\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"https://jonathandesrosiers.com/2025/06/the-impact-of-open-source-work/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8423:\"
\n\n\n\n

June 9, 2025: The YouTube embed at the end of this post was hanged to the upload of the specific talk mentioned instead of the Day 1 – Track 1 live stream.
June 10, 2025: The photo credit has been updated to include the photographer’s name and linking to the source instead of Twitter.

\n\n\n\n
\n\n\n\n

There’s been growing debate recently about whether WordCamps have lost their value and relevance. Some argue that attendees rarely share meaningful takeaways afterward, and question whether the talks are impactful enough to provide real learning. They suggest that many people attend only for the travel, social events, and parties. While there may be some truth to these points for certain individuals, I don’t believe this is a fair or accurate generalization.

\n\n\n\n

There are certainly areas where WordCamps could improve. But there are also aspects that stand out as exceptional. They bring together people from around the world and across all walks of life. They celebrate the four freedoms of the GPL and the core ideals that make open source meaningful. And they use the opportunity of being together in person to rally around the shared mission of democratizing publishing.

\n\n\n\n

But like anything in life, these events are only as good the mindset you approach them with.

\n\n\n\n

Meaningful Impact of Open Source Software

\n\n\n\n

Yesterday’s keynote at WordCamp Europe struck a deep chord with me. In WordPress without Borders — The Fight for Digital Freedom, Noel Tock spoke about his personal experiences in war-torn Ukraine. Through his non-profit, Dog Help Kharkiv, he works to evacuate dogs from the frontlines before finding them safe, loving homes.

\n\n\n\n
\"Noel
Photo credit: Paco Marchante, WordCamp Europe 2025 volunteer photographer.
\n\n\n\n

He witnessed how the open web enables life-changing work first-hand. Ukranian organizations are reuniting families or literally changing and saving lives. These initiatives were made possible thanks in part to the work we all do building and maintaining the WordPress software powering tens of millions of websites.

\n\n\n\n

What a powerful reality made possible by the ideals of Open Source.

\n\n\n\n

Sharing Our Stories

\n\n\n\n

While stories at the severe end of the spectrum like these are (hopefully) rare, there’s no shortage of instances where the impact of the software we maintain is life changing. But why is it so hard to find them? It’s not because they don’t exist. The people living these stories are just busy doing the actual work: fundraising, helping others, managing the demands of everyday life, and running their businesses.

\n\n\n\n

WordCamps are more than just conferences. They are moments of connection, reflection, and renewal for a global community working toward something bigger than ourselves. The value is not always in the slides or the swag, but in the relationships formed, the perspectives expanded, and the stories shared. But they’re also an opportunity to share our own stories.

\n\n\n\n

If we want WordCamps to improve, we have to show up with purpose. Attend the talks, ask thoughtful questions, introduce yourself to someone new, and share what you learn. Most importantly, we need to be more intentional about sharing the stories that matter.

\n\n\n\n
\"A
CC0 licensed photo by Nilo Velez from the WordPress Photo Directory.
\n\n\n\n

When we tell stories about a simple blog that helps reunite a family, or a one-page fundraising site that powers a grassroots rescue effort, we remind ourselves why this work is meaningful. These are not outliers. WordPress is designed to be stable, extensible, and accessible so that anyone can build with confidence. And what they build can change lives.

\n\n\n\n

To make WordCamps better, we must make space for stories like these. Seek them out, listen to them, and share them. When we do, we not only rediscover purpose in our work, we also learn from the people who use what we build. But we don’t have to wait for a WordCamp to do this. Reach out. Tell someone how their work has impacted your community, your family, or your life.

\n\n\n\n

As I highlighted in the talk I gave yesterday, every line matters.

\n\n\n\n

Watch the Replay

\n\n\n\n
\n\n
\n\n\n\n

Featured image credit: CC0 licensed photo by annezazu from the WordPress Photo Directory.

\n

The post The Impact of Open Source Work appeared first on Jonathan Desrosiers.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 08:45:03 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:21;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"Do The Woo Community: Rebrand: Do the Woo Podcast Is Still Here\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97887\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"https://openchannels.fm/rebrand-do-the-woo-podcast-is-still-here/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:166:\"BobWP updates listeners on the evolution of \"Do the Woo,\" a podcast focused on WooCommerce. It features diverse hosts and segments, catering to all experience levels.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 06:30:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:22;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"Jonathan Desrosiers: How a Core Committer Thinks: Making Decisions for Millions\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://jonathandesrosiers.com/?p=4970\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"https://jonathandesrosiers.com/2025/06/how-a-core-committer-thinks-making-decisions-for-millions/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3247:\"

I just left the stage in Basel after giving my talk at WordCamp Europe. I am really happy with how it turned out, and I hope others found it insightful. There are some points that have stuck with me that I plan to dive into a bit deeper here on my blog in the coming weeks.

\n\n\n\n

Further Reading

\n\n\n\n

In my session, I covered how the WordPress philosophies and other Open Source decision making frameworks apply to evaluating suggested changes as a Core Committer. If you found yourself wanting to learn more, the philosophies of the WordPress project are largely adapted from some essays by Havoc Pennington.

\n\n\n\n

These concepts are also detailed in Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel. My talk submissions are sometimes a way to promote exploring a subject that I am interested in more deeply. While I use the concepts in this talk at depth every time I work on WordPress, this was definitely one of those cases (I’ve had the paperback version of Fogel’s book on my desk for longer than I’d like to admit).

\n\n\n\n

WordPress Lead Developer Andrew Nacin also expanded on the topic a bit in his The qualities of a great WordPress contributor post on his blog.

\n\n\n\n

Watch the Replay

\n\n\n\n

If you missed my talk live, you can watch the replay of the live stream. I’ve included it below and set the video to start when I took the stage.

\n\n\n\n
\n\n
\n\n\n\n

Slide Deck

\n\n\n\n

And here’s my slide deck if you wish to follow along.

\n\n\n\n
How-a-WordPress-Core-Committer-Thinks-Making-Decisions-for-Millions-WCEUDownload
\n\n\n\n

\n

The post How a Core Committer Thinks: Making Decisions for Millions appeared first on Jonathan Desrosiers.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 06 Jun 2025 16:21:02 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:23;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"Do The Woo Community: Press Release: Do the Woo Rebrands to OpenChannels.fm\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97748\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"https://openchannels.fm/press-release-do-the-woo-rebrands-to-openchannels-fm/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:202:\"Do the Woo has rebranded as OpenChannels.fm, expanding its podcast community to cover various aspects of the open web, while still celebrating WooCommerce as a core focus. It\'s all about diverse voices.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 06 Jun 2025 08:55:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:24;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"Do The Woo Community: The Rebrand: Do the Woo is now OpenChannels.fm\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97880\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"https://openchannels.fm/the-rebrand-do-the-woo-is-now-openchannels-fm/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"So, the podcast \"Do the Woo\" is now \"OpenChannels.fm\"! It’s a cool rebrand to reflect their broader focus on WordPress and open web topics, while still keeping the WooCommerce content. Exciting changes ahead.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 06 Jun 2025 06:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:25;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"Weston Ruter: Eliminating Layout Shifts in the Video Block\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://weston.ruter.net/?p=34930\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"https://weston.ruter.net/2025/06/05/eliminating-layout-shifts-in-the-video-block/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:35090:\"

Like the rest of the internet, I’ve been awestruck by the quality of Google’s Veo 3 AI video generator (even with audio). As you’ve seen from my posts, the American bison \"🦬\" is my favorite animal (aside from my cat of course). Also, perhaps I’ve watched too many videos from the Mustache Farmer, but I realized I could use Veo 3 to realize a fantasy of being able to pal around with what in reality is a wild animal. Generating bison videos brought me a lot of joy so I had to share them. However, I faced a dilemma because I didn’t want to do so via WordPress’s Video block in its current state: it suffers from a bad case of layout shiftitus. Since web performance is an even greater passion of mine than the bison, before I could share the videos I did a deep dive on the problem and came up with a fix. (Skip to the videos below if you don’t care.)

\n\n\n\n

There’s a 2-year old Gutenberg issue (#52185) which reported the underlying problem here that the Video block should have width and height attributes added to prevent layout shifts. Such jank causes a poor user experience and negatively impacts the Cumulative Layout Shift (CLS) metric of Core Web Vitals (CWV).

\n\n\n\n

A dimensionless video element gets a 2:1 aspect ratio placeholder (a 300×150 default object size) until the video’s metadata is loaded, at which time a layout shift happens due to the new dimensions being applied. When there’s a poster attribute, the placeholder dimensions get replaced with the dimensions of the poster image once it loads, also resulting in a layout shift; lastly, if the poster image doesn’t have the exact same dimensions as the video, then a second layout shift occurs once the video starts playing.

\n\n\n\n

Take a look at these screen recordings of a Video block without a poster and then with a poster provided (and there’s a script on this test page that starts video playback after 4 seconds):

\n\n\n\n
\n
\n
Without a poster, causing a layout shift.
\n
\n\n\n\n
\n
With a poster, causing a layout shift.
\n
\n
\n\n\n\n

The layout shifts are somewhat exaggerated here because:

\n\n\n\n
    \n
  1. A vertical/portrait video is used.
  2. \n\n\n\n
  3. A network delay is added to slow down the loading of the poster and video (which is not unexpected on a mobile connection).
  4. \n\n\n\n
  5. The poster image doesn’t have the same dimensions as the video.
  6. \n
\n\n\n\n

In any case, such layout shifts seem to occur anywhere the Video block is used to some degree.

\n\n\n\n

CLS Passing Rates

\n\n\n\n

Layout shifts from the Video block contribute to WordPress overall having a relatively poor passing rate for CLS. On desktop, 71% of WordPress origins have a good CLS passing rate, while on mobile the passing rate is 82%. (CLS is worse on desktop presumably because more content is on the screen at a time, meaning there are more opportunities for layout shifts to appear in the viewport.) When evaluating these CLS passing rates in terms of academic letter grades, WordPress is getting a B− on mobile and a C− on desktop. When comparing WordPress to other popular CMS platforms, it ranks near the bottom with only Joomla performing worse, as seen in this table sorted by desktop:

\n\n\n\n
TechnologyDesktopMobile
Wix91% (A−)94% (A)
Shopify82% (B−)90% (A−)
Squarespace77% (C+)88% (B+)
Drupal72% (C−)85% (B)
(Any)72% (C−)79% (C+)
WordPress71% (C−)82% (B−)
Joomla69% (D+)79% (C+)
\n\n\n\n
Graphs of origins with good CLS over time\n
\n
\n

Desktop

\n\n\n\n
\"Graph
\n
\n\n\n\n
\n

Mobile

\n\n\n\n
\"Graph
\n
\n
\n
\n\n\n\n

The passing rates for WordPress are unsurprisingly very close to the passing rates for the web overall (any technology) since WordPress has the largest market share by far. Whenever WordPress performs badly, the web as a whole suffers. Whenever WordPress performs well, the web as a whole improves. This was the drive behind my “scaled activation” Chrome team at Google when I was sponsored there to work on WordPress performance full time.

\n\n\n\n

Now, CLS in WordPress is not nearly as problematic as Largest Contentful Paint (LCP), which is getting an F grade for its passing rates of 54% on mobile and 65% on desktop. Because of this, improving LCP has been the primary focus for us on the WordPress Core Performance Team, and the metric has improved thanks in part to adding fetchpriority=high to LCP-probable img tags, adjusting image lazy-loading heuristics, optimizing the emoji loader, and most recently landing Speculative Loading. And work continues on improving LCP, for example, by deprioritizing non-critical scripts and by leveraging client-side metrics to more accurately prioritize images via the Optimization Detective project (see also my talk).

\n\n\n\n

The other CWV metric, Interaction to Next Paint (INP), is in relatively great shape with a passing rate of 85% on mobile (B) and 98% on desktop (A+).

\n\n\n\n

So, in parallel with the continued work to improve LCP, it’s important to not neglect WordPress’s sub-optimal CLS passing rate. Prior work to improve CLS included adding width and height attributes to img tags for the sake of lazy-loading. There’s also a ticket (#59119) to measure CLS in performance tests. Additionally, a key feature of the Embed Optimizer extension to the aforementioned Optimization Detective plugin is the reduction of layout shifts caused by embeds that resize when they load. This is commonly seen in embeds for Twitter, Bluesky, and WordPress itself. Embed Optimizer keeps track of these embeds’ resized heights. Then, with these resized heights stored, Embed Optimizer sets the appropriate height on the container figure element as the viewport-specific min-height so that when the embed loads any layout shift is minimized.

\n\n\n\n

Lastly, coming back to the impetus of this post, there’s the issue of layout shifts in the Video block.

\n\n\n\n

Fixing the Video Block

\n\n\n\n

Preventing layout shifts in the Video block is straightforward. As described in the Gutenberg issue, the width and height attributes need to be supplied on the video tag, although a bit more is needed than just that. When a video is uploaded to the Media Library, the metadata is obtained via the wp_read_video_metadata() function, including its width and height. Assuming that reading the metadata was successful, these dimensions can then be injected into the video tag in the same way as dimensions are being added to the img tag. (For external videos added by URL not uploaded into the Media Library, the dimensions could be read client-side in the block editor or they could be gathered via Optimization Detective on the frontend.)

\n\n\n\n

This goes full circle for me because we did something similar in to add dimensions to videos in the AMP plugin when converting from the video tag to the amp-video component. The AMP HTML spec mandates (generally) that all elements must have dimensions supplied to prevent layout shifts, as the first of AMP’s design principles is to prioritize the user experience. As I mentioned in my recent contribution retrospective, AMP predates CWV; as part of contributing back lessons learned from AMP to the whole web, it “invested in defining additional metrics that would paint a more holistic image of user perceived performance.” This included a “Layout Stability” metric which came to be known as CLS.

\n\n\n\n

In addition to providing the width and height attributes, for the video to scale to fit its container and to have the correct aspect ratio, the element needs to be styled with height:auto since it has width:100%. Finally, because of an issue in the CSS spec (as highlighted by Jake Archibald), the width and height need to be replicated in an aspect-ratio style. This currently has to be added as an inline style since the following desired use of the attr() function in a style rule is currently only supported in Chromium:

\n\n\n
.wp-block-video video[width][height] {\n	aspect-ratio:\n		attr(width  type(<number>)) /\n		attr(height type(<number>));\n}
\n\n\n

I’ve submitted the fix in Gutenberg pull request #70293: Fix layout shift caused by video tag in Video block lacking width and height.

\n\n\n\n

And since I didn’t want to wait for that fix to be merged and available in a new Gutenberg release, I also adapted it into a standalone Layout-stabilized Video Block plugin which is active here on my blog (since I wanted to share those AI-generated bison videos!). Please install the plugin on your site and test how it works with your Video blocks.

\n\n\n\n

Compare the above screen recordings of layout-shifting Video blocks with the following screen recordings where the fix is applied:

\n\n\n\n
\n
\n
Without a poster, not causing a layout shift.
\n
\n\n\n\n
\n
With a poster, not causing a layout shift.
\n
\n
\n\n\n\n
Aside: Command used for transcoding screen recordings\n

I was really impressed with how well FFmpeg compressed the original Quicktime screen recordings from ~32MB down to just ~400KB, and since the args to ffmpeg are always something I have to re-discover, here’s the command for (my) future reference:

\n\n\n
for video in $(ls *.mov); do\n  ffmpeg \n    -i \"$video\" \\\n    -vf \"scale=-2:1080\" \\\n    -c:v libx264 \\\n    -preset medium \\\n    -crf 30 \\\n    -an \\\n    -b:a 128k \\\n    -movflags \\\n    +faststart \\\n    \"${video/.mov/.mp4}\"\ndone
\n\n\n\n

You can try loading this post without the fix by adding a special query var to the URL (and then keep hard reloading to see more layout instability).

\n\n\n\n

And now, with the layout shift fixed, let’s get to the bison videos.

\n\n\n\n

AI Bison Videos

\n\n\n\n

The following Veo-generated videos were downloaded from Gemini and uploaded without any transcoding, although they are encoded quite well for the web at ~3MB each for 8 seconds of high quality 720p video with audio. I manually selected a representative frame of each video to create the poster images.

\n\n\n\n\n\n\n\n

This first video leans a little too hard into the “mustache” of the Mustache Farmer:

\n\n\n\n
Prompt: A bison falls asleep in the lap of a man in the style of the Mustache Farmer.
\n\n\n\n

I like how this guy seemingly pretends he didn’t know where the bison was in the open field, “Oh, there you are buddy!”:

\n\n\n\n
Prompt: A bison runs over to a man and affectionately nuzzles him, putting his head next to the man to rub up against him. The man pets the bison’s head and smiles. The bison is the man’s pet.
\n\n\n\n

Awkward running:

\n\n\n\n
Prompt: A bison and a man run toward each other. When they meet, the bison affectionately nuzzles him, putting his head next to the man to rub up against him. The man pets the bison’s head and smiles. The bison is the man’s pet.
\n\n\n\n

A somewhat less awkward run:

\n\n\n\n
Prompt: A bison and a man run toward each other. When they meet, the bison affectionately nuzzles him, putting his head next to the man to rub up against him. The man pets the bison’s head and smiles. The bison is the man’s pet.
\n\n\n\n

There’s an invisible stirrup in this one:

\n\n\n\n
Prompt: A bison kneels down for a man, and the man climbs on the back of the bison and they gallop off into the sunset.
\n\n\n\n

Apparently Tom Cruise with maniacal laughter and a magically-appearing saddle:

\n\n\n\n
Prompt: A bison kneels down for a man to mount on top of the bison. The bison wants to give the man a ride. The man laughs and smiles as he climbs onto the back of the bison and they gallop off into the sunset.
\n\n\n\n

Just heartwarming:

\n\n\n\n
Prompt: A bison walks up to a man. The bison rubs his head against the man, nuzzling him like a cat. The man affectionately rubs the bison’s head. The man smiles. The bison could be the man’s pet.
\n\n\n\n

The guy’s smile is a little intense in this one, but it’s also heartwarming:

\n\n\n\n
Prompt: A man and a bison having fun together, rolling in the grass and wrestling. The bison is the man’s pet.
\n\n\n\n

This guy seems a little fake (almost like he’s AI):

\n\n\n\n
Prompt: A bison is standing close to a man. The man scratches the bison under its neck and he pets the hair on the bison’s head. The bison is enjoying the affection. The man smiles and tells the bison, “You’re such a good boy.” The bison likes the man. The bison is the man’s pet.
\n\n\n\n

Nice purring sound effect, followed by flapping bird wings?

\n\n\n\n
Prompt: A gray tabby cat with faint stripes jumps on top of a bison and starts to knead its paws into the bison’s thick fur. The bison likes it. The bison and the cat are friends.
\n\n\n\n

Cozy, but the cat glitches a bit at the end:

\n\n\n\n
Prompt: A bison is lying down in the grass. A gray tabby cat nuzzles up to the bison and climbs on its back to lie down for a nap. The bison likes the cat’s company.
\n\n\n\n

Now I’m going to go pet my real cat. \"😸\"

\n\n\n\n
\n\n\n\n

Where I’ve shared this:

\n\n\n\n\n\n\n\n

\n

The post Eliminating Layout Shifts in the Video Block appeared first on Weston Ruter.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 05 Jun 2025 21:09:42 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Weston Ruter\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:26;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Felix Arntz: Introducing the View Transitions Plugin for WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://felix-arntz.me/?p=2122\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://felix-arntz.me/blog/introducing-view-transitions-wordpress-plugin/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:16276:\"

I’m thrilled to announce a new plugin from the WordPress Core Performance Team: View Transitions! This experimental plugin brings the power of the cross-document View Transitions browser API to your WordPress site, allowing for smoother, animated transitions between page navigations.

\n\n\n\n

View Transitions?

\n\n\n\n

Traditionally, moving from one page (or, technically, URL) to another on the web has always involved an abrupt, “hard” reload. While this might seem completely natural to many of us on the web, user expectations have shifted drastically in the past (almost) two decades.

\n\n\n\n

Native mobile applications, with their seamless in-app navigations and smooth transitions, have set a new bar for user experience. This has led web developers to try to catch up with that experience, often turning to Single Page Applications (SPAs). While SPAs aim to mimic native app navigations by dynamically updating content without full page reloads, this often comes with increased development complexity and a shift in how you structure your entire website, often at the cost of accessibility or performance.

\n\n\n\n

Now, with cross-document view transitions, you can achieve that desired user experience through smooth transitions on the web without any extensive overhaul of your website. And the new View Transitions plugin makes it super simple in WordPress.

\n\n\n\n\n\n\n\n

How Do View Transitions Work in WordPress?

\n\n\n\n

As soon as you have activated the plugin on your WordPress site and navigate between a few pages of your site, you’ll notice that the plugin implements a gentle fade effect for the transition, creating a more graceful and visually engaging user experience. This is the default behavior not only for the plugin, but also for the View Transitions API in the browser.

\n\n\n\n

If you want to see a live demo – you’re on it! The plugin is active on my site, so for example you could click on the “Blog” link in the header navigation. You should see a smooth transition if your browser supports it (see further below). Just make sure to navigate back here afterwards to continue reading. 😁

\n\n\n\n

(If you want to test it more, you could navigate to the home page by clicking on the site title, scroll down to “Latest posts”, then click on the “View post” button for this post. When using a large enough viewport, that transition should expand/morph the small featured image from the post in the grid to the much larger featured image shown above. If the animation is too fast, try clicking the Back/Forward button in your browser a few times to get a better sense of what I’m referring to.)

\n\n\n\n

Because the nature and style of transitions can be heavily dependent on a theme’s specific layout and design, the long-term vision is for themes to opt in and customize this behavior. This is facilitated through the WordPress theme support API, for instance by calling add_theme_support( \'view-transitions\' ).

\n\n\n\n

For now, since this plugin’s explicit purpose is to enable and showcase view transitions, it automatically enables them across your site, regardless of the theme currently in use.

\n\n\n\n

Customizing View Transitions

\n\n\n\n

For this initial experimental phase, the plugin offers a user-friendly way to explore different configurations directly within the WordPress admin. You’ll find settings under Settings > Reading that allow you to tweak the view transitions behavior. This UI is primarily for easy exploration and testing at this early stage. Should view transitions make their way into Core, customization would solely be managed through code via the theme support API. That said, even with this early plugin version, themes can already start using the theme support API.

\n\n\n\n

Customizing with add_theme_support()

\n\n\n\n

To quickly enable view transitions with standard settings, add the following to your theme’s functions.php file (typically within the after_setup_theme action hook):

\n\n\n
function mytheme_setup() {\n	add_theme_support( \'view-transitions\' );\n}\nadd_action( \'after_setup_theme\', \'mytheme_setup\' );
\n\n\n

For more control, you can pass an array of arguments to add_theme_support( \'view-transitions\', $args ). Here are the available arguments:

\n\n\n\n\n\n\n\n

To provide additional context on what the view transition names are for: Whenever an element has the same view transition name assigned between two URLs that the user navigates between, it will gently morph as part of the transition, maintaining a clear association. For example, a post title in a grid of posts in an archive might scale up in size and move to the top of the page when navigating to its single post URL.

\n\n\n\n

For the default-animation, a few animations are available by default. Additionally, the plugin provides an API to register additional animations, each of which encompasses a unique identifier, some configuration values, a CSS stylesheet, and optional aliases. I’m not going to cover this here for now since it’s a more advanced integration, but ideally in the long term there could be plugins or themes that register their own view transition animations that themes could use. For now, a few basic animations are available out of the box, mostly as an example of what can be done. The initial supported identifiers (and their aliases) are:

\n\n\n\n\n\n\n\n

You can customize any or all of the supported arguments by passing an array to add_theme_support(). Here’s an example modifying all available options:

\n\n\n
function mytheme_custom_view_transitions_setup() {\n	add_theme_support( \'view-transitions\', array(\n		\'default-animation\'       => \'wipe-from-right\',\n		\'post-selector\'           => \'.wp-block-post.post, article.post, article.entry\',\n		\'global-transition-names\' => array(\n			\'.site-branding\' => \'logo\',\n			\'.site-header\'   => \'header\',\n        	),\n        	\'post-transition-names\'   => array(\n			// These are mostly just the defaults, but there\'s one extra entry.\n			\'.wp-block-post-title, .entry-title\'     => \'post-title\',\n			\'.wp-post-image\'                         => \'post-thumbnail\',\n			\'.wp-block-post-content, .entry-content\' => \'post-content\',\n			\'.post-meta\'                             => \'post-meta\', // Additional entry.\n		),\n	) );\n}\nadd_action( \'after_setup_theme\', \'mytheme_custom_view_transitions_setup\' );
\n\n\n

As you can see in this example, which also indicates some of the default values, they aim to capture common patterns that work across block themes and classic themes alike. That said, block themes are likely a perfect fit for view transitions, given their more predictable nature in markup due to using exclusively blocks.

\n\n\n\n

The default values for all the supported arguments are based partly on WordPress-generated classes that should almost always be included in WordPress sites, and partly on very common conventions. The goal is that the defaults should work well for the majority of WordPress sites. That said, it is impossible to make it look perfect for every possible WordPress theme. That’s precisely why the theme support approach was chosen for making View Transitions available in WordPress.

\n\n\n\n

Customizing via Settings > Reading

\n\n\n\n

A limited subset of what can be customized via add_theme_support is made available via the “View Transitions” settings section under Settings > Reading.

\n\n\n\n
\"Settings
\n\n\n\n

You can customize the default animation, and the selectors for the default view transition names for both global and post-specific elements. While this means the customization options are limited via the UI, it still allows you to play around with different configurations via UI, and likely for the majority of sites these are the most relevant parameters to customize anyways. Keep in mind that this UI is only supplemental, and it only exists for easy exploration in the plugin. The recommended way to customize is via add_theme_support in your site’s WordPress theme.

\n\n\n\n

A Note on Configuration Precedence

\n\n\n\n

It’s important to be mindful that, for now, any configurations you make via the Settings UI will take precedence over what is defined in your theme’s code using add_theme_support(). This is something to keep in mind as you test and explore the plugin.

\n\n\n\n

Browser Support

\n\n\n\n

Cross-document view transitions are currently supported in a range of modern browsers, including Chrome, Edge, and Safari. For users on browsers that do not yet support this API, there should be no adverse effects; they will simply experience the traditional hard transitions between pages. You can always check the latest browser compatibility at caniuse.com.

\n\n\n\n

Your Feedback is Needed!

\n\n\n\n

If you’re a WordPress theme developer or maintainer, I strongly encourage you to install the View Transitions plugin and give it a spin. Better yet, consider experimenting with adding support directly into your theme using add_theme_support( \'view-transitions\' ).

\n\n\n\n

And if you’re simply curious about the feature and want to enable it on your WordPress site, I similarly encourage you to try out the plugin. The Core Performance Team would love to get your feedback.

\n\n\n\n

While this is a fresh first release and still experimental, like other plugins incubated within the Performance Lab program, it holds the potential to one day become a part of WordPress Core.

\n\n\n\n

Your early feedback and real-world use cases will be absolutely instrumental in refining this feature, addressing potential issues, and shaping its future.

\n\n\n\n

Join Us at WordCamp Europe 2025 Contributor Day!

\n\n\n\n

I’m publishing this post in a very timely manner – today is WordCamp Europe 2025 Contributor Day! I’ll be at the Core Performance Team table, and a key part of our agenda will be testing, discussing, and gathering feedback on this new View Transitions plugin.

\n\n\n\n

If you’re attending and are curious to learn more, want to get involved, or have initial thoughts to share, I would love for you to join us. Your insights will be invaluable!

\n\n\n\n

Feedback and Contributions

\n\n\n\n

As this plugin is in its early stages, your feedback is highly encouraged and deeply appreciated.

\n\n\n\n\n\n\n\n

And of course, contributions are always welcome! You can learn more about how to get involved by checking out the Core Performance Team Handbook.

\n\n\n\n

I’m really excited to see how the community uses and shapes this new feature!

\n

The post Introducing the View Transitions Plugin for WordPress appeared first on felix-arntz.me.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 05 Jun 2025 04:09:09 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"Felix\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:27;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tammie Lister: May in WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=1853\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"https://binatethoughts.com/may-in-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4014:\"

This month was full of backlog management, prioritisation and clearing out queues. I focused on identifying where things were blocking and preparing for WordCamp Europe.

\n\n\n\n

Areas of contribution

\n\n\n\n

Whilst my focus was on backlog management, it split into two distinct areas:

\n\n\n\n\n\n\n\n

I also began thinking about how to optimise and make reporting easier for backlog management, and I want to bring those discussions to WordCamp Europe.

\n\n\n\n

Some stats across the backlog management of issues and tickets in Trac and Github.

\n\n\n\n\n\n\n\n

In other contributions, I worked on some designs and gave feedback across a range of tickets. I also began exploring how far DataViews can go and have a list of things to now report from this. It reminded me of the value of pushing the boundaries of our learning features.

\n\n\n\n

Upcoming plans for contribution

\n\n\n\n

The big event is WordCamp Europe, which is taking place this week. I will be attending Contribution Day. After that, the following are my objectives:

\n\n\n\n\n\n\n\n

With WordCamp Europe, I am restricting my plans beyond what I have mentioned above, as things will likely emerge from it and change.

\n\n\n\n

Sponsors this month

\n\n\n\n

I now have three company sponsors: BigScootsGreyd and Kinsta. I also have five sponsors through GitHub: Aaron JorbinTim NashJeffrey PaulFelipe Santos and Scot Rumery. To everyone who sponsored me and helped me secure a sponsorship, thank you.

\n\n\n\n

Want to sponsor me? You can go through GitHub or also get in touch.

\n\n\n\n

There is always sponsorship, of course, that is volunteered, and I’ll do as much as possible whilst still keeping things flowing – let’s get contributing!

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 04 Jun 2025 08:48:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:28;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"Jonathan Desrosiers: WordPress Grab Bag: WCEU, WordPress turns 22, new AI team\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://jonathandesrosiers.com/?p=4833\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"https://jonathandesrosiers.com/2025/06/wordpress-grab-bag-wceu-wordpress-turns-22-new-ai-team/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5531:\"

I haven’t been doing a great job blogging regularly so far this year. We’ve now passed the 40% mark of the calendar year, and I’m hoping to make up for that during the remaining 60% of the time. To get started, here are some thoughts on a few topics that have been on my mind over the course of the last week.

\n\n\n\n

Attending and presenting at WordCamp Europe

\n\n\n\n

I’m currently sitting in Terminal A of Boston Logan International Airport waiting for the first leg of my journey to attend WordCamp Europe in Basel, Switzerland. In addition to the obvious reasons to be excited (seeing friends, meeting new people, checking out what everyone in the community has been building), I’m also really happy with what my presentation has grown into and can’t wait to present it. It’s not just about the decision making frameworks Core Committers use, but also a reflection on the project’s foundational philosophies and how they’ve helped the project thrive.

\n\n\n\n
\"\"
\n\n\n\n

There are several points in my speaker notes that have stuck with me. I plan to write some additional posts to explore deeper in the coming weeks!

\n\n\n\n

If you’re unable to join in person, I’m including the live stream below.

\n\n\n\n
\n\n
\n\n\n\n

WordPress reaches 22 years old

\n\n\n\n

Last week was the 22nd birthday for the WordPress project. The first version of the software was released on May 27, 2003. While 22 is not as exciting as 21, I always enjoy reading the reflections from the community and seeing how the software we all help maintain has changed lives.

\n\n\n\n

I first used WordPress around 2007, and received my first credit for contributing in 2013. This means I’ve now been a user of WordPress for over 80%, and a contributor for over 55% of the project’s lifespan.

\n\n\n\n

Happy Birthday WordPress! \"🎉\"\"🎊\"\"🍾\"\"🥳\"

\n\n\n\n

New WordPress AI team

\n\n\n\n

Also last week, a post was published to announce the formation of a new AI team for the project. I’m really looking forward to this team getting started. Initially, the stance of the Core team was to observe and wait for the needs to become more clear. But the time has come to explore taking action in some important areas. Specifically extensibility of the block editor, documentation, and ensuring any necessary internal functionality is available through APIs.

\n\n\n\n

Near term, I think once some of these items have a plan to be addressed, what could make the most sense is several canonical AI plugins that integrate with different models or services similar to how importing site content works (WordPress, Tumblr, Movable Type/TypePad, etc. each have their own plugin).

\n\n\n\n

If you have thoughts about the place AI has in the project, join the conversation in the #core-ai channel of the WordPress.org Slack!

\n\n\n\n

Featured image credit: CC0 licensed photo by Nilo Velez from the WordPress Photo Directory.

\n

The post WordPress Grab Bag: WCEU, WordPress turns 22, new AI team appeared first on Jonathan Desrosiers.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 03 Jun 2025 11:32:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:29;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"Tammie Lister: Optimising Triage and Review Processes in WordPress Using AI\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=1826\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"https://binatethoughts.com/optimising-triage-and-review-processes-in-wordpress-using-ai/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7538:\"

Integrating advancements into open source processes makes sense. The friction often comes in the how and the usefulness. While AI holds immense potential for revolutionising triage and review processes, it’s crucial to acknowledge its current limitations and look to where it can evolve, learn, and grow to its full capacity. This post aims to explore this potential, offering a realistic perspective. It’s not a post that claims to solve everything; instead, it will show how we can get started and regain some hours to focus on other needed areas of the project.

\n\n\n\n
\"\"
\n\n\n\n

Before we delve into this topic, it’s important to note that while AI can achieve a great deal, it also has its limitations. This post will focus on high-level inferences rather than direct proposals, starting with small steps. I don’t have all the answers, but together, we can find them. My perspective is informed by extensive theme reviews and ongoing triage work, so I won’t cover areas where I lack knowledge.

\n\n\n\n

What can it do today

\n\n\n\n

In simple terms, the things we likely shouldn’t be doing manually include reviews, first-pass triage, testing and routine checks. Historically, there have been areas where we have been slowly adding more processes over time before the term AI was widely used. That’s one of the key things: often, having a robust process, a path trodden and documented, means the parsing is simple to learn, and therefore you can hand it over more easily.

\n\n\n\n

Triage is already being done incredibly effectively in areas like healthcare. There it is improving accuracy and saving lives, as noted in an article by Reuters:

\n\n\n\n
\n

“Our study provides the first multinational evidence that artificial intelligence can help enhance accuracy” in determining HER2 clinical categories, “potentially closing critical diagnostic gaps and enabling more patients to have access to new therapies, said Dr. Marina De Brot of the A.C. Camargo Cancer Center in Sao Paulo, Brazil, who led the study.
“Until recently, most of these patients would have not been offered these options,” she said.”
Link: Reuters

\n
\n\n\n\n

A triage first-pass

\n\n\n\n

The first area is improving first-pass triages. What do I mean by this? In simple terms, doing a lot of the manual work like duplicate label removal, closing after a specific time, checking for details and even duplicate issue detection. Pattern-matching tasks are where these systems excel, and a lot of this is simply a matter of pointing to our learnings during triage and matching them accordingly.

\n\n\n\n

This is basic; it’s not AI as much as it’s processing. It’s one step above issue templates. The following piece is where it gets interesting: the model for triage needs to learn comprehension of the issue contents. We need to add features like dashboards to the flow because the first stage could be a catch-all that, over time, allows it to triage more to a buffer dashboard, recommending specific states.

\n\n\n\n

All of these approaches are an excellent way of training, as it provides the model with some freedom to make mistakes, be corrected, learn from them, and refine its patterns. We also collectively don’t have to worry about labels being added and things closed. Whilst those of us doing triage, get to benefit early on and help train.

\n\n\n\n

The impact of triage processing

\n\n\n\n

As far as triage goes, we will be far from achieving full automation of this for quite some time. My instinct is that this is more of a help in clearing a percentage and making it easier for those working on issues. It can do that in significant numbers, to the extent that over 50% of the time spent in triage could be recovered I’d suggest sooner over later. I do see this going up over time, but how much depends on the quality of the modelling and our trust as a project.

\n\n\n\n

Theme review first-pass

\n\n\n\n

Just as triage, I suggest adopting a similar model for theme reviews. In this case, too, if we are honest, reviewing what we do and don’t want in reviews would be beneficial. I will be bold here, but nearly 100% of theme reviewing could be done through a process without manual interaction fairly soon.

\n\n\n\n

How do we get there? We achieve this through a balance of reviewing the theme review guidelines and, similarly, triage training. These reviews are very formulaic and matching. This is what models thrive on. Suppose we gain trust in this approach and implement the process. In that case, we can then focus all our effort on manual reviewing in various areas, including raising the quality of the core product, documentation, education, and our theme offerings as a project.

\n\n\n\n

Testing

\n\n\n\n

We have, over the years, even before the recent AI tech wave, been leaning into less manual testing. Issues and tickets needed less manual testing. We require testing for regression across all areas in our project. That’s not AI, but we can take it even further, adopting a more updated approach to our testing.

\n\n\n\n

The reality of the world today is that you can share a screenshot with code editors and get an application mocked up that looks like that. We also need to evolve our systems to test for differences and minimise the need for multiple humans to be involved in each ticket.

\n\n\n\n

What will we do if it does this?

\n\n\n\n
\"\"
\n\n\n\n

I share these perspectives as someone who performs triage and frequently engages in this manual work. Some may be sceptical or wonder how their sponsored time will be allocated. The point is that there is a great deal that needs to be done in this project. These systems to implement today’s technology need people. The models require training by experts. Then they need to be nurtured and grown by those same people. There will always be a need for contributors.

\n\n\n\n

At this time, with our capabilities in automation and AI in a world of agentic flows, we can do better than relying solely on manual processes. We must do so in order not to be left behind. It is also not resourceful to use humans this way. We can use our scarce human resources more sensibly. Our time is finite, and this project requires us to accomplish many tasks. There will be a balance between what we automate and utilise as resources and what we provide to a system. That, though, is something we need to start working out, and we do that by realising we need to find a balance in how we do things and measure the costs of our processes today and in the future.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 01 Jun 2025 12:42:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:30;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:103:\"Do The Woo Community: Building Reliable WooCommerce Sites: Insights into Hosting, Scaling, and Workflow\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"https://openchannels.fm/?post_type=blog&p=97002\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:103:\"https://openchannels.fm/building-reliable-woocommerce-sites-insights-into-hosting-scaling-and-workflow/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:222:\"Shared strategies to ensure reliable WooCommerce performance during traffic spikes, emphasizing standardized processes, trusted hosting partnerships, and automated testing to foster client trust and ease agency operations.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 29 May 2025 12:38:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:31;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:126:\"Do The Woo Community: Launching Upload Worthy: Video Strategy, Brand Awareness, and Conversions for WordPress Product Creators\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97496\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:126:\"https://openchannels.fm/launching-upload-worthy-video-strategy-brand-awareness-and-conversions-for-wordpress-product-creators/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:229:\"The inaugural episode of \"Upload Worthy\" explores video marketing strategies with hosts Christian Taylor and Adam Weeks. They discuss timing for video investment, brand awareness versus conversions, and measuring content success.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 29 May 2025 09:57:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:32;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"WordPress Foundation: Thank You, Automattic: Announcing the Open Horizons Scholarship\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:42:\"https://wordpressfoundation.org/?p=1201015\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"https://wordpressfoundation.org/news/2025/thank-you-automattic-announcing-the-open-horizons-scholarship/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1467:\"

We’re thrilled to announce the Open Horizons Scholarship, a new initiative to help contributors from underrepresented regions attend flagship WordCamp events, made possible through a generous $30,000 donation from Automattic to the WordPress Foundation.

\n\n\n\n

Thank you, Automattic, for funding this important work. Your support expands opportunities for contributors around the world to participate in person, starting with WordCamp US 2025.

\n\n\n\n

The scholarship will be managed by the WordPress Foundation, which will oversee the application and selection process and ensure that funds are distributed equitably. This new program joins the Kim Parsell Memorial Scholarship and the Diversity Scholarship by WordPress Community Support, reinforcing a shared commitment to a more inclusive and globally representative WordPress community.

\n\n\n\n

If your company believes in a more diverse, open, and accessible web, we invite you to join us. Support a scholarship. Sponsor a contributor. Help build the future of WordPress, together

\n\n\n\n

Interested in applying?
Apply for the Open Horizons Scholarship and take your next step toward joining the flagship WordCamp experience. To learn more, you can read Automattic’s full announcement about the program.

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 28 May 2025 19:28:55 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Isotta Peira\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:33;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:95:\"WPTavern: #171 – Felix Arntz on How Speculative Loading Is Speeding Up Your WordPress Website\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=196101\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:109:\"https://wptavern.com/podcast/171-felix-arntz-on-how-speculative-loading-is-speeding-up-your-wordpress-website\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:60964:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, how speculative loading is speeding up your WordPress website.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured. On the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today we have Felix Arntz. Felix is a Senior Software Engineer at Google, and a WordPress Core contributor from Germany, currently residing in San Francisco, California. He helped establish the WordPress Core performance team, and has been heavily contributing to its efforts. He has been using WordPress for a decade and contributing back to the project since 2015. More recently, he has stepped into the role of the inaugural performance lead for the WordPress 6.2 release, and subsequently of the 6.3 and 6.8 releases. In the latter release, he spearheaded development, and launch, of the new speculative loading feature, which is the focus of the podcast today.

\n\n\n\n

Speculative loading is one of the most important, and yet, almost invisible performance enhancements of recent times. If you’re on WordPress 6.8, this new feature is already active on your site, working quietly in the background to make page navigation faster, but you might never know from the WordPress UI. There’s no menu, no toggle, and no obvious indicator to show it’s there.

\n\n\n\n

Felix explains exactly what speculative loading is and why it feels almost like browser magic. The Ability for WordPress, using the browser’s new Speculation Rules API to load the next page just as the user is about to visit it. It’s a clever use of browser signals like mouse clicks, and hovers, to anticipate navigation, shaving off precious milliseconds, sometimes even providing what feels like an instant page load.

\n\n\n\n

Felix clarifies the difference between conservative and more aggressive approaches to speculative loading. And why the WordPress core team opted for the safest, least wasteful, option by default, while still giving developers or advanced users the hooks and tools to customize, or even disable it, as needed.

\n\n\n\n

Felix discusses the origins of the feature as a plugin, the testing and data collection undertaking with tens of thousands of sites, and how this real world data gave the team confidence to ship speculative loading to all WordPress users. We talk about what those performance wins mean at scale, how a 2% improvement on 43% of the internet translates into saving users untold hours of waiting collectively.

\n\n\n\n

We also get into the weeds on measurement and methodology, how the team uses data from the Chrome user Experience Report and HTTP Archive to track web performance, prioritize features, and validate real world impact. Felix offers insights into how these global, anonymized data, sets allow the performance team to make truly data-driven decisions.

\n\n\n\n

Beyond the tech, Felix addresses practical considerations such as how to opt out or fine tune speculative loading if you have specific needs. How environmental concerns are balanced by default configurations. And how plugins or agencies might build on this foundation in the future.

\n\n\n\n

If you’ve ever wondered how large scale browser level improvements make their way into WordPress Core, or simply want to know if there’s a way to make your own WordPress site that much faster, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Felix Arntz. I am joined on the podcast by Felix Arntz. Hello, Felix.

\n\n\n\n

[00:04:46] Felix Arntz: Hey. Happy to be here.

\n\n\n\n

[00:04:47] Nathan Wrigley: Yeah, thank you. I appreciate you joining us. Felix is joining us all the way from California. I’m in the UK so there’s a big time gap. And I appreciate you getting up early and talking to me. That’s fantastic.

\n\n\n\n

Felix is going to be talking to us today about something which is now in WordPress, and you may not even know that it’s in there because there’s nothing to see here. But the endeavor of what Felix has built is to make all WordPress websites basically immediately better. More performant, so that the end users of your websites will be able to access your content more quickly.

\n\n\n\n

It is something that’s really fascinating. But before we begin digging into all that, I know it’s a dreadfully banal question, Felix, but would you just tell us who you are so that people understand your credentials in the WordPress space?

\n\n\n\n

[00:05:32] Felix Arntz: Sure. Thank you. I have been contributing to WordPress now for 10 years. So I started as a freelancer building websites using WordPress, and eventually got into contributing to WordPress Core after I went to my first WordCamp, which was a great way to get started.

\n\n\n\n

Yeah, ever since then I’ve been contributing to WordPress Core, and eventually became a Core Committer. And now, for over six years, I’ve been working at Google, the team where we focus on CMS projects for the most part. So I’ve been, especially in the last good three years or so, I’ve been sponsored by Google to contribute to WordPress with a specific focus on improving performance.

\n\n\n\n

So our team essentially co-founded the WordPress performance team, which is an official part of the wordpress.org project. And ever since that was founded in late 2021, we’ve been contributing to that effort, and the speculative loading feature is a big part of that.

\n\n\n\n

[00:06:25] Nathan Wrigley: That’s what we’re going to talk about today. Can I just rewind a little bit though, and talk about Google for a minute. So, are you employed by Google to commit to WordPress Core? Do you spend a hundred percent of your time working on WordPressy things, or do you have a proportion of your time which is devoted to more, and I’m doing air quotes, Google things?

\n\n\n\n

[00:06:46] Felix Arntz: Yeah, I mean, I wouldn’t say that I contribute a hundred percent of my time, but a good chunk, probably 70, 80 or something. Our focus is, when it’s not on WordPress, it’s still on other somewhat related open source projects. So we have been contributing, we’ve been also working with other CMSs here and there.

\n\n\n\n

[00:07:02] Nathan Wrigley: Yeah, that’s interesting because I know that Google have a big presence. If you go to the flagship WordPress events, you know, WordCamp Asia, WordCamp US, and so on, then Google very often have a huge advertising booth. You know, they’re a global partner if you like.

\n\n\n\n

But drawing the line between Google and Open Source CMS is a little bit hard to do. It’s almost like a philanthropic thing. Because I guess their job is to just try and make the internet better and part of it, if they can make 43% of the internet better by seconding somebody like you to commit to the project, that’s just good for everybody.

\n\n\n\n

So yeah, bravo to Google. I appreciate the fact that they’re sponsoring you and helping the project in that way.

\n\n\n\n

Also bravo to you and the team, the Performance Team. It is just a relentless good news story coming out of the Performance Team. So, I don’t know, when did you say, 2019 it was founded?

\n\n\n\n

[00:07:54] Felix Arntz: Late 2021, but things really kicked off like mid 2022 I feel.

\n\n\n\n

[00:07:58] Nathan Wrigley: Yeah, and I am habitual about the WordPress news, and it just never stops. The Performance Team do something profound, help everybody out, it just ships into Core. Most people don’t even know that things have happened because, you know, they’re not in the baseball in the same way that you and I probably are.

\n\n\n\n

A profound thanks. Maybe there was just this massive backlog of things that needed to be tackled. Maybe not. But it did seem that the minute the doors opened to the Performance Team, lots of dominoes fell really quickly.

\n\n\n\n

So thank you on behalf of me and everybody who uses WordPress for the work that, I don’t know whether you feel that you get the credit that’s due to you, but I’m giving you some credit now, so thank you.

\n\n\n\n

[00:08:37] Felix Arntz: Thank you. I appreciate it. That’s definitely great to hear.

\n\n\n\n

[00:08:39] Nathan Wrigley: I’m pleased you know, that there’s people as capable as you who are doing this kind of work and that you’re willing to do it in the background. And a big piece of that is what we’re going to talk about today.

\n\n\n\n

Landed in WordPress 6.8, but has a history prior to that as a plugin. It’s called speculative loading. It sounds impressive. But it also, I guess it is impressive and it’s a bit like voodoo. It’s kind of doing things that you wouldn’t imagine were possible. Do you want to just tell us what it is? What is speculative loading?

\n\n\n\n

[00:09:08] Felix Arntz: So essentially, speculative loading, the idea is that when you navigate to a new URL, when you are browsing through a website and you go to a URL, the moment that you land on the URL, it starts loading. And we probably know that the performance aspect of that is very important to the user experience.

\n\n\n\n

So if a page takes, I don’t know, three seconds to load, that’s not great. If it takes eight seconds to load, it’s probably horrible of a user experience. And so one of the performance team’s goals is to make that time that it takes a load shorter. So what then speculative loading does is load the URL, the idea is that it loads the URL before you even get there.

\n\n\n\n

[00:09:47] Nathan Wrigley: Yeah, that’s the bit that’s voodoo. That’s the bit that just sounds like you’ve basically hopped into Back to the Future and you’ve gone back in time a moment or something. It’s very counterintuitive. So you are going to have to explain, how on earth does it do that?

\n\n\n\n

[00:09:59] Felix Arntz: Right, right. Essentially, there are browser, there are heuristics which can be relied upon to hopefully assume correctly that a URL will be visited. So when you are on a page on the website, there is of course links to other pages on the website. So if you hover over the link with your mouse, if you’re on a computer for instance, and you hover over the link with your mouse, maybe you’ll click it. That’s like one level of signal. It’s not the strongest signal.

\n\n\n\n

But then an even stronger signal is when you actually click the link. When you click a link, you want to go to that URL. I think that’s a fair assumption in like 99 plus percent of cases. So when you click on the link, that’s technically still before you’re at the other URL though. We’re talking about milliseconds. You probably think when you click, you are already on the other URL, but that’s not the reality. There is like maybe, I don’t know, 200, 300, 500, however long it takes, there are some milliseconds in between the time you actually click and that the other URL opens.

\n\n\n\n

So by loading, for instance, by loading a URL, when you click on the link, you still gain those, whatever, maybe 500 milliseconds. I’m just going to make that up now, and reduce the actual load time by that.

\n\n\n\n

[00:11:07] Nathan Wrigley: Let me just prize that apart. So we are now going to talk about a tiny fraction of time. For the next few minutes, we’re going to be talking about literal milliseconds. So let me imagine that I’m on my computer, desktop computer, let’s start there. I’m on a webpage and there’s a bunch of links, buttons, what have you.

\n\n\n\n

I’m holding my mouse, my mouse approaches the button and it begins to slow down, you know, because at some point we have to rest on the button. So there’s this deceleration of the mouse and the cursor, and it eventually lands there. And then I click it.

\n\n\n\n

Now my intuition is that the click event is the moment, that’s when everything begins, if you know what I mean. But are you saying that you can go back in time prior to me actually hitting the button with my finger? Is it the mere fact that, okay, the mouse has come to a standstill, you haven’t engaged the finger yet. Maybe the finger is literally on the way down in the real world, in this slow motion universe we’re imagining. Is that kind of it? It’s taking heuristics about, where is the mouse now? How is it decelerating? Or is it literally he clicked? Because if it’s the click bit, then I don’t understand what’s different to how it usually was because it felt like the click was always the moment.

\n\n\n\n

[00:12:19] Felix Arntz: There are different ways to configure speculative loading. And one way, and that’s the way that WordPress Core does now, is to only speculatively load on the click. You say now that that feels like it’s always been like that, but it’s not quite always been like, that because of what I tried to mention with there’s still like 500, maybe 300, whatever, little milliseconds time between the click and the actual URL loading.

\n\n\n\n

So when you hit the other URL, then it starts fetching the HTML document and all the CSS and JavaScript and so on. By doing that already on the click, on the link, on the previous page that you are on, you still gain those, I’m going to say valuable milliseconds. And we’re probably talking about at the very least, a hundred milliseconds, maybe a few hundred milliseconds.

\n\n\n\n

[00:13:04] Nathan Wrigley: It doesn’t sound like a lot, but it’s, you’ve invented time out of nowhere. You’ve completely conjured up time that didn’t, well, actually you’ve removed time. You’ve gone in the opposite direction. But that time was needlessly spent before. Now that time has been saved.

\n\n\n\n

You also mentioned that the WordPress implementation, and we’ll get into how you might be able to configure that in a moment, but the default WordPress installation, so this is in every WordPress website from 6.8 onwards, it is set to, and I’m going to use the word conservative, but it’s set to a fairly dialed back approach to this Speculation Rules API.

\n\n\n\n

I’m curious, and we’ll get into how you do it in WordPress, but just in terms of the Speculation Rules API, what are some of the more aggressive things that you could do if you wanted to? And is things like the mouse slowing down, is that potentially part of it? Those kind of things.

\n\n\n\n

[00:13:55] Felix Arntz: Right. So maybe let me take a step back, first to clarify that there’s a speculative loading feature that is in WordPress Core, it’s built on a browser API that is called Speculation Rules API. We can talk about maybe two things. There’s like, well, how can you use the Speculation Rules API? There’s different ways to configure it, and that’s something that we could apply in WordPress. But then we could go beyond that, and I’m probably not the best person to speak about that, but we could also think, how can you actually, what could the Speculation Rules API possibly do, that it isn’t able to do today?

\n\n\n\n

So in terms of using the Speculation Rules API, it allows different configuration modes in for what is called eagerness. And you actually said it right. It’s called conservative, the mode that WordPress currently uses. And it just means, I think it is conservative in the sense that it is the safest measure if you want to make sure you only load URLs that the user actually goes to.

\n\n\n\n

But it’s also the least performance of all the options. It’s always a trade off because unfortunately we cannot predict the future, so there’s no real wizardry going on here. And because of that, there is always going to be a trade off. You can use signals that are very reliable on the user visiting the other URL, like clicking on the link. There is an scenario where you click a link and then you pull your mouse away before you let go of your finger. We probably all have done this, but we probably do this like 1% of our clicks, if even that. But people do this occasionally, very occasionally.

\n\n\n\n

So that’s the way where a click would not trigger the actual URL to the link to be, that wouldn’t result in the user visiting the other URL. This would be the one example where conservative speculative loading would still load the other URL and the user wouldn’t go to it. But I think that risk, that trade off is very, very little because of how rarely that happens.

\n\n\n\n

[00:15:46] Nathan Wrigley: Right, so the posture of the Performance Team was to go conservative. So although it’s not the most performant, it is the least likely to end up in, you know, needlessly downloading content that is perhaps never going to be looked at.

\n\n\n\n

But again, just moving ourselves away from WordPress for a minute, the Speculation Rules API, if we were to go on the more eager side, what kind of things could be brought to bear? And again, not in the WordPress setup at the moment, but I know that you can modify those things. But what can the Rules API do, if you go like full eager?

\n\n\n\n

[00:16:18] Felix Arntz: Right. So you can also use, the next after conservative is called moderate. That uses signals that are less explicit, like a hover. Again, I have to specify, on desktop it uses hovering, because on the phone you can’t hover, like you don’t have a mouse and it doesn’t know where your finger is if you don’t press the screen.

\n\n\n\n

So, essentially, moderate on desktop, it relies on the hover over a link to preload the URL that is behind that link. So that generally, yeah, of course if you hover over link and then you click it, there may be like a second, easily a second between this, or there may even be five seconds in between those two actions, right? And sometimes you hover and click immediately. Other times you hover and you get back there, and then you click, and in that case, the whole page can technically be already loaded.

\n\n\n\n

So that’s the part where speculative loading, if you configure it more eagerly, you can get to situations where you get instant page load. You go to the other page and it’s already completely loaded. There’s, for instance, there is also Core Web Vitals, metric Largest Contentful Paint, which measures the load time speed. So you can get to an LCP of zero. Like, literally. If you use it, for instance as moderate eagerness, let’s say your page normally takes two seconds to load completely, and you hover over a link, and then you get back there like three seconds later, you click, it’s already there, and your LCP is literally zero because you didn’t need to wait at all.

\n\n\n\n

That’s the performance power that it has. But of course, it does also come with a trade off to consider. Like, how do you configure this in a way that it’s the least wasteful? And wasteful in the sense of loading URLs that the user does not go to, ends up not navigating to. But you have to basically weigh off, what is the performance gain? How do users typically use your website?

\n\n\n\n

There’s also, there’s a lot of individual configurations that websites may want to do on their specific site. So going back to the conservative option that WordPress now uses, it’s just that, it’s simply that we want to give the bare minimum feature and we want to make the feature available in general to WordPress sites. But because WordPress is so massive, you need to go with a literally conservative default.

\n\n\n\n

[00:18:25] Nathan Wrigley: Okay. So that’s all really interesting, but it sounds like all of this is happening in the browser. So all of these events are being triggered by the browser. Again, forgive my ignorance, I’m presuming that Chromium, Chrome, Firefox, all of the other variants that there may be out there, I guess they’re all shipping some variant of this inside the browser because obviously it can’t be WordPress that’s doing this.

\n\n\n\n

If that’s the case, is there kind of like a broad consortium of people who are working on this initiative, maybe other similar related performance initiatives, and trying to make them all browser compatible?

\n\n\n\n

[00:19:03] Felix Arntz: So there is, the Speculation Rules API is currently, it’s available in Chrome, Edge and Opera, so in the Chromium based browsers, but it’s not available yet in Safari and Firefox. That means that people that use Safari or Firefox, they’re basically just not going to get the benefit.

\n\n\n\n

[00:19:18] Nathan Wrigley: So it’s like a progressive enhancement. There’s no downside, it’s just an upside.

\n\n\n\n

[00:19:22] Felix Arntz: Exactly. So because overall the browsers that support it are very widely used, plus the other browsers not having any negative effects of this feature being on a website, that’s why we thought it was a good time to roll it out.

\n\n\n\n

[00:19:36] Nathan Wrigley: Okay, that’s really interesting. It just suddenly, and completely unrelated to the conversation that we’ve had so far, it kind of makes me think that maybe in the future there’ll be a hardware layer to this. You know, imagine if my mouse had built into it some pressure sensation, or even proximity sensor where it could perceive that, you know, my finger is descending and it could fire the signal from the mouse to say, yeah, he’s about to click. Or even in a mobile phone, you know, you were mentioning earlier, we don’t know where your finger is. Maybe at some point in the future we will know where your finger is.

\n\n\n\n

[00:20:09] Felix Arntz: That would be really powerful, yeah.

\n\n\n\n

[00:20:10] Nathan Wrigley: It’d be kind of interesting. Okay, you heard it here first. But it’s not there yet. So, what has been the way that this has been implemented? My understanding is that you launched this as a plugin. I think you got a fairly high user account. I think 30,000, 50,000 or something websites.

\n\n\n\n

[00:20:27] Felix Arntz: I think it’s now at 50,000.

\n\n\n\n

[00:20:28] Nathan Wrigley: 50,000. So tons of data coming back. And presumably that data gave you the confidence to, yeah, let’s push this through. And I have a memory that, broadly speaking, you got fairly close to a 2% productivity gain. And obviously at 43% of the web, if we can do things 2% faster, doesn’t sound like a lot, 2%. But 2% of everything that WordPress gives up, that’s a lot.

\n\n\n\n

[00:20:53] Felix Arntz: Performance is really like, people say sometimes things are numbers games, but performance is a tiny numbers game. Like it’s very hard to make performance wins sound very appealing. It’s like, here is 2% win. We scratched off 80 milliseconds of this, and it’s like, what is this even, like.

\n\n\n\n

[00:21:08] Nathan Wrigley: But it literally is human years. It’s probably decades of time when you think about the internet as a whole. If you think about it in that sense, it’s really quite a lot of time.

\n\n\n\n

[00:21:18] Felix Arntz: Exactly, and I think it’s important to remind ourselves of that sometimes. I feel myself like announcing something where it’s like, oh, here we scratched 80 milliseconds off. It sounds like nothing. It is quite something, but it sounds like so little that, I don’t know, I feel self-consciously saying such a tiny number as a great win.

\n\n\n\n

But yeah, again, like I think it, you exactly mentioned it, the scale of rolling out performance enhancements like this, it really makes the number matter. And also, people browse so many webpages a day, like even for an individual person. If you go on one website, you easily might visit 10 URLs or more, and that’s just one website. So think about , again, I’m just continuing with that number, like if you had 80 milliseconds gain on all the webpages you visit in a day, I don’t know, it might come out at some seconds, maybe a minute, who knows. And if you do that every single day, like you gain time.

\n\n\n\n

[00:22:09] Nathan Wrigley: Yeah, I agree. It’s difficult to parse, isn’t it? The human brain doesn’t kind of work that microscopic level. That really tiny fraction of time is so difficult to become important. But there’s this compound interest effect to it. You know, the more that it adds up, the more time you spend on the internet every day clicking things. And I suppose the curious thing here is, nobody even knows that it’s happened. You would presumably just think, gosh, that is a very quick website. You know, I’m having a fabulous experience here. Everything’s loading amazingly. They must have an amazing server set up or, you know, they’ve got everything configured perfectly. And all the while it’s the Speculation Rules API working in the background.

\n\n\n\n

But I think we’ve got it, you know, it’s adding up to tons of time, probably years, maybe decades of time when you throw that across the whole footprint that WordPress have.

\n\n\n\n

However, most people who don’t follow the WordPress news really, really carefully probably won’t know about this. And there’s nowhere to know about it really, apart from WordPress journalism, and the blog posts that go out from the Performance Team. Because there’s no way in the WordPress UI, there’s no setting, there’s no menu item to go to, there’s no toggle, there’s none of that.

\n\n\n\n

So that then leads me to ask, is there a way to modify this? If you have a need for more eager. Or you just wish to, I don’t know, you’ve got a desire to turn it off for some reason. Can it be modified with code, with hooks, with whatever?

\n\n\n\n

[00:23:31] Felix Arntz: Yeah, certainly. Quick context on the reason that there is no UI in WordPress Core to control it, is that it’s considered a very technical feature, and the philosophy of WordPress Core says, decisions not options. That’s one of the Core philosophies. So try to use defaults that work for the majority, and most people won’t have to change. And then especially when it comes to very technical things, you don’t want to bother an end user that just wants to maintain, create their website with, here you need to learn now about this complex Speculation Rules API.

\n\n\n\n

Like, we already talk about this for like 30 minutes now, and there’s probably so much more to uncover. So you can imagine that certain site owners don’t want to deal with that. So that’s why there’s no UI in WordPress Core. But it can be modified through hooks like you’re saying. There are several filters and actions to modify the behavior programmatically.

\n\n\n\n

And in addition, the Speculative Loading plugin that existed prior to the Core launch, that still exists and it’s now, when you install it on top of 6.8, it still serves a purpose. While it doesn’t ship the whole API anymore, because that’s now part of WordPress Core, it’s still includes a UI where you can configure it via UI in different ways.

\n\n\n\n

And it also changes the default behavior of WordPress, for the speculative loading feature. And that’s essentially because when we started the plugin, we went with a more aggressive default, because we want to know, the plugin only launches at first at small scale, it’s meant to, especially in the case of a feature plugin, it’s meant to inform us about how well it’s working, are there potential issues, and so on.

\n\n\n\n

So we went with a more more performant configuration out of the box with the Speculative Loading plugin. So if you use the plugin, it will use the moderate eagerness that I mentioned before. And then in addition, it uses, and we haven’t covered that at all yet, so it pre-renders the URL. So I can explain that briefly.

\n\n\n\n

The WordPress Core implementation, the Speculation Rules API allows you two alternative modes for speculatively loading a URL. Either you can pre-fetch the URL, or you can pre-render the URL.

\n\n\n\n

Pre-fetching means you essentially just load the, you get the HTML content already, but then you don’t do anything else. Like, it doesn’t load any JavaScript or it doesn’t load any CSS or images, it still waits with all of that until you go to the other page.

\n\n\n\n

With pre-render, it does everything, like literally everything. It loads the HTML, it loads also all the JavaScripts, CSS, images and whatever else is on your page. And it even renders this in the browser, like it basically does everything as if you were already on the page in the browser. Let’s think about it as if you had the page open in another tab and you couldn’t see it.

\n\n\n\n

[00:26:08] Nathan Wrigley: Yeah, you’ve just like pulled back a curtain suddenly and there it is. It’s just, it always there. You just couldn’t see it and suddenly.

\n\n\n\n

[00:26:14] Felix Arntz: And the pre-rendering is the thing that can get you to those immediate page loads. Because when you use pre-fetching, it only loads the HTML, so then when you get to the page, it’ll be faster, but you still have to load all the other things, and render it. But pre-render is where, if you have pre-render and eagerness of moderate, and then we go back to our previous example, you hover over link, go back there, two seconds, three seconds later, then you might get this immediate page load with LCP zero.

\n\n\n\n

[00:26:43] Nathan Wrigley: Okay, that’s really interesting. So you’ve kind of got two options. The first option is just accept WordPress Core. That’s how it is. And then, maybe three options. The second option then might be you can modify things with hooks and what have you. And I’m going to link to the articles that Felix wrote in the blog post that goes with this. So go to wptavern.com and search for the episode and you’ll be able to find all the bits. It’s more easy for me to say that than it is to read out the blog titles and things.

\n\n\n\n

And then the other option, the third option would be to download the plugin, which gives you a UI, but just caveat emptor, beware, it will then automatically make things moderate. It’s going to be doing things in a more, a slightly more aggressive way.

\n\n\n\n

[00:27:21] Felix Arntz: It brings you better performance, but it might also have more trade offs on, it will load, certainly to some capacity, load URLs that may not be navigated to. If you install the plugin, just keep in mind that the UI that it provides also would allow you to go back to the WordPress Core default. If you just want a UI and you install the plugin, just go into the UI of the plugin immediately, change it back to conservative pre-fetch, and you’re back at what Core would do as well.

\n\n\n\n

[00:27:45] Nathan Wrigley: Great. Yeah, thank you. Now you mentioned LCP and things like that. And I think there’s been an obsession for the last, let’s go for four years, with speed and trying to get Lighthouse scores to be impressive for your website. I’m curious, is there a way that Google scraping the internet can perceive any of this?

\n\n\n\n

In other words, if you do this, are you doing it simply to make your visitors happy, because they’re the people who are doing the clicking or what have you? Or is there some like Core Web Vitals metric which can be improved by this? Because it feels like there couldn’t be, because I doubt that Google Bot has the capacity to kind of speculatively load anything, but maybe there’s some flag in the, I don’t know, I have no idea how that would work.

\n\n\n\n

[00:28:31] Felix Arntz: So, that’s a great question. I think you’d, certainly when you apply performance enhancements like this, the goal is that they benefit your website’s end users. Google, of course, would love to know how well these features work, right? And also the people that work on the actual Speculation Rules API would love to see how the features are used in production, on production sites. And we, as a Performance Team, would also like to know that, how it goes with WordPress specifically.

\n\n\n\n

So there is a public data set called Chrome User Experience Report, which is sourced from anonymous data from users that use Chrome and have opted into this anonymous data tracking. So there is essentially a data set that collects the performance data of people visiting websites. And that is made publicly available, you can literally, if you know how to use BigQuery, which is this kind of advanced version of MySQL, where you can query gigantic amounts of data, you can query the Chrome User Experience Report data set, and you could be checking like, I don’t know, as long as sites that appear, it basically aggregates all the page, all the data by origin, so the domain.

\n\n\n\n

Any site that is relatively popular is in there. I don’t know exactly what the threshold is, but something like, maybe like at least 50 monthly users or something like that. So then your site will appear in there and you could query this for your own site to see how your site is doing. And you could do this every single month. And you get like a chart, how the performance of your site is doing over time.

\n\n\n\n

Of course, neither Google nor we as a Performance Team cares about one specific site. We’re doing things like in our team, we were building things for WordPress, for the WordPress ecosystem, try to improve the performance of the ecosystem as a whole. So I have been working a lot in the past years and learning a lot about this stuff. How to query the Crux, that’s a short version of it, Crux, the Crux Report, to gain insights on, how do you possibly measure the impact a certain feature has on these metrics?

\n\n\n\n

There’s another data set called HTTP Archive, which is the domains that are in this are also sourced from the Crux Report. But what HTTP Archive is, it basically scrapes all of these URLs every single month, one time, and gets all sorts of public information from these URLs, like which technologies it uses, does it use WordPress? Does it use, I don’t know, React or whatever, all these things. It also stores, from this one momentary point, it also stores the actual HTML body, and it’s a gigantic data set. And also that is public as well. You can look it up on httparchive.org and how to use it.

\n\n\n\n

So the goal of these efforts is to make these different performance data and to basically assess the health of the web ecosystem, publicly available, and then also these, especially HTTP Archive has a lot of charts on their own website based on their own data that essentially, yeah, makes it easily available without having to query BigQuery data.

\n\n\n\n

But when you actually can query BigQuery data, it becomes really powerful. So we can combine the data from HTTP Archive to see which origins are using WordPress. So then we get like a scaled down version of the whole web that is just the WordPress sites. And then we can combine it with the Crux data that has the performance results for all origins, but scope it down to only the origins that use WordPress.

\n\n\n\n

And that way we can see, for instance, the median LCP for a given month across all WordPress sites is this. Or the median INP and all the other metrics. More importantly, what we have been using as a more important metric though, is what’s called the passing rate. For every Core Web Vitals metric, there is a threshold where it’s, under this threshold is good, above this threshold, it’s not good. So for LCP for instance, that’s 2.5 seconds.

\n\n\n\n

And passing rate is essentially the number of, in this example, is the number of origins that have a median LCP that’s better than 2.5 seconds, the percentage of origins that have an LCP that’s better than 2.5 seconds. And that you can track over time to see how WordPress LCP is improving or decreasing over time. That’s how we essentially monitor performance for WordPress at a high level.

\n\n\n\n

And then we’ve been doing all sorts of experiments to try to get feature specific improvements. That’s really the difficult part because these data sets only gather data, the Archive data set only gathers data once a month, the Crux data set gave this data, it has all the data, but only the performance data. So it does not know, at what point did you activate a certain feature or deactivate another feature? That data doesn’t exist. So we can only make assumptions.

\n\n\n\n

Like, for instance, even when you want to measure the difference, and like an easy example, and that’s already complicated, is to measure the difference from one WordPress version to the next. HTTP Archive has data, whether a site is on, let’s say 6.8 or 6.7, but it’s from one specific moment in time. And we generally broaden these moments in time to the whole month because that’s the generally, like they do it once a month. If you see that a site is on 6.8, I think the HTTP Archive runs, like the actual queries usually run somewhere between 20th and 25th of the month.

\n\n\n\n

So if you see that the site is 6.8, you don’t know, is the site on 6.8 the entire month or did it just update to 6.8 a day before and most of the month data is actually the previous version? This is just unknowns that we have to deal with. And the data set being so huge, because WordPress is so popular, that helps a lot to sort of like make these unknowns maybe less impactful. Because if you’re at scale see that 6.8 has a big improvement, we can’t say that this value precisely is correct, but if it’s a clear improvement, we can assume that there is an actual improvement to a certain degree.

\n\n\n\n

And doing that for feature specific level is even more complex. I don’t think we have time to get into this too much right now, but I just want to say that this 1.9% value that is in the blog post is based on such an effort, where I try to look at all the sites that have speculation rules, and I looked at all the same sites before they activated speculation rules and get this median difference between all of them. And I don’t even know how to explain anymore because I don’t remember, because it was so complicated.

\n\n\n\n

[00:34:42] Nathan Wrigley: I am so glad that you are able to explain it though. I mean, firstly, really interesting, all of that, really interesting. Because you just sort of peeled back a whole curtain that I didn’t even know existed. So there’s just this aggregated, opted-in data coming out of the browser, dropping into this massive data set. I can only imagine what that is like to deal with.

\n\n\n\n

But it does mean that you’ve got anonymised data. You can make reasonable guesses, in the aggregate, about what’s happening. You know, you can refine it to WordPress, you can refine it to 6.7, 6.8, okay? And day by day, maybe it’s not meaningful. But if you spread it over one month, six months, what have you, more and more trends start to pop out.

\n\n\n\n

So you can see over time, you’ve got this 1.9%. And it, terribly complicated though it might be, I’m glad that you did that work for us. That’s amazing. Okay. And I didn’t know that whole thing was going on.

\n\n\n\n

And again, getting back to the point that you made at the beginning, the whole purpose of this is to make it better for your users. The purpose is not for the data that Google’s gathering, but it’s gathering it. And it’s helpful because people like you can then use it and make reasonable assumptions about what the rest of us ought to be doing with our WordPress websites. But the key metric there is, does it perform better for your users? And of course, we know the answer to that.

\n\n\n\n

[00:36:00] Felix Arntz: Just wanted to quickly add like we have been, these two data sets have been important source for us as a Performance Team from the very beginning in terms of even prioritising what we work on. There’s ways to get a high level idea. Like, out of all the 50 things that we could do to improve performance, which have shown to be the most impactful on the web so far outside of WordPress, or maybe even on the few WordPress sites that already use it through some other way. So it has helped a lot on the prioritisation, and personally a big advocate for data driven decision making. And in many parts of the WordPress project, we are not able to do that because we don’t have much data. But I’m really pleased that on the performance side, there is this big data set that can be used to see what is actually impactful.

\n\n\n\n

[00:36:46] Nathan Wrigley: Yeah, you can be really confident that your decisions are based upon fact, which is so nice. A lot of the WordPress project is, you know, intuition and design and things like that, and it’s hard to get agreement about that, and hard to get things right for everybody. But in this case, that’s slightly different.

\n\n\n\n

[00:37:00] Felix Arntz: For anybody that’s interested in this to learn more, I did write a blog post on makewordpress.org/core at some point about it. How to assess performance with HTTP Archive, something like that. That’s something that we can probably, that you can probably look at. There’s a whole collab. I worked out for a while on a collab to teach as a sort of like tutorial, how to get started with this for anybody that’s interested.

\n\n\n\n

[00:37:23] Nathan Wrigley: Okay, I’ve got a couple of pieces that I’ve got open over here, which are probably not the piece that you’ve just mentioned. So when I come back and edit this, I’ll make sure that I get in touch with you and we find that, and we’ll put that into the show notes. So there’ll be at least three things that you, dear listener, can go and check out.

\n\n\n\n

I’m just wondering if there are any situations, because we know what people are like. Performance experts, they love to configure their servers, they love to put things at the edge that, you know, all these clever things that are going on. Are there any scenarios where things like the speculative loading that that can conflict, or overlap or be something that you actually don’t want to do because you’ve already got something in place that might be handling, I don’t know, let’s say for example, you’re in team Cloudflare, and you’ve jumped in on all the different things that they’ve got? Perhaps they do this already. I don’t know. But I’m just wondering if there are any scenarios where, let’s say I’m a hosting company, or I’m just really into my performance. Are there any scenarios where I need to be mindful, maybe I want to switch this off?

\n\n\n\n

[00:38:22] Felix Arntz: I don’t think there’s a lot on the hosting side, but there can be on the whatever client side’s technologies you use. So because this speculative loading happens in the browser, so the, I don’t think there’s anything on the hosting side, or server side, that could do something similar. I think that wouldn’t work.

\n\n\n\n

But there are other ways that some similar things like this have already been done outside of a browser specification, outside of a browser API. Like there are certain JavaScript frameworks, for instance, that have something like speculative loading. Like, if you have a Next.js site, for instance, which I think is not very common to be used together with WordPress, but if you do have a Next.js site for instance, it might load URLs speculatively too, but through its own mechanism, like a completely separate approach. I’m not sure about specific JavaScript libraries right now that do exactly this, but there are definitely things like it that some sites were already using before the browser Speculation Rules API came around.

\n\n\n\n

[00:39:15] Nathan Wrigley: Okay, so broadly speaking, if you’re a WordPress, a typical WordPress user, you’ve got nothing to worry about. And you probably know that you’ve got something interesting and unusual going on with loading things in a different way, so you’re probably okay.

\n\n\n\n

One of the things that I did want to know, I just wondered if there were certain, I don’t know, let’s say I’ve got a WordPress website, maybe there are bits of that website that I don’t wish to be speculatively loading.

\n\n\n\n

I’m not really sure what that might be. An example that I think came out of one of your blog posts was you took the example of a Woo, well, I presume it was WooCommerce, you know, the end of the URL being cart or something like that, you know, so forward slash cart, forward slash whatever.

\n\n\n\n

That’s possible though. I presume, again, with hooks you could say, okay, this predetermined set of URLs, we don’t want to speculatively load anything. That kind of stuff can be done. The URL parameters can be configured into all this.

\n\n\n\n

[00:40:05] Felix Arntz: Yeah, exactly. So you can exclude certain URLs, or URL patterns from being applied to the speculative loading. And you can also configure whether you want to exclude them entirely or whether you want to exclude them only from pre-rendering, but not pre-fetching.

\n\n\n\n

So this is important to consider because the WordPress site, well, probably now 95% of the sites with 6.8 use pre-fetch because that’s a default. There are still sites that change it to pre-render. And then there are different implications for the site, for the URLs that are pre-rendered.

\n\n\n\n

And one of the considerations is, that’s actually another reason why we went with pre-fetch. because also pre-fetch, even though it’s less performant than pre-render, is also a safer option at the scale that we roll this out to all WordPress sites. Because the only risk with pre-fetch occurs if there is a URL that modifies something just by visiting that URL, which is an anti-pattern, like you should not do this, but there are plugins that do this occasionally. For instance, if you have like a URL that’s called empty cart, and just by visiting that URL you empty your shopping cart.

\n\n\n\n

That means, if you speculatively load the URL and you don’t visit it, your cart is emptied. You don’t want that. This is the only risk with pre-fetch. But, for what it’s worth, WordPress, the WordPress Core implementation also includes some default exclusions already. One of them is that it won’t speculatively load any URL with query parameters, like those question marks, something. And that’s because most WordPress sites by far are using pretty permalinks, and on those sites, having a query parameters is extremely unusual. And if there is, it’s usually from a plugin that does something specific.

\n\n\n\n

And so that’s why we exclude URLs because the chance that, like WordPress Core doesn’t have anything in the front end that will change something when you visit a URL, but plugins might. And plugins would usually handle this through query parameters if they do, and that’s why we exclude any query parameter URLs.

\n\n\n\n

[00:42:07] Nathan Wrigley: Yeah, I know that you will not have an answer to the next question, but I’m going to ask it anyway. But I’m just curious on your thoughts about it, because I know that anybody listening to this, there’s going to be a proportion of people thinking, wait, we want less bits traveling across the internet.

\n\n\n\n

And I’m thinking about the environmental impact of things now. You know, we don’t want pre-fetching anything, because that’s then potentially just wasted energy. Just carbon being burnt for stuff which may, or may not, be looked at. And obviously the WordPress approach that you’ve taken is to try and minimise that.

\n\n\n\n

But I just wondered if you had any thoughts, you know, around that and whether you could sort of calm people down about that or whether or not it, was that whole thing disregarded? Where does it fit into the thinking of all of this?

\n\n\n\n

[00:42:52] Felix Arntz: Yeah, like I said in the beginning, it is a trade off that you have to make, but it also depends like, which decision you take probably depends on how your site is being used, like what is the best configuration of speculative loading for your own site?

\n\n\n\n

If you go with a too eager configuration where there’s tons of URLs are eagerly loaded and then they might never be visited, then this definitely has a negative impact, like you’re saying. But obviously the ideal outcome is that the wasteful reloaded URLs are minimised and at the end of the day you, by speculatively loading, you improve the user experience.

\n\n\n\n

I can’t really answer where you draw the line in that. That being said, the adverse effects of URLs being loaded that you don’t navigate to with this conservative eagerness is so little. That’s why we chose that value to be the default. And you can go for more performant solutions, or configurations, but when you do so, please test how that works out.

\n\n\n\n

You can also, don’t want to get too deep into this, but you can also, if you have some kind of analytics provider for your site, you can gather like performance data or you can see which links users typically click on. And then you could configure speculation rules in the way that these links specifically may use like a more eager configuration. But the other ones don’t.

\n\n\n\n

This is where people really get, I’ve not personally done this but when, I’ve heard from other people when they work with enterprise clients, they really go in and look at, oh, when somebody has sent this URL, they usually click one of these four URLs, one of these four links, and then you can configure speculation rules to say, these four links should have moderate eagerness, but all other ones only conservative, for instance.

\n\n\n\n

[00:44:22] Nathan Wrigley: I can see a whole third party ecosystem of plugin developers kind of rubbing their hands together. You know, those that create performance plugins kind of leaning into exactly what you just said. Here’s your entire WordPress website, and here’s what we think, you know, in the same way that SEO plugins might give you a traffic light. Here’s a set of URLs, which we think you are not serving in the way that is going to be beneficial to your users or what have you. So, oh, that’s interesting as well.

\n\n\n\n

[00:44:46] Felix Arntz: The tough thing though is that it’s usually, I think it’s going to be very heavily dependent on the individual site. That’s where my hesitation is with that is that like, I’m not sure how much a plugin, a generally applied plugin, throughout the ecosystem could predict that. I think it’s often depending on the layout of the site. What is even the content of the site, right? What do people mostly click on? I think that makes it challenging from a general plugin perspective. Like to me, that’s mostly something that developers would do for their client’s websites, or agencies would do for a client’s website or at an individual level.

\n\n\n\n

[00:45:18] Nathan Wrigley: Yeah. Well, I mean, it’s just the beginning, isn’t it? It’s dropped in fairly recently. No doubt, the WordPress ecosystem will kind of figure out a posture on this. Maybe third party plugins will come along. Maybe developers will produce more documentation about how to wrangle it. How to surmise whether or not your website is using the Speculation Rules API in a way which is helping you, I don’t know, measuring the cost of your server infrastructure and what have you. But just the beginning.

\n\n\n\n

So there you go. Now, dear listener, you know a whole load of stuff about WordPress 6.8 that you didn’t. Before because probably, it was completely invisible to you. So, is there anything we missed, Felix? Is there any burning issue that you think we did not cover that and that was important?

\n\n\n\n

[00:45:58] Felix Arntz: No. I think we covered pretty much anything, everything. I just wanted to add that the new data from the Crux Report comes out, I think actually it came out yesterday, I believe. So it comes out every second Tuesday of the month. So I’m about to look at that. I want to take a look at that, definitely by the end of this week to see whether we can get any impact data now that speculative loading is out because, so the way that this works is the Crux data is released for the month before. That’s what happened, I think yesterday. So now we should have data on April where WordPress 6.8 came out. So now we can see how much did this feature launching in 6.8, and 6.8 in general, affect performance, hopefully in a good way.

\n\n\n\n

[00:46:39] Nathan Wrigley: Okay. Yeah, yeah. So this is actually for you, quite a big moment. You are suddenly going to get this data dump, which is going to actually cover this 43% of the web. It will be on all, well, most of the sites, and you are suddenly going to see what the impact is. Do you know, if you write that up, I will find it, if it’s out before I produce this post, then I will definitely link to that. And I’ll be fascinated to see if we can calculate how many decades, or weeks, or months, or years of time we have actually saved. That’s absolutely brilliant.

\n\n\n\n

Thank you so much for explaining it, helping to create it in the first place, and basically improving WordPress in a very, very demure way. You know, not shouting it from the rooftops, but doing a lot in the background to make everybody’s experience of the web a whole lot better. Felix Arntz, thank you so much for chatting to me today.

\n\n\n\n

[00:47:29] Felix Arntz: Yeah. Thank you.

\n
\n\n\n\n

On the podcast today we have Felix Arntz.

\n\n\n\n

Felix is a Senior Software Engineer at Google, and a WordPress Core committer from Germany, currently residing in San Francisco, California. He helped establish the WordPress Core Performance Team and has been heavily contributing to its efforts. He has been using WordPress for a decade and contributing back to the project since 2015. More recently, he has stepped into the role of the inaugural Performance Lead for the WordPress 6.2 release and subsequently of the 6.3 and 6.8 releases. In the latter release, he spearheaded development and launch of the new speculative loading feature, which is the focus of the podcast today.

\n\n\n\n

Speculative loading is one of the most important, and yet almost invisible, performance enhancements of recent times. If you’re on WordPress 6.8, this new feature is already active on your site, working quietly in the background to make page navigation faster. But you might never know from the WordPress UI, there’s no menu, no toggle, and no obvious indicator to show it’s there.

\n\n\n\n

Felix explains exactly what speculative loading is, and why it feels almost like browser magic. The ability for WordPress, using the browser’s new Speculation Rules API, to load the next page just as a user is about to visit it. It’s a clever use of browser signals like mouse clicks and hovers to anticipate navigation, shaving off precious milliseconds, sometimes even providing what feels like an instant page load.

\n\n\n\n

Felix clarifies the difference between conservative and more aggressive approaches to speculative loading, and why the WordPress Core team opted for the safest, least wasteful option by default, while still giving developers, or advanced users, the hooks and tools to customise or even disable it as needed.

\n\n\n\n

Felix discusses the origins of the feature as a plugin, the testing and data collection undertaken with tens of thousands of sites, and how this real-world data gave the team confidence to ship speculative loading to all WordPress users. We talk about what those performance wins mean at scale. How a 2% improvement on 43% of the internet translates into saving users untold hours of waiting collectively.

\n\n\n\n

We also get into the weeds on measurement and methodology. How the team uses data from the Chrome User Experience Report and HTTP Archive to track web performance, prioritise features, and validate real-world impact. Felix offers insight into how these global, anonymised data sets allow the Performance Team to make truly data-driven decisions.

\n\n\n\n

Beyond the tech, Felix addresses practical considerations, such as how to opt out, or fine-tune speculative loading if you have specific needs, how environmental concerns are balanced by default configurations, and how plugins or agencies might build on this foundation in the future.

\n\n\n\n

If you’ve ever wondered how large-scale, browser-level improvements make their way into WordPress Core, or simply want to know if there’s a way to make your own WordPress site that much faster, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

 WordPress Performance Team

\n\n\n\n

Achieve instant navigations with the Speculation Rules API

\n\n\n\n

Understanding Core Web Vitals and Google search results

\n\n\n\n

Speculative Loading plugin

\n\n\n\n

Speculative Loading, or A Brief History of Landing a Performance Feature in WordPress Core

\n\n\n\n

Overview of CrUX

\n\n\n\n

BigQuery

\n\n\n\n

HTTP Archive

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 28 May 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:34;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:93:\"Do The Woo Community: Reinventing Careers and Building Resilience in Tech with Mendel Kurland\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97469\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:96:\"https://openchannels.fm/reinventing-careers-and-building-resilience-in-tech-with-mendel-kurland/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:155:\"Zach and Carl chat with Mendel Kurland, sharing stories of resilience, reinvention, and the human side of tech, wrapping it all in laughs and life lessons.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 28 May 2025 09:32:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:35;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"Matt: The Five Layers of Sharing Thoughts and Ideas\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=142705\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:37:\"https://ma.tt/2025/05/sharing-levels/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3920:\"

I’ve been thinking a lot about mimetic formation, how a thought becomes an idea, and how that idea gestates and evolves as it’s progressively shared in wider and wider circles.

\n\n\n\n
\"\"
\n\n\n\n

During a recent product review of Day One, I was struck by how central the app is to my perspective on humans, relationships, and what we share. There are several layers to it, ranging from your innermost thoughts to what you share with the world. Each layer has its own context, challenges, and possibilities, and Automattic offers technology and products tailored to each.

\n\n\n\n

1. Layer one is your internal thoughts. Your consciousness, what exists only in your mind, or what I like to call meatspace. This space is yours and yours alone. This generative space is at the core of human creativity and existence.

\n\n\n\n

2. Layer two is triggered as soon as you put something into a medium, like writing it down. It’s everything that leaves your head, but is just reserved for you. In the past, we only had physical journals. Today, we have Day One as our strongest product in this space, but many people also have a private WordPress installation just for themselves. There are so many tools out there that help you create! Colors, brushes, canvases. Harper, for example, helps you write better — think of it as an open-source Grammarly, right now just in a few limited contexts, but in the future everywhere you write. 

\n\n\n\n

3. Layer three is you and someone else. This is everything you share with one other person, which is an incredibly sacred act. Shared journals on Day One, messaging on Beeper, DMs, private blogs with your best friend. A shared Google doc. This is its own special space. It has an intimacy and privacy that is core to the human experience. This is also phase 3 of Gutenberg, which is all about real-time co-editing and collaboration. This layer is the one I’m most excited about expanding in 2025 and 2026.

\n\n\n\n

4. Layer four is sharing within a finite group. N+1. It’s a space of collaboration and brainstorming with families, tribes, and teams. P2, Linear, Github, group chats, and cozy communities. You lose some of the intimacy of layer three but gain more group intelligence.

\n\n\n\n

5. Finally, we have the fifth layer. This is the public layer, where I have spent a lot of my time at Automattic. It is an extremely competitive space of social media and blogs: WordPress, WordPress.com, and Tumblr. Once you publish publicly, you open yourself up to the beauty and chaos of the wider world. The best reason to blog is comments, the people who find you and add to your thoughts, who you never would have imagined. This is a crucible, but makes your own writing and thinking so much better, it’s worth the mishegoss. \"🙂\"

\n\n\n\n

This has been kicking around in my head and at layer four for a while. Thanks to Kelly Hoffman for helping me get this to layer five.

\n\n\n\n

P.S. Happy 22nd birthday to WordPress! Very excited about the new AI team on .org.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 28 May 2025 00:55:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:36;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"Aaron Jorbin: Happy 22nd Birthday WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://aaron.jorb.in/?p=185698\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"https://aaron.jorb.in/happy-22nd-birthday-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:862:\"

I don’t know about you, but WordPress is feeling 22.

\n\n\n\n
\n\n
\n\n\n\n

I am celebrating by helping WordPress do what it has done nearly every day for 22 years: getting a little better (and being ok making mistakes in the process).

\n

The post Happy 22nd Birthday WordPress appeared first on Aaron Jorbin.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 May 2025 23:37:32 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:37;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"WordPress.org blog: Announcing the Formation of the WordPress AI Team\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18769\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://wordpress.org/news/2025/05/announcing-the-formation-of-the-wordpress-ai-team/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2959:\"

Today, I’m pleased to announce the formation of a new WordPress AI Team, a dedicated group focused on accelerating and coordinating artificial intelligence projects across the WordPress ecosystem.

\n\n\n\n

AI is already transforming how people create and manage content online. As this technology evolves, it’s essential that WordPress remains at the forefront, ensuring innovation happens in the open, guided by community values, and built to core standards.

\n\n\n\n

Why This Matters

\n\n\n\n\n\n\n\n

What to Expect

\n\n\n\n

The AI Team will:

\n\n\n\n\n\n\n\n

Meet the Team

\n\n\n\n

The WordPress AI Team brings deep experience in open-source, performance, and product development and a strong commitment to building AI features the WordPress way. The team will launch with the following team contributors:

\n\n\n\n\n\n\n\n

To help get things started, James and Felix will serve as the initial Team Reps in supporting team organization, communication, and coordination with other Make WordPress teams.

\n\n\n\n

This is an exciting and important step in WordPress’s evolution. I look forward to seeing what we’ll create together and in the open.

\n\n\n\n

If you’re interested in contributing or following along, please join the conversations in #core-ai and watch for upcoming meeting announcements on https://make.wordpress.org/ai/.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 May 2025 16:28:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mary Hubbard\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:38;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:109:\"Do The Woo Community: How One Solo Agency Owner Manages Hundreds of WordPress Sites (Without Losing His Mind)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"https://openchannels.fm/?post_type=blog&p=97117\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"https://openchannels.fm/how-one-solo-agency-owner-manages-hundreds-of-wordpress-sites-without-losing-his-mind/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:191:\"Running a massive web design business solo, while focusing on one platform, automating wisely, networking locally, and keeping support simple can help with strategies to scale without stress.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 May 2025 11:14:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:39;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"Do The Woo Community: Community Engagement Strategies for Successful WooCommerce and WordPress Plugins\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97436\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:105:\"https://openchannels.fm/community-engagement-strategies-for-successful-woocommerce-and-wordpress-plugins/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:194:\"In this episode of Woo Product Chat, co-hosts discuss \"community thinking\" in WordPress and WooCommerce plugins, highlighting the importance of user feedback and effective engagement strategies.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 May 2025 08:44:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:40;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"Weston Ruter: Improve LCP by Deprioritizing Script Modules from the Interactivity API\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://weston.ruter.net/?p=34457\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"https://weston.ruter.net/2025/05/26/improve-lcp-by-deprioritizing-interactivity-api-script-modules/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:42031:\"

Adding a fetchpriority of low to script modules and moving them from the head to the footer can improve LCP by >9%! I’ve written plugins you can use to implement this now while waiting for them to land in WordPress core.

\n\n\n\n

The past week I’ve been doing a deep dive into the performance impact of how WordPress loads script modules for the Interactivity API. When the Interactivity API was first introduced, it used classic non-module scripts which were printed at the end of the body (i.e. in the footer, at wp_footer) so that they would not block the critical rendering path. With support for script loading strategies in core, I added defer to these scripts and moved them to the head (i.e. at wp_head) in block themes, reasoning:

\n\n\n\n
\n

Leaving them in the head is advantageous because it means the browser will discover these scripts earlier and start loading them with other page resources, but the presence of defer means that they will no longer block page rendering.

\n
\n\n\n\n

Ultimately, when the Interactivity API was fully launched in WordPress 6.5, it had switched to using script modules. One great thing about script modules is that they don’t block rendering: they have the defer behavior by default. This means that they are safe to place in the head, and they continue to be printed there in block themes. (In classic themes, the block scripts are printed in the footer since blocks aren’t parsed before wp_head runs.) However, as I’ve been researching the past week, there can still be negative implications to the LCP metric when these script modules are discovered early, even though they don’t block rendering.

\n\n\n\n

I set up a vanilla test site with Local WP and the Twenty Twenty-Five default theme active. I configured the theme template and post content so that all block configurations which depend on the Interactivity API are present:

\n\n\n\n\n\n\n\n

In the end, this results in the following markup being printed in the head (from the full page source with some prettying):

\n\n\n
<script type=\"importmap\" id=\"wp-importmap\">\n{\n	\"imports\":{\n		\"@wordpress/interactivity\": \"/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=55aebb6e0a16726baffb\",\n		\"@wordpress/interactivity-router\": \"/wp-includes/js/dist/script-modules/interactivity-router/index.min.js?ver=dc4a227f142d2e68ef83\",\n		\"@wordpress/a11y\": \"/wp-includes/js/dist/script-modules/a11y/index.min.js?ver=b7d06936b8bc23cff2ad\"\n	}\n}\n</script>\n<script type=\"module\" src=\"/wp-includes/js/dist/script-modules/block-library/file/view.min.js?ver=fdc2f6842e015af83140\" id=\"@wordpress/block-library/file/view-js-module\"></script>\n<script type=\"module\" src=\"/wp-includes/js/dist/script-modules/block-library/image/view.min.js?ver=e38a2f910342023b9d19\" id=\"@wordpress/block-library/image/view-js-module\"></script>\n<script type=\"module\" src=\"/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js?ver=61572d447d60c0aa5240\" id=\"@wordpress/block-library/navigation/view-js-module\"></script>\n<script type=\"module\" src=\"/wp-includes/js/dist/script-modules/block-library/query/view.min.js?ver=f55e93a1ad4806e91785\" id=\"@wordpress/block-library/query/view-js-module\"></script>\n<script type=\"module\" src=\"/wp-includes/js/dist/script-modules/block-library/search/view.min.js?ver=208bf143e4074549fa89\" id=\"@wordpress/block-library/search/view-js-module\"></script>\n<link rel=\"modulepreload\" href=\"/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=55aebb6e0a16726baffb\" id=\"@wordpress/interactivity-js-modulepreload\">
\n\n\n

When loading the page in Chrome, here’s the network panel in DevTools:

\n\n\n\n
\"Screenshot
\n\n\n\n

Notice how the script modules are being loaded with a high priority and before the all-important Bison image resource is loaded for the LCP element. This is bad. Here’s a view of the waterfall in the Performance panel, where you can see the script modules indeed start loading before the Bison image:

\n\n\n\n
\"Network
\n\n\n\n

In my tests, both Chrome and Safari set a default fetch priority of high for module scripts and modulepreload links. In Firefox, the default fetch priority for a modulepreload link is highest, while the script modules are loaded with normal fetch priority. In all these cases, the priorities are incorrect. They should all have a fetch priority of low because they are not in the critical rendering path. This is because the very first requirement/goal defined for the Interactivity API was for server-side rendering:

\n\n\n\n
\n

It must support server-side rendering. Server-rendered HTML and client-hydrated HTML must be exactly the same. This is important for SEO and the user experience.

\n
\n\n\n\n

Since blocks using the Interactivity API are intended to leverage server-side rendering, the script modules for these blocks2 by definition should not be prioritized over loading other resources which are in the critical rendering path, especially any image resource for the LCP element.

\n\n\n\n

I wanted to find out what the LCP performance impact would be if these script modules had their priorities changed to low from the default of high. The link and script tags both support the fetchpriority attribute, same as the img tag does. While WordPress now facilitates adding fetchpriority to img tags, it doesn’t do the same for registered scripts or script modules. This is what #61734 is about, and it is why I’m analyzing the performance impact. In the same way that WordPress facilitates adding async and defer to scripts, and does so by default for some scripts, there should perhaps be a way to declare the fetchpriority for a script or script module.

\n\n\n\n

Performance of Low Priority Script Modules

\n\n\n\n

In order to benchmark the performance impact, I developed the Script Fetch Priority Low plugin which automatically adds fetchpriority=low to the module scripts used by the Interactivity API, as well as any modulepreload links which are printed for static import dependencies. If a page is loaded with a specific query parameter, then the plugin short-circuits; this allows for doing before/after benchmarks.

\n\n\n\n

With this plugin active, this is the change to the network panel in Chrome DevTools:

\n\n\n\n
\"Screenshot
\n\n\n\n

Notice how the script modules are now being loaded with a low priority and after the Bison image. This can also be seen in the Performance panel waterfall:

\n\n\n\n
\"Network
\n\n\n\n

This looks much better. But what is the performance impact in terms of LCP? To analyze that I used the benchmark-web-vitals tool to obtain the median web vitals metrics for 100 requests with and without the reduction in fetch priority:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"broadband\" --diff \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer&disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP142.6141.7-0.9-0.6%
LCP409.4382.4-27.0-6.6%
TTFB34.735.3+0.7+1.9%
LCP-TTFB374.2347.0-27.2-7.3%
\n\n\n\n

This is a big improvement! (Each subsequent benchmark test shows the median metrics of 100 iterations, unless otherwise noted.)

\n\n\n\n

The above results were testing while emulating a broadband network connection. Here are the results testing a “Fast 3G” connection:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"Fast 3G\" --diff \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer&disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP1275.31275.4+0.1+0.0%
LCP3377.13157.1-220.0-6.5%
TTFB35.034.6-0.4-1.0%
LCP-TTFB3341.13123.0-218.1-6.5%
\n\n\n\n

So there is roughly the same improvement regardless of the network conditions.

\n\n\n\n

I was also curious what the results would be when there was just a single block on the page using the Interactivity API, instead of attempting to add every single interactive block. This is the normal case for all block themes since the Navigation block is almost always present with the mobile overlay menu enabled. So I tested on a template with the Navigation block and a featured image as the LCP element, this time again emulating a broadband network connection:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"broadband\" --diff \\\n  --url \"http://localhost:10008/bison-no-file-block/?disable_print_script_modules_in_footer&disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison-no-file-block/?disable_print_script_modules_in_footer\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP140.7142.6+1.9+1.4%
LCP399.0368.9-30.1-7.5%
TTFB33.433.0-0.4-1.2%
LCP-TTFB365.1335.8-29.3-8.0%
\n\n\n\n

So even when there is just a single script module along with the modulepreload link, the performance improvement to LCP is consistent.

\n\n\n\n

Printing Script Modules in the Footer

\n\n\n\n

As referred to above, the classic method WordPress has employed to deprioritize scripts is to load them in the footer by supplying in_footer as true when registering a script. What if instead of adding a fetchpriority of low to script modules, they were instead just printed in the footer for block themes in the same way they are already printed in the footer for classic themes? I created the Script Modules in Footer plugin to implement this and to facilitate benchmarking. Here are the results:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"broadband\" --diff \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer&disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/?disable_script_fetchpriority_low\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP141.8143.7+1.9+1.3%
LCP410.8383.1-27.8-6.8%
TTFB34.434.4-0.1-0.1%
LCP-TTFB376.7348.4-28.4-7.5%
\n\n\n\n

This shows almost the same improvement as adding fetchpriority of low. However, even when they are located at the end of the body, they are still loaded with a high fetch priority. When script modules are printed in the footer, adding fetchpriority as well yields an additional ~1% improvement to LCP on my test page:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"broadband\" --diff \\\n  --url \"http://localhost:10008/bison/?disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP142.0144.1+2.1+1.5%
LCP377.5374.7-2.8-0.7%
TTFB34.735.1+0.4+1.2%
LCP-TTFB342.9338.9-4.0-1.2%
\n\n\n\n

If script modules are all printed with fetchpriority=low, here’s the difference when moving them from wp_head to wp_footer:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"broadband\" --diff \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer\" \\\n  --url \"http://localhost:10008/bison/\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP142.4143.2+0.8+0.6%
LCP383.9372.7-11.2-2.9%
TTFB35.035.2+0.2+0.6%
LCP-TTFB348.1337.8-10.3-3.0%
\n\n\n\n

So again, there’s an improvement but not as large as before/after adding fetchpriority=low or printing in the head versus the footer.

\n\n\n\n

Bonus: Deprioritizing Classic Scripts

\n\n\n\n

While classic scripts registered in WordPress already have the ability to be printed in the footer, they can’t be registered with a specific fetchpriority value. It doesn’t make a lot of sense to set a fetch priority for blocking classic scripts since they should always be loaded with the highest priority since they block rendering. However, what about a script that is using the defer or async loading strategies? Chrome automatically assigns such scripts as having a low priority, regardless of whether they are printed at the head or the footer. However, this is not the case for other browsers:

\n\n\n\n\n\n\n\n

So for the sake of non-Chromium browsers, it absolutely makes sense to be able to register classic scripts with a fetch priority. For example, the comment-reply script is registered as async and is printed in the footer. Explicitly marking this script as having a low fetch priority ensures that loading it will not compete with more critical resources in Firefox and Safari. My Script Fetch Priority Low plugin also implements this.

\n\n\n\n

As an extra bonus, check out my Site Kit GTag Script Deprioritization and Jetpack Stats Script Deprioritization plugins which optimize the loading of analytics trackers by adding fetchpriority=low to the script tags, removing the dns-prefetch, and ensuring the external script tags are printed in the footer.

\n\n\n\n

Conclusion

\n\n\n\n

There are essentially for different configurations for printing script modules on the page:

\n\n\n\n
    \n
  1. In head with default fetch priority. (This is the current behavior in WordPress core.)
  2. \n\n\n\n
  3. In head with fetchpriority=low.
  4. \n\n\n\n
  5. At end of body with default fetch priority.
  6. \n\n\n\n
  7. At end of body with fetchpriority=low.
  8. \n
\n\n\n\n

Here are the median metrics for benchmarking 1,000 iterations for each of the four configurations:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=1000 --output=\"md\" --network-conditions=\"broadband\" \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer&disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer\" \\\n  --url \"http://localhost:10008/bison/?disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/\"
\n\n\n\n
Metricheadhead + lowbodybody + low
FCP137.9143.0140.7138.8
LCP405.9383.7376.8370.0
TTFB33.734.533.633.7
LCP-TTFB372.2349.3343.0336.3
\n\n\n\n

When script modules are printed in the footer and they have fetchpriority=low, the result is a >9% improvement to LCP on my test page:

\n\n\n\n
Command
npm run research -- benchmark-web-vitals --number=100 --output=\"md\" --network-conditions=\"broadband\" --diff \\\n  --url \"http://localhost:10008/bison/?disable_print_script_modules_in_footer&disable_script_fetchpriority_low\" \\\n  --url \"http://localhost:10008/bison/\"
\n\n\n\n
MetricBeforeAfterDiff (ms)Diff (%)
FCP137.0137.2+0.2+0.1%
LCP406.0368.8-37.2-9.2%
TTFB33.733.6-0.1-0.1%
LCP-TTFB371.7336.0-35.7-9.6%
\n\n\n\n

Of course your mileage will vary. This will primarily benefit block themes. A vanilla WordPress install with the stock theme is very lightweight and a typical site will have a lot more going on which will lessen the impact of these optimizations. But still, with these findings I’ve been working on a pull request for #61734 to implement fetchpriority support for scripts and script modules in WordPress core; it defaults the fetch priority to low for script modules related to the Interactivity API as well as the comment-reply classic script. This feature is a natural progression to follow script loading strategies (async & defer); in fact, we could consider defaulting scripts to add fetchpriority=low if they use the a delayed loading strategy.

\n\n\n\n

I’ve filed #63486 to implement support for printing script modules in the footer. This work can follow the fetchpriority support as it will be more involved due to the need to account for module dependencies.

\n\n\n\n

While waiting for these performance enhancements to land in core, you can install the Script Fetch Priority Low and Script Modules in Footer plugins. Let me know if you measure any LCP improvements!

\n\n\n\n
\n\n\n\n

Where I’ve shared this:

\n\n\n\n\n\n\n\n

Shameless plug: I found out last month that my 6½-year position at Google was eliminated. I was hired to work on WordPress full time, and I’ve been contributing to WordPress as a core committer for over 10 years. Most recently I’ve worked heavily on the Core Performance team. I’m currently #opentowork, hoping to find a full time position as a sponsored contributor at another company that also cares about the health of the open web. Alternatively, I’m exploring the feasibility of being sponsored as an independent contributor. If you find my open source work valuable, maybe you can help sustain my contributions?

\n\n\n
  1. I used an Image block as opposed to setting the featured image so that I could use the “Enlarge on click” setting which involves the interactivity, but see also my post about how the Featured Image block can also be extended with a lightbox. ↩︎
  2. The one exception here is the File block when a PDF is selected and the “Show inline embed” setting is enabled. In this case, JavaScript runs when the block initializes to populate the hasPdfPreview state, and this then changes the element’s hidden state from true to false if the browser supports rendering PDFs. This is an exceptional case, however, and it would be rare for a File block to appear in the initial viewport and be the LCP element. The script module for the File block should only have a high fetch priority if (1) a PDF is selected, (2) the “Show inline embed” setting is enabled, and (3) the block appears in the initial viewport (on desktop or mobile). This is something that Optimization Detective could facilitate. ↩︎

The post Improve LCP by Deprioritizing Script Modules from the Interactivity API appeared first on Weston Ruter.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 May 2025 20:36:59 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Weston Ruter\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:41;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:112:\"Do The Woo Community: WordPress Multilingual, Translation and Community with Pascal Birchler and Robert Windisch\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97013\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:114:\"https://openchannels.fm/wordpress-multilingual-translation-and-community-with-pascal-birchler-and-robert-windisch/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:246:\"In this episode of The WordPress Way, listen to shared insights on translating WordPress, performance boosts, community involvement, and future multilingual features. They emphasize the ongoing need for translators and collaboration in WordPress.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 May 2025 09:01:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:42;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"Gutenberg Times: Feature API, Playground, Gutenberg 20.9, Interactivity API, #WCUS and moar — Weekend Edition 331\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=40505\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:117:\"https://gutenbergtimes.com/feature-api-playground-gutenberg-20-9-interactivity-api-wcus-and-moar-weekend-edition-331/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:20060:\"

Howdy,

\n\n\n\n

\n\n\n\n

This week, I continued to learn about more plugins for the block editor. They might be new to the WordPress repository or just new to me, haha. Also, Playground came up in the last couple of weeks, and I share two tutorials and a video about my workshop at WordCamp Europe. And via the Feature API you can prepare your plugins for AI Agents.

\n\n\n\n

As every year, WordCamp Europe will also have a Live stream for the talks and keynotes. Just check out the website on Jun 6th, 2025. The next Weekend Edition will drop in your inbox after WordCamp Europe and I will share some cool talks from the live stream.

\n\n\n\n

Until have a great time!

\n\n\n\n

Yours, \"💕\"
Birgit

\n\n\n\n\n\n
\n

WordCamp Europe is just around the corner! \"🎉\" If you want to meet up in Basel (June 4–7), grab a slot on my calendar or send me your link. #WCEU

\n\n\n\n
\"\"
\n
\n\n\n
\n\n\n

ICYMI: WordCamp US Call for Speaker is now live the deadline is June 20, 2025. WordCamp US will take place from August 26 to 29th, 2025. Similar to last year, there are no lightening talks, only long form talks, workshops, or campfire sessions. August 26 will be Contributor Day. Sessions start on August 27 in three tracks. You need to have a WordPress.org account to enter the form. The Call for Sponsors has also been published.

\n\n\n\n
\"\"
\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

George Mamadashvili just dropped the Gutenberg 20.9 RC1 for everyone to test out, and we’re expecting the final version to go live next week! After WordCamp Europe, I’ll catch up with Anne McCarthy to record our next Gutenberg Changelog, where we’ll chat about a bunch of stuff, including those two Gutenberg plugin releases, 20.9 and 21.0.

\n\n\n\n
\n

\"🎙\" The latest episode Gutenberg Changelog 118 – WordCamp Europe, WordPress New AI Team, the Pride Photo Drive, Gutenberg 20.9 and 21.0  Anne McCarthy is back from sabbatical and we talked about WordCamp Europe, the new WordPress AI team, the Pride Photo Drive, and Gutenberg 20.9 and 21.0 .

\n\n\n\n

If you are listing via Spotify, leave a comment. If you listen via other podcast apps, leave a review. It’ll help with the distribution.

\n\n\n\n
\"\"
\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

Johanne Courtright explains how Gutenberg is a game-changer — and clients actually love it (when done right). When implemented thoughtfully, she found, the Gutenberg editor revolutionizes WordPress by empowering clients with intuitive, flexible content creation. In her experience, clients express genuine satisfaction, as Gutenberg’s block-based approach simplifies editing and design, making website management more accessible and enjoyable for non-technical users.

\n\n\n\n
\n\n\n\n

Kevin Batdorf updated his plugin Pattern CSS . It lets you add CSS scoped to a block, and recently added a floating editor as well as a global CSS editor, making it easy to add custom animations or anything. It’s parsed via Lightening CSS in WebAssembly as you type, and works well with synced patterns.

\n\n\n\n
\n\n\n\n

Thorsten Landsiedel published a plugin called “Hide Block in RSS feed,” which adds a toggle switch to block sidebars for suppressing content in RSS feeds. In his talk at WordCamp Leipzig, he noted that decorative icons/images may display differently in RSS readers. Using this block you can improve readability by suppressing specific blocks in the feeds. The plugin is available on GitHub.

\n\n\n\n
\n\n\n\n

Weston Ruter, a long-time WordPress Core committer, explains step-by step how he added caption and lightbox to the featured image block. When Weston Ruter rebuilt his site with the Twenty Twenty-Five theme, he noticed the Featured Image block lacked caption and lightbox features. Both features are available for the Image block. Ruter shared code examples on how he implemented these features in a plugin. Then he also suggested future improvements for WordPress core.

\n\n\n\n
\n\n\n\n

WM Animations plugin by Widescreen Media, a company from Sweden, helps users to add entrance animations like fade-in and slide-in to core blocks. “You can select animation type and adjust duration/delay per block, directly in the block inspector. Works well with all core blocks and most custom blocks.” Widescreen Media’s website might be the best demo for this plugin.

\n\n\n\n
\n\n\n\n

Andy Fragen, core contributor and trauma surgeon, authored quite a few plugins. The oEmbed for GitHub Gist plugin enables writers to add code from GitHub Gists via the Embed block to their posts. For classic editor users, you just put the URL on a new line.

\n\n\n
\n

“Keeping up with Gutenberg – Index 2025”
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n
\n\n\n

Building Blocks and Tools for the Block editor

\n\n\n\n

Video recordings from Lisboa’s WordCamp 2025 are already available on WordPressTV

\n\n\n\n\n\n\n\n
\n\n\n\n

Seth Rubenstein, lead engineer at Pew Research Center, decided to take a break from regularly scheduled work to play around with an Interactivity API (iAPI) Inspector Chrome Extension. This tool offers dev tools to highlight iAPI directives and context associated with a block as well as map connections between iAPI stores on a page.

\n\n\n\n
\"Screenshot
\n\n\n\n
\n\n\n\n

Jonathan Bossenger has spent some time the last couple of weeks learning more about Feature API, the WordPress MCP plugin and the MCP WordPress remote package. In his latest video, Are your WordPress plugins and themes ready for AI? he puts it all together using one of his plugins and shows the various steps:

\n\n\n\n\n\n\n
\n
\n\n
\n
\n\n\n

Once you watched the video a couple of times, it might be helpful to also read Jamie Marsland‘s post on LinkedIn again:  WordPress Is Sitting on a Goldmine — And the Feature API Just Dug the First Tunnel

\n\n\n\n
\n\n\n\n

In this week’s live stream, Ryan Welcher also took a A first look at the new WordPress Feature API. He calls the Feature API “a powerful new way of exposing WordPress functionality in a standardized, discoverable way for both server and client-side use.”

\n\n\n
\n
\n\n
\n
\n\n\n

What is new in Playground?

\n\n\n\n

Roger Williams and I spoke about my upcoming WordCamp EU workshop.” “From Zero to Demo: Mastering WordPress Playground Blueprints“. The recording is available on YouTube WordPress Playground Workshop Preview with Birgit Pauli-Haack

\n\n\n
\n
\n\n
\n
\n\n\n
\n\n\n\n

Karthick Murugan, from the Multidots team, updated documentation with everything you want to know about the current web instance: WordPress Playground web instance.

\n\n\n\n
\n\n\n\n

Earlier this week, I wrote about the early version of the Playground CLI and how to use it to test your plugin and theme in development or your blueprints locally. Early version Playground CLI testing.

\n\n\n\n
\n\n\n\n

In Automating WordPress Playground Screenshots with Node.js and Playwright I shared the context and code using the JavaScript API to call a with a playwright browser instance to take a screenshot of the Playground site configured with a blueprint.

\n\n\n\n
\n\n\n
\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n
\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n
\n

Featured Image: Photo by Ivan Bandura on Unsplash

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 24 May 2025 09:15:08 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:43;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"Gravatar: Proven Branding Methods for Professional Coaches\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3184\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"https://blog.gravatar.com/2025/05/23/branding-for-coaches/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:15736:\"

Are you looking for a way to differentiate your coaching services in a competitive online market? You’re not alone. Many coaches struggle to stand out among thousands of others offering similar services.

\n\n\n\n

Here’s the good news: Effective coach branding doesn’t require massive budgets or complex systems. Instead, success comes from focusing on a few foundational pillars: Optimizing your digital presence, promoting your services strategically, and tracking performance consistently.

\n\n\n\n

And no, you don’t need to hire expensive agencies or completely redesign your business. Small, targeted improvements to your branding can yield significant results in attracting your ideal clients.

\n\n\n\n

This guide cuts through the theory and provides practical, proven branding techniques specifically for coaches. Each strategy is designed to help you build a distinctive professional identity that resonates with potential clients and positions you as the obvious choice in your coaching niche.

\n\n\n\n

Essential elements of a professional coaching brand

\n\n\n\n

The foundation of any successful coaching business isn’t flashy graphics or clever slogans – it’s a consistent multi-platform presence strategy. This means maintaining a unified professional identity across coaching directories, your website, social media profiles, and professional networks. Tools like Gravatar can help automate this consistency, ensuring your professional image remains cohesive wherever potential clients encounter you online.

\n\n\n\n

A big part of that consistency is demonstrating your expertise. Potential clients need clear evidence of your capabilities through certifications, testimonials, and client success stories prominently displayed in your professional bios and website. These serve as social proof that validates your coaching abilities to skeptical prospects.

\n\n\n\n

Video content has become a particularly powerful way to showcase expertise. According to Wistia’s 2025 State of Video Report, short-form video content significantly outperforms other formats in engagement rates, with how-to videos under one minute achieving 82% viewer completion. Instagram reels and TikTok tutorials offer perfect platforms to demonstrate your coaching approach in action.

\n\n\n\n

To truly stand out, develop proprietary frameworks or methodologies that distinguish your services from generic coaching approaches. This gives clients a concrete system to understand and helps position you as an innovative thinker in your field.

\n\n\n\n

On top of that, you need to take whatever time you need to identify what makes your coaching unique – your background, approach, client specialization, or results – and weave these elements into a compelling coaching story that resonates with your target audience.

\n\n\n\n

Now, let’s explore some practical ways to build these brand pillars.

\n\n\n\n

How Gravatar powers your coaching brand identity

\n\n\n\n
\"1
\n\n\n\n

Establishing a consistent online presence is one of the biggest challenges for coaches, but thankfully, this is where Gravatar steps in as a powerful brand management tool. As a “Globally Recognized Avatar,” Gravatar can become like a central identity hub that automatically syncs across thousands of platforms, eliminating the frustration of managing multiple profiles.

\n\n\n\n
\"2
\n\n\n\n

Think of Gravatar as your digital business card on steroids. It connects your professional image, bio, and credentials across coaching directories, blog comments, professional forums, and social platforms. When potential clients encounter you across different channels, they’ll recognize your consistent presence immediately, crucial for building recognition in a crowded coaching marketplace.

\n\n\n\n

The trust factor gets a significant boost with Gravatar’s verification system. Each link on your profile can display a “verified” tick, signalling authenticity to sceptical prospects. In coaching, where trust is everything, these small trust signals make a substantial difference in conversion rates.

\n\n\n\n

Your Gravatar profile can even live as a QR code in your phone’s digital wallet, making in-person networking seamless.

\n\n\n\n
\"3
\n\n\n\n

Update your credentials once, and the changes reflect everywhere – saving hours of profile management while maintaining brand consistency.

\n\n\n\n

Ready to strengthen your coaching brand? Get your free Gravatar profile today and bring cohesion to your digital presence.

\n\n\n\n
\"\"
\n\n\n\n

Building trust through verified profiles and consistent presence

\n\n\n\n

Verification is no longer optional in the coaching industry – it’s essential. When potential clients research your services, they’re looking for trust signals that verify your authenticity and expertise. Social media verification acts as a powerful trust marker in a saturated market.

\n\n\n\n

Instagram deserves special attention in your verification strategy. According to research from Luisa Zhou, this platform is where many coaches successfully find their highest-quality clients, with 54% of Instagram users making purchases after discovering services there. So naturally, verifying your Instagram presence should be a priority.

\n\n\n\n

Similarly, establishing verified presence on X (formerly Twitter) creates additional credibility touchpoints in your professional ecosystem.

\n\n\n\n

For coaches using newer platforms like Bluesky, Gravatar offers a unique advantage – you can get a custom Bluesky domain name and verify it directly through Gravatar, creating an additional layer of professional credibility.

\n\n\n\n
\"4
\n\n\n\n

Gravatar’s “update once, sync everywhere” system means your verified professional image automatically appears across hundreds of platforms – from WordPress blogs where you guest post to professional forums where you engage potential clients.

\n\n\n\n

Think of Gravatar as the foundation of your coaching trust architecture. It creates a central verification hub from which all aspects of your digital footprint link back, establishing a cohesive professional identity that builds client confidence at every digital touchpoint.

\n\n\n\n

Practical strategies to promote your coaching brand

\n\n\n\n

Establishing credibility through a verified online presence remains the cornerstone of successful coach branding. Creating a verified professional presence using Gravatar across coaching platforms and professional networks provides the essential foundation upon which all other brand-building activities should build. This baseline credibility creates the trust necessary for potential clients to consider your services.

\n\n\n\n

Position yourself as a thought leader

\n\n\n\n

To elevate beyond basic verification, position yourself as a thought leader through specialized content that directly addresses specific pain points in your coaching niche. This approach demonstrates your expertise while providing immediate value to potential clients.

\n\n\n\n

Effective thought leadership channels include:

\n\n\n\n\n\n\n\n

The most successful coaches don’t create generic content – they develop material that speaks directly to their audience’s most pressing challenges, demonstrating both understanding and solution expertise.

\n\n\n\n

Develop your signature framework

\n\n\n\n

Creating a distinctive “signature framework” dramatically separates your coaching brand from competitors while simplifying your marketing message. For example, a life coach specializing in work-life balance might develop “The Balance Blueprint” – a structured, step-by-step process clients follow to achieve harmony between career and personal priorities.

\n\n\n\n

Your signature framework accomplishes two critical objectives simultaneously:

\n\n\n\n\n\n\n\n

This combination builds both trust and recognition – the twin pillars of effective coach branding.

\n\n\n\n

Forge strategic partnerships

\n\n\n\n

Explore high-value coaching partnerships with complementary service providers and industry experts. A relationship coach might partner with a financial advisor to address money conflicts in relationships, creating a more comprehensive solution while accessing a new client base.

\n\n\n\n

Additionally, seek opportunities to speak at industry conferences and events. These platforms position you as an authority while creating valuable networking opportunities with potential clients and partners who already recognize your expertise.

\n\n\n\n

Measure your brand’s impact and reach

\n\n\n\n

Without tracking key metrics, you’re essentially operating in the dark, making decisions based on gut feeling rather than data.

\n\n\n\n

Start by monitoring these fundamental metrics that directly reflect your brand’s performance:

\n\n\n\n\n\n\n\n

Tools like Google Analytics provide comprehensive website insights, while platform-specific analytics like Instagram Insights and LinkedIn Analytics reveal how your content performs across different channels.

\n\n\n\n

Still, data without action is useless. Use your metrics to continuously refine your approach:

\n\n\n\n\n\n\n\n

When metrics show declining engagement, don’t just produce more content – produce better content that addresses the specific needs revealed in your data.

\n\n\n\n

And, once you do get the results you want, make sure you document your success stories – the most compelling brand assets are documented client transformations. Create systematic before-and-after assessments that quantify client progress:

\n\n\n\n\n\n\n\n

Take your coaching brand to the next level

\n\n\n\n

Building a verified, consistent online presence using tools like Gravatar creates the essential foundation for your coaching brand. This strategic approach eliminates the fragmentation that undermines many coaches’ digital presence while establishing the credibility necessary to convert prospects into clients.

\n\n\n\n

With Gravatar handling your consistent visual representation across platforms, you’re free to focus on what truly matters – delivering high-value client interactions through optimized touchpoints. Your social media engagement, website inquiries, and professional forum participation all benefit from the trust architecture you’ve established.

\n\n\n\n

To sum it up, here’s what you need for success:

\n\n\n\n\n\n\n\n

The coaches who succeed don’t try to implement everything at once. They start with fundamentals, like creating a free Gravatar profile, and systematically build their brand presence over time.

\n\n\n\n

Remember that brand development is a gradual, ongoing process. Each small improvement compounds, creating a professional presence that stands out in a crowded marketplace.

\n\n\n\n

Happy branding!

\n\n\n\n
\"\"
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 May 2025 17:44:13 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:44;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"Gravatar: What Makes a Digital Avatar Effective\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3289\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"https://blog.gravatar.com/2025/05/23/what-is-a-digital-avatar/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:19145:\"

Fun fact: The global digital avatar market is hurtling toward a whopping $270.61 billion by 2030. That’s up from just $18.19 billion in 2023.

\n\n\n\n

What began as a simple, low-quality profile picture you might put on mIRC or MySpace can now become a full-blown brand asset. The kind that drives clicks, builds trust, and boosts conversions like a charm.

\n\n\n\n

But… not all avatars are created equal. So what separates the forgettable from the phenomenal?

\n\n\n\n

Effective avatars are engagement machines, and brands that get it right are seeing:

\n\n\n\n\n\n\n\n

This is more than some passing tech phase, it’s a fundamental shift in how digital identity is experienced. As AI-powered avatars and virtual reps get smarter, businesses are tapping into a new kind of connection – fast, human, and scalable.

\n\n\n\n

In this guide, we’ll walk you through how to build and deploy avatars that work, from brand consistency and personalization to next-gen tools like Gravatar that simplify your digital identity across the web.

\n\n\n\n

No more juggling profile pics across platforms. No more brand dissonance. With a smart avatar strategy, you update once and show up everywhere, looking exactly how you want to.

\n\n\n\n
\"\"
\n\n\n\n

What makes a digital avatar effective: Definition and importance

\n\n\n\n

Digital avatars are not just sci-fi playthings anymore. These digital doppelgängers are the new face of brands and professionals online, popping up everywhere from sales decks to marketing assets and customer chats.

\n\n\n\n

Here’s the kicker: According to research from the National Institutes of Health, our brains respond to avatars a lot like we respond to real humans. Wild, right? But also incredibly useful. Because that means every time a customer sees your avatar, they’re not just spotting a fancy graphic – they’re building a sense of connection, trust, and familiarity, just like they would with a real-life person.

\n\n\n\n

Why does that matter? Well:

\n\n\n\n\n\n\n\n

And it’s not just big brands getting in on the avatar action. If you’re building a personal brand, a strong digital avatar can become your secret weapon, a visual shorthand people instantly recognize in comment threads, Slack groups, or LinkedIn scroll-athons.

\n\n\n\n

Of course, different use-cases will call for different strategies. A corporate avatar might need to channel “professional but warm,” while a personal brand might want something that screams “it’s me!” in the best way. Meanwhile, your social avatar? Feel free to let your creativity run wild (meme energy encouraged).

\n\n\n\n

The point is, the avatar you choose should match its mission. A customer support bot? Friendly and dependable. A sales rep avatar? Confident and persuasive.

\n\n\n\n

Over the rest of this post, we’ll break down how to tailor your avatar’s personality to fit the context, so you’re always putting your best digital face forward.

\n\n\n\n

Types of digital avatars: From simple icons to interactive representations

\n\n\n\n

Let’s start with the basics: The humble headshot avatar. This is your digital calling card. A clean, static image that tells the internet, “Yep, it’s me.” Gravatar is the OG here – a global avatar service that ensures your chosen pic pops up consistently across thousands of sites.

\n\n\n\n

WordPress blogs, GitHub repos, Slack chats, and plenty more. Set it once, and voilà: Instant recognizability, no matter where you roam online.

\n\n\n\n

In fact, setting up your Gravatar takes less than 5 minutes (likely the best ROI you’ll ever get in under a coffee break).

\n\n\n\n

Set it up in five minutes now, save yourself fifty profile edits later.

\n\n\n\n

Zooming out beyond headshots, the avatar scene gets pretty creative:

\n\n\n\n

2D customizable avatars let you tweak everything from eye shape to shoe style (e.g., Bitmoji). They’re quirky, fun, and surprisingly simple to build.

\n\n\n\n
\"2D
\n\n\n\n

3D static avatars offer depth, angles, shading, the works. They give your digital self some dimension and make your profile pic feel less…flat.

\n\n\n\n
\"3D
\n\n\n\n


In 2022 Meta teamed up with the NFL to enable viewers to outfit their Avatars in the colors of the two Superbowl teams

\n\n\n\n

3D animated avatars? Now we’re in Pixar territory. These avatars blink, smile, nod, and generally act like they’re about to ask you how your day’s going. Perfect for adding that human-ish warmth to virtual chats.

\n\n\n\n

At the frontier, we’ve got AI-powered avatars, and this is where things get spicy. Platforms like HeyGen let you build avatars that don’t just look the part – they talk it too. Natural language processing means they can chat, answer questions, and generally hold their own in a conversation without sounding like a 2005 chatbot.

\n\n\n\n
\n
\n
\n\n\n\n

And the tech’s only getting better. Even Gravatar is creating AI-generated avatar tools, so anyone – yes, even the design-challenged – can whip up a slick, professional avatar without breaking a sweat.

\n\n\n\n

The gap between digital you and real you is closing fast. And with these evolving tools, your online presence can be as polished, personable, or playfully weird as you want it to be.

\n\n\n\n

AI-powered avatars: The future of digital identity is already here

\n\n\n\n

Gravatar’s shiny new AI Profile Builder, launched in May 2025, is leading the charge to become the new face (quite literally) of digital identity. And with users saying they feel more emotionally connected to brands using personalized avatar interactions over the usual click-and-type interfaces, this isn’t just for show.

\n\n\n\n

Tools like Gravatar’s AI Profile Builder allow you to build smart, secure avatars that actually do something.

\n\n\n\n

These AI avatars adapt based on where you are and who you’re talking to. Drop into a professional thread? Your avatar turns on the polish. Chiming in on a casual forum? It relaxes the tone. All without you lifting a finger.

\n\n\n\n

For businesses, this opens up a goldmine: Deeper customer engagement, zero need for juggling multiple digital personas, and bulletproof brand consistency, without compromising on privacy.

\n\n\n\n

We’re not just putting an AI face on your profile. We’re building a secure, intelligent bridge between your real self and your digital one – one that works across thousands of platforms.

\n\n\n\n

This means you get to nail that tricky balance between personalization and privacy.

\n\n\n\n

End result: A smart, responsive avatar that feels genuinely “you”, without handing over your life story to the algorithm gods.

\n\n\n\n

Digital avatars in business: Strategic applications that drive results

\n\n\n\n

When businesses keep their avatars consistent across platforms, they create that magical “ah yes, I know you” moment. It’s instant visual recognition that cements brand identity and reassures your audience they’re in the right place, whether they’re browsing your website, stalking your socials, or firing off a support ticket.

\n\n\n\n

And it’s not just about looking slick. A 2024 University of Reading study showed a significant jump in user interactions when brands used culturally tuned digital avatars in international campaigns.

\n\n\n\n

Turns out people respond better when your brand feels familiar and relatable, and not like a tourist fumbling through Google Translate.

\n\n\n\n

But avatars aren’t just for marketing. They’re transforming customer service, too. Virtual assistants with avatar interfaces spark more engagement than plain old text bots. Turns out, people prefer chatting with a “someone” rather than a “something.”

\n\n\n\n

Case in point: Lemonade Insurance.

\n\n\n\n

Their claims assistant, Jim (an AI avatar), processes requests in literal seconds. Customers now trust it more than traditional reps, and it’s not just about the speed – being presented with a friendly, familiar face turns a cold system into a warm interaction.

\n\n\n\n

The end result? Happier users who stick around longer and actually enjoy the convo.

\n\n\n\n

Now, for the pros in the room: Enter Gravatar.

\n\n\n\n

Whether you’re replying to a blog comment, debugging on Stack Overflow, or posting in a Slack channel, Gravatar has you covered.

\n\n\n\n

Unlike avatars that change depending on the platform (and leave your brand scattered like confetti), Gravatar keeps everything tidy and cohesive. Set it up once, and your professional avatar just shows up across thousands of platforms without you lifting a finger. It’s recognition on autopilot.

\n\n\n\n

And for businesses building community platforms? The Gravatar API is your new best friend. It lets users show up with their avatars already in tow – no need for endless image uploads or awkward “who’s who” moments. Just seamless, identity-based connection right out of the box.

\n\n\n\n

Implementation guide: Creating the right avatar solution for your needs

\n\n\n\n

Before you go charging into avatar creation mode, pause. Breathe. Ask yourself: What do I actually need this avatar to do?

\n\n\n\n

Because the best avatar isn’t just pretty, it’s purpose-built. And the right solution depends entirely on your goals:

\n\n\n\n\n\n\n\n

Each goal unlocks a different avatar approach, so pick your strategy before picking your style.

\n\n\n\n
Type of avatarPurpose Examples
StaticConsistent visual branding; establish familiarity and recognition.Company logo icon, profile headshot, illustrated character used across web pages and email signatures
InteractiveReal-time, personalized customer interactionAI chatbot with animated face, live avatar-based support agent
\n\n\n\n

No matter what your preferred avatar is, if you’re building a full-blown avatar ecosystem (i.e., membership platforms, technical communities, enterprise apps), then you’ll want to get serious about your tech stack.

\n\n\n\n

Here’s what to factor in:

\n\n\n\n\n\n\n\n

This is where Gravatar really shines: Its email-based ID system handles identity, and the REST API makes delivery dead simple. Just hash an email, hit the avatar or profile endpoint, and Gravatar returns consistent, customizable visuals – no storage, no syncing, no fuss.

\n\n\n\n

Developers get fast, cacheable responses, optional profile data, and fallback image controls – all without bloating your backend or reinventing the wheel.

\n\n\n\n

Bottom line: Your perfect avatar setup depends on what you’re building, how techy you’re feeling, and the kind of connection you want with your audience. Choose wisely, and let your digital self do the heavy lifting.

\n\n\n\n

Digital avatar design best practices

\n\n\n\n

When it comes to designing your digital avatar, you want it to be instantly recognizable, reliably familiar, and – above all – consistent wherever it shows up. That visual déjà vu is what builds trust. So, a few pointers:

\n\n\n\n\n\n\n\n

One last pro tip: Set up a Gravatar profile. It’s the easy button for keeping your avatar synced across WordPress, Slack, and a ton of other platforms. Update it once, and your whole digital universe stays in step. Clean, consistent, and credible.

\n\n\n\n

Transform your online presence with Gravatar: Start creating your professional digital identity today

\n\n\n\n

Tired of uploading your headshot again for the millionth platform? Gravatar is the slick, savvy avatar service that makes you look polished across the internet without breaking a sweat (or opening Photoshop).

\n\n\n\n

Set up your Gravatar once, and that single image becomes your visual passport across the internet, including websites like WordPress, GitHub, Slack, Figma, Mailchimp, Stack Overflow, OpenAI, Atlassian, Coinbase, and more!

\n\n\n\n

Whether you’re commenting, collaborating, or contributing, your avatar shows up instantly, building recognition and credibility with every interaction.

\n\n\n\n

And if you’re creating a platform where identity matters, Gravatar’s APIs are a goldmine:

\n\n\n\n\n\n\n\n

Faster dev time, smoother UX, and more trust from day one.

\n\n\n\n

Oh, and did we mention? It’s totally free. No fees, no upsells, no “pro” plan with features locked behind a paywall. Gravatar is used by millions of professionals around the world, and you can join them without spending a penny.

\n\n\n\n

Just register and sit back as your avatar quietly does its thing, building trust, recognition, and brand alignment across the web.

\n\n\n\n
\"\"
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 May 2025 17:42:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"Do The Woo Community: Do the Woo is Sponsoring WordCamp Europe 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"https://openchannels.fm/?post_type=blog&p=97385\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"https://openchannels.fm/do-the-woo-is-sponsoring-wordcamp-europe-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:108:\"We\'re exciting to sponsor WordCamp Europe 2025 again. Come by our booth and join the community conversatoin.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 May 2025 10:02:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:46;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:103:\"Felix Arntz: Speculative Loading, or A Brief History of Landing a Performance Feature in WordPress Core\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://felix-arntz.me/?p=2094\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"https://felix-arntz.me/blog/speculative-loading-history-performance-feature-in-wordpress-core/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:23926:\"

Two years ago today, on May 22, 2023, I opened an experimental pull request for a new module in the Performance Lab plugin. That little experiment was the very first step on a long road that ultimately led to the “Speculative Loading” feature landing in WordPress 6.8 last month (April 2025).

\n\n\n\n

For those unfamiliar, the Speculative Loading feature enhances performance by speculatively loading pages a user is likely to visit next, which can make navigation feel almost instantaneous. If you want to dive into the technical nitty-gritty, I recommend checking out the “dev note” post on Make WordPress Core.

\n\n\n\n

This post, however, isn’t about the what or how of the feature itself. Instead, I want to pull back the curtain and share the story behind the feature—the milestones, the discussions, and the collaborative effort that took it from a spark of an idea to a reality for millions of WordPress sites. The impact is considerable even for the entire web. Keep reading to the end for concrete numbers. 👇

\n\n\n\n\n\n\n\n

The Spark: An Intriguing Browser API

\n\n\n\n

It all began on April 20, 2023, when an internal Google email thread about preloading techniques landed in our team’s inbox. Part of that thread was a slide deck for an upcoming TPAC 2023 presentation by Domenic Denicola and Jeremy Roman, who were deeply involved in a new browser-level API called Speculation Rules API.

\n\n\n\n

Learning about this API, I was immediately excited. The potential performance benefits for the web, including for WordPress, seemed enormous. What particularly caught my eye were “document-level rules”, which went beyond loading specific URLs to opting in to loading entire URL patterns (as detailed later in this Chrome developers blog post). At that time, this aspect of the API was truly cutting-edge. It required Chrome 113 (which was just about to be released on April 26, 2023) and, crucially, opting into a Chrome origin trial because it was such an early feature. Naturally, I signed up straight away.

\n\n\n\n

First Steps: Pull Request for an Experimental Module

\n\n\n\n

A few weeks of mulling it over passed, and then on May 19, 2023, I finally decided to dive in and explore how this API could work within WordPress. This led to the creation of that first experimental pull request three days later, on May 22nd.

\n\n\n\n
\"Screenshot
Screenshot of the initial GitHub pull request, showing the original description for when it had just been started as an experiment
\n\n\n\n

I shared this initial exploration both with my colleagues at Google who were working on the browser API itself and with the broader WordPress Performance Team. The idea was met with a good deal of curiosity and excitement, though everyone acknowledged its experimental nature. The browser API was still very young, and its reliance on an origin trial meant it wasn’t something we could roll out widely.

\n\n\n\n

The feedback on the pull request was super helpful, coming from both the Google side and WordPress contributors. We got the pull request into a pretty decent shape so that it could in principle be added to Performance Lab, but it remained an exploration. The WordPress Performance Team had many other priorities, and as long as the core browser functionality was locked behind an origin trial, it didn’t make sense to push too hard on a plugin that very few could actually use.

\n\n\n\n

Gaining Momentum: Browser API Maturation

\n\n\n\n

Time marched on, and then in early November 2023, we received some exciting news: the document-level rules for the Speculation Rules API were slated to become publicly available, no origin trial needed, with the release of Chrome 121 on January 17, 2024.

\n\n\n\n

This was a significant development. Around the same time, Chrome had also introduced DevTools features to help debug speculation rules, and more comprehensive documentation was starting to appear, including on MDN.

\n\n\n\n

This news was the catalyst to get serious about the dormant pull request. I revisited it, updated it to align with the latest WordPress Core changes that had happened in the meantime, and began polishing it towards a Minimum Viable Product (MVP).

\n\n\n\n

On November 20, 2023, I created a new feature branch for the prospective “Speculation Rules” module within the Performance Lab plugin. We opted for a feature branch because:

\n\n\n\n
    \n
  1. We needed to ensure that even if the initial PR was merged, the module wouldn’t be released until the browser API was widely available without the origin trial.
  2. \n\n\n\n
  3. We anticipated a few follow-up pull requests to build out the full MVP.
  4. \n
\n\n\n\n

Following further discussions with fellow WordPress Performance Team contributors, I formalized the idea by opening a module proposal issue on December 5, 2023. This provided a comprehensive overview of the feature and its intended scope.

\n\n\n\n

First Release of the Plugin

\n\n\n\n

Things started moving quickly then. That initial pull request, which had evolved from an experiment to a serious feature implementation, was finally merged on December 15, 2023! I immediately opened a follow-up issue to track the remaining tasks before our first public release.

\n\n\n\n

A few relatively straightforward follow-up pull requests (#938, #939, #940) were implemented and merged by mid-January 2024. Concurrently, the WordPress Performance Team was finalizing its annual roadmap, and “speculative prefetching and prerendering” (as we often called it then) earned its place as a priority project. You can see it listed on the 2024 roadmap here.

\n\n\n\n

Meanwhile, a significant holistic discussion had unfolded regarding the structure of the Performance Lab plugin. The decision was made to decouple its modules into individual, standalone plugins. Performance Lab would continue as an optional central orchestrator, but users could also install specific performance features independently. This required a migration effort of the existing modules into plugin shape. I opened a pull request (#946) on January 17, 2024, to transition the Speculation Rules module into its own plugin. On that very same day, we submitted this nearly complete plugin to the WordPress plugin directory.

\n\n\n\n

The review process by the WordPress plugin team was incredibly swift, and the plugin was approved a day later (a huge thank you to them!). While the migration pull request (#946) hadn’t technically been merged yet, all the core code was complete and approved. Therefore we decided to push the release so users could start testing almost immediately after Chrome 121 had just made the browser API widely available. Another day later, on January 19, 2024, the 1.0.0 version of the Speculation Rules plugin launched on WordPress.org. This was a major milestone. Despite that, we kept promotion low-key initially, as a few more enhancements were planned.

\n\n\n\n

On a personal note, just a few days later, on January 24, 2024, I experienced an even more significant milestone: I became a dad! 👶 As such, I went AFK for a while, enjoying this precious time with my new family. Thankfully, the Speculation Rules plugin was in the capable hands of my teammates at Google and the other WordPress Performance Team contributors – a special shoutout to Weston Ruter, who has been instrumental in polishing and helping shepherd the feature all the way until stable.

\n\n\n\n

Introducing “Speculative Loading”: Promotion and Gaining Traction

\n\n\n\n

On February 16, 2024, version 1.0.1 of the Speculation Rules plugin was released with some bug fixes. Perhaps more importantly, this coincided with the Performance Lab 2.9.0 release, which officially added our plugin to its list of associated plugins. This significantly broadened its promotion due to Performance Lab’s widespread adoption.

\n\n\n\n

When I returned from my initial parental leave about ten days later, the Speculation Rules plugin was already active on over 500 WordPress sites! Not a massive number in the grand scheme of WordPress, but impressive for a plugin barely a month old.

\n\n\n\n

Over the following months, we continued to polish the plugin, shipping further enhancements and bug fixes, and promoting it more widely. During this period, the WordPress Performance Team undertook a project to revise plugin names, aiming for clarity by focusing on user-facing benefits rather than underlying technologies. As part of this initiative, the “Speculation Rules” plugin was renamed to the “Speculative Loading” plugin (see the renaming pull request #1101).

\n\n\n\n

Following these enhancements, the new name, the maturation of the browser API, and encouraging feedback from other browser vendors (see Mozilla’s standards position and WebKit’s standards position), I collaborated with other contributors to publish a Make WordPress Core blog post on April 9, 2024. This shared the project more broadly with the WordPress developer community.

\n\n\n\n

An important decision made early in the plugin’s development was to default to prerendering with “moderate” eagerness. This is a more “aggressive” setting (offering better performance but potentially more resource-intensive) than what we ultimately shipped in WordPress 6.8. It was a deliberate choice for the plugin, as it allowed us to gather feedback on a more impactful version of the feature from a performance perspective. For WordPress Core, however, we would later opt for a more conservative default (prefetching with “conservative” eagerness) to ensure resourcefulness at scale.

\n\n\n\n

The Road to Core: Gathering Evidence and Formal Proposal

\n\n\n\n

Both the Speculative Loading plugin and the underlying Speculation Rules browser API continued to gain traction. Six months after that Make Core post:

\n\n\n\n\n\n\n\n

With such positive signals, even at a considerable scale, it felt like the right time to formally propose the feature for inclusion in WordPress Core. On November 21, 2024, I opened a WordPress Trac ticket (#62503) proposing the feature for WordPress 6.8. Alongside it, I submitted a WordPress Core pull request (#7860) with the proposed code, which was largely a port of the existing plugin.

\n\n\n\n

As mentioned, while the plugin used “prerender” with “moderate” eagerness, we opted for a more conservative approach (literally!) for Core, using only “prefetch” with “conservative” eagerness. At the massive scale of WordPress (impacting over 40% of the web), this was a safer starting point. The implementation, however, was designed to potentially allow for adjustments in the future as the browser API evolves or as confidence in other configurations grows.

\n\n\n\n

The Final Push: Community Feedback and Commitment

\n\n\n\n

For the next two months, the Trac ticket and pull request primarily saw feedback from contributors already involved in the development. While valuable, a feature of this significance ideally receives broader input from the wider WordPress Core community, including experienced long-term contributors and committers. In mid-January 2025, we began to more actively solicit this feedback, raising the ticket during the weekly WordPress Core “dev chat” and eventually bumping its priority on Trac.

\n\n\n\n

Aside: It’s not uncommon for Trac tickets to only receive broader feedback later in the process. This isn’t ideal, but it’s often a reality given the limited resources and the sheer volume of ongoing development efforts. Reviewing a notable feature thoroughly takes time, which is a scarce commodity for many contributors. If you want to help, consider sponsoring WordPress development.

\n\n\n\n

By early February, we started seeing more engagement from other long-term contributors. This sparked some excellent discussions on the Trac ticket, the pull request, and synchronously on Slack. Some conversations worth highlighting include this Slack discussion, this Trac ticket discussion, and this GitHub pull request discussion.

\n\n\n\n

Both general considerations and specific technical details were debated, and much of the final fine-tuning of the implementation occurred during this “final sprint”, which took about three weeks. Eventually, the pull request garnered several approvals, and a consensus emerged that the feature was ready for WordPress Core.

\n\n\n\n

And so, on February 18, 2025, I committed the feature to WordPress Core! This was a good two weeks before the WordPress 6.8 Beta 1 release was due – a critical deadline, as new features and enhancements must be committed before the first Beta of a release cycle.

\n\n\n\n

Post-Commit and Launch

\n\n\n\n

A small follow-up fix was committed a few days later, but overall, the period following the commit was quiet – exactly what you hope for! It indicated no significant issues with the feature, especially during the Beta and Release Candidate (RC) periods.

\n\n\n\n

While monitoring post-commit feedback, I began working on the “dev note” – the official Make WordPress Core blog post that describes a new Core feature for developers, explaining how it works and how it can be customized. Writing such a post is a crucial step to inform the WordPress developer ecosystem about upcoming changes, for example allowing plugin developers to prepare their plugins. Several other WordPress Core Performance Team members collaborated on it, and the post was published on March 6, 2025. This is likely the post many of you read if you were already familiar with Speculative Loading in WordPress 6.8.

\n\n\n\n

And that was it! Nearly two years after the work had started, the Speculative Loading feature officially launched as part of WordPress 6.8 on April 15, 2025.

\n\n\n\n
\"Speculative
Speculative loading feature as highlighted on the About page of WordPress 6.8
\n\n\n\n

Post-Launch: Impact Metrics time!

\n\n\n\n

Now that the feature is out there, the final step is to assess its real-world impact. It is great to see the adoption impact already:

\n\n\n\n\n\n\n\n

Data based on public Chrome datasets. Please refer to this Colab for the full data.

\n\n\n\n

The data strongly suggests that the majority of the feature usage growth across the overall web comes from the WordPress 6.8 launch, because of WordPress’s large scale and the fact that in the preceding months the feature usage growth was more or less flat. So that’s an amazing win and goes to show once again the impact that WordPress has on the entire web!

\n\n\n\n

That said, usage is only a secondary metric. For a performance feature like speculative loading, we ideally want to get an idea on the performance impact of the feature, in particular on LCP. For this, we will need to wait for May data for the Chrome User Experience Report (CrUX), which is slated to become available in mind-June. I am looking forward to taking a closer look.

\n\n\n\n

Looking Back

\n\n\n\n

While the technical behavior of speculative loading is becoming more and more well-documented, with this article I wanted to share the story behind how it all came to be. If you have any questions, please feel free to ask them in the comments!

\n\n\n\n

If you are interested in the speculative loading feature’s technical aspects, I recently recorded a WP Tavern podcast episode with a technical deep dive, which should air very soon.

\n\n\n\n

The journey of a WordPress Core feature can be a long and winding road. While the focused development time for the Core commit might appear to be just a couple of months, it’s often preceded by a much longer period of exploration, experimentation, plugin development, and community feedback.

\n\n\n\n

To recap the key milestones for Speculative Loading:

\n\n\n\n\n\n\n\n

Today, exactly two years after that first tentative pull request, it’s incredibly rewarding to look back at this journey and celebrate the successful launch of a feature that I believe will make a real difference to WordPress performance.

\n

The post Speculative Loading, or A Brief History of Landing a Performance Feature in WordPress Core appeared first on felix-arntz.me.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 22 May 2025 13:10:27 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"Felix\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:47;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"Do The Woo Community: WordCamp Europe 2025 Organizers Share Insights and Excitement\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=97345\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"https://openchannels.fm/wordcamp-europe-2025-organizers-share-insights-and-excitement/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:231:\"This special episode of WordPress Event Talk is all about WordCamp Europe 2025 in Basel, Switzerland, highlighting organizers\' insights on inclusivity, accessibility, childcare, workshops, and volunteer opportunities for attendees.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 22 May 2025 08:44:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:48;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"WPTavern: #170 – Chris Reynolds on WordPress and Drupal: Differences and Similarities\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=195929\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:100:\"https://wptavern.com/podcast/170-chris-reynolds-on-wordpress-and-drupal-differences-and-similarities\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:58645:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, what WordPress and Drupal have in common.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you or your idea featured on the show. Head to wp tavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today we have Chris Reynolds. Chris is a developer advocate at Pantheon, where he brings nearly 20 years of experience in the WordPress community, as well as deep involvement with Drupal and open source technology at large. Prior to his advocacy role, he worked at some of the top WordPress agencies like Human Made and Web Dev Studios. He’s been active at events like DrupalCon, PressConf, and Word Camps.

\n\n\n\n

In this episode we set aside the usual WordPress only focus, and turn our attention to two CMSs, WordPress and Drupal. What makes them tick, where they excel and where they might have something to learn from each other.

\n\n\n\n

Chris draws on his unique perspective working closely with both platforms as Pantheon is one of the few hosts with a 50 50 split between WordPress and Drupal sites, and has a significant footprint in both ecosystems.

\n\n\n\n

We discuss the similarities and differences between the two open source CMS communities, from the mechanics of flagship events like WordCamps and DrupalCon, to the ways these projects organize their contributors and support community initiatives.

\n\n\n\n

Chris explains how Drupal’s model with its association run funding, and project governance, compares to WordPress’s approach, including how each community approaches plugin and module development, and what role agencies and companies play in contributing to Core and the broader ecosystem.

\n\n\n\n

If you’re curious about how open source projects organize themselves, how their communities navigate growth and challenge, and what WordPress can learn from Drupal, and vice versa, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wp tavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Chris Reynolds.

\n\n\n\n

I am joined on the podcast today by Chris Reynolds. Hello Chris.

\n\n\n\n

[00:03:20] Chris Reynolds: Hi. How’s it going?

\n\n\n\n

[00:03:22] Nathan Wrigley: You cannot see, dear listener, what I can see. Chris has the most amazing setup where he’s doing the recording. I guess it’s an attic or something like that, but it looks like the Starship Enterprise from where I’m sitting.

\n\n\n\n

[00:03:34] Chris Reynolds: I’m working on that.

\n\n\n\n

[00:03:34] Nathan Wrigley: Yeah, it’s really nice. Chris is joining us today and we’re going to have a conversation about the WordPress community. The things that we do well, and perhaps the things that we could improve. And we’re going to probably use Drupal as a comparison.

\n\n\n\n

Before we get into that, Chris, I know it’s a dreadfully banal question, but it’s always good to scope out where you are and where you stand with WordPress and Drupal and the companies that you work for. So just a moment really to give us your little potted bio of who you are and what have you.

\n\n\n\n

[00:04:04] Chris Reynolds: Sure. My name is Chris Reynolds, I am a developer advocate at Pantheon. I was formerly a senior software engineer for Pantheon for about three years, before joining the developer relations team around August, right before WordCamp US in September last year.

\n\n\n\n

I’ve been in the WordPress community for close to 20 years. I think I’ve gone back to my first blog posts and my first, like talking about technology that I was using. And I think that I’ve found references to using WordPress in some capacity back in 2005, so almost exactly 20 years.

\n\n\n\n

But even before that I was really interested, like as a side hobby in just open source software, playing with Linux and playing with other open source community projects that I found I was really a big fan of one called Ampache for a long time, which was a music sort of library app thing written in PHP. That was really cool. I think it still exists even.

\n\n\n\n

But yeah, so I’m a developer advocate at Pantheon. That means I do a lot of these sorts of things, talk about best practices, write a lot of blog posts, get in a lot of trouble, not really, and go to events and stuff like that. So I was at DrupalCon in March. I was at PressConf last month. Probably doing stuff this summer and in the fall.

\n\n\n\n

[00:05:14] Nathan Wrigley: Just to lean in a little bit on the Pantheon side of things. Pantheon, a hosting company, but very much aligned in two worlds, maybe more than two. But from my perspective, I used to use Drupal exclusively until about 2015. That was my CMS of choice for many, many years. I think Drupal 4, and then finally I jumped ship at Drupal 8 over to WordPress and have been that consistently.

\n\n\n\n

But Pantheon was around as what felt like at that time, so we are going back more than a decade, the only sort of managed Drupal host, but it definitely had a WordPress side to it as well. Can you just speak to that for us for a moment? That is Pantheon’s sort of MVP, isn’t it? It handles managed hosting for both of those platforms. And maybe there’s more, I don’t know.

\n\n\n\n

[00:05:57] Chris Reynolds: Yeah. I mean, I think that from a platform perspective, we obviously do host Drupal and WordPress. We also can host like Next.js and sort of front end sites. But the sort of hidden Pantheon magic is in the kind of DevOps, WebOps we like to call it, layer that happens like somewhere between pushing code and the code being a thing that like site managers and editors and things like work with, right? So automation tools, and we were one of the first providers that used Git by default. Now that’s not such a big deal anymore, but like that was a big thing within Pantheon for a really long time.

\n\n\n\n

When I was a developer, the first time that I used Pantheon as a developer when I was back at WebDevStudios was, the thing that was the killer feature for me was we have a thing called Multi Dev, which is, each site has a development, a test, and a live environment. So everybody gets those three things and we have a very specific sort of workflow. Code goes to dev, to test, to live in that order. But we have these Multi Devs, which are entirely separate containers where you can build, you can do all your feature development on a branch in a Multi Dev and see what that looks like before merging it into dev.

\n\n\n\n

It sounds like maybe not that much now, but I know when I was back in agency life and even when I was working at Human Made and we had built our own sort of stack that had this very similar kind of system, we didn’t have Multi Dev because spinning up new containers for sites that you’re just going to destroy at some point in the next couple weeks or days anyway is expensive and hard.

\n\n\n\n

And so what that meant was the master branch, or the development branch, of all of your code is always really messy and dirty, and you want to keep that away from the code that is going to production, right? Because that’s where your experimental code is. Maybe you didn’t back it out entirely. That’s where like a whole bunch of weird database stuff is going. That’s like the junk, right? So you want to keep that separate from like your staging branch and your production branch.

\n\n\n\n

And with Pantheon, the idea is your development branch is just where your finalised code goes, because you can do all that testing in a separate environment and then when you go from dev to test, it’s not a headache, it’s just this is production ready code, basically.

\n\n\n\n

[00:08:10] Nathan Wrigley: Yeah, I remember my recollection of Pantheon was that it was one of those platforms that, well, platform really, it felt more like a platform than a host, if you know what I mean? It just offered more as a layer on top of the typical host that you might find.

\n\n\n\n

However, you also do a whole bunch of stuff around the Drupal space, but also the WordPress space. I’m just curious, maybe you don’t have this information, but maybe as a developer advocate, you do. What would you say, as a percentage, does Drupal represent as opposed to WordPress? You know, is it like an 80, 20 split, a 90, 10, a 50, 50?

\n\n\n\n

[00:08:40] Chris Reynolds: We’re almost exactly 50, 50.

\n\n\n\n

[00:08:42] Nathan Wrigley: Interesting.

\n\n\n\n

[00:08:43] Chris Reynolds: And we’ve actually honestly been 50, 50 for about five-ish years, five or six years.

\n\n\n\n

[00:08:48] Nathan Wrigley: So does that mean that in the Drupal side of things, okay, dear listener, WordPress as a CMS is a giant, it’s a leviathan of a thing, you know. Occupies a massive amount of the market share. Drupal I think is somewhere in the region of, I think it’s like 1.2% or something like that.

\n\n\n\n

[00:09:05] Chris Reynolds: Yeah, we might be creeping up to two-ish, but yeah, it’s pretty low, yeah.

\n\n\n\n

[00:09:09] Nathan Wrigley: That then implies that you as a company have, you’ve got your foot on the pedal more on the Drupal side of things. Maybe the people who are building clever things on top of Drupal are using you much more. You’re a bigger player in that space than you are inside the WordPress space, even though it’s, you know, the same in terms of revenue. As a community endeavor, Drupal probably means a lot more to you than WordPress maybe.

\n\n\n\n

[00:09:32] Chris Reynolds: Yeah, I mean definitely going to DrupalCon for my first time this last March, it’s definitely, so there’s Acquia, which is essentially Drupal’s version of Automattic. Acquia is a company that was founded by Dries, who is the founder of Drupal, and very much like managed Drupal hosting the same kind of thing that Automattic is into, and a lot of the sort of same ideas, at least from a, where it sits in the ecosystem.

\n\n\n\n

But, you know, you go to a WordCamp and you see the big Automattic booth and you’ll see a couple other sort of bigger hosting booths. At a DrupalCon it’s like, there’s the Pantheon booth and there’s the Acquia booth, and then there’s a bunch of little things. We’re definitely the kind of headliners because between the two of us, I think probably we do own most of those Drupal sites that exist in the ecosystem. But we’re definitely a bigger fish in that pond, than perhaps the WordPress pond. There’s also a lot more fish in the WordPress pond.

\n\n\n\n

It’s an interesting thing, like for me coming to DrupalCon for the first time, to see just what Pantheon’s footprint is in contrast to when I go to WordCamps. And, you know, we were big in WordCamps for a long time, and then we kind of pulled back a little bit, and then the intervening time it’s I think felt by the community like, well, who are you? Where did you go? We’ve gotten sort of feedback from folks being like, I used to think about Pantheon, but like it’s been a long time, you laid a lot of people off. Why should I care anymore?

\n\n\n\n

And that’s, you know, part of my personal goal is to say, no, this is why you should care. That’s one of the things that excited me of joining the DevRel team was to go back to our roots and go back into the community, and we still have a really good product that I believed in when I was a developer and I still think is really good as, you know, obviously I think of it as a developer advocate. But like I’m here because I like the thing. I think we have a good thing.

\n\n\n\n

[00:11:19] Nathan Wrigley: Do you basically have the exact same platform for both of the CMSs? So I know there’s all the other stuff that you do, but let’s just concentrate on Drupal and concentrate on WordPress, those two things. Do you basically have the exact same platform? Or is there some nuance that you can do this on WordPress because of, I don’t know, WP-CLI or the REST API or whatever it is that you can’t do in the Drupal side? In other words, if I sign up for a Drupal account, do things look different, behave differently, or is it broadly the same?

\n\n\n\n

[00:11:45] Chris Reynolds: It is broadly the same. There is sort of individual differences but they’re very minor. And honestly like, in many ways, I think that when Pantheon, and this is before my time, obviously, but I think when Pantheon jumped into the WordPress boat, it was really more of a, well, we have this stack and we’re really good at this thing, and WordPress is also a PHP application that has a lot of the same requirements, surely we can just run the exact same stack for WordPress.

\n\n\n\n

And what’s sort of evolved over time is like, well, that’s like 80% true, but it’s the 20% that’s really important. And if you just go into building WordPress sites or hosting WordPress sites with the same mentality as you’re doing Drupal, well, you are going to run into a lot of the growing pains that we ran into, right? Drupal from like a database perspective is far more efficient. The queries are much shorter because the way that it’s structured is more efficient than WordPress. WordPress, you kind of have to do more sort of optimisation on top. So those are things that we needed to figure out.

\n\n\n\n

The Drupal space sort of moved toward Solr as their sort of search tool of choice, which is a project from the Apache project. WordPress went into Elasticsearch. So trying to convince a WordPress team to use Solr, in fact, a pretty old version of Solr, is kind of pulling teeth. Like, well, why would I do that when I’m doing Elasticsearch for everything else? I don’t know why you would do that, honestly. Like, you should probably use Elasticsearch.

\n\n\n\n

And so we’re like actually going in, that’s a project that’s on the roadmap as well finally, it’s something I’ve been talking about for like three years internally. There’s little nuances. Drupal obviously since version eight has been using Composer as a fundamental part of how the CMS just works. Whereas WordPress, you’ve got some people that are using Composer, in fact, last time I was here, two years ago, I was talking about Composer. And I don’t know that the adoption of Composer has really changed much in the WordPress ecosystem since that time.

\n\n\n\n

I would like to say that it has. I still think that you should be using Composer. Throwback to the last WP Tavern Jukebox podcast that I was on about Composer. But yeah, so there’s little differences and I think that that’s, there’s not anything from a platform level where your experience is going to be that much different.

\n\n\n\n

[00:14:00] Nathan Wrigley: Yeah. If you were to take a look at the Pantheon platform, I think quickly poking around on the site, maybe the pricing page or something would give you an intuition that really you are kind of more for the sort of enterprise level, I think would be fair to say. You know, you are trying to get the bleeding edge out of the websites that you’ve got, and so it’s, high traffic, that kind of thing.

\n\n\n\n

But the endeavor today really is to put all of that code stuff to one side and get into the community side of things. So just to reiterate, we threw around a couple of words there, and maybe the listener doesn’t really know that even there’s a WordPress community or a Drupal community.

\n\n\n\n

There really is. There’s just hundreds, maybe thousands of people who attend events, they might go to a local thing, which we might call them Meetup on the WordPress side of things. I don’t know if there’s similar things in Drupal. But then there’s these bigger events, which we’d call WordCamps, and then there are bigger ones of those which are kind of flagship WordCamps.

\n\n\n\n

There’s one in the US, there’s one in Asia, and there’s one in Europe. They happen each year. And thousands of people show up and inhabit the same space, listen to presentations, hang out in the hallway.

\n\n\n\n

And then you’ve got the same thing happening on the Drupal side. It’s called Drupal Con, but forgive my ignorance, I think the DrupalCon thing is a once a year thing and it moves around the globe. It’s not necessarily in the same space. Have I got that about right?

\n\n\n\n

[00:15:15] Chris Reynolds: It’s more than once a year. It’s actually the equivalent. So DrupalCon is the equivalent of flagship WordCamps. So there’s a DrupalCon, there was a DrupalCon US in Atlanta this last year. There is going to be a DrupalCon Europe in, where is it? Maybe Vienna, in the fall. There’s a DrupalCon Asia that’s just starting to get fired up. That’s happening I think in, the next one is like 2026, I believe. I think they just had their first one. So very similar, like the Cons in the Drupal space are equivalent to the flagship WordCamps. There’s also DrupalCamps in much the same way as there are local WordCamps.

\n\n\n\n

I feel like in the WordPress space, a lot of the local WordCamps kind of, they either blew up and got super big, or they kind of fizzled after Covid, right? I don’t have a lot of local camps. I don’t see a lot of local camps anymore. I do see those things happening a little bit in the Drupal space, or at least starting up again.

\n\n\n\n

[00:16:08] Nathan Wrigley: Yeah so, what we’re basically painting a picture of here is that we’ve got two bits of software which basically are trying to achieve the same thing. They’re a CMS. They’re trying to make it so that non-technical, as well as technical people, can run a project and put it online. Whether that’s a website or an e-commerce solution, whatever it may be, you’re trying to get your stuff out onto the internet. And both of those things will work.

\n\n\n\n

But also, behind the code is a bunch of people who are willing to go and hang out in the same place, the community, if you like, attend these events. And so there’s massive similarity. In fact, you know, if you’re an alien landing, I suspect that you wouldn’t really know that the two things were different. Okay, there’s different advertisers in the hall and there’s different logos and things, but broadly they would probably look really similar.

\n\n\n\n

However, in the more recent past, and if you don’t know the story, I’m not going to go into it too much here, but you can figure it out by looking at various news articles in the WordPress space and what have you. The WordPress community has really been pulled in different directions, let’s say that. And it’s curious because no sooner had this happened than some of the more prominent people, Dries Buytaert, who is the founder of Drupal, put out a piece, really as a way of kind of offering, look, this is what Drupal do. We know you’ve got on the WordPress side things that are not working out for you. Here’s our model.

\n\n\n\n

And far be it from me to say whether that is the perfect system. I don’t really know it, but I was just curious to get your thoughts on what that is. And that’s going to really occupy the majority of the rest of this podcast. What the Drupal community looks like. What you believe it does well. How it does things differently. So let’s start there. Let’s start with Dries’, what he was telling us about. How does Drupal, the community, how does it do things differently in terms of, I don’t know, events, the access to the code? So yeah, a conversation around that really. So I’m just going to throw it over to you, Chris. How is Drupal different than WordPress on that level?

\n\n\n\n

[00:18:05] Chris Reynolds: Well, I was saying before we got on that I kind of had a crash course in Drupal when I went leading up to, and then immediately following going to DrupalCon. Part of that crash course was at DrupalCon, they actually have a community summit. It’s similar to like, in WordPress we’ve had sort of community summits before. At DrupalCon it was really more of like a track, with like presenters and like also conversations. It’s like space for chatting and hanging out with people.

\n\n\n\n

But mostly, mostly it was like community related talks in a space, talking about what’s working, what’s not working, as well as a sort of a get to know you sort of thing. And that was really helpful. I also did homework before the event in watching a couple of Dries’ last Dries Notes. So Matt has State of the Word, Dries has Dries Notes, which is just like keynote. It’s basically the same thing, like the same state of the CMS, right?

\n\n\n\n

I caught up on what was going on in Drupal before the Con. And one of the things that I learned about, and then I followed up and dug into the history a little bit, was we have the same problems, right? WordPress and Drupal have the same fundamental sort of issues from both a contribution standpoint as well as a just organisational, managerial management kind of standpoint.

\n\n\n\n

And Drupal, or Dries, just kind of got to a point sooner where he’s like, well, I can’t do all of these things. So the Drupal Association, and I’m sure there’s some Drupalistas that are going to correct me on my history, but as I understand it, the Drupal Association was initially formed to sort of manage events, because Dries knew that they needed to have events. They were having events, they started off just similar to WordPress, small camp things. And they started getting bigger and Dries is like, well, I can’t do all of the management stuff of this, so I need to like do something, create an organisation that can do that stuff.

\n\n\n\n

And that was where the Drupal Association first was founded, to sort of manage that thing. And then over time, that evolved into being able to fund, or kind of oversee, directions for where, more of like a community representative in the general sort of CMS development ecosystem, right?

\n\n\n\n

There is a board. They are elected by the community. They are paid. They manage events, but they also, all of the money that is made after expenses and stuff from DrupalCons and donations and whatever, they have the authority to direct into whatever projects they think would be most valuable for the evolution, or the fulfillment, of the ideals of the Drupal software, right?

\n\n\n\n

So Dries says, I want to do a thing, and he can go do that thing. The Drupal Association is like, well, I think that what we really need is this kind of thing, and we’re going to devote some of our resources that we have into hiring some folks to work on that thing.

\n\n\n\n

So, most recently, where you can kind of see this in action is there’s been a lot of hype about Drupal CMS. That is a thing that exists because of the Drupal Association, because the Drupal Association saw, okay, I mean, I assume, I’m reading between the lines. But I assume that you can’t ignore the sort of declining line of Drupal in the broader ecosystem of CMS usage. But also, there’s been a really big problem since Drupal seven of a lot of the sites on Drupal seven remain on Drupal seven.

\n\n\n\n

Drupal seven should be end of life by all accounts. Everything else up to the current version is end of life. Drupal seven isn’t, because there’s still, it’s now just under, but it’s still close to 50% of Drupal sites are running Drupal seven. It’s a version of Drupal that’s about 10 years old.

\n\n\n\n

And the reason why, there’s so many people. Drupal historically has always been a thing where, when a new version came along, you kind of killed your old site and rebuilt it in the new version, because it wasn’t sort of backwards compatible. WordPress has gotten around that by just remaining backwards compatible all throughout its history.

\n\n\n\n

Drupal seven to Drupal eight was the first version to introduce Composer. We talked about Composer and how a Composer’s been part of Drupal for a really long time. that was the cutoff. So that was a pretty big shift. And there’s a lot of people, teams, organizations that have not made, or have been reluctant to make that shift because it’s a, it’s a rebuild. It’s a full site rebuild.

\n\n\n\n

It’s not just, we can just migrate the thing over. You have to rebuild your site. You do need to migrate your stuff over, but also you need to rebuild your site. So in the intervening time, WordPress has gained adoption and acceptance and grown into 43%. And so now we’ve got these Drupal seven sites where it’s like, well, we need to rebuild anyway. Do we rebuild the site in Drupal 10, 11? Or do we rebuild the site in WordPress where I’m never going to have this problem ever again.

\n\n\n\n

And that’s where a lot of that like, bar graph, a lot of those sites have moved to WordPress. Some of them have stayed on Drupal, but it’s a declining number, right?

\n\n\n\n

So obviously, folks inside Drupal see this and know that it’s happening, and know that they need to do something about it. So Drupal CMS is basically like a layer on top of the latest version of Drupal, which is 11. It’s got a far nicer installation screen. I wrote a blog post about this on the Pantheon blog, I think. It’s got a far nicer installation screen, that actually walks you through, stepping through like what type of site, what type of content you want to have on your site. To actually get you thinking about the site that you’re building before you just hit install. Which I find to be amazingly refreshing.

\n\n\n\n

And then beyond that the admin interface is far less cluttered. I know one of my personal gripes about working with Drupal, even up until, up until now, like up until before Drupal CMS is that there’s too many buttons, there’s too many menus, there’s too much stuff. Like, I don’t know where stuff is.

\n\n\n\n

This feels a lot more familiar, partially because I think it kind of resembles the WordPress admin a little bit. You know, sidebar on the left, menus. And it feels just more, more familiar to me. And then also they have built in some new architectural things like, recipes are a thing where, a recipe, Drupal has modules, WordPress has plugins. Modules generally need a lot of configuration, to get them actually working.

\n\n\n\n

When you install a module, it’s not like it just works outta the box. A lot of WordPress plugins, you install a plugin, it just works outta the box. So a recipe is like, here is, maybe a collection of modules, maybe a specific module, but it’s probably a combination of a bunch of different modules, but also the configuration that goes along with them.

\n\n\n\n

So when you install a recipe, it’s like, here’s the stuff that you probably will need. You’re most likely to need this stuff in this order, configured with these settings, and then you can do whatever you need after that. But like, here’s the go bag and now you can move on. So, one of the really interesting recipes for Drupal CMS is the SEO recipe.

\n\n\n\n

And that is interesting because they’re using a Yoast module. The Yoast module is literally taking the JavaScript of Yoast SEO from the WordPress plugin and throwing it into Drupal. And what’s fascinating about that is it doesn’t have all of the other stuff that comes with the Yoast plugin, it’s just the traffic light system, and the scanning the text system and it’s, so it’s the best possible implementation of Yoast that I’ve seen because it’s all of the good stuff.

\n\n\n\n

They’ve also built an AI recipe. And that’s interesting because when that is configured, you can actually talk to an AI chat bot inside your Drupal instance and ask it questions about Drupal or about your site. You could say, hey, I need to create an event content type. I’m gonna be hosting events. They’re this type of thing. I need to have a, like a, date picker and whatever, and we are taking attendees and you can tell that the chat bot that that’s the thing that you need. And it will, to the best of its ability, build that content type inside Drupal for you.

\n\n\n\n

So the WordPress equivalent is, I have a podcast and I need an episode post type. I just talk to a chat bot, and it magically creates that episode post type for me with like the Gutenberg blocks I need. That makes it an audio format or whatever. And, it’s just there for you. It’s like, great, thank you chat bot. As a WordPress developer, I think that’s really cool. Because that’s kind of the thing that I want, is like I know how to do some things, but I really don’t know any of the buttons and gears and gizmos in the Drupal admin.

\n\n\n\n

But if I have a chat bot to sort of help guide me through, I know I can figure out the rest of the way, or I can see how it did the thing, and I can figure out, oh okay, so that’s what I need to do. And so all of these things are geared toward the idea of just getting more people using Drupal and lowering the barrier to entry.

\n\n\n\n

Because one of the big things with Drupal is it’s always been really developer centric, really highly technical, and you need sort of skilled individuals to even just manage the site. So if we lower that barrier to entry, you can target the people that are already using WordPress, the sort of content level people or the site administrators that don’t have a lot of technical experience.

\n\n\n\n

That’s all like basically because the Drupal Association put money, funding that they had into backing these very specific projects.

\n\n\n\n

[00:27:25] Nathan Wrigley: It is kind of a curious idea, isn’t it? It’s like a subset of the CMSs capabilities put into this one project, Drupal CMS. Which has like a target audience in mind. So it’s like a blogger, or a podcaster or something like that. You know, it’s for content creators. That was the message I got from when I read all of the, the marketing bits and pieces that came out.

\n\n\n\n

But also addressing the need for it to look nice. That was always an area I thought WordPress excelled at. When you logged into the WordPress admin, it was night and day looking at a Drupal admin. Everything was consistent. Everything looked modern and clean and easy to understand. On the Drupal side, it was, it was much more difficult to understand. But also things like updating plugins. Backwards compatibility on the WordPress side, always much more straightforward. On the Drupal side, much more difficult.

\n\n\n\n

And so this is such a curious experiment. Putting it into the hands of people who might want a blog, or whatever it may be, and hopefully making it more straightforward. And the website for it, I will link to it in the show notes, it’s just so kind of modern and appealing and friendly and, Drupal never, for me at least when I got to Drupal eight, for the exact reasons that you described, that’s all of my sites would have stayed on Drupal seven.

\n\n\n\n

It definitely wasn’t that kind of warm and fuzzy welcome to everybody kind of thing. But now it really look like it’s leaning into that. But getting back to your main point, that was funded from the inside by some, facets, some internal mechanisms, some body inside the Drupal Association that decided that’s what we need to do. This is where the money’s going. But are you saying that decision making was divorced from Dries?

\n\n\n\n

[00:29:02] Chris Reynolds: Dries leads the technical architecture. And Dries will like say we need to do a thing. And he may be personally involved in the leadership of doing that thing, but mostly he’s like at a director level. Like, go my people and go forth and do stuff. And the Drupal Association says, okay, well one of the things that Dries said we need to do is X. So how can we make X happen? And in the case of recipes, it meant getting agencies and people from agencies involved. Create like a coalition. Like there’s a bunch, it wasn’t just one agency. It was like a bunch of people from different agencies are working on this thing together. Which is another thing that I find really interesting about the Drupal ecosystem.

\n\n\n\n

I have thoughts about that too. But in this context, yeah, I get a bunch of different people to work on this thing. Um. Whether it’s the SEO recipe. Whether it’s the AI recipe, and they, I think the way that it sort of broke down is, and it might have been even Dries that conceptualized the idea of recipes and it’s like, okay, go out and implement this thing.

\n\n\n\n

But when they did, it was like, okay, if we’re gonna do this thing, we need these types of recipes from the get go, from day one. We need SEO, we need whatever. We need AI, we need content things, so that people have an idea of what a recipe is and can start building their own recipes.

\n\n\n\n

[00:30:15] Nathan Wrigley: So they’re bound into it? You can’t install Drupal CMS without those things. They’re just there.

\n\n\n\n

[00:30:20] Chris Reynolds: It supports the recipes, and in the installation process, when you’re doing the Drupal CMS installation, that screen that I was talking about, where it’s like asking you the type of site you want to build, those types of sites in quotations, correspond to sets of recipes that align with each of those things.

\n\n\n\n

It doesn’t ask you about AI in the installation screen, but it does sort of say like, oh, do you want this type of content or that type of content? And then we, based on your selection, it automatically installs those recipes for you.

\n\n\n\n

[00:30:48] Nathan Wrigley: So it’s installing things based upon a wizard at the beginning, but the principle being though that you the end user, not really interacting with anything apart from oh, I would like that. Yes, please. I would like that. And then you finally get to the end of the wizard, wait for a few moments. The modules get installed, activated, and they’re pre-configured to behave in a way which is likely to be the best that you can get.

\n\n\n\n

[00:31:08] Chris Reynolds: To get you as close to what you want as possible. And the goal, the roadmap, is Dries wants to actually take that one step further, and do sort of site templates where if a recipe is a collection of modules and configuration, a template would be like, I want to build a real estate site. So I download this template, or I install this template and then click a button or two and it gives me a real estate site with the configuration that I might need to have a real estate site.

\n\n\n\n

And obviously I can go in and customize things, but I have a starting point. One of the things that I heard a lot when I was talking to people within Drupal, among other things, there’s not really a marketplace as much for stuff, for software, for add-ons in the way that there is in WordPress. And there’s not really in particular, there’s not really the same sort of like theme or a repository, or a place to go for commonly used or shared themes in the way that we have the Themes Repository. Mostly you have like the default things and then you’re building your own.

\n\n\n\n

So, as a user, having a template that maybe comes with a theme that is specifically tuned for that type of site is a really big win, because there really isn’t an alternative in the current ecosystem within Drupal.

\n\n\n\n

[00:32:23] Nathan Wrigley: Yeah, that’s, really worth leaning into because again, please interrupt me if what I’m about to say doesn’t actually match reality anymore. But when I was using Drupal, there was basically no commercial plugin system. Everybody had kind of leaned into the same thing for the same problem.

\n\n\n\n

So if you wanted to put a form on your website, there were a few, but there was this one called Webform, and it was just the one everybody leaned into it. And so rather than in the WordPress space where you’ve got, you know, you’ve got a few repository ones that are free and easy to use, and then you’ve got the commercial ones that you can pay for and they add different features and support levels and all that kind of thing.

\n\n\n\n

In the Drupal space, it felt like there was just this one kind of community endeavor to do the thing. Yeah, so if you wanted something to display data, Views was the thing you used. The Views module, and I think that did actually get rolled into Core. So it’s there. My point being, there isn’t this sort of, shattering is the wrong word, but in the WordPress space, there’s often a dozen, more than a dozen, there’s multiple alternatives. So you have to go and find the right thing.

\n\n\n\n

In the Drupal space, it feels more like, okay, for that problem, we have this module, and everybody leans into it. So I’m presuming that all the people who contribute in the community to the code and what have you, they’ll all finesse that version. But that means therefore, that when you come to build the CMS, there’s basically this one way of doing it? Okay, if you want forms, we’re going to use that module. And if we’re going to add this feature for real estate or what have you, here’s the modules that we’re going to add in. And the jigsaw of those modules will make it work. And that’s different from WordPress. WordPress has much more leaned into commercial plugins and kind of figure out which ones you want for yourself.

\n\n\n\n

[00:34:04] Chris Reynolds: Yeah, that was one of the things that I didn’t know going into DrupalCon that I learned while I was there. It’s a really different approach, and I actually kind of appreciate the Drupal model because the community is built around more of an idea of, if I build a form plugin and you build a form plugin, and mine is the defacto form plugin or.

\n\n\n\n

In the Drupal space, it’s really more of a, well, let me talk to you and see what ideas you have that we can bring into the canonical one and just collectively like integrate those things. And that’s, that is a thing that happens more often than not in Drupal. That’s why you don’t see the competition, the competing modules for different things.

\n\n\n\n

Because if you had a competing thing, or you had a different idea, you would contribute it to the one module that does that thing. Or if you had a different thing, then you might be invited to do the same, right?

\n\n\n\n

In the WordPress space, it’s like I want to protect my form module or my form plugin because right now it’s free, but tomorrow I might want to sell it, and I want to keep my intellectual property to myself and not contribute because, you know, I might wanna make a buck on this later.

\n\n\n\n

And, I kind of like the other thing better because it’s more, it is more of a community. Like I get like wanting to make money and everybody wants to make money and have a form plug in. Like, that’s great. Like I’m not going to say Gravity Forms shouldn’t exist or anything like that. Gravity Forms is amazing. But I do think that building an ecosystem around contributing to a collective, or a community based solution for the thing, where everybody has a, a say or a seat at the table, is a really, I don’t know, possibly overly idealistic, but very optimistic sort of view of how we can contribute to software.

\n\n\n\n

I find it really nice. Like it feels good. Like it feels less like we’re all trying to grab our little piece of territory, you know?

\n\n\n\n

[00:35:53] Nathan Wrigley: It feels to me like that moment when you first install Linux. And you realize, wow, there’s a free OS that I can put on my computer. And there’s just something quite remarkable about that. That a bunch of people got together and, really pointed everything at this one solution. I suppose that is the choice that you’re going to make. Really, that there is something right in there.

\n\n\n\n

You know, the commercial side of WordPress has probably been its single biggest accelerator. The fact that people could build businesses on it. And they could have a living. They could obviously refine and finess and dedicate real time entire lifetimes, in many cases. Get staff on, support staff and what have you. Pay all of those people because they’ve cracked this nut and everybody wants a piece of it.

\n\n\n\n

Whereas on the Drupal side, it’s much more, let’s go for egalitarian, let’s say that. But it, also, I suppose, means that at the moment where something doesn’t work you probably have to either understand how to maintain that yourself or hire a developer.

\n\n\n\n

So there’s a bit of a trade off there. And I presume, like I said, I imagine that’s why there was this acceleration of WordPress’s popularity because the people who maybe were buying these plugins had that intention, I just want a website. I don’t want to learn how to code. I’m not interested in that.

\n\n\n\n

I can see over here, look, I can buy that. It’s $97 a year. That’s perfect. That’ll satisfy me perfectly. Whereas maybe more on the Drupal side, it’s okay, that kind of works, but not entirely. I now need to make it work and obviously the community can do that.

\n\n\n\n

So that leads me then to the next question, which is, who the heck builds Drupal? So in the WordPress space, if you’re listening to this, you probably have an understanding of that. There’s a lot of volunteers, but there’s also a lot of companies that will dedicate a proportion of their time. We have this idea of Five for the Future. And so 5% of whatever it is that you want to give, be that time or money, or what have you. And so there’s this idea of community massively, but also corporations, businesses, putting time in. Is it the same basically on the Drupal side? Is that how it works?

\n\n\n\n

[00:37:51] Chris Reynolds: Yeah, largely. One of the things that I think you’ll notice that is a little bit of a distinction between WordPress and Drupal, from the events again. Is going through like the showroom, the sponsors floor. And at a WordCamp you see the hosts obviously, but then you see a lot of like plugin development shops, and that’s pretty much what I would expect, right? Big plugin or theme development shops and WordPress hosts. And a lot of the WordPress hosts are doing plugin development, and like, that’s sort of the thing.

\n\n\n\n

In Drupal, and at DrupalCon, obviously we have the hosts. And we had a, I mean, CKE Editor was there. That was kind of weird to me. I don’t know, like it’s in Drupal. It was weird to have like a library have a booth space. That seemed weird to me. But like it’s a lot of agencies, because agencies are the ones that are doing the work, and I’ve never seen an agency or maybe not since very small, like local WordCamps, have I seen an agency with a sponsorship, a booth space at a WordCamp.

\n\n\n\n

But that is, that’s where it is. And it’s agencies that do a lot of that Core contribution, because they’re also in the weeds working with clients and building these things for their Drupal customers. And so like, the SEO recipe that I was talking about, like at DrupalCon we, Pantheon has booth demos. Acquia also has booth demos, which means we can talk about, like do demos of our platform, whatever. What we actually did was bring in guest speakers from like agencies and universities and whatever that are actually using Drupal and Pantheon and to talk about their implementation of the cool stuff that they’re doing, because that works better.

\n\n\n\n

And one of the people that I talked to was about the SEO recipe, and he is at an agency and he worked with other people at other agencies, competing agencies even, to make this SEO recipe. So it’s, that’s where the contribution comes from. But again, like it’s the same sort of thing.

\n\n\n\n

Dries said 10 years ago, wrote a blog post about the maker taker problem, as he defines it. And then again in September, in relation to the current state of things in the WordPress ecosystem, because that’s a thing that he’s been thinking about for a long time. It’s obviously a thing that Matt’s been thinking about for a long time.

\n\n\n\n

Like it’s not, again, we’re not that different. We have the same fundamental problems. At the Community Summit at DrupalCon, one of the topics of conversation was getting more people involved, a younger generation involved into Drupal development, which is the exact same conversation we’re having in WordPress as well.

\n\n\n\n

Like, how do we appeal to a younger audience? It’s all the same stuff, right? And there was at some point like a contribution like pie chart. Again, similar to the pie chart that could be displayed at a WordCamp. You know, Automattic does a big chunk of that pie chart.

\n\n\n\n

And then you’ve got, you know, maybe Google does a smaller part of that pie chart and maybe like Bluehost or whatever. Similar pie chart. Acquia does a lot of the big part of the, of that pie chart. And then like other agencies are noted around, and then there’s like an other category, right, of just like individual contributors. It’s a very similar breakdown.

\n\n\n\n

[00:40:47] Nathan Wrigley: It’s interesting because obviously you alluded to the fact that WordPress has been in a state of flux since September. But Dries, I presume prompted by the situation that arose out of WordCamp US. He wrote a piece very much timed after that. So I presume it was in, there was some sort of correlation in his head. And he was laying out how Drupal have, not solved, but how they just have a different approach to that. And I can’t remember every single detail, but there was some curious examples in the Drupal community, like this kind of, I’m going to say pay to play thing.

\n\n\n\n

In other words, if you as a company, let’s say Pantheon may fit into this perfectly, if Pantheon steps through certain hoops and can prove that they did this thing and this thing and this thing for the community, for the Drupal project. If you step through those hoops, you then get, kind of, merit on the other side.

\n\n\n\n

You can, for example, turn up to DrupalCon as a sponsor. My understanding is that maybe it’s only certain tiers, I’m not really sure. But you can’t sponsor DrupalCon unless you have jumped through those hoops. And we don’t really have anything on the WordPress side like that. We have Five for the Future, but it’s hard to pin down. It’s hard to figure out who did what and what have you, because there aren’t the same sort of goalposts, but it feels like the goalposts are a bit more nailed down on the Drupal side.

\n\n\n\n

[00:42:03] Chris Reynolds: There is a process of nailing things down. I don’t know that it goes to the level of, like you can’t actually sponsor, because obviously Pantheon does sponsor and we’ve been, on the other end of being told that we don’t contribute enough to both WordPress and Drupal. But that also depends on how you define contribution really. And I have thoughts about that. The merit thing, it’s just where you’re drawing the lines in the sand. And Drupal has, Dries has his particular lines and the things that make you a contributor to the ecosystem, and what that means in Drupal.

\n\n\n\n

And then, to a degree, I mean, yeah, like you said, Five for the Future is kind of, sort of that thing, but it’s also kind of amalgamous and like it’s honor based. There’s not really a real sense of tracking or, you could kind of, sort of track things, I guess. But it’s very wibbly wobbly.

\n\n\n\n

But my perspective on contribution always has always been, one of the things, I know we’re not supposed to talk about what was talked about at PressConf, but Brad Williams, who I, was my former boss said, he was talking about Five for the Future and was talking about how Web Dev was very early on an adopter of Five for the Future, and I was there at the time, so I remember this. So it’s not just Brad’s words that I’m repeating. And the way that he approached Five for the Future was very much in the umbrella of if you’re doing anything WordPress related that is open source, we are counting that as a Five for the Future project, right. And that was how I understood Five for the Future.

\n\n\n\n

That was kind of how it was presented back in 2014 or whatever when Matt first threw the idea out to the, out to the ecosystem. And since then it’s sort of become this thing where contribution to WordPress really means Core contributions, or contributions in very specific ways. And it doesn’t mean all of this other stuff over here, including an up to theme development, plugin development.

\n\n\n\n

Even if that stuff is on .org, even if that stuff is open source, that’s not included in contribution. But I’m very much in the side of the bucket where like, well, everything is kind of contribution. We wouldn’t know how good WordPress scales to like enterprise level sites that are running it today, that are driving the adoption of WordPress, and driving the bar in like the visibility of WordPress, if it wasn’t for just hosts that are running the thing and making sure that it operates properly. And the teams like 10up and Human Made, and whoever who are like then, oh, to get this working at its best, fastest, most optimized state we need to do some enhancements. Either through the plugin ecosystem or contributing back to Core, so that we can push this code to these hosts, or platforms, or softwares as a service or whatever so that they operate for these clients that we’re building.

\n\n\n\n

So like I kind of feel like everything should be, even if you are a taker, in the language of Dries, that doesn’t necessarily mean that you’re not pushing the ecosystem forward. And I have that critique for both of our BDFLs, right? Because they both have very similar ideas.

\n\n\n\n

Like I think that the contribution title could be applied and should be applied more broadly, because everything that we’re doing is driving the project forward. A lot of the stuff that I write is like GitHub actions, or like plugins or things that are still broadly available to, and publicly available, and they’re open source and they’re for the community, but they’re not technically contribution, because contribution is narrowed down into this very specific definition.

\n\n\n\n

[00:45:30] Nathan Wrigley: It’s kind of curious, you know, if you were to cast your mind back 20 years, the beginning of both Drupal and WordPress, just even the idea that they would still be around for one thing, you know, that that software wouldn’t have just come and eaten them up and there would be like a two year lifespan.

\n\n\n\n

[00:45:44] Chris Reynolds: And that there’s an open source solution for these things.

\n\n\n\n

[00:45:46] Nathan Wrigley: And it’s going and it’s kept rising and it’s kept being used. That’s just so curious. But also the teething pains of that. The idea that, you know, it started with Matt, and it started with Dries, and then people got on board and it grew. And then in the case of Drupal, and in the case of WordPress, it just grew to the point where these individuals can no longer handle everything.

\n\n\n\n

You know, you described how Dries needed to sort of say, can somebody handle the events please? Because that’s just not where I want to be. The same, presumably on the WordPress side. And now we’re into giant communities. Really, really complicated communities. A lot of differing opinions, a lot of different maybe even politics, but a lot of different backgrounds, geography, the whole thing.

\n\n\n\n

It’s this international thing. And it’s difficult. It’s really, really hard to get it right. But what I’m taking from this conversation. Is that maybe Drupal do things differently, but they have way more in common than we have as differences.

\n\n\n\n

But also maybe there are some things that WordPress does better. Maybe there are some things that Drupal does better. And it would be very, very interesting if the two communities could kind of collide more, and share those ideas and we pick the best of each of them. It’s never gonna be perfect, but maybe that’s something that in the future, given that really at a very core level we’re not in competition with each other, it would be very nice if those conversations could take place.

\n\n\n\n

And I think you’ve laid the groundwork for a lot of that and explained how one project is not that dissimilar to the other one. So, that’s it.

\n\n\n\n

Chris, thank you so much for chatting to me today. I really appreciate it. That was very enlightening.

\n\n\n\n

[00:47:22] Chris Reynolds: Thank you for having me. I always love chatting with you.

\n
\n\n\n\n

On the podcast today we have Chris Reynolds.

\n\n\n\n

Chris is a developer advocate at Pantheon, where he brings nearly 20 years of experience in the WordPress community, as well as deep involvement with Drupal and open source technology at large. Prior to his advocacy role, he worked at some of the top WordPress agencies like Human Made and WebDevStudios. He’s been active at events like DrupalCon, PressConf, and WordCamps.

\n\n\n\n

In this episode, we set aside the usual WordPress-only focus, and turn our attention to two CMSs, WordPress and Drupal, what makes them tick, where they excel, and where they might have something to learn from each other.

\n\n\n\n

Chris draws on his unique perspective working closely with both platforms, as Pantheon is one of the few hosts with a 50/50 split between WordPress and Drupal sites, and has a significant footprint in both ecosystems.

\n\n\n\n

We discuss the similarities and differences between the two open source CMS communities, from the mechanics of flagship events like WordCamps and DrupalCon, to the ways these projects organize their contributors and support community initiatives.

\n\n\n\n

Chris explains how Drupal’s model, with its association-run funding and project governance, compares to WordPress’s approach, including how each community approaches plugin and module development, and what role agencies and companies play in contributing to Core and the broader ecosystem.

\n\n\n\n

If you’re curious about how open source projects organise themselves, how their communities navigate growth and challenge, and what WordPress can learn from Drupal (and vice versa), this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Pantheon

\n\n\n\n

 Ampache

\n\n\n\n

 DrupalCon

\n\n\n\n

PressConf

\n\n\n\n

 WebDevStudios

\n\n\n\n

 Human Made

\n\n\n\n

 Acquia

\n\n\n\n

 Dries Buytaert

\n\n\n\n

 Automattic

\n\n\n\n

Solr

\n\n\n\n

 Elasticsearch

\n\n\n\n

 Composer

\n\n\n\n

 Chris on a previous episode of the WP Tavern Jukebox podcast talking about Composer

\n\n\n\n

 DrupalCamps

\n\n\n\n

Solving the Maker-Taker problem

\n\n\n\n

 Dries Notes – State of Drupal presentation (September 2024)

\n\n\n\n

 Drupal Association

\n\n\n\n

Drupal  Yoast module

\n\n\n\n

Drupal CMS

\n\n\n\n

Drupal Views

\n\n\n\n

Gravity Forms

\n\n\n\n

Five for the Future

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 May 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:49;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"Do The Woo Community: From Functional to Scalable: WooCommerce Solutions with an Enterprise Mindset\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"https://openchannels.fm/?post_type=blog&p=96868\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"https://openchannels.fm/from-functional-to-scalable-woocommerce-solutions-with-an-enterprise-mindset/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:209:\"Some insight on agencies who focus on enterprise-level solutions for mid-market WooCommerce clients, emphasizing customized, scalable technologies and decoupled architectures to enhance reliability and growth.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 May 2025 09:11:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Bob Dunn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Wed, 18 Jun 2025 11:13:04 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:13:\"last-modified\";s:29:\"Wed, 18 Jun 2025 11:00:18 GMT\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1727736620;s:21:\"cache_expiration_time\";i:1750288384;s:23:\"__cache_expiration_time\";i:1750288384;}','off'),(193,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1750288384','off'),(194,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1750245184','off'),(195,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1750288384','off'),(196,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','
','off'),(197,'_site_transient_wp_plugin_dependencies_plugin_data','a:0:{}','off'),(198,'recently_activated','a:1:{s:45:\"generate-child-theme/generate-child-theme.php\";i:1750245418;}','off'),(203,'finished_updating_comment_type','1','auto'),(210,'current_theme','Think Teq Solutions','auto'),(211,'theme_mods_hello-elementor','a:3:{i:0;b:0;s:18:\"nav_menu_locations\";a:0:{}s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1750245405;s:4:\"data\";a:1:{s:19:\"wp_inactive_widgets\";a:5:{i:0;s:7:\"block-2\";i:1;s:7:\"block-3\";i:2;s:7:\"block-4\";i:3;s:7:\"block-5\";i:4;s:7:\"block-6\";}}}}','off'),(212,'theme_switched','','auto'),(213,'hello_theme_version','3.4.4','auto'),(216,'elementor_connect_site_key','f4d04748a1f62642e5102ad9585c1305','auto'),(217,'_hello-elementor_notifications','a:2:{s:7:\"timeout\";i:1750288606;s:5:\"value\";s:7532:\"[{\"id\":\"hello-theme-3.4.4\",\"title\":\"3.4.4 - 2025-06-08\",\"description\":\"\\n