diff --git a/.env b/.env index d3ff13458b..b66278c60b 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ # What version of WordPress we want to install and test against. # This has to be compatible with the `wp core download` command, see https://developer.wordpress.org/cli/commands/core/download/. -# WP_VERSION=latest # NOTE: Already defined in .travis.yml matrix. +WP_VERSION=latest # A space-separated list of plugin repositories that will be cloned in the WordPress installation folder and that are # required for the plugin tests. diff --git a/.env.example b/.env.example deleted file mode 100644 index c361361e9f..0000000000 --- a/.env.example +++ /dev/null @@ -1,13 +0,0 @@ -WP_ROOT_FOLDER="/Users/you/Local Sites/test-pmpro-local/app/public" -WP_DOMAIN="test.pmpro.local" -WP_URL="http://test.pmpro.local" -WP_ADMIN_USERNAME="admin" -WP_ADMIN_PASSWORD="password" -DB_HOST="192.168.95.100:1234" -DB_NAME="local" -DB_USER="root" -DB_PASSWORD="root" -TEST_DB_HOST="192.168.95.100:1234" -TEST_DB_NAME="local" -TEST_DB_USER="root" -TEST_DB_PASSWORD="root" diff --git a/.env.testing.tric b/.env.testing.tric index 14c43e66f4..b4e9f2c04b 100644 --- a/.env.testing.tric +++ b/.env.testing.tric @@ -21,7 +21,7 @@ WP_ADMIN_PASSWORD=password WP_DB_PORT=3306 -# The databse is served from the Docker `db` container. +# The database is served from the Docker `db` container. # See `dev/docker/ci-compose.yml` for more information. WP_TABLE_PREFIX=wp_ WP_DB_HOST=db @@ -29,7 +29,7 @@ WP_DB_NAME=test WP_DB_USER=root WP_DB_PASSWORD=password -# The test databse is served from the Docker `db` container. +# The test database is served from the Docker `db` container. # See `dev/docker/ci-compose.yml` for more information. WP_TEST_DB_HOST=db WP_TEST_DB_NAME=test @@ -48,7 +48,7 @@ CHROMEDRIVER_PORT=4444 # lines that, in the `wp-config.php` file, will make it so that WordPress will use as its home # URL whatever URL we reach it with. # See the `dev/docker/wp-config.php` template for more information. -WP_CHROMEDRIVER_URL=http://wordpress.test +WP_CHROMEDRIVER_URL="http://wordpress.test" # We're using Docker to run the tests. USING_CONTAINERS=1 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e55230d7fe..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,61 +0,0 @@ -sudo: false -dist: trusty - -language: php - -notifications: - email: - on_success: never - on_failure: change - -branches: - only: - - dev - - master - - /^v.*/ - -cache: - directories: - - vendor - - $HOME/.composer/cache - -matrix: - include: - - php: 7.2 - env: WP_VERSION=latest - - php: 7.1 - env: WP_VERSION=latest - - php: 7.0 - env: WP_VERSION=latest - - php: 5.6 - env: WP_VERSION=latest - -before_script: - - export PATH="$HOME/.composer/vendor/bin:$PATH" - - | - if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then - phpenv config-rm xdebug.ini - else - echo "xdebug.ini does not exist" - fi - - | - if [[ ! -z "$WP_VERSION" ]] ; then - bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION - composer global require "phpunit/phpunit=4.8.*|5.7.*" - fi - - | - if [[ "$WP_TRAVISCI" == "phpcs" ]] ; then - composer global require wp-coding-standards/wpcs - phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs - fi - -script: - - | - if [[ ! -z "$WP_VERSION" ]] ; then - phpunit - WP_MULTISITE=0 phpunit - fi - - | - if [[ "$WP_TRAVISCI" == "phpcs" ]] ; then - phpcs - fi diff --git a/codeception.example.yml b/codeception.example.yml deleted file mode 100644 index 571eaabb67..0000000000 --- a/codeception.example.yml +++ /dev/null @@ -1,3 +0,0 @@ -params: - # read dynamic configuration parameters from the .env file - - .env.local diff --git a/composer.json b/composer.json index 37a39a4387..9b8f6c7e90 100644 --- a/composer.json +++ b/composer.json @@ -38,15 +38,22 @@ "require-dev": { "automattic/vipwpcs": "^2.0", "bvanhoekelen/performance": "^2.5.1", - "codeception/codeception": "2.5.6", + "codeception/codeception": "^4.0", + "codeception/module-asserts": "^1.0", + "codeception/module-cli": "^1.0", + "codeception/module-db": "^1.0", + "codeception/module-filesystem": "^1.0", + "codeception/module-phpbrowser": "^1.0", + "codeception/module-rest": "^1.0", + "codeception/module-webdriver": "^1.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "fzaninotto/faker": "^1.8", "lucatume/function-mocker": "^1.3.8", "lucatume/function-mocker-le": "^1.0.1", - "lucatume/wp-browser": "2.2.15", + "lucatume/wp-browser": "^3.0.5", "lucatume/wp-snaphot-assertions": "^1.0", "the-events-calendar/tribalscents": "dev-master", - "phpunit/phpunit": "6.5.14", + "phpunit/phpunit": "^6.5.14", "spatie/phpunit-snapshot-assertions": "^1.4.2", "wp-cli/wp-cli": "2.*", "wp-coding-standards/wpcs": "^2.1" diff --git a/phpunit.xml.dist b/phpunit.xml.dist deleted file mode 100644 index 3ca2f3b247..0000000000 --- a/phpunit.xml.dist +++ /dev/null @@ -1,31 +0,0 @@ - - - - ./tests/ - - - - - - - - - - - - - - ./blocks/ - ./classes/ - ./includes/ - - - \ No newline at end of file diff --git a/tests/_data/dump-acceptance.sql b/tests/_data/dump-acceptance.sql new file mode 100644 index 0000000000..42fa8f538a --- /dev/null +++ b/tests/_data/dump-acceptance.sql @@ -0,0 +1,785 @@ +-- MySQL dump 10.13 Distrib 8.0.16, for macos10.14 (x86_64) +-- +-- Host: localhost Database: local +-- ------------------------------------------------------ +-- Server version 8.0.16 + +/*!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 */; + SET NAMES utf8 ; +/*!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 `wp_commentmeta` +-- + +DROP TABLE IF EXISTS `wp_commentmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_commentmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, + `meta_value` longtext COLLATE utf8mb4_unicode_520_ci, + 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 `wp_commentmeta` +-- + +LOCK TABLES `wp_commentmeta` WRITE; +/*!40000 ALTER TABLE `wp_commentmeta` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_commentmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_comments` +-- + +DROP TABLE IF EXISTS `wp_comments`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_comments` ( + `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT '0', + `comment_author` tinytext COLLATE utf8mb4_unicode_520_ci NOT NULL, + `comment_author_email` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `comment_author_url` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `comment_author_IP` varchar(100) COLLATE utf8mb4_unicode_520_ci 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 COLLATE utf8mb4_unicode_520_ci NOT NULL, + `comment_karma` int(11) NOT NULL DEFAULT '0', + `comment_approved` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '1', + `comment_agent` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `comment_type` varchar(20) COLLATE utf8mb4_unicode_520_ci 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 `wp_comments` +-- + +LOCK TABLES `wp_comments` WRITE; +/*!40000 ALTER TABLE `wp_comments` DISABLE KEYS */; +INSERT INTO `wp_comments` VALUES (1,1,'A WordPress Commenter','wapuu@wordpress.example','https://wordpress.org/','','2021-07-27 17:04:37','2021-07-27 17:04:37','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,'1','','comment',0,0); +/*!40000 ALTER TABLE `wp_comments` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_links` +-- + +DROP TABLE IF EXISTS `wp_links`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_links` ( + `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `link_url` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `link_name` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `link_image` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `link_target` varchar(25) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `link_description` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `link_visible` varchar(20) COLLATE utf8mb4_unicode_520_ci 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) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `link_notes` mediumtext COLLATE utf8mb4_unicode_520_ci NOT NULL, + `link_rss` varchar(255) COLLATE utf8mb4_unicode_520_ci 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 `wp_links` +-- + +LOCK TABLES `wp_links` WRITE; +/*!40000 ALTER TABLE `wp_links` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_links` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_options` +-- + +DROP TABLE IF EXISTS `wp_options`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_options` ( + `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `option_name` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `option_value` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL, + `autoload` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'yes', + PRIMARY KEY (`option_id`), + UNIQUE KEY `option_name` (`option_name`), + KEY `autoload` (`autoload`) +) ENGINE=InnoDB AUTO_INCREMENT=244 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_options` +-- + +LOCK TABLES `wp_options` WRITE; +/*!40000 ALTER TABLE `wp_options` DISABLE KEYS */; +INSERT INTO `wp_options` VALUES (1,'siteurl','http://test.pmpro-phx.local','yes'),(2,'home','http://test.pmpro-phx.local','yes'),(3,'blogname','test.pmpro-phx.local','yes'),(4,'blogdescription','Just another WordPress site','yes'),(5,'users_can_register','0','yes'),(6,'admin_email','dev-email@flywheel.local','yes'),(7,'start_of_week','1','yes'),(8,'use_balanceTags','0','yes'),(9,'use_smilies','1','yes'),(10,'require_name_email','1','yes'),(11,'comments_notify','1','yes'),(12,'posts_per_rss','10','yes'),(13,'rss_use_excerpt','0','yes'),(14,'mailserver_url','mail.example.com','yes'),(15,'mailserver_login','login@example.com','yes'),(16,'mailserver_pass','password','yes'),(17,'mailserver_port','110','yes'),(18,'default_category','1','yes'),(19,'default_comment_status','open','yes'),(20,'default_ping_status','open','yes'),(21,'default_pingback_flag','1','yes'),(22,'posts_per_page','10','yes'),(23,'date_format','F j, Y','yes'),(24,'time_format','g:i a','yes'),(25,'links_updated_date_format','F j, Y g:i a','yes'),(26,'comment_moderation','0','yes'),(27,'moderation_notify','1','yes'),(28,'permalink_structure','/%postname%/','yes'),(29,'rewrite_rules','a:94:{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:22:\"tribe-promoter-auth/?$\";s:37:\"index.php?tribe-promoter-auth-check=1\";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:12:\"robots\\.txt$\";s:18:\"index.php?robots=1\";s:13:\"favicon\\.ico$\";s:19:\"index.php?favicon=1\";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: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\";}','yes'),(30,'hack_file','0','yes'),(31,'blog_charset','UTF-8','yes'),(32,'moderation_keys','','no'),(33,'active_plugins','a:2:{i:0;s:45:\"paid-memberships-pro/paid-memberships-pro.php\";i:1;s:13:\"pods/init.php\";}','yes'),(34,'category_base','','yes'),(35,'ping_sites','http://rpc.pingomatic.com/','yes'),(36,'comment_max_links','2','yes'),(37,'gmt_offset','0','yes'),(38,'default_email_category','1','yes'),(39,'recently_edited','','no'),(40,'template','twentytwentyone','yes'),(41,'stylesheet','twentytwentyone','yes'),(42,'comment_registration','0','yes'),(43,'html_type','text/html','yes'),(44,'use_trackback','0','yes'),(45,'default_role','subscriber','yes'),(46,'db_version','49752','yes'),(47,'uploads_use_yearmonth_folders','1','yes'),(48,'upload_path','','yes'),(49,'blog_public','1','yes'),(50,'default_link_category','2','yes'),(51,'show_on_front','posts','yes'),(52,'tag_base','','yes'),(53,'show_avatars','1','yes'),(54,'avatar_rating','G','yes'),(55,'upload_url_path','','yes'),(56,'thumbnail_size_w','150','yes'),(57,'thumbnail_size_h','150','yes'),(58,'thumbnail_crop','1','yes'),(59,'medium_size_w','300','yes'),(60,'medium_size_h','300','yes'),(61,'avatar_default','mystery','yes'),(62,'large_size_w','1024','yes'),(63,'large_size_h','1024','yes'),(64,'image_default_link_type','none','yes'),(65,'image_default_size','','yes'),(66,'image_default_align','','yes'),(67,'close_comments_for_old_posts','0','yes'),(68,'close_comments_days_old','14','yes'),(69,'thread_comments','1','yes'),(70,'thread_comments_depth','5','yes'),(71,'page_comments','0','yes'),(72,'comments_per_page','50','yes'),(73,'default_comments_page','newest','yes'),(74,'comment_order','asc','yes'),(75,'sticky_posts','a:0:{}','yes'),(76,'widget_categories','a:0:{}','yes'),(77,'widget_text','a:0:{}','yes'),(78,'widget_rss','a:0:{}','yes'),(79,'uninstall_plugins','a:0:{}','no'),(80,'timezone_string','','yes'),(81,'page_for_posts','0','yes'),(82,'page_on_front','0','yes'),(83,'default_post_format','0','yes'),(84,'link_manager_enabled','0','yes'),(85,'finished_splitting_shared_terms','1','yes'),(86,'site_icon','0','yes'),(87,'medium_large_size_w','768','yes'),(88,'medium_large_size_h','0','yes'),(89,'wp_page_for_privacy_policy','3','yes'),(90,'show_comments_cookies_opt_in','1','yes'),(91,'admin_email_lifespan','1642957477','yes'),(92,'disallowed_keys','','no'),(93,'comment_previously_approved','1','yes'),(94,'auto_plugin_theme_update_emails','a:0:{}','no'),(95,'auto_update_core_dev','enabled','yes'),(96,'auto_update_core_minor','enabled','yes'),(97,'auto_update_core_major','enabled','yes'),(98,'wp_force_deactivated_plugins','a:0:{}','yes'),(99,'initial_db_version','49752','yes'),(100,'wp_user_roles','a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:77:{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:22:\"pmpro_memberships_menu\";b:1;s:15:\"pmpro_dashboard\";b:1;s:22:\"pmpro_membershiplevels\";b:1;s:22:\"pmpro_edit_memberships\";b:1;s:18:\"pmpro_pagesettings\";b:1;s:21:\"pmpro_paymentsettings\";b:1;s:19:\"pmpro_emailsettings\";b:1;s:22:\"pmpro_advancedsettings\";b:1;s:12:\"pmpro_addons\";b:1;s:17:\"pmpro_memberslist\";b:1;s:20:\"pmpro_memberslistcsv\";b:1;s:13:\"pmpro_reports\";b:1;s:12:\"pmpro_orders\";b:1;s:15:\"pmpro_orderscsv\";b:1;s:19:\"pmpro_discountcodes\";b:1;s:13:\"pmpro_updates\";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;}}}','yes'),(101,'fresh_site','1','yes'),(102,'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;}','yes'),(103,'sidebars_widgets','a:4:{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\";}s:13:\"array_version\";i:3;}','yes'),(104,'cron','a:13:{i:1627416278;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:1627448678;a:4:{s:18:\"wp_https_detection\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}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;}}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;}}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:1627454106;a:1:{s:30:\"tribe_schedule_transient_purge\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1627468200;a:1:{s:31:\"pmpro_cron_admin_activity_email\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1627491878;a:2:{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;}}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:1627497291;a:2:{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;}}}i:1627497292;a:1:{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:1627497305;a:1:{s:16:\"tribe_daily_cron\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1627497306;a:1:{s:24:\"tribe_common_log_cleanup\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1627497313;a:1:{s:29:\"pmpro_cron_expire_memberships\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1627497314;a:1:{s:30:\"pmpro_cron_expiration_warnings\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1630046113;a:1:{s:40:\"pmpro_cron_credit_card_expiring_warnings\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:7:\"monthly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:2635200;}}}s:7:\"version\";i:2;}','yes'),(105,'widget_pages','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(106,'widget_calendar','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(107,'widget_archives','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(108,'widget_media_audio','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(109,'widget_media_image','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(110,'widget_media_gallery','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(111,'widget_media_video','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(112,'widget_meta','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(113,'widget_search','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(114,'nonce_key','w>Oy(,iZk3ukd~2 ]Ld!JKJvPewt}:`P8 ]o9v{Mlt 7/gj=.!VB .(;(d{91t~M','no'),(115,'nonce_salt','qIA&YM:IR3O_A>($mrJ)%9FFGKQ`}m%+M3$tp(`XDWY\n\n\n\n
\"\"
\n\n\n\n

Introducing 5.8 “Tatum”, our latest and greatest release now available for download or update in your dashboard. Named in honor of Art Tatum, the legendary Jazz pianist. His formidable technique and willingness to push boundaries inspired musicians and changed what people thought could be done. 

\n\n\n\n

So fire up your music service of choice and enjoy Tatum’s famous recordings of ‘Tea for Two’, ‘Tiger Rag’, ‘Begin the Beguine’, and ‘Night and Day’ as you read about what the latest WordPress version brings to you.

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

Three Essential Powerhouses

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

Manage Widgets with Blocks

\n\n\n\n

After months of hard work, the power of blocks has come to both the Block Widgets Editor and the Customizer. Now you can add blocks both in widget areas across your site and with live preview through the Customizer. This opens up new possibilities to create content: from no-code mini layouts to the vast library of core and third-party blocks. For our developers, you can find more details in the Widgets dev note.

\n\n\n\n

Display Posts with New Blocks and Patterns

\n\n\n\n

The Query Loop Block makes it possible to display posts based on specified parameters; like a PHP loop without the code. Easily display posts from a specific category, to do things like create a portfolio or a page full of your favorite recipes. Think of it as a more complex and powerful Latest Posts Block! Plus, pattern suggestions make it easier than ever to create a list of posts with the design you want.

\n\n\n\n

Edit the Templates Around Posts

\n\n\n\n

You can use the familiar block editor to edit templates that hold your content—simply activate a block theme or a theme that has opted in for this feature. Switch from editing your posts to editing your pages and back again, all while using a familiar block editor. There are more than 20 new blocks available within compatible themes. Read more about this feature and how to experiment with it in the release notes.

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

Three Workflow Helpers

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

Overview of the Page Structure

\n\n\n\n

Sometimes you need a simple landing page, but sometimes you need something a little more robust. As blocks increase, patterns emerge, and content creation gets easier, new solutions are needed to make complex content easy to navigate. List View is the best way to jump between layers of content and nested blocks. Since the List View gives you an overview of all the blocks in your content, you can now navigate quickly to the precise block you need. Ready to focus completely on your content? Toggle it on or off to suit your workflow.

\n\n\n\n

Suggested Patterns for Blocks

\n\n\n\n

Starting in this release the Pattern Transformations tool will suggest block patterns based on the block you are using. Right now, you can give it a try in the Query Block and Social Icon Block. As more patterns are added, you will be able to get inspiration for how to style your site without ever leaving the editor!

\n\n\n\n

Style and Colorize Images

\n\n\n\n

Colorize your image and cover blocks with duotone filters! Duotone can add a pop of color to your designs and style your images (or videos in the cover block) to integrate well with your themes. You can think of the duotone effect as a black and white filter, but instead of the shadows being black and the highlights being white, you pick your own colors for the shadows and highlights. There’s more to learn about how it works in the documentation.

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

For Developers to Explore

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

Theme.json

\n\n\n\n

Introducing the Global Styles and Global Settings APIs: control the editor settings, available customization tools, and style blocks using a theme.json file in the active theme. This configuration file enables or disables features and sets default styles for both a website and blocks. If you build themes, you can experiment with this early iteration of a useful new feature. For more about what is currently available and how it works, check out this dev note.

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

Dropping support for IE11

\n\n\n\n

Support for Internet Explorer 11 has been dropped as of this release. This means you may have issues managing your site that will not be fixed in the future. If you are currently using IE11, it is strongly recommended that you switch to a more modern browser.

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

Adding support for WebP

\n\n\n\n

WebP is a modern image format that provides improved lossless and lossy compression for images on the web. WebP images are around 30% smaller on average than their JPEG or PNG equivalents, resulting in sites that are faster and use less bandwidth.

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

Adding Additional Block Supports

\n\n\n\n

Expanding on previously implemented block supports in WordPress 5.6 and 5.7, WordPress 5.8 introduces several new block support flags and new options to customize your registered blocks. More information is available in the block supports dev note.

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

Check the Field Guide for more!

\n\n\n\n

Check out the latest version of the WordPress Field Guide. It highlights developer notes for each change you may want to be aware of: WordPress 5.8 Field Guide.

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

The Squad

\n\n\n\n

The WordPress 5.8 release was led by Matt Mullenweg, and supported by this highly enthusiastic release squad:

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

This release is the reflection of the hard work of 530 generous volunteer contributors. Collaboration occurred on over 320 tickets on Trac and over 1,500 pull requests on GitHub.

\n\n\n\n5ubliminal, 99w, 9primus, Aaron Jorbin, aaronrobertshaw, abderrahman, Abha Thakor, Abhijit Rakas, achbed, Adam Silverstein, Adam Zielinski, Addie, aduth, Ahmed Chaion, Ahmed Saeed, Ajit Bohra, Alain Schlesser, Alan Jacob Mathew, Albert Juhé Lluveras, Alejandro Perez, Alex Concha, Alex Kirk, Alex Lende, alexstine, allilevine, Amanda Riu, amarinediary, Amogh Harish, Andrea Fercia, Andrei Draganescu, Andrew Ozz, Andrew Serong, Andrey \"Rarst\" Savchenko, André Maneiro, Andy Fragen, Andy Peatling, Andy Skelton, Ankit Gade, annalamprou, Anne McCarthy, anotherdave, anotia, Anthony Burchell, Anton Lukin, Anton Vanyukov, Antonis Lilis, apedog, apokalyptik, arena, Argyris Margaritis, Ari Stathopoulos, ariskataoka, arkrs, Armand, ArnaudBan, Arthur Chu, Arun a11n, Aspexi, atjn, Aurooba Ahmed, Austin Matzko, Ayesh Karunaratne, Barry, bartkalisz, Beatriz Fialho, Bego Mario Garde, Benachi, Benoit Chantre, Bernhard Reiter, Bernhard Reiter, Birgir Erlendsson (birgire), Birgit Pauli-Haack, Blobfolio, bmcculley, Bob Linthorst, bobbingwide, Bogdan Preda, bonger, Boone Gorges, Brad Touesnard, Brandon Kraft, Brecht, Brent Swisher, Brett Shumaker, Bruno Ribaric, Burhan Nasir, Cameron Jones, Cameron Voell, Carike, Carl Alexander, carlomanf, carlosgprim, Carolina Nymark, Casey Milne, Cenay Nailor, Ceyhun Ozugur, Chandra M, Chetan Prajapati, Chintan hingrajiya, Chip Snyder, Chloé Bringmann, Chouby, Chris Van Patten, chriscct7, Christopher Churchill, Chuck Reynolds, Clayton Collie, Code Amp, CodePoet, Colin Stewart, Collins Agbonghama, Copons, Corey McKrill, Cory Hughart, Courtney Engle Robertson, crazycoders, critterverse, czapla, Dávid Szabó, Daisy Olsen, damonganto, Dan Farrow, Daniel Llewellyn, Daniel Richards, danieldudzic, Daniele Scasciafratte, Danny, David Aguilera, David Anderson, David Artiss, David Baumwald, David Biňovec, David Calhoun, David Herrera, David Kryzaniak, David Smith, dekervit, devfle, devrekli, dhruvkb, Diane Co, dingdang, Dion Hulse, djbu, Dominik Schilling, donmhico, Donna Peplinskie, Doug Wollison, dpik, dragongate, Dreb Bits, Drew Jaynes, eatsleepcode, Ebonie Butler, Edi Amin, Eileen Violini, Ella van Durpe, Emil E, Emilio Martinez, Emmanuel Hesry, empatogen, Enej Bajgorić, Enrique Sánchez, epiqueras, Erik, etoledom, Fabian Kägy, Fabian Pimminger, Fabian Todt, Felipe Elia, Felix Arntz, felixbaumgaertner, Femy Praseeth, fijisunshine, Florian Brinkmann, Florian TIAR, Francesca Marano, Frank Bueltge, frosso1 (a11n), fullofcaffeine, gab81, Gal Baras, Ganga Kafle, Garrett Hyder, Gary Jones, Gary Pendergast, GeekPress, Gennady Kovshenin, Geoffrey, George Hotelling, George Mamadashvili, George Stephanis, geriux, glendaviesnz, Grant M. Kinney, Greg Ziółkowski, gRegor Morrill, Héctor Prieto, Hannah Malcolm, happiryu, Hareesh, Haz, hedgefield, Helen Hou-Sandí, Herm Martini, Herre Groen, herrvigg, htmgarcia, Ian Dunn, ianmjones, icopydoc, Ipstenu (Mika Epstein), Isabel Brison, Ivaylo Draganov, Ivete Tecedor, J.D. Grimes, Jack Lenox, Jake Spurlock, James Bonham, James Koster, James Nylen, James Richards, James Rosado, jamil95, janak Kaneriya, janw.oostendorp, Jason Johnston, Javier Arce, Jayman Pandya, Jean-Baptiste Audras, Jeff Ong, Jeff Paul, Jeffrey Pearce, Jenny Dupuy, Jeremy Felt, Jeremy Herve, Jeremy Yip, jeremy80, JeroenReumkens, jeryj, jillebehm, Jip Moors, Joe Bailey-Roberts, Joe Dolson, Joe McGill, Joen Asmussen, Johan Jonk Stenström, Johannes Kinast, John Blackbourn, John Godley, John James Jacoby, John Sundberg, Jon Brown, Jon Surrell, Jonathan Desrosiers, Jonny Harris, Jono Alderson, Joost de Valk, Jorge Bernal, Jorge Costa, Josee Wouters, Josepha Haden, JoshuaDoshua, Joy, jsnajdr, Juan Aldasoro, Juliette Reinders Folmer, Julio Potier, Justin Ahinon, k3nsai, kaavyaiyer, Kai Hao, Kalpesh Akabari, Kapil Paul, Karolina Vyskocilova, Kelly Choyce-Dwan, Kelly Hoffman, Kerry Liu, Kishan Jasani, Kite, KittMedia, Kjell Reigstad, klevyke, Knut Sparhell, Koen Van den Wijngaert, Konstantin Obenland, Konstantinos Xenos, Kyle Nel, lakrisgubben, Lara Schenck, Larissa Murillo, Laxman Prajapati, LewisCowles, lifeforceinst, linux4me2, Lovro Hrust, Luis Sacristán, Luiz Araújo, Luke Carbis, m0ze, Maedah Batool, Maggie Cabrera, Maja Benke, Marco Ciampini, Marcus Kazmierczak, Marek Hrabe, Marin Atanasov, Marius L. J., Mark Jaquith, Mark Parnell, Marko Heijnen, Marty Helmick, Mary Baum, Mary Job, marylauc, Mathieu Viet, Matias Ventura, Matt Chowning, Matt Mullenweg, Maxime Pertici, mblach, Meet Makadia, Meher Bala, Mel Choyce-Dwan, meloniq, mensmaximus, Michael Babker, Michael Beckwith, Miguel Fonseca, Mikael Korpela, Mike Hansen, Mike Jolley, Mike Martel, Mike Schroder, Mikhail Kobzarev, Milan Dinić, Milana Cap, mkdgs, mmuyskens, mmxxi, Mohamed El Amine DADDOU, Mohammed Faragallah, Monika Rao, Morten Rand-Hendriksen, mrjoeldean, Mukesh Panchal, munyagu, Mustafa Uysal, mweichert, Nadir Seghir, Nalini Thakor, Naoki Ohashi, Naoko Takano, Nazrul Islam Nayan, nderambure, net, nicegamer7, Nicholas Garofalo, Nick Halsey, Nik Tsekouras, ninanmnm, Noah Allen, nvartolomei, oguzkocer, olafklejnstrupjensen, Olga Bulat, Olga Gleckler, Otshelnik-Fm, oxyrealm, Ozh, Paal Joachim Romdahl, palmiak, Panagiotis Angelidis, Paragon Initiative Enterprises, Pascal Birchler, Pascal Knecht, Pat, patricklindsay, Paul Biron, Paul Bunkham, Paul Schreiber, Paul Stonier, Paul Von Schrottky, Paulo Pinto, Pavel I, Paweł, Peter Wilson, Petter Walbø Johnsgård, phena109, Philip Jackson, Pierre SYLVESTRE, Pinar, Piotrek Boniu, Pippin Williamson, Pirate Dunbar, Pramod Jodhani, Presskopp, presstoke, pwallner, pyronaur, Q, Rachel Baker, rafhun, Rajesh Radadiya, Rami Yushuvaev, Ramon Ahnert, ramonopoly, Ravi Vaghela, ravipatel, Refael Iliaguyev, Rene Hermenau, retrofox, reynhartono, Riad Benguella, Rian Rietveld, Rima Prajapati, Rinat, Rnaby, robdxw, Robert Anderson, Robert Chapin, Roger Theriault, rogerlos, roo2, Roy, Russell Aaron, Ryan McCue, Ryan Welcher, Sérgio Gomes, Sören Wrede, Saša, Sabrina Zeidan, Sahil Mepani, Samir Shah, Samuel Wood (Otto), Sandip Mondal, Sanne van der Meulen, sarahricker, sarayourfriend, SASAPIYO, satrancali, savicmarko1985, Scott Lesovic, Scott Reilly, scottconnerly, scruffian, Sean Fisher, Sean Hayes, sebbb, Sergey Biryukov, Sergey Yakimov, SergioEstevao, shaunandrews, Shital Marakana, silb3r, Siobhan, SirStuey, snapfractalpop, spikeuk1, spytzo, stacimc, Stanislav Khromov, Stefan Hüsges, stefanjoebstl, Stefano Minoia, Stefanos Togoulidis, Stephen Bernhardt, Stephen Edgar, Steve Dufresne, Steve Grunwell, Steve Henty, Steven Word, Subrata Sarkar, Sumaiya Siddika, Suman, Sumit Singh, Sumit Singh, Sunny, sushmak, Sybre Waaijer, Synchro, szaqal21, tamlyn, Tammie Lister, Tellyworth, Terri Ann, Tetsuaki Hamano, them.es, Thomas Kräftner, Thomas Patrick Levy, Thomas Vitale, tigertech, Timothy Jacobs, TimoTijhof, Tkama, tmatsuur, tmdk, Tobias Zimpel, TobiasBg, tobifjellner (Tor-Bjorn Fjellner), Tom J Nowell, Toni Viemerö, Tonya Mork, Toro_Unit (Hiroshi Urabe), torres126, Torsten Landsiedel, Toru Miki, Travis Northcutt, trejder, Udit Desai, Ulrich, Utsav tilava, Vicente Canales, Vipul Chandel, Vlad T, wangql, WebDragon, Wendy Chen, Weston Ruter, William Earnhardt, williampatton, Xavi Ivars, Xristopher Anderton, Y_Kolev, Yan Sern, Yui, Yuliyan Slavchev, Yvette Sonneveld, Zack Krida, Zebulan Stanphill, zkancs, and 孙锡源.\n\n\n\n

\n\n\n\n

In addition to these contributors, many thanks to all of the community volunteers who contribute in the support forums. They answer questions from people across the world, whether they are using WordPress for the first time, or they’ve been around since the first release all the way back in 2003. These releases are as successful as they are because of their efforts!

\n\n\n\n

Finally, thanks to all the community translators who help make WordPress available in over 200 languages for every release. 80 languages have translated 80% or more WordPress 5.8 and our community translators are hard at work ensuring more languages are on their way. If contributing to WordPress appeals to you, it’s easy to learn more. Check out Make WordPress or the core development blog.

\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:\"10976\";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:58:\"\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:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"WP Briefing: Episode 13: Cherishing WordPress Diversity\";s: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://wordpress.org/news/2021/07/episode-13-cherishing-wordpress-diversity/\";s: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, 19 Jul 2021 12: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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"wp-briefing\";s: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://wordpress.org/news/?post_type=podcast&p=10949\";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:357:\"In this episode, Josepha Haden Chomphosy discusses the importance of Diversity, Equity, and Inclusion to the fabric of the WordPress project and how we can move from a place of welcoming it to cherishing it. Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording. Credits […]\";s: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:\"enclosure\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:60:\"https://wordpress.org/news/files/2021/07/WP-Briefing-013.mp3\";s:6:\"length\";s:1:\"0\";s:4:\"type\";s: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:15:\"Chloe Bringmann\";s: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:14890:\"\n

In this episode, Josepha Haden Chomphosy discusses the importance of Diversity, Equity, and Inclusion to the fabric of the WordPress project and how we can move from a place of welcoming it to cherishing it.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

\n\n\n\n

Editor: Dustin Hartzler

\n\n\n\n

Logo: Beatriz Fialho

\n\n\n\n

Production: Chloé Bringmann

\n\n\n\n

Song: Fearless First by Kevin MacLeod

\n\n\n\n

References

\n\n\n\n

Diverse Speaker Training Workshop

\n\n\n\n

A WordPress Dinner Party

\n\n\n\n

The Burden of Proof

\n\n\n\n

Leadership At Any Level

\n\n\n\n

Building a Culture of Safety

\n\n\n\n

Leadership Basics: Ethics in Communication

\n\n\n\n

WordPress 5.6

\n\n\n\n

Bonus resource: How to Be a WordPress Ally

\n\n\n\n

Transcript

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

Josepha Haden Chomphosy  00:10

\n\n\n\n

Hello, everyone, and welcome to the WordPress Briefing, the podcast where you can catch quick explanations of the ideas behind the WordPress open source project, some insight into the community that supports it, and get a small list of big things coming up in the next two weeks. I’m your host, Josepha Haden Chomphosy. And before we get started, I have to be honest with you all, this episode and the next one have made me feel really anxious. This one is about Diversity, Equity, and Inclusion in open source, and especially in WordPress. And the next one is about accessibility in WordPress. And I feel like there’s just so much to do, and we don’t do enough, but we do what we can. And still, we will never be done with that work. And if you don’t know what I mean by Diversity, Equity, and Inclusion, you can kind of think of it this way. Diversity is bringing in people with different viewpoints and lived experiences. Equity is making sure everyone has what they need to get a fair chance of success, which is different from equality. And Inclusion is making sure that the environment is built to not only tolerate diverse groups but to celebrate them as well. So remember this as you listen to what I have to say here. We are never where we want to be in either of those spaces. But that shouldn’t stop us from looking at the things we have done to get us in the right direction. All right. Here we go.

\n\n\n\n

Josepha Haden Chomphosy  01:54

\n\n\n\n

I say a lot that we are a project that serves a majority collection of minority voices. WordPress is global in reach and open source in nature. And you would assume that what allows the software to be used by anyone would also enable it to be built by anyone. After all, your location doesn’t matter, and who employs you also doesn’t matter. And your relative social standing certainly shouldn’t matter. As long as you can communicate with the others contributing to the project, there should be no obstacle to your participation. The mission of the WordPress project is to democratize publishing, right? It’s to get the ability to have a website tap into passive income on your web presence. I mean, the job is to level the playing field for everyone. However, it’s my experience that bringing in new voices takes a lot of proactive work on behalf of leaders and contributors. It’s not enough to say, “Hey, I’m having a party,” you also have to say, “I’m having a party, and I’d like you to be there.” It’s not enough to think people will make their own space at this table. You have to make sure that you have table settings for everyone. And even beyond the basics of directing people to you. 

\n\n\n\n

Josepha Haden Chomphosy  03:12

\n\n\n\n

And on toward the next steps, you have to be honest about the fact that open source contribution requires a fair amount of privilege. By privilege, I mean the luxury of extra time or extra funding or just an understanding employer. WordPress supports 41% of the web. I think it’s 42% of the web right now. But less than 1% of people who use WordPress show up to help maintain it. And that 1% that does show up skews toward people who already have a pretty high level of representation and technology. And so, when you look at who is building it versus who is using it, it doesn’t always match. And since what we build so frequently reflects who we are, sometimes what we build doesn’t match the needs of the people who are using what we have.

\n\n\n\n

Josepha Haden Chomphosy  04:10

\n\n\n\n

So what has WordPress done to be proactive on the question of Diversity, Equity, and Inclusion? There are quite a few unseen things that have gone into this over the years and a few pretty visible things. This is a very long list. And it has a whole lot of just reference material. And so the show notes today will come in handy for people, and there will be just a laundry list of linked resources for everyone. 

\n\n\n\n

Josepha Haden Chomphosy  04:39

\n\n\n\n

But the first thing that WordPress has done is that we have accepted the burden of proof. I’m going to share a post about this in the show notes. That means we accept that it’s not the job of underrepresented folks to figure out if they are welcome. It’s up to us to make it clear that they are. So, there are three big little things that the community has done over the years. One is that many teams open their text-based meetings with an explanation of what is done in the meeting, who comes to the meetings, where to find help if you’re lost in the meeting, and for teams that have a specific type of requests that comes into those channels that aren’t handled in those channels. They also will share where people can go to get those requests taken care of. Many teams have also updated their team handbooks to have good beginner docs, limited use of inside jokes or jargon, and good first bugs. And also, there is a code of conduct in the community declaring that everyone is welcome and clarifies what to do if you see folks being unwelcoming. 

\n\n\n\n

Josepha Haden Chomphosy  05:51

\n\n\n\n

A second big thing that folks in the WordPress community have done is written down what was unwritten. Having things clearly documented unlocks institutional knowledge that you’d otherwise have to know someone to get. Clarity and process and the structure help anyone engage with your organization, not just the people who have extra time to figure things out. What that looks like in the WordPress project is that many teams have documented their workflows and their working spaces and just their general team norms. Many teams have also started defining what it means to be a team rep and holding open processes to choose those team reps. Many other community leaders and I have written down countless unspoken rules, guidelines, and philosophical underpinnings so that people don’t have to guess what we’re doing or why we’re doing things, or where we want to do them.

\n\n\n\n

Josepha Haden Chomphosy  06:46

\n\n\n\n

And the more visible thing that the WordPress project has been doing is that we found ways to invite people in, and they’re not failsafe; they’re not foolproof, but it is certainly a step in the right direction. The first one is an ongoing, diverse speaker training initiative. And I’ll include a link to that in the show notes as well. It is run by Jill Binder and a fantastic group of contributors that collaborate with her. And I really have loved watching that particular program grow and flourish and help WordPress make a difference where we absolutely can. 

\n\n\n\n

Josepha Haden Chomphosy  07:27

\n\n\n\n

The second thing that was pretty visible about how we invited people in was at the end of 2020, and we had an all-women and nonbinary release squad for our biggest release of the year; WordPress 5.6. I had a group of probably 70 women and nonbinary identifying folx who joined in the process and joined in learning more about the process. Some of them have continued in the project. Others have stepped away for various reasons. But all of them are welcome to return. And I encourage everyone to return to contribution when time and resources make that possible for you. 

\n\n\n\n

Josepha Haden Chomphosy  08:09

\n\n\n\n

And then the third thing that we’ve done, which I have talked about a lot, is the revival of the testing and triage practices. That has been work that’s been ongoing for a number of years. And it happens across multiple teams. It is not always immediately clear to people why the testing work. And the triage work is identifiable for me as a way to invite people into this process. And so I’ll be briefly clear about it right now. So testing as a practice brings in the users that otherwise don’t have a lot of spare time and that extra privilege to like, figure out what’s going on with WordPress, and contribute their own fixes to problems. They can give back to this project by being co-developers with us, co-creators with our entire process of making WordPress real and usable for the largest number of people that we can because we now support 42% of the web. And then, the triage practice invites in a diverse voice of people. Because you don’t necessarily always need to know everything about a project to help with triage. And when you’re helping with triage, you get active learning through participating in the process. But you also get passive learning from the people who already know huge amounts about the project and the process and everything that goes into it. And so it’s a low key low stress way to get your feet wet and start building that knowledge that sometimes is hard to come by unless you are actively working in it. So the testing practices, the triage practices, I really to the core of my being believe that those are active and ongoing ways for us to invite people who otherwise wouldn’t have a chance to get their voices heard in an open source project. And y’all, as I said at the start, y’all, there’s nothing about this list that I just shared, which makes me feel like our work on this is done. Just like any muscle, you don’t fight to peak fitness, and then hit the big stop button on time and say, “Now, I never have to work out again.” If we did, the world would be a very different place probably. But it does then lead us to the next steps for fostering a community culture that’s as broad as the people who use this software. If you believe in leadership at any level, as I do, there are a ton of things that you can do right now. But I’ll boil them down into three big chunks of things.

\n\n\n\n

Josepha Haden Chomphosy  10:54

\n\n\n\n

First, check your community area, or whatever community you want to apply this to, for things that need a little more proactive work. I will share a post called Building A Culture of Safety that will take you through a list of good first steps. And it is not as hard as it looks. When you say build a culture of safety, there are many really clear-cut minor changes that you can ask people to make and, in like, four or five different areas that can help your community be more welcoming and more open. 

\n\n\n\n

Josepha Haden Chomphosy  11:30

\n\n\n\n

The second thing that you can do is know that small changes add up over time and commit to making those changes where you can. If you are elite at any level, you know that supporting people and processes is the responsibility of everyone in the group. And if you can make your own autonomous decisions and commit to making small changes that make a big difference over time, you will be part of that solution. And that is not specific to any one group that we have in our communities. You can be an ally for anyone, whether they look like you, whether they have your same experiences, or not. And sometimes, it’s as easy as just holding space for the people who haven’t had a chance to talk yet. And on the subject of holding space and the way that we communicate. 

\n\n\n\n

Josepha Haden Chomphosy  12:22

\n\n\n\n

The third thing that I think is incredibly important is that you can take on as a foundational personal practice the concept of ethical communication. I’ll share a post about that as well in the show notes, but the core of it is that you have to know that what you say and don’t say what you do and don’t do has an impact on others and embrace that responsibility. All right, so you made it all the way through, and I am so proud of you. I’m sure you have questions about this. And I encourage you to share those. You can email them to me at wp briefing@wordpress.org.

\n\n\n\n

Josepha Haden Chomphosy  13:10

\n\n\n\n

This brings us to our small list of big things. I’ve got two things for you today. First and foremost, WordPress 5.8 gets released tomorrow. It’s a big release, and lots of people have been working on it. So get your update processes ready and keep an eye on wordpress.org/news for the announcement post. Second, and still pretty important, team reps have been working on their quarterly check-ins so that all other teams can get an idea of what’s happening around the WordPress office. Keep an eye out for that post on make.wordpress.org/updates. And that is your smallest of big things. Thank you for tuning in today for the WordPress Briefing. I’m your host Joseph Hayden Chomphosy, and I’ll see you again in a couple of weeks.

\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:\"10949\";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: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:33:\"WordPress 5.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/2021/07/wordpress-5-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:\"Wed, 14 Jul 2021 01:09: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:8:\"category\";a:3:{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:\"5.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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10933\";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:303:\"The third release candidate for WordPress 5.8 is now available! WordPress 5.8 is slated for release on July 20, 2021, and we need your help to get there—if you have not tried 5.8 yet, now is the time! You can test the WordPress 5.8 release candidate 3 in any of these three ways: Install and […]\";s: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:3233:\"\n

The third release candidate for WordPress 5.8 is now available!

\n\n\n\n

WordPress 5.8 is slated for release on July 20, 2021, and we need your help to get there—if you have not tried 5.8 yet, now is the time!

\n\n\n\n

You can test the WordPress 5.8 release candidate 3 in any of these three ways:

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

Thank you to all of the contributors who tested the Beta/RC releases and gave feedback. Testing for bugs is a critical part of polishing every release and a great way to contribute to WordPress.

\n\n\n\n

Plugin and Theme Developers

\n\n\n\n

Please test your plugins and themes against WordPress 5.8 and update the Tested up to version in the readme file to 5.8. If you find compatibility problems, please be sure to post to the support forums so we can work to solve them in time for the final release.

\n\n\n\n

For a more detailed breakdown of the changes included in WordPress 5.8, check out the WordPress 5.8 beta 1 post. The WordPress 5.8 Field Guide, which is particularly useful for developers, has all the info and further links to help you get comfortable with the major changes.

\n\n\n\n

How to Help

\n\n\n\n

Can you speak and write in a language other than English?  Help us translate WordPress into more than 100 languages!

\n\n\n\n

If you think you have found a bug, you can post to the Alpha/Beta area in the support forums. We would love to hear from you! If you are comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

\n\n\n\n

Props to @cbringmann, @chanthaboune, and @marybaum for peer-reviewing!

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

Code is poetry
Jazz is improvisation
Both are forms of art

\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:\"10933\";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: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:33:\"WordPress 5.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/2021/07/wordpress-5-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:\"Wed, 07 Jul 2021 01:12:57 +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: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:\"5.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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10912\";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:305:\"The second release candidate for WordPress 5.8 is now available! ? WordPress 5.8 is slated for release on July 20, 2021, and we need your help to get there—if you have not tried 5.8 yet, now is the time! You can test the WordPress 5.8 release candidate 2 in any of these three ways: Install […]\";s: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:3376:\"\n

The second release candidate for WordPress 5.8 is now available! \"?\"

\n\n\n\n

WordPress 5.8 is slated for release on July 20, 2021, and we need your help to get there—if you have not tried 5.8 yet, now is the time!

\n\n\n\n

You can test the WordPress 5.8 release candidate 2 in any of these three ways:

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

Thank you to all of the contributors who tested the Beta/RC releases and gave feedback. Testing for bugs is a critical part of polishing every release and a great way to contribute to WordPress.

\n\n\n\n

Plugin and Theme Developers

\n\n\n\n

Please test your plugins and themes against WordPress 5.8 and update the Tested up to version in the readme file to 5.8. If you find compatibility problems, please be sure to post to the support forums, so they can get ready for the final release.

\n\n\n\n

For a more detailed breakdown of the changes included in WordPress 5.8, check out the WordPress 5.8 beta 1 post. The WordPress 5.8 Field Guide, which is particularly useful for developers, has all the info and further links to help you get comfortable with the major changes.

\n\n\n\n

How to Help

\n\n\n\n

Can you speak and write in a language other than English?  Help us translate WordPress into more than 100 languages!

\n\n\n\n

If you think you have found a bug, you can post to the Alpha/Beta area in the support forums. We would love to hear from you! If you are comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

\n\n\n\n

Props to @lukecarbis for the haiku, @webcommsat and @marybaum for peer reviewing!

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

Five-eight in two weeks
So test your plugins and themes
Update your readme

\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:\"10912\";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:58:\"\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:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"WP Briefing: Episode 12: WordPress – In Person!\";s: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://wordpress.org/news/2021/07/episode-12-wordpress-in-person/\";s: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, 05 Jul 2021 12: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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"wp-briefing\";s: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://wordpress.org/news/?post_type=podcast&p=10889\";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:384:\"In this episode, Josepha Haden Chomphosy talks about WordPress – In Person! The WordPress events that provide the dark matter of connection that helps sustain the open source project. Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording. Credits Editor: Dustin Hartzler Logo: Beatriz Fialho […]\";s: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:\"enclosure\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:60:\"https://wordpress.org/news/files/2021/07/WP-Briefing-012.mp3\";s:6:\"length\";s:1:\"0\";s:4:\"type\";s: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:15:\"Chloe Bringmann\";s: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:13118:\"\n

In this episode, Josepha Haden Chomphosy talks about WordPress – In Person! The WordPress events that provide the dark matter of connection that helps sustain the open source project.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

\n\n\n\n

Editor: Dustin Hartzler

\n\n\n\n

Logo: Beatriz Fialho

\n\n\n\n

Production: Chloé Bringmann

\n\n\n\n

Song: Fearless First by Kevin MacLeod

\n\n\n\n

References

\n\n\n\n

The tragedy of the commons

\n\n\n\n

WordPress 5.8 Release Candidate announcement

\n\n\n\n

Transcript

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

Josepha Haden Chomphosy  00:11

\n\n\n\n

Hello, everyone, and welcome to the WordPress Briefing, the podcast where you can catch quick explanations of the ideas behind the WordPress open source project, some insight into the community that supports it, and get a small list of big things coming up in the next two weeks. I’m your host, Josepha Haden Chomphosy. Here we go!

\n\n\n\n

Josepha Haden Chomphosy  00:39

\n\n\n\n

Today we’re talking about one of my favorite parts of the project – WordPress events. The in-person component of the project is the dark matter that helps us build resilience and thrive as a group. A lot of what I’m going to share applies to every WordPress event, whether it’s a meetup or workshop, a contributor day, any other sort of format. But I’ll be focused on WordCamps. It’s been a while since we had any in-person WordCamps. Our last two were WordCamp Malaga in Spain and WordCamp Greenville in the US. But that hasn’t stopped anyone from gathering people together online. Which honestly makes a lot of sense for WordPress. Because there are many reasons we gather, the main three reasons are connecting, inspiring, and contributing. It’s true. It says so right in our documentation, “paper rustling.” All WordPress events should connect WordPress users, inspire people to do more with WordPress, and contribute to the WordPress project. As an aside, I’ll tell you that some groups also get to collaborate and educate in there, but connect, inspire, contribute. Those are the big three. And that’s what I’m talking about today. And if you subscribe to this podcast for the back office deep cuts, I’ll also have a few of those for you. 

\n\n\n\n

Josepha Haden Chomphosy  01:57

\n\n\n\n

Alright, so first up, connect. WordCamps are generally annual-ish gatherings organized by local WordPress meetup groups. They’re not meant to be big or fancy. The definition of the minimum viable product for WordCamp is 50 people gathered all day to talk about WordPress. They are intentionally affordable to allow people from all walks of life to attend, meet, share and learn. This is made possible by donations and sponsorships from local businesses and larger businesses in the WordPress ecosystem. And this helps us get people connected to those in their community that works with or are sustained by WordPress. That connection feeds into the overall health of the global WordPress project. 

\n\n\n\n

Josepha Haden Chomphosy  02:45

\n\n\n\n

Next up is inspire. WordCamps do not discriminate. They are open to any WordPress users, developers, designers, or other enthusiasts, regardless of their level of experience. And because of this, sessions generally span a variety of formats. So presentations or live demos to workshops or panels, any other format you can think of. But that also means that there are a variety of skill levels represented. There’s always content about how to use WordPress. That’s a given. But you can also count on content that inspires people to do more with their own dreams and aspirations. When I was still organizing WordCamps, my favorite thing was seeing people who came back year after year, putting into practice something that they learned the year before. It is that Choose Your Own Adventure aspect to WordCamps that lets people see the edge of their ideas and then expand that just a little bit further. 

\n\n\n\n

Josepha Haden Chomphosy  03:42

\n\n\n\n

And finally, contribute. WordCamps often have a contribution component to them. Sometimes it’s just a talk telling you how you can get more involved in the WordPress project. But sometimes, it’s a whole contributor day. And those range in size from single focus, like everyone, will show up and learn how to review a theme or a focus from every team that we have, like at the big flagship events where we gather hundreds of people into a room just to contribute to WordPress and all of the teams that go with it. Getting started with contributing can be daunting, but it is also essential to avoid something called the Tragedy of the Commons, an economic concept. So I’ll share a link to that in the show notes below. But the most important thing, the most important thing to remember, is that WordPress is open source. And we asked people to help us keep this great tool running by giving back a little bit of their time if they have gotten any benefit from the WordPress project or CMS over the course of their careers. 

\n\n\n\n

Josepha Haden Chomphosy  04:40

\n\n\n\n

So that’s it. The three big things you can get from a WordCamp. I know that I can’t wait to get back to them myself because while a lot of these things can still happen online and do, it’s really hard to replace the dark matter of in-person connections for open source projects. And since we’re talking dark matter anyway, let’s dig into it a little.

\n\n\n\n

Josepha Haden Chomphosy  05:01

\n\n\n\n

At the start of the section, I mentioned that WordCamps are local, locally organized, and people are encouraged to attend locally. But I am part of a group that ends up traveling to a lot of WordCamps. If you don’t know about the unseen work of WordPress, this raises eyebrows. So here is some clarification around the back office work that some of these traveling WordCampers often do. When I listed these out, there were about 20 different tasks, 20 different jobs, which was, frankly, a bit overwhelming when I listed them that way. So I’ve grouped them into kind of two genres, each with a group of current versus future types of work. So my two big buckets, big picture stuff, and then community stewardship. 

\n\n\n\n

Josepha Haden Chomphosy  05:50

\n\n\n\n

The big picture stuff, our first big genre here, when you’re looking at current topics, current issues kind of information, when we’re working on big picture stuff, you get the clarification of the mission or vision of WordPress, the sharing of open source methods or processes that we use in the WordPress project, and also sometimes those goal-setting conversations that you have to have both because we have a bunch of teams and team reps, that have a lot of really great ideas about what can be done in their teams to help WordPress succeed. But then also, because when you are working, when you’re contributing to a single team in the project, it can sometimes be hard to know how your work relates to the overall goals and visions of WordPress. And so that’s part of the work that gets done that I do there. 

\n\n\n\n

Josepha Haden Chomphosy  06:43

\n\n\n\n

And when you’re looking at future topics, future issues, the second part of this genre, that stuff like starting conversations or discussions around what the future holds for WordPress, and that’s the project as well as the technology or hearing from people about big things coming up for them. And any content that can support it, anything that I can provide to support those big things. It’s also a good time for me and others to identify trends based on what I see in presentations or what I hear from people at social functions. Really, it’s just a huge opportunity for information gathering to make sure that I know what everyone else in the project is trying to do and if they understand what the project is trying to do. 

\n\n\n\n

Josepha Haden Chomphosy  07:32

\n\n\n\n

And then the second big genre of things that happen in that dark matter kind of work at WordCamps is what I call community stewardship—so taking care of the community itself for the project itself. And a lot of that work is actually incident response kind of work. So conflict resolution, mediation often happens at in-person events, but also uncovering the shared foundations, the shared understanding for upcoming changes. So a lot of really, in the weeds kind of change management work. And for me, it’s certainly doing my best as a cultural liaison when I do see that there has been some miscommunication or gathering context for the latest disagreement that people are having with me so that I can clarify anything that was misunderstood from what I said. And also a little bit of policy clarification, just explaining why we do things and the way we do them. So for community stewardship, that’s kind of the current stuff that we look at. And that I do when I’m traveling for WordCamps. 

\n\n\n\n

Josepha Haden Chomphosy  08:36

\n\n\n\n

And then for the future tasks that we do with community stewardship in the project, that stuff like training, and that’s training team reps, community deputies, or new contributors like it’s, it’s not really one type of training, necessarily. But then also, all of the checking in with our organizers, team reps, volunteers, sponsors, everyone like that, to make sure that what we have in the project and what’s happening in the project, the tools that we have, the experience that contributors have while they are working here, and WordPress is good, and is what they need. We’ve got a lot of tools to get things done in WordPress, and we can always make them better. And so checking in with people to kind of see how those processes are, how the tools are making sure that I have an idea of where our holes are and what needs to be patched, and how we can patch them in the long run. So that’s all of the future planning kind of work and topic stuff, just you know, making sure that WordPress has what it needs to survive long into the future and long after I’m doing anything with it, and long after you’re doing anything with it either. 

\n\n\n\n

Josepha Haden Chomphosy  09:56

\n\n\n\n

So, lots and lots of unseen work being done at our in-person events. But folks who keep a keen eye on the online global work of WordPress will probably recognize that a lot of that work is also done routinely on make.wordpress.org and within the making WordPress Slack. There’s just, I don’t know, there’s just something different about receiving information from a human being with a face rather than an avatar with a photo. So I guess at the end of the day, that means the dark matter that keeps open source together is really an issue of communication. And you’ll get no arguments for me there.

\n\n\n\n

Josepha Haden Chomphosy  10:44

\n\n\n\n

That brings us now to our small list of big things. And there’s really just one big thing. And that’s WordPress 5.8. We are about two weeks away from this big release; the community has been working tirelessly on it. And it’s shaping up to be one of the most tested releases that we’ve had in a long time. Myself, I’m grateful to see so much activity before the release. Since 5.8 and 5.9 releases represent such monumental shifts in our software, I’m incredibly grateful to see so much activity prior to the release, especially in the beta period. We’ve been testing everything for it feels like six or eight months, and we’re really starting to see the positive benefits of that. And I think that we, the WordPress community, should be really proud of everything that we’re going to ship in 2021. Okay, so that was less of a small list of big things and really like one big thing with a generous garnish of encouragement, but you deserve it. So thank you for tuning in today for the WordPress briefing. I’m your host, Josepha Haden Chomphosy, and I’ll see you again in a couple of weeks.

\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:\"10889\";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: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:33:\"The Month in WordPress: June 2021\";s: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/2021/07/the-month-in-wordpress-june-2021/\";s: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, 02 Jul 2021 15:11:24 +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:18:\"Month 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:35:\"https://wordpress.org/news/?p=10896\";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:334:\"Once you step into contribution time, your main concern is the users of WordPress, or new contributors, or the health of the WordPress ecosystem as a whole or the WordPress project. So you get all this subject matter expertise from competitive forces, collaborating in a very “us versus the problem” way. And when you do […]\";s: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:\"Hari Shanker R\";s: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:11608:\"\n

Once you step into contribution time, your main concern is the users of WordPress, or new contributors, or the health of the WordPress ecosystem as a whole or the WordPress project. So you get all this subject matter expertise from competitive forces, collaborating in a very “us versus the problem” way. And when you do that, you’re always going to find a great solution.

\n\n\n\n

In the “WordCamp Europe 2021 in Review” episode of the WP Briefing podcast, Josepha Haden talks about the importance of collaboration, which is vital in building WordPress. This edition of The Month in WordPress covers exciting updates that exemplify this philosophy. 

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

Updates on WordPress 5.8

\n\n\n\n

Get excited, folks! The beta versions and the first release candidate of WordPress 5.8 are out. Beta 1 came out on June 9, followed by Beta 2 on June 15, Beta 3 on June 23, and Beta 4 on June 25. The first release candidate of WordPress 5.8 was published on June 30. You can test the beta versions and the release candidates by downloading them from WordPress.org or by using the WordPress Beta Tester plugin. WordPress 5.8 will be out by July 20, 2021, and is also ready to be translated.

\n\n\n\n

Want to contribute to WordPress core? Check out the Core Contributor Handbook. Don’t forget to join the WordPress #core channel in the Make WordPress Slack and follow the Core Team blog. The Core Team hosts weekly chats on Wednesdays at 5 AM and 8 PM UTC. Help us promote WordPress 5.8 by organizing meetups about the release, producing social media marketing materials for 5.8, or testing the release.

\n\n\n\n

Gutenberg versions 10.8 and 10.9 are out

\n\n\n\n

We said hello to Gutenberg version 10.8 and version 10.9 this month. Version 10.8 adds rich URL previews, enhancements to the list view, and an updated block manager. Version 10.9 offers several performance enhancements, along with more block design tools and template editor enhancements.

\n\n\n\n

Want to get involved in building Gutenberg? Follow the Core Team blog, contribute to Gutenberg on GitHub, and join the #core-editor channel in the Make WordPress Slack. The “What’s next in Gutenberg” post offers more details on the latest updates. 

\n\n\n\n

WordCamp Europe 2021 concludes

\n\n\n\n

One of the biggest and most exciting WordPress events, WordCamp Europe 2021, was held from June 7-9, 2021. A team of 40 members organized the event, which had 3200+ registrations, 42 speakers, and 43 sponsors. What a success! You will find more details in the event recap. One highlight was a Gutenberg demo hosted by Matías Ventura and Matt Mullenweg. You can watch the event recording on the WordCamp Europe YouTube channel, and videos are now available on WordPress.tv as well. The team has announced WordCamp Europe 2022, which is being planned as an in-person event in Porto, Portugal. Want to be a part of the 2022 WCEU organizing team? Their call for organizers is now open. Apply now!

\n\n\n\n

Full Site Editing updates

\n\n\n\n

Don’t miss the latest Full Site Editing (FSE) Outreach program testing call: “Thrive with theme.json”, which is aimed at a developer-centric audience. The deadline is July 14. Also don’t miss a hallway hangout on testing theme.json on July 7 at 5 PM UTC. The team has published a recap of the Published Portfolios testing call, which shares some interesting results. 

\n\n\n\n

BuddyPress 8.0 is out!

\n\n\n\n

The first major BuddyPress release of 2021, version 8.0 “Alfano,” came out on June 6. The short-cycle release offers features such as the ability to recruit new members, an improved registration experience, and profile field types. Download it from the WordPress.org plugin directory or check it out from its Subversion repository.

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

Further reading

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

Have a story that we should include in the next “Month in WordPress” post? Please submit it using this form

\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:\"10896\";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: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:31:\"WordPress 5.8 Release Candidate\";s: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/2021/06/wordpress-5-8-release-candidate/\";s: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 Jun 2021 03:47:48 +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: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:\"5.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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10873\";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:364:\"The first release candidate for WordPress 5.8 is now available! ? Please join us in celebrating this very important milestone in the community’s progress towards the final release of WordPress 5.8! “Release Candidate” means the new version is ready for release, but with thousands of plugins and themes and differences in how the millions of […]\";s: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:4776:\"\n

The first release candidate for WordPress 5.8 is now available! \"?\"

\n\n\n\n

Please join us in celebrating this very important milestone in the community’s progress towards the final release of WordPress 5.8!

\n\n\n\n

“Release Candidate” means the new version is ready for release, but with thousands of plugins and themes and differences in how the millions of people use WordPress, it is possible something was missed. WordPress 5.8 is slated for release on July 20, 2021, but your help is needed to get there—if you have not tried 5.8 yet, now is the time!

\n\n\n\n

You can test the WordPress 5.8 release candidate in three ways:

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

Thank you to all of the contributors who tested the Beta releases and gave feedback. Testing for bugs is a critical part of polishing every release and a great way to contribute to WordPress.

\n\n\n\n

What is in WordPress 5.8?

\n\n\n\n

The second release of 2021 continues to progress on the block editor towards the promised future of full site editing with these updates:

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

WordPress 5.8 also has lots of refinements to enhance the developer experience. To learn more, subscribe to the Make WordPress Core blog and pay special attention to the developer notes tag for updates on those and other changes that could affect your products.

\n\n\n\n

Plugin and Theme Developers

\n\n\n\n

Please test your plugins and themes against WordPress 5.8 and update the Tested up to version in the readme file to 5.8. If you find compatibility problems, please be sure to post to the support forums, so those can be figured out before the final release.

\n\n\n\n

The WordPress 5.8 Field Guide, due to be published very shortly, will give you a deeper dive into the major changes.

\n\n\n\n

How to Help

\n\n\n\n

Do you speak a language other than English?  Help us translate WordPress into more than 100 languages!  This release also marks the hard string freeze point of the 5.8 release schedule.

\n\n\n\n

If you think you have found a bug, you can post to the Alpha/Beta area in the support forums. We would love to hear from you! If you are comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

\n\n\n\n

Props to @audrasjb, @cbringmann, @webcommsat, and @pbiron for copy suggestions and final review.

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

We are almost there,
WordPress 5.8 comes next month.
We need your help: test!

\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:\"10873\";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: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:20:\"WordPress 5.8 Beta 4\";s: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://wordpress.org/news/2021/06/wordpress-5-8-beta-4/\";s: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, 25 Jun 2021 17:14: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:8:\"category\";a:3:{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:\"5.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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10855\";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:331:\"WordPress 5.8 Beta 4 is now available for testing! This software is still in development, so it is not recommended to run this version on a production site. Consider setting up a test site to play with it. You can test the WordPress 5.8 Beta 4 in three ways: Install/activate the WordPress Beta Tester plugin (select […]\";s: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:4104:\"\n

WordPress 5.8 Beta 4 is now available for testing!

\n\n\n\n

This software is still in development, so it is not recommended to run this version on a production site. Consider setting up a test site to play with it.

\n\n\n\n

You can test the WordPress 5.8 Beta 4 in three ways:

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

The current target for the final release is July 20, 2021. That’s less than four weeks away, so we need your help to make sure the final release is as good as it can be.

\n\n\n\n

Some Highlights

\n\n\n\n

Since Beta 3, 18 bugs have been fixed. Most tickets focused on polishing existing default themes, fixing bugs in the new block Widget screen, and squashing Editor bugs collected during beta.

\n\n\n\n

How You Can Help

\n\n\n\n

Watch the Make WordPress Core blog for 5.8-related developer notes in the coming weeks, which will break down these and other changes in greater detail.

\n\n\n\n

So far, contributors have fixed 254 tickets in WordPress 5.8, including 91 new features and enhancements, and more bug fixes are on the way.

\n\n\n\n

Do some testing!

\n\n\n\n

Testing for bugs is a vital part of polishing the release during the beta stage and a great way to contribute. \"✨\"

\n\n\n\n

If you think you’ve found a bug, please post to the Alpha/Beta area in the support forums. We would love to hear from you! If you’re comfortable writing a reproducible bug report, file one on WordPress Trac. That’s also where you can find a list of known bugs.

\n\n\n\n

Props to @desrosj @clorith for reviews and @chanthaboune for final edits!

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

Releasing software
Is complex when open source
Yet WordPressers do

\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:\"10855\";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: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:20:\"WordPress 5.8 Beta 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:56:\"https://wordpress.org/news/2021/06/wordpress-5-8-beta-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:\"Wed, 23 Jun 2021 02:36: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:8:\"category\";a:2:{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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10843\";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:331:\"WordPress 5.8 Beta 3 is now available for testing! This software is still in development, so it is not recommended to run this version on a production site. Consider setting up a test site to play with it. You can test the WordPress 5.8 Beta 3 in three ways: Install/activate the WordPress Beta Tester plugin (select […]\";s: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:7:\"Josepha\";s: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:5777:\"\n

WordPress 5.8 Beta 3 is now available for testing!

\n\n\n\n

This software is still in development, so it is not recommended to run this version on a production site. Consider setting up a test site to play with it.

\n\n\n\n

You can test the WordPress 5.8 Beta 3 in three ways:

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

The current target for the final release is July 20, 2021. That’s just four weeks away, so we need your help to make the final release is as good as it can be.

\n\n\n\n

Some Highlights

\n\n\n\n

Since Beta 2, 38 bugs have been fixed. Here is a summary of some of the included changes:

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

How You Can Help

\n\n\n\n

Watch the Make WordPress Core blog for 5.8-related developer notes in the coming weeks, which will break down these and other changes in greater detail.

\n\n\n\n

So far, contributors have fixed 254 tickets in WordPress 5.8, including 91 new features and enhancements, and more bug fixes are on the way.

\n\n\n\n

Do some testing!

\n\n\n\n

Testing for bugs is a vital part of polishing the release during the beta stage and a great way to contribute. \"✨\"

\n\n\n\n

If you think you’ve found a bug, please post to the Alpha/Beta area in the support forums. We would love to hear from you! If you’re comfortable writing a reproducible bug report, file one on WordPress Trac. That’s also where you can find a list of known bugs.

\n\n\n\n

Props to @jeffpaul @desrosj @hellofromtonya @pbiron for reviews and final edits!

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

Esperanza first.
Want to know the next jazzer?
Then please test beta.

\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:\"10843\";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:58:\"\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:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"WP Briefing: Episode 11: WordCamp Europe 2021 in Review\";s: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://wordpress.org/news/2021/06/episode-11-wordcamp-europe-2021-in-review/\";s: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, 21 Jun 2021 12:33: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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"wp-briefing\";s: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://wordpress.org/news/?post_type=podcast&p=10837\";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:364:\"In this episode, Josepha Haden Chomphosy does a mini deep dive into WordCamp Europe 2021, specifically the conversation between the project’s co-founder, Matt Mullenweg, and Brian Krogsgard formerly of PostStatus. Tune in to hear her take and for this episode’s small list of big things. Have a question you’d like answered? You can submit them […]\";s: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:\"enclosure\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:60:\"https://wordpress.org/news/files/2021/06/WP-Briefing-011.mp3\";s:6:\"length\";s:1:\"0\";s:4:\"type\";s: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:15:\"Chloe Bringmann\";s: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:10500:\"\n

In this episode, Josepha Haden Chomphosy does a mini deep dive into WordCamp Europe 2021, specifically the conversation between the project’s co-founder, Matt Mullenweg, and Brian Krogsgard formerly of PostStatus. Tune in to hear her take and for this episode’s small list of big things.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

\n\n\n\n

Editor: Dustin Hartzler

\n\n\n\n

Logo: Beatriz Fialho

\n\n\n\n

Production: Chloé Bringmann

\n\n\n\n

Song: Fearless First by Kevin MacLeod

\n\n\n\n

References

\n\n\n\n

Gutenberg Highlights 

\n\n\n\n

Matt Mullenweg in conversation with Brian Krogsgard 

\n\n\n\n

5.8 Development Cycle

\n\n\n\n

WordCamp Japan

\n\n\n\n

A recap on WCEU 2021

\n\n\n\n

Transcript

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

Josepha Haden Chomphosy 00:10

\n\n\n\n

Hello, everyone, and welcome to the WordPress Briefing, the podcast where you can catch quick explanations of the ideas behind the WordPress open source project, some insights into the community that supports it, and get a small list of big things coming up in the next two weeks. I’m your host, Josepha Haden Chomphosy. Here we go!

\n\n\n\n

Josepha Haden Chomphosy 00:40

\n\n\n\n

A couple of weeks ago, we hosted WordCamp Europe and had the double pleasure of a demo that showed us a bit about the future of WordPress and an interview that looked back while also looking a bit forward. If you haven’t seen the demo, it was beautiful. And I’ve included a link to it in the show notes. And if you haven’t heard the interview, there were a few specific moments that I’d like to take the time to delve into a little more. Brian Krogsgard, in his conversation with Matt Mullenweg, brought up three really interesting points. I mean, he brought up a lot of interesting points, but there were three that I would particularly like to look into today. The first was about balance. The second was about cohesion. And the third was about those we leave behind.  

\n\n\n\n

Josepha Haden Chomphosy 01:24

\n\n\n\n

So first is this question of balance. Brian brought this up in the context of the overall economic health of the WordPress ecosystem. And in that particular moment, he talked about companies that are coming together, companies that are merging. And in Matt’s answer, the part that I found the most interesting was when he said, “the point at which there is the most commercial opportunity is also the point at which there is the most opportunity for short-termism. He went on to talk about the importance of long-term thinking and collective thinking about what makes us, and us here means probably the WordPress project, more vibrant and vital in 10 or 20 or 30 years. One of the things that he specifically called out in that answer was the responsibility of larger companies in the ecosystem. For instance, like Automattic, to commit fully to giving back, there are many ways now that companies can give back to WordPress so that we all replenish the Commons. They can pay for volunteer contributors’ time; they can create and sponsor entire teams through the Five for the Future program. They can contribute time through our outreach program. And they can even contribute to WordPress’s ability to own our own voice by engaging their audience’s awareness of what’s next in WordPress, or whatever. And I know this balance, this particular balance of paid contributors or sponsored contributors, compared to our volunteer contributors or self-sponsored contributors; I know that this balance is one that people keep an eagle eye on. I am consistently on a tight rope to appropriately balanced those voices. But as with so many things where balance is key, keeping an eye on the middle or the long-distance can really help us get it right.  

\n\n\n\n

Josepha Haden Chomphosy 03:23

\n\n\n\n

The second question was one of cohesion and specifically cohesion over the competition. Brian asked how, if people feel disadvantaged, you can foster a feeling of cohesion rather than competition? And Matt’s first answer was that competition is great. Specifically, he said that competition is great as long as you consider where your collaboration fits into the mission. And he also spent some time exploring how competitors in the ecosystem can still work from a community-first mindset. I personally cannot agree enough about some of the benefits of collaboration alongside your competitors. I remind sponsored contributors from time to time, and I think it’s true for any contributor that you are an employee of your company first and a contributor to WordPress second. However, once you step into contribution time, your main concern is the users of WordPress, or new contributors, or the health of the WordPress ecosystem as a whole or the WordPress project. So you get all this subject matter expertise from competitive forces, collaborating in a very us versus the problem way. And when you do that, you’re always going to find a great solution. It may not be as fast as you want it to build things out in the open in public. And so sometimes we get it wrong and have to come back and fix it but still, given time, we’re going to come out with the best solution because we have so many skilled people working on this.  

\n\n\n\n

Josepha Haden Chomphosy 05:01

\n\n\n\n

And then the third question that I wanted to really touch on is the question of those we leave behind. Brian asked Matt if he thought mid-sized agencies and mid-sized consultants were being squeezed out with the block editor. Matt’s high-level answer was no, and I tend to agree with him. It’s not all mid-sized anything any more than it’s all small-sized anything. His answer continued to look at what stands to change for users with the block editor and who really can stand to benefit. It made me think back to my WordPress 5.0 listening tour. We launched WordPress 5.0, which was, in case anyone forgets, the first release with the block editor in it. I took a six-month-long tour to anywhere that WordPressers were so I could hear their main worries, what Brian is saying in there, and what Matt is saying to really came up all the time in those conversations. And basically, it was that this update takes all the power away from people who are building websites. And in these conversations, and Matt and Brian’s conversation, it was really focused on our freelancers and consultants. But at the same time, all of them heard that this update gives power back to all of the people who could build websites. 

\n\n\n\n

Josepha Haden Chomphosy 06:28

\n\n\n\n

I could not shake the feeling at the time. And honestly, I can’t shake it now that no high-end consultants, or freelancers, or any other developer or site creator sit around just longing for maintenance work. After six months of talking to people, I didn’t hear anyone say, “you know, I just love making the same author card over and over and over.” Or, “updated the footer every week, this month. And that’s why I got into this business.” And more than the feeling that there just wasn’t anyone who just loved maintenance, I got a feeling that there were real problems that needed to be solved for these clients and that they wanted to solve them. And that they also would gladly trade updating footers for the much more interesting work of creating modern and stylish business hubs based on WordPress for the clients who trust them so much. All of that, I guess, is to say that, yes, the block editor does give power back to our clients again, but not at the expense of those who have to build the sites in the first place. I think it stands to restore everyone’s sense of agency more than we truly realize. So that’s my deep dive on WordCamp Europe; I included links to the demo and the talk below, just in case you haven’t seen them yet. And you want to get a little bit of insight into the full context of the conversations that I just did a bit of a deep dive into. 

\n\n\n\n

Josepha Haden Chomphosy 08:15

\n\n\n\n

And now it’s time for our smallest of big things. All right, I have three things for you today. Number one, tomorrow, we package WordPress 5.8 beta three. If you’ve never had a chance to stop by the core channel in slack for the past packaging process, I really encourage you to stop by; we call them release parties. It’s a bunch of people who stand around and help get it done. So you can also see how it gets done. And if you’re feeling brave, you can even try your hand at testing out one of the packages as soon as it’s ready. The second thing is that a week from tomorrow, we reach our first release candidate milestone. So if you have meant to submit any bugs or patches or if you’ve been procrastinating on documentation, or dev notes, right now is the time so that we can have a chance to get everything into the release by the time we reach the release candidate milestone on the 29th. And the third thing is that we are currently right in the middle of WordCamp Japan. That is a great opportunity to meet some contributors and maybe even get started with contributions yourself. So stop by if you haven’t had a chance to check it out already. I will leave a link in the show notes. And that, my friends, is your small list of big things.

\n\n\n\n

Thank you for tuning in today for the WordPress Briefing. I’m your host, Josepha Haden Chomphosy, and I’ll see you again in a couple of weeks.

\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:\"10837\";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: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:20:\"WordPress 5.8 Beta 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:56:\"https://wordpress.org/news/2021/06/wordpress-5-8-beta-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, 15 Jun 2021 18:34: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:8:\"category\";a:2:{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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10808\";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:344:\"WordPress 5.8 Beta 2 is now available for testing! This software is still in development, so it’s not recommended to run this version on a production site. Consider setting up a test site to play with it. You can test the WordPress 5.8 Beta 2 in two ways: Install/activate the WordPress Beta Tester plugin (select the Bleeding […]\";s: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:6174:\"\n

WordPress 5.8 Beta 2 is now available for testing!

\n\n\n\n

This software is still in development, so it’s not recommended to run this version on a production site. Consider setting up a test site to play with it.

\n\n\n\n

You can test the WordPress 5.8 Beta 2 in two ways:

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

The current target for the final release is July 20, 2021. That’s just five weeks away, so your help is vital to ensure that the final release is as good as it can be.

\n\n\n\n

Some Highlights

\n\n\n\n

Since Beta 1, 26 bugs have been fixed. Here is a summary of some of the included changes:

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

How You Can Help

\n\n\n\n

Watch the Make WordPress Core blog for 5.8-related developer notes in the coming weeks, which will break down these and other changes in greater detail.

\n\n\n\n

So far, contributors have fixed 214 tickets in WordPress 5.8, including 87 new features and enhancements, and more bug fixes are on the way.

\n\n\n\n

Do some testing!

\n\n\n\n

Testing for bugs is a vital part of polishing the release during the beta stage and a great way to contribute. \"✨\"

\n\n\n\n

If you think you’ve found a bug, please post to the Alpha/Beta area in the support forums. We would love to hear from you! If you’re comfortable writing a reproducible bug report, file one on WordPress Trac. That’s also where you can find a list of known bugs.

\n\n\n\n

Props to @chanthaboune for revision, @webcommsat, @youknowriad, @jorbin, @felipeelia , and @jeffpaul for proofreading, and @cbringmann for final edits!

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

Install won’t you please
WordPress 5-8 Beta 2?
We need your help: test!

\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:\"10808\";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: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:20:\"Gutenberg Highlights\";s: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://wordpress.org/news/2021/06/gutenberg-highlights/\";s: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, 11 Jun 2021 11:03: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:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:8:\"Features\";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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10779\";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:346:\"During WordCamp Europe this past Wednesday Matt and I gathered to discuss the latest developments of Gutenberg and to share a video with some of the current and upcoming highlights. The video is wonderfully narrated by @beafialho and it was a great opportunity to celebrate all the incredible work that contributors are doing around the […]\";s: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:\"Matias Ventura\";s: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:1401:\"\n

During WordCamp Europe this past Wednesday Matt and I gathered to discuss the latest developments of Gutenberg and to share a video with some of the current and upcoming highlights. The video is wonderfully narrated by @beafialho and it was a great opportunity to celebrate all the incredible work that contributors are doing around the globe to improve the editing and customization experience of WordPress. For those that weren’t able to attend live it’s now available for watching online.

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

Matt also opened a thread for questions on his blog, so be sure to chime in there if you have any!

\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:\"10779\";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: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:20:\"WordPress 5.8 Beta 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:56:\"https://wordpress.org/news/2021/06/wordpress-5-8-beta-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:\"Wed, 09 Jun 2021 02:47:48 +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: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:\"5.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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10733\";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:50:\"WordPress 5.8 Beta 1 is now available for testing!\";s: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:10110:\"\n

WordPress 5.8 Beta 1 is now available for testing!

\n\n\n\n

This software is still in development, so it is not recommended to run this version on a production site. Instead, we recommend that you run this on a test site to play with the new version.

\n\n\n\n

You can test the WordPress 5.8 Beta 1 in two ways:

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

The current target for the final release is July 20, 2021. This is just six weeks away, so your help is vital to ensure this release is tested properly and as good as it can be.

\n\n\n\n

Keep your eyes on the Make WordPress Core blog for 5.8-related developer notes in the coming weeks, breaking down these and other changes in greater detail.

\n\n\n\n

So what’s new in this 5.8? Let’s start with some highlights.

\n\n\n\n

Highlights

\n\n\n\n

Powerful Blocks

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

Handpicked Patterns

\n\n\n\n

Patterns can now also be recommended and selected during block setup, offering powerful new flows. Pattern transformations are also possible and allow converting a block or a collection of blocks into different patterns.

\n\n\n\n

New collection of Patterns and an initial integration with the upcoming Pattern Directory on WordPress.org.

\n\n\n\n

Better Tools

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

Internet Explorer 11

\n\n\n\n

Support for Internet Explorer 11 is ending in WordPress this year. In this release, most of those changes are being merged so use the Beta and RC periods to test!

\n\n\n\n

Blocks in Widgets Area

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

Looking for a change and can’t find it? There are more improvements listed after the break.

\n\n\n\n

How You Can Help

\n\n\n\n

Do some testing!

\n\n\n\n

Testing for bugs is an important part of polishing the release during the beta stage and a great way to contribute.

\n\n\n\n

If you think you’ve found a bug, please post to the Alpha/Beta area in the support forums. We would love to hear from you! If you’re comfortable writing a reproducible bug report, file one on WordPress Trac. That’s also where you can find a list of known bugs.

\n\n\n\n

Thanks for joining us, and happy testing!

\n\n\n\n

Props to @audrasjb, @cbringmann, @youknowriad, @annezazu, @matveb, and @desrosj for editing/proof reading this post, and @chanthaboune for final review.

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

Full Site Editing
Coming at the end of year
But first, Beta 1

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

Improvements in this Release

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

To see all of the features for Gutenberg release in detail check out these posts: 10.0, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, and 10.7. In addition to those changes, contributors have fixed 215 tickets in WordPress 5.8, including 88 new features and enhancements, with more bug fixes on the way.

\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:\"10733\";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:58:\"\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:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"WP Briefing: Episode 10: Finding the Good In Disagreement\";s: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://wordpress.org/news/2021/06/episode-10-finding-the-good-in-disagreement/\";s: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, 07 Jun 2021 12:22: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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"wp-briefing\";s: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://wordpress.org/news/?post_type=podcast&p=10424\";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:408:\"To Agree, disagree, and everything in-between. In this episode, Josepha talks about forming opinions and decision-making in the WordPress project. Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording. Credits Editor: Dustin Hartzler Logo: Beatriz Fialho Production: Chloé Bringmann Song: Fearless First by Kevin MacLeod […]\";s: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:\"enclosure\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:60:\"https://wordpress.org/news/files/2021/06/WP-Briefing-010.mp3\";s:6:\"length\";s:1:\"0\";s:4:\"type\";s: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:15:\"Chloe Bringmann\";s: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:12068:\"\n

To Agree, disagree, and everything in-between. In this episode, Josepha talks about forming opinions and decision-making in the WordPress project.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

\n\n\n\n

Editor: Dustin Hartzler

\n\n\n\n

Logo: Beatriz Fialho

\n\n\n\n

Production: Chloé Bringmann

\n\n\n\n

Song: Fearless First by Kevin MacLeod

\n\n\n\n

References

\n\n\n\n

10/10/10 Rule

\n\n\n\n

The Eisenhower Matrix 

\n\n\n\n

The Maximin Strategy 

\n\n\n\n

WordCamp Europe

\n\n\n\n

WordCamp Japan

\n\n\n\n

WordPress 5.8 Development Cycle

\n\n\n\n

Transcript

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

Josepha Haden Chomphosy  00:10

\n\n\n\n

Hello, everyone, and welcome to the WordPress Briefing, the podcast where you can catch quick explanations of some of the ideas behind the WordPress open source project and the community around it, as well as get a small list of big things coming up in the next two weeks. I’m your host, Joseph Haden Chomphosy. Here we go!

\n\n\n\n

Josepha Haden Chomphosy  00:40

\n\n\n\n

For anyone who has ever organized something, whether it’s a social event, a school project, or an annual family gathering, you know that there are many different opinions. The more opinions you have, the more likely people don’t see eye to eye. And before you know it, you’ve got some disagreements. Some things make disagreements worse, like imbalance of information, lack of showing your work, and sometimes just “too many cooks in the kitchen,” to use a regional phrase. Frankly, sometimes it seems like the second you have more than one cook in your kitchen, you’re going to get some disagreements. But I think that’s a healthy thing. WordPress is huge. And there are huge numbers of people contributing to WordPress or any other open source project you want to name. So there’s a lot of stuff available to disagree about. If we never saw anyone pointing out an area that wasn’t quite right, there would probably be something wrong. If you, like me, think that a healthy tension of collaborative disagreement can be useful when approached thoughtfully, then this quick start guide is for you. 

\n\n\n\n

Step one, prepare to host a discussion. This is, by the way, just the hardest step out there. You have to take a little time to figure out what problem you’re solving with the solution you’re suggesting, any goals that it relates to, and then figure out what the bare minimum best outcome would be and what the wildest dreams magic wand waving outcome would be. And you have to be honest with yourself. 

\n\n\n\n

Step two, host the discussion. The venue will be different for different discussions, but you see a lot of these on team blogs or within the actual tickets where work is being done. Wherever you’re hosting it, state the problem, state your idea for the solution and ask for what you missed. If you’re hosting a discussion in person, like in a town hall format, this can be hard. And generally, hosting discussions in an in-person or voice call or zoom call kind of way is hard. So if you have an opportunity to start doing this in text first and level your way up to in person, that’s my recommendation. 

\n\n\n\n

Step three is to summarize the discussion and post a decision if possible. So organizing a big discussion into main points is a really good practice for the people you’re summarizing it for and yourself. It helps you to confirm your understanding, and it also gives you the chance to pair other solutions with the problem and goals you outlined in step one. If a different solution solves the same problem but with less time or effort, it’s worth taking a second look with less time or effort. There’s something that I say to WordPress contributors frequently, and that is there are a lot of yeses. There are a lot of right ways to do things and only a few clear wrong ways to do things. So be open-minded about whether or not someone else’s right way to do things could still achieve the goals you’re trying to accomplish with your solution. A note on step three where I said, “and post the decision if possible.” Sometimes you’re the person to make that decision, but sometimes you are not the person who can give something the green light, and so you’re preparing a recommendation. Whether you’re making a decision or a recommendation, sometimes you may experience a little decision-making paralysis. I know I do. So here are a few of the tools that I use.

\n\n\n\n

If you’re avoiding the decision, use the 10/10/10 rule; it can help you figure out if you’re stuck on a short-term problem. If there are too many good choices, use the Eisenhower Matrix that can help you to prioritize objectively. If there are too many bad choices, use the Maximin strategy. It can help you to identify how to minimize any potential negative impacts. 

\n\n\n\n

Okay, so you’ve considered your position. You’ve discussed everything. You summarized the big points. Maybe you also worked your way through to a recommendation or a decision. What about everyone who disagreed with the decision? Or have you made a recommendation, and it wasn’t accepted? How do you deal with that? That’s where “disagree and commit” shows up. This phrase was made popular by the folks over at Amazon, I think. But it first showed up, I believe at Sun Microsystems as this phrase, “agreeing, commit, disagree and commit or get out of the way.”

\n\n\n\n

Josepha Haden Chomphosy  05:34

\n\n\n\n

Disagree and commit as a concept works pretty well when everyone agrees on the vision and the goals, but not necessarily how to get to those goals. We’ve had moments in recent history where folks we’re not able to agree, we’re not able to commit, and so then left the project. I hate when that happens. I want people to thrive in this community for the entire length of their careers. But I also understand that situation shows up in the top five learnings of open source when you no longer have interest in the project and handed it off to a competent successor. So there it is – disagreements in open source in WordPress. 

\n\n\n\n

As with so many of the things I discuss on this podcast, this is incredibly complex and nuanced in practice. Taking an argument, distilling facts from feelings, and adjusting frames of reference until the solution is well informed and risk-balanced. That is a skill set unto itself. But one that increases the health of any organization. I’ll share that list of references and general materials in the show notes, including a link explaining each of those decision-making tools that I shared. I’m also going to include the contributor training module on decision-making in the WordPress project. It’s got excellent information. It’s part of a series of modules that I asked team reps to take and sponsored contributors. I don’t require it from anyone, but I do hope that it is useful for you. Also, speaking of useful for you, if you are just here for leadership insights, I included some hot takes after the outro music for you. It’s like an Easter egg, but I just told you about it.

\n\n\n\n

Josepha Haden Chomphosy  07:33

\n\n\n\n

And that brings us to our small list of big things! First off, WordCamp Europe is happening this we; I hope that everybody has an opportunity to attend. If you still haven’t gotten your tickets, they are free, and I think there are still a few left. I will include a link in the show notes as well. There’s going to be a little demo with Matt Mullenweg and Matias Ventura on the WordPress 5.8 release that’s coming up. And then kind of a retrospective discussion between Matt and Brian Krogsgard. I encourage you to join; I think it’s going to be very interesting. 

\n\n\n\n

There’s also WordCamp, Japan coming up June 20 through 26th. I mentioned it last time –  it has a big section of contributing and contribution time. So if you’re looking to get started, some projects are laid out, and I encourage you to take a look at that as well. 

\n\n\n\n

The new thing on this list, and I don’t know how new It is, in general, I hope it’s not too new to you, is that WordPress 5.8 release is reaching its beta one milestone on June 8th, so right in the middle of WordCamp Europe. I encourage every single theme developer, plugin developer that we have, agency owners that we have to really take a look at this release and dig into testing it. It’s a gigantic release. And I have so many questions about what will work and will not work once we get it into a broader testing area. We’ve been doing a lot of testing in the outreach program. But it’s always helpful to get people who are using WordPress daily in their jobs to really give a good solid test to the beta product to the beta package. And put it all through its paces for us. 

\n\n\n\n

So, that my friends, is your small list of big things. Thank you for tuning in today for the WordPress Briefing. I’m your host Josepha Haden Chomphosy, and I’ll see you again in a couple of weeks.

\n\n\n\n

Josepha Haden Chomphosy  10:09

\n\n\n\n

Hey there, you must be here because I told you about this totally not hidden easter egg about my hot takes on organizational health; I have three for you. And if you’ve ever worked with me, none of this will surprise you. But if you haven’t worked with me, hopefully, it kind of gives you some idea about how I approach all of this a bit differently. So, number one, critical feedback is the sign of a healthy organization. And I will never be dissuaded from that opinion. A complete lack of dissent doesn’t look like “alignment.” To me, that looks like fear. And it goes against the open source idea that many eyes make all bugs shallow. 

\n\n\n\n

Tip number two, a bit of tension is good, a bit of disagreement is good. The same thing that I say about women in tech, we’re not all the same. And if we were, then we wouldn’t need to collaborate anyway. But diversity, whether that’s the diversity of thought or of a person or of experience, just doesn’t happen without some misunderstandings. It’s how we choose to grow through those misunderstandings that make all the difference for the type of organization we are. 

\n\n\n\n

And hot take number three, changing your mind isn’t flip-flopping or hypocritical. I think that’s a sign of growth and willingness to hear others. I like to think of my embarrassment at past bad decisions – as the sore muscles of a learning brain. And I, again, probably won’t be dissuaded from that opinion. Although, you know, if I’m sticking true to changing your mind some flip-flopping or hypocritical, maybe I will, but you can always try to, to give me the counter-argument for that, and we’ll see how it goes. Thank you for joining me for my little public easter egg.

\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:\"10424\";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: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:36:\"People of WordPress: Tijana Andrejic\";s: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/2021/06/people-of-wordpress-tijana-andrejic/\";s: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, 07 Jun 2021 12: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:8:\"category\";a:4:{i:0;a:5:{s:4:\"data\";s:9:\"heropress\";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:10:\"Interviews\";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:16:\"ContributorStory\";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:\"HeroPress\";s: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=10427\";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:178:\"This month to coincide with WordCamp Europe, we feature Tijana Andrejic from Belgrade, Serbia, about her journey from fitness trainer to the opportunities in the WordPress world.\";s: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:28:\"webcommsat AbhaNonStopNewsUK\";s: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:14291:\"\n

WordPress is open source software, maintained by a global network of contributors. There are many examples of how WordPress has changed people’s lives for the better. In this monthly series, we share some of the amazing stories.

\n\n\n\n

This month to coincide with WordCamp Europe, we feature Tijana Andrejic from Belgrade, Serbia, about her journey from fitness trainer to the WordPress world, with the freelance and corporate opportunities it introduced.

\n\n\n\n
\"Tijana
\n\n\n\n

As a professional manager with a college degree in Organizational Science and a certified fitness instructor, Tijana is nothing if not driven and goal-oriented. 

\n\n\n\n

Following her time as a fitness trainer, Tijana moved to work in IT around 2016. She first explored content creation and design before focusing on SEO and becoming an independent specialist.  

\n\n\n\n

Tijana was hired as a Customer Happiness Engineer for a hosting company, where she discovered the benefits of having a team. She realized that having close working relationships with colleagues is helpful for business success and accelerates personal growth.

\n\n\n\n

Tijana hopes that by sharing her story, she can help others who are either starting their career or are moving roles. She describes the opportunities she discovered in the WordPress community as ‘a huge epiphany’, especially in the world of freelancing.

\n\n\n\n

She highlights 5 things that helped her to start a new freelancing career. Let’s dive into them.

\n\n\n\n

What motivates me?

\n\n\n\n

“Why am I doing this?” is the first question that Tijana asks herself before starting anything new. This self-review and honesty, she feels, allows her to determine her priorities. She also benchmarks options around her motivations of wanting a flexible schedule and to grow professionally. 

\n\n\n\n

She lists the reasons to make a particular choice, like being a freelancer, to help her choose the right job, pathway, or identify alternatives. 

\n\n\n\n

She recommends that others can take a similar approach. If freelancing is still the best solution after examining all their goals and motivations, Tijana believes a good next step would be to learn WordPress-related skills.

\n\n\n\n
\"WordCamp
\n\n\n\n

Develop WordPress related skills

\n\n\n\n

The next question you may ask: “Why WordPress?”

\n\n\n\n

WordPress is used by more than 40% of websites in some form and offers various roles, many of which are not developer-specific. Tijana highlights a few: 

\n\n\n\n\n\n\n\n
\"WCBGD
\n\n\n\n

Tijana emphasized: “Another reason why WordPress is great for freelancers is the strong community that exists around this content management system (CMS).” WordCamps and Meetups are a way to get useful information and meet people from a large and very diverse community and get answers to many questions straight away. 

\n\n\n\n

In the past year, these events have been primarily online. However, the contributors who run them continue to make an effort to provide an experience as close to in-person events as possible. The biggest advantage to online events is that we can attend events from across the world, even if sometimes during these difficult times, it is difficult to get enough time to deeply into this new experience. Since Tijana’s first Meetup, she has attended many WordPress community events and volunteered as a speaker.

\n\n\n\n

Plan in advance

\n\n\n\n

Becoming a freelancer takes time. For Tijana, success came with proper planning and following her plan to ‘acquire or improve relevant skills that will make you stand out in the freelance market.’ She strongly believes that learning and growing as a professional opens more business opportunities. 

\n\n\n\n

If you are considering a freelance career, she advises improving relevant skills or developing new skills related to your hobbies as ‘there is nothing better than doing what you love.’ In cases where no previous experience and knowledge can be used, she suggests choosing ‘a job that has a shorter learning curve and builds your knowledge around that.’

\n\n\n\n

Tijana started as a content creator and learned to become an SEO expert. However, she highlights many alternative paths, including starting as a web implementer and moving to train as a developer. 

\n\n\n\n

She suggests to others: “It would be a good idea to analyze the market before you jump into the learning process.” She also recommends people check the latest trends and consider the future of the skills they are developing.

\n\n\n\n

Visit the new Learn WordPress.org to see what topics are of interest to you. In this newly established resource, the WordPress community aggregates workshops to support those who want to start and improve their skills, provides lesson plans for professional WordPress trainers and helps you create personal learning to develop key skills. There is also material on helping you be part of and organize events for your local community.

\n\n\n\n

Tijana highlights that there are many places for freelancers to find clients. For example, the WordPress Community has a place where companies and individual site owners publish their job advertisements  – Jobs.WordPress.net.

\n\n\n\n

Hurray, it’s time to get a first freelancing job

\n\n\n\n

As a pragmatic person, Tijana recommends: “Save money before quitting your job to become a full-time freelancer. Alternatively, try freelancing for a few hours per week to see if you like it. Although some people do benefit when taking a risk, think twice before you take any irreversible actions.” 

\n\n\n\n

She shared some possible next steps: 

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

“By using video material, your clients will not see you like a list of skills and previous experiences, but as a real person that has these skills and experiences and that provides a certain service for them.”

\n\n\n\n

She adds: “Have a detailed strategy when choosing your first employer. Choose your first employer wisely, very wisely. I can’t emphasize enough how important this is”.

\n\n\n\n

When Tijana took her first freelancing job, she considered the following:

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

“The first job is not all about the money. Don’t get greedy on your first job. If you get good recommendations, your second job can pay two to three times more. And your third job can go up to five times more. That was my experience.”

\n\n\n\n

Take responsibility as a freelancer

\n\n\n\n

Tijana reminds us: “Freedom often comes with responsibility; individual responsibility is key when it comes to freelancing.”

\n\n\n\n

She advises others not to take a job if you can not make a deadline and have someone reliable who can help you. 

\n\n\n\n

Missing deadlines will cost your client money and affect the review the client will be willing to leave about your job, and this can have a big impact on your future opportunities or freelance jobs.

\n\n\n\n

She adds: “This can start a downward spiral for your career. However, we are all humans, and unpredictable things can happen. If for some reason you are not able to complete your work in a timely manner, let your client know immediately so they can have enough time to hire someone else”.

\n\n\n\n

Tijana emphasizes the importance of making expectations clear before accepting a job, both what the client is expecting and what you can expect from the client. 

\n\n\n\n

Lastly, she points out that if you are working from home, your friends and family should treat you the way they would if you were in an office. She advises: “Let them know about your working schedule.”

\n\n\n\n

She hopes that these basic guidelines will be useful in launching freelance careers, as they did her, even though there is no universal recipe for all.

\n\n\n\n

Tijana highlights: “It’s just important to stay focused on your goals and to be open to new opportunities.” Freelancing wasn’t the only way she could have fulfilled her goals, but it was an important part of her path, and it helped her be confident in her abilities to make the next big step in her life.

\n\n\n\n

As a freelancer, she was missing close relationships with colleagues and teamwork, which she has now found in her current firm. Her colleagues describe her as a: “walking-talking bundle of superpowers: sports medicine and fitness professional, SEO expert, blogger, designer and a kitty foster mum”.

\n\n\n\n
\"Conference
\n\n\n\n

If you are considering starting your career as a freelancer, take the courses offered at learn.wordpress.org, reach out to companies that you would be interested in working with, and remember that there are a whole host of opportunities in the WordPress project.

\n\n\n\n

The WordPress.org Teams – what they do, when and where they meet

\n\n\n\n

Learn WordPress resource – free to use to expand your knowledge and skills of using the platform and learning about the community around it.

\n\n\n\n

The 3-day WordCamp Europe 2021 online event begins on 7 June 2021. You can discover more about being a contributor in its live sessions and section on ways to contribute to WordPress.

\n\n\n\n

Contributors

\n\n\n\n

Thanks to Olga Gleckler (@oglekler), Abha Thakor (@webcommsat), Chloé Bringmann (@cbringmann), Surendra Thakor (@sthakor), and Meher Bala (@meher) for working on this story. Josepha Haden (@chanthaboune) and also to Topher DeRosia (@topher1kenobe) who created HeroPress. Thank you to Tijana Andrejic (@andtijana) for sharing her #ContributorStory

\n\n\n\n
\"HeroPress
\n\n\n\n

This post is based on an article originally published on HeroPress.com. It highlights people in the WordPress community who have overcome barriers and whose stories would otherwise go unheard.

\n\n\n\n

Meet more WordPress community members in our People of WordPress series.

\n\n\n\n

#ContributorStory #HeroPress

\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:\"10427\";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: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:40:\"A New Design is Coming to 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:76:\"https://wordpress.org/news/2021/06/a-new-design-is-coming-to-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:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Jun 2021 20:47:56 +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: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:7:\"Updates\";s: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=10418\";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:324:\"After many years of a tidy, white-space filled design on WordPress.org/news it’s time to bring new life to the way we present our content. So much has changed since this site was first created: the people who read it, the type and variety of what is published, even the way WordPress works has changed. Which […]\";s: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:7:\"Josepha\";s: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:1591:\"\n

After many years of a tidy, white-space filled design on WordPress.org/news it’s time to bring new life to the way we present our content. So much has changed since this site was first created: the people who read it, the type and variety of what is published, even the way WordPress works has changed.

\n\n\n\n

Which means it makes sense to change our theme.

\n\n\n\n

Earlier this year, Matt requested a new design from Beatriz Fialho (who also created the State of the Word slides for 2020). The design keeps a clean, white-space friendly format while incorporating a more jazzy, playful feeling with a refreshed color palette.

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

More detail on this modern exploration have been posted on make.wordpress.org/design. I encourage you to stop by and read more about the thoughts behind the coming updates; and keep an eye out for the new look here and across WordPress.org!

\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:\"10418\";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: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:32:\"The Month in WordPress: May 2021\";s: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/2021/06/the-month-in-wordpress-may-2021/\";s: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, 02 Jun 2021 18:23:11 +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:18:\"Month 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:35:\"https://wordpress.org/news/?p=10393\";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:366:\"It’s really fun to contribute to something larger than yourself. Matt Mullenweg’s words in “The Commons of Images” episode of the WP Briefing podcast exemplify the core philosophy of the WordPress project,  especially as we inch closer to the next major release (version 5.8). This post covers exciting updates from the month of May. 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:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Hari Shanker R\";s: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:11073:\"\n

It’s really fun to contribute to something larger than yourself.

\n\n\n\n

Matt Mullenweg’s words in “The Commons of Images” episode of the WP Briefing podcast exemplify the core philosophy of the WordPress project,  especially as we inch closer to the next major release (version 5.8). This post covers exciting updates from the month of May.

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

WordPress turns 18

\n\n\n\n

WordPress celebrated the 18th anniversary of its launch on May 27, 2021. To celebrate 40+ releases and WordPress’ support of 40% of the web, the team released 40 milestones to celebrate the anniversary of the software. Here’s to the next 18 and beyond! 

\n\n\n\n

CC Search joins WordPress and is renamed to Openverse

\n\n\n\n

Creative Commons Search has officially joined the WordPress project. Creative Commons Search (CC Search) is a CC0 image search engine with over 500 million openly licensed images. The search product, which is being renamed to Openverse, will eventually live on the URL: https://wordpress.org/openverse. Contributors working on CC Search will continue their work as part of a new dedicated Make team: https://make.wordpress.org/openverse. Check out “The Commons of Images” podcast episode for more information.

\n\n\n\n

WordPress 5.7.2 released

\n\n\n\n

WordPress version 5.7.2, a short-cycle security release, came out on May 13. Get the latest version directly from your WordPress dashboard or by downloading it from WordPress.org.

\n\n\n\n

Want to contribute to WordPress core? Check out the Core Contributor Handbook. Don’t forget to join the WordPress #core channel in the Make WordPress Slack and follow the Core Team blog. The Core Team hosts weekly chats on Wednesdays at 5 AM and 8 PM UTC. 

\n\n\n\n

Gutenberg versions 10.6 and 10.7 are out

\n\n\n\n

Gutenberg version 10.6 and version 10.7 were launched this month. Version 10.6 features experimental Duotone filters (which are shipping with WordPress 5.8), block pattern suggestions in placeholders, and enhancements to the table block. Version 10.7 adds a responsive navigation block, block design tools, and the ability to load block patterns from the directory.

\n\n\n\n

Want to get involved in building Gutenberg? Follow the Core Team blog, contribute to Gutenberg on GitHub, and join the #core-editor channel in the Make WordPress Slack. The latest “What’s next in Gutenberg” post offers more details on the latest updates. If you are unfamiliar with the Gutenberg plugin, learn more in this post.

\n\n\n\n

Full Site Editing updates

\n\n\n\n

Don’t miss the latest Full Site Editing (FSE) Outreach program testing call on building portfolio pages using the Template Editing feature shipping with WordPress 5.8! The deadline is June 9. The team has published a recap of the Query Quest FSE Testing call, which shares some interesting results. The answers to round two of FSE questions are also out.

\n\n\n\n

Countdown starts for WordCamp Europe 2021

\n\n\n\n

The countdown to one of the most anticipated WordPress events, WordCamp Europe 2021 (Online), has started! The full schedule of the event is now available, and the team has exciting plans! Don’t miss this event: get your tickets now before they run out!

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

Further reading

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

Have a story that we should include in the next “Month in WordPress” post? Please submit it using this form

\n\n\n\n

The following folks contributed to May’s Month in WordPress: @meher and @chaion07

\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:\"10393\";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: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:15:\"WordPress at 18\";s: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:51:\"https://wordpress.org/news/2021/05/wordpress-at-18/\";s: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, 27 May 2021 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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Meta\";s: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=10380\";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:338:\"Today marks the 18th anniversary of WordPress’ launch, a day that I fondly refer to as WordPress’ birthday, which means WordPress is 6,575 days old. To celebrate another turn around the sun, the community has had parties, we have shared data, and we have told our story. Since our last birthday we developed our 40th […]\";s: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:7:\"Josepha\";s: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:1526:\"\n

Today marks the 18th anniversary of WordPress’ launch, a day that I fondly refer to as WordPress’ birthday, which means WordPress is 6,575 days old. To celebrate another turn around the sun, the community has had parties, we have shared data, and we have told our story.

\n\n\n\n

Since our last birthday we developed our 40th release and now also support over 40% of the web. So it seems fitting that this year’s celebration should be a list of 40 milestones that have helped us get there.

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

Grab a slice of cake or festive beverage and give it a scroll!

\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:\"10380\";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:68:\"\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:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:41:\"Coloring Your Images With Duotone Filters\";s: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://wordpress.org/news/2021/05/coloring-your-images-with-duotone-filters/\";s: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, 26 May 2021 12:17: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:4:{i:0;a:5:{s:4:\"data\";s:8:\"Features\";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:13:\"Uncategorized\";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:9:\"Gutenberg\";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:\"tutorials\";s: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=10349\";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:336:\"Created by Alex Lende Beginning with WordPress 5.8, you can colorize your image and cover blocks with duotone filters! Duotone can add a pop of color to your designs and style your images to integrate well with your themes. Filters? Like on Instagram? Duotone doesn’t work in quite the same way as Instagram filters. Whereas […]\";s: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:\"enclosure\";a:2:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:58:\"https://wordpress.org/news/files/2021/05/duotone_howto.mov\";s:6:\"length\";s:8:\"10231737\";s:4:\"type\";s:15:\"video/quicktime\";}}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:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:64:\"https://wordpress.org/news/files/2021/06/waves-a60072-67ff66.mp4\";s:6:\"length\";s:8:\"31718375\";s:4:\"type\";s:9:\"video/mp4\";}}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:15:\"Chloe Bringmann\";s: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:6630:\"\n

Created by Alex Lende

\n\n\n\n

Beginning with WordPress 5.8, you can colorize your image and cover blocks with duotone filters! Duotone can add a pop of color to your designs and style your images to integrate well with your themes.

\n\n\n\n

Filters? Like on Instagram?

\n\n\n\n

Duotone doesn’t work in quite the same way as Instagram filters. Whereas Instagram filters do color adjustments (color levels/curves and sometimes a vignette for the photo editors among us), the new duotone filters entirely replace the colors of your images.

\n\n\n\n
\"\"\"\"
Photo by Charles Pragnell.
\n\n\n\n

You can think of the duotone effect as a black and white filter, but instead of the shadows being black and the highlights being white, you pick your own colors for the shadows and highlights.

\n\n\n\n

For example, a grayscale filter can be created by selecting black and white as shadow/highlight colors, and a sepia filter by choosing brown and tan.

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

Analogous colors can add a subtle effect and work well for cover backgrounds where the overlaid text still needs to stand out.

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

Much more vibrant and interesting effects can be made with complementary colors.

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

How Do I Add Duotone Filter?

\n\n\n\n

The duotone effect works best on high-contrast images, so start with an image with a lot of large dark and light areas. From the block toolbar, use the filter button and choose a preset:

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

You can also choose colors from your theme’s palette, or a custom color of your choice.

\n\n\n\n

In addition to the image block, duotone can be applied to both images and video in the cover block.

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

Will This Overwrite Images in My Media Library?

\n\n\n\n

Images and videos in your media library will remain unchanged. The duotone effect works using SVG filters and the CSS filter property, so the image or video is never modified in your library. On the one hand, this means that you can apply a filter to an image that you link to that doesn’t exist in your media library. On the other hand, this means that the filter won’t show up in RSS feeds or places that use the image URL directly.

\n\n\n\n

Can I Add Duotone Colors to Blocks or Themes That I Develop?

\n\n\n\n

The API for adding duotone colors to blocks is experimental in Gutenberg v10.6. Still, the documentation for using it in your own blocks can be found and will be updated under Supports Color in the Block Editor Handbook. Themes can add duotone presets with theme.json. More information can be found under Global Settings & Styles Presets in the Block Editor Handbook.

\n\n\n\n

Try it Out Now Using the Gutenberg plugin

\n\n\n\n

The duotone feature was released in version 10.6 of the Gutenberg plugin, so you can try it out now prior to the WordPress 5.8 release in July.

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

Thanks to @joen and @mkaz for assistance writing and reviewing this post.

\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:\"10349\";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:58:\"\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:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"WP Briefing: Episode 9: The Cartography of 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:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://wordpress.org/news/2021/05/episode-9-the-cartography-of-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, 24 May 2021 11:55:14 +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:11:\"wp-briefing\";s: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://wordpress.org/news/?post_type=podcast&p=10373\";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:159:\"In this episode, Josepha Haden Chomphosy provides a map of how to navigate WordPress teams and communication channels, along with her small list of big things.\";s: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:\"enclosure\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:3:\"url\";s:62:\"https://wordpress.org/news/files/2021/05/WP-Briefining-009.mp3\";s:6:\"length\";s:1:\"0\";s:4:\"type\";s: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:15:\"Chloe Bringmann\";s: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:12611:\"\n

In this episode, Josepha Haden Chomphosy provides a map of how to navigate WordPress teams and communication channels, along with her small list of big things.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

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

References

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

Transcript

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

Josepha Haden Chomphosy  00:10

\n\n\n\n

Hello, everyone, and welcome to the WordPress briefing, the podcast where you can catch quick explanations of some of the ideas behind the WordPress open source project and the community around it, as well as get a small list of big things coming up in the next two weeks. I’m your host, Joseph Haden Chomphosy. Here we go!

\n\n\n\n

Josepha Haden Chomphosy  00:40

\n\n\n\n

Almost every episode of this podcast, you can hear me invite you to join in the WordPress project, to contribute back, to get involved. And I’m sure that every time I say that there’s at least one of you who’s like “Yes. Challenge accepted!” And you wade in sight unseen, to immerse yourselves in the cheerful cacophony of open source at scale that is WordPress. You see before you all 158 ways you can start contributing and you are exhilarated by this lostness. This you think, is the lostness of infinite possibility. And for you, I’m really thankful. My work here today would not be possible if it weren’t for the brave souls who leap into something with hope as their primary plan and tactic. You are heroes, and I thank you very much for your service. For everyone else, I’m going to give you a quick tour of where WordPress collaborates and a little bit of how they collaborate. We’ll cover the Make network, the Making WordPress Slack, events for WordPress, and a rundown of the teams. 

\n\n\n\n

First, the Make network. The Make network of sites can be found at make.wordpress.org. That page includes information on most of our teams. Teams like Core and Design and Community. All of those teams require some technical skills since we’re a project built around a piece of software. However, some require a little more than others. You can think of this set of sites as the desk of each team in the WordPress project. It’s where they update each other, where they host discussions, where they refine proposals, and where they coordinate admin tasks. Contributors can write posts on most sites in the network as long as they follow the guidelines and best practices. And anyone with a wordpress.org profile can join in discussions in the comments. Most work on the Make network is asynchronous, and discussions stay open for a long enough time to allow anyone in the world to weigh in when they have the time. It’s how we try to remember that we are a globally-minded project. 

\n\n\n\n

The second area is the Making WordPress Slack instance. The Making WordPress Slack instance can be found at wordpress.slack.com, and it requires an account that is associated with your wordpress.org profile. Each team in the project has a channel, although not all channels in that Slack instance, represent a standalone team. You can think of this Slack instance as a set of conference rooms. It’s where contributors connect, gain a more nuanced understanding of problems that we’re trying to solve. They host synchronous meetings and also coordinate working groups.

\n\n\n\n

Josepha Haden Chomphosy  03:31

\n\n\n\n

Contributors can post in most channels, although there are a few that are restricted. We don’t have any social channels in this Slack instance, but most WordPress-ers do tend to find friends that they connect with. The work done here is synchronous, and most meetings last about an hour. There are about 35+ meetings a week, so you can basically always find someone around. 

\n\n\n\n

The last area we work is actually at WordPress events. Word Camps and WordPress meetups happen all over the world. Unless there’s a global pandemic, then they’re kind of all over the computer and at all times of day and night. You can keep track of those on wordcamp.org or on WordPress’s meetup page, which I’ve linked in the notes below. These events bring together all sorts of facets of the WordPress project. And they are an event where local WordPress communities aim to connect, inspire and educate each other. There’s always someone at these events, who knows a little bit more about WordPress than you do. If you’re headed to want to learn more about contribution, look out for any that have a contributor day or are hosting a contribution drive. These are clearly synchronous events. And when we do get back to doing them in person, they’re also tied to physical locations. When we get back to them, I encourage you to find one that’s close to you. They are incredibly valuable. 

\n\n\n\n

Okay, so that’s the map of the area. Those are the three big places where we get this stuff done. Let’s do a quick map of the teams themselves. If you’re a developer and you’re looking to work inside the technology space, work with code a bit, then your best chances for teams are Core and all of its related components. They’re like 50 components, including core editor and various other things. There’s also the Mobile team WP CLI, the Tide team, Security, our brand new team, Openverse, and Meta. Those all take a fairly high amount of code knowledge to contribute there. 

\n\n\n\n

If you’re more into design and product work, then we have a few teams for that as well. There’s of course, the Design team, but we also have Accessibility, Test, Triage, Polyglots kind of falls in there for me. But if you are a programs person, and we’re talking like programs, getting people together programs, not programs, as in programming or code. So if you’re a programs person, you’re looking more at the Community team, at the Themes team, the Plugin team, Polyglots, again, Training support, probably a number of others that have like program components in it as well.

\n\n\n\n

If you are really interested in learning more about contributor experience, which is how we build tools, and again, programs for all of the contributors who are showing up, then the teams for you will be teams like Meta and Documentation, Hosting, the Community team, the Training team, arguably any team that has a program as part of it is considered contributor experience because that’s how we help our contributors know what to do, what not to do, how to help them get onboarded, find their way, stuff like that. 

\n\n\n\n

And if you’re more in the communications area of things, we have quite a few teams there as well. We do have Marketing, of course, but also I think that Support ends up in our communications area, WordPress TV, obviously ends up in communications. But I think Training, Meta, Documentation, and arguably, maybe also Testing ends up in that space as well. 

\n\n\n\n

I realize that there are a handful of teams that I mentioned multiple times, especially Polyglots, Support, Test, Triage, Meta, Community. The reason they end up in a number of different places is that all of those teams also have a fair amount of admin and infrastructure stuff that goes into the WordPress project and community as a whole. So it touches a lot of other teams, and so they get a lot of mentions. All right. So WordPress adventurers, you now have a beginner’s map. I hope it helps, and I hope we see you around the community.

\n\n\n\n

Josepha Haden Chomphosy  07:54

\n\n\n\n

If you’re still with me, that brings us today to my small list of big things. I’ve got four things for you, and I’m excited about all of them. The first two are events actually. WordCamp Europe is coming up from June seventh through the ninth. It will include a presentation from the WordPress project co-founder, Matt Mullenweg, so I encourage you to hop over, grab a ticket to check out the rest of the sessions that are happening while you’re there. The next one is WordCamp, Japan, which is happening June 20th through the 26th. And you heard that right that is seven whole days of WordCamp. It’s a little bit of a different format than we normally take, but it’s five days actually of contribution on ten specific projects. Then that’s bookended on either side of those contribution days, with full days of sessions. There’s some in English, but it’s primarily in Japanese. But either way, I think it’s going to be a really excellent event, and I encourage everyone to check it out. 

\n\n\n\n

The rest of my list is not events. We have opened our sixth call for testing, it’s specifically looking at the template editing mode for Full Site Editing. It is an iteration on one of our earliest tests for the Full Site Editing outreach program. And so it has incorporated a lot of the feedback that we got in that test the first time around. So if you look at that test, which by the way, are all guided, if you’ve never tested anything before, don’t let this scare you. It’s really well written, it’s got a good guide on it and, and also allows for a little bit of exploration. But if you participated in the landing page test that we did early on, this is the follow-up to that. It incorporates a lot of the feedback that we got, so this is closing that feedback loop and I encourage you to stop by and participate in that test. It will be linked in the show notes and also I tweet about it a bit so you can run over there and find it also.

\n\n\n\n

 WordPress is dropping support for Internet Explorer 11. That’s happening over the summer, so around the middle of July is when that’s going to happen. If you’ve been using WordPress for a while you’ve been getting notifications. If you happen to get to WordPress with IE11, letting you know that that this particular browser is reaching the end of its life for support in general on the web, but now WordPress also is making the choice to drop support for that. And so there’s a post out on wordpress.org/news, which I will also link to in the show notes in case you have not heard about this yet. It shouldn’t have any immediate and noticeable effects on anyone who’s visiting a site that’s built using WordPress. There might be a few things in the dashboard that don’t work if you are administering a WordPress site from IE11. So there’s a lot of good information in that post. Give it a read and if you have questions, always feel free to stop by the Core chat and ask those as we go. 

\n\n\n\n

And that my friends is your smallest of big things. Thank you for tuning in today for the WordPress Briefing. I’m your host, Josepha Haden Chomphosy, and I’ll see you again in a couple of weeks!

\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:\"10373\";s: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:42:\"Requests_Utility_CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 27 Jul 2021 18:34:53 GMT\";s:12:\"content-type\";s:34:\"application/rss+xml; charset=UTF-8\";s:25:\"strict-transport-security\";s:11:\"max-age=360\";s:6:\"x-olaf\";s:3:\"⛄\";s:13:\"last-modified\";s:29:\"Tue, 20 Jul 2021 22:18:35 GMT\";s:4:\"link\";s:63:\"; rel=\"https://api.w.org/\"\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";s:14:\"20201016172007\";}','no'),(140,'_transient_timeout_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1627454093','no'),(141,'_transient_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1627410893','no'),(142,'_transient_timeout_feed_d117b5738fbd35bd8c0391cda1f2b5d9','1627454094','no'),(143,'_transient_feed_d117b5738fbd35bd8c0391cda1f2b5d9','a:4:{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:61:\"\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:13:\"\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: Colorado Becomes First State to Require State and Local Government Websites to Meet Accessibility Standards\";s: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://wptavern.com/?p=120625\";s: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:279:\"https://wptavern.com/colorado-becomes-first-state-to-require-state-and-local-government-websites-to-meet-accessibility-standards?utm_source=rss&utm_medium=rss&utm_campaign=colorado-becomes-first-state-to-require-state-and-local-government-websites-to-meet-accessibility-standards\";s: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:4046:\"

Today marks the 31st anniversary of the Americans with Disabilities Act (ADA), a civil rights law passed in 1990 that prohibits discrimination against people with physical or mental impairments that substantially limit a major life activity. The legislation continues to help disabled people gain equal access to employment, schools, transportation, government services, and public accommodations.

\n\n\n\n

In a speech at the Rose Garden today, President Joe Biden announced guidance that would extend the ADA protections to COVID-19 long haulers who experience lingering symptoms that qualify as a disability.

\n\n\n\n

“We’re bringing agencies together to make sure Americans with long COVID who have a disability have access to the rights and resources that are due under the disability law,” he said. “Which includes accommodations and services in the workplace and school, and our health care system, so they can live their lives in dignity and get the support they need as they continue to navigate these challenges.”

\n\n\n\n

The Biden administration is continuing its commitment to accessibility which was first declared publicly on WhiteHouse.gov. When Biden took office, the site relaunched on WordPress with an accessibility statement, highlighting its ongoing accessibility efforts towards conforming to the Web Content Accessibility Guidelines (WCAG) version 2.1, level AA criteria.

\n\n\n\n

Last week, Colorado became the first US state to require state and local government websites to meet accessibility standards as established by the state’s Chief Information Officer. The bill states that the accessibility standards are to be identified using “the most recent web content accessibility guidelines promulgated and published by the world wide web consortium web accessibility initiative or the international accessibility guidelines working group.

\n\n\n\n

Each state agency in Colorado is required to submit an accessibility plan to the office before July 1, 2022. The office will review the plan and work collaboratively to set an implementation methodology. State agencies are required to fully implement the plan before July 1, 2024. Any agency not in full compliance will be considered in violation of laws that prevent discrimination against individuals with a disability. The bill also makes it easier for an individual with a disability to bring a civil suit against noncompliant agencies and the agency’s $3,500 statutory fine would be payable to the plaintiff.

\n\n\n\n

“This bill will give our local governments the resources to make sure they’re complying with the ADA,” Julie Reiskin, Executive Director of the Colorado Cross-Disability Coalition, told Colorado Public Radio. “Particularly after the year we just had. People who were blind couldn’t sign up for vaccines, get information online, sign language interpreters weren’t widely available. Failing to fund this says people with disabilities don’t matter.”

\n\n\n\n

WordPress web developers responsible for Colorado state or local websites should be ready to deliver accessible websites on the timeline laid out in the bill. It applies to any department, agency, special district, or other instrumentality. All of the state agency websites are currently running on Drupal 7, but the state has more than 4,268 active local governments. Many of them use WordPress and those responsible for these local sites will need to begin the process of creating a plan to ensure they are accessible before July 1, 2024.

\";s: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 Jul 2021 03:59: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:13:\"Sarah Gooding\";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:13:\"\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:105:\"WPTavern: Block Widgets, Template Editing, Media, and More: Enabling and Disabling WordPress 5.8 Features\";s: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://wptavern.com/?p=120605\";s: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:247:\"https://wptavern.com/block-widgets-template-editing-media-and-more-enabling-and-disabling-wordpress-5-8-features?utm_source=rss&utm_medium=rss&utm_campaign=block-widgets-template-editing-media-and-more-enabling-and-disabling-wordpress-5-8-features\";s: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:6051:\"

WordPress 5.8 was one of the most feature-packed updates that the community has seen in ages. There was just about a little something for everyone. And, there were plenty of things that some users would rather live without.

\n\n\n\n

Big releases on the CMS that powers 40% of the web mean that some users will want or need to disable new features. Whether it is turning on classic widgets, bringing back infinite scrolling in the media library, or enabling the template editor, there is bound to be a solution. Some say there is a plugin for everything, so we are about to test that theory against the WordPress 5.8 features list.

\n\n\n\n

Enable the Template Editor

\n\n\n\nCreating a landing page in the template editor.\n\n\n\n

The template editor is one of the highlights of WordPress 5.8, but the majority of users cannot use it right now. Weeks before the latest update, the release team decided to make this an opt-in feature. This put the responsibility on theme authors to test their themes and enable it. However, users could be waiting for weeks, months, or even longer to see if their theme author switches the feature on.

\n\n\n\n

Not every theme will work well with the template editor. Much of this comes down to how each was designed. However, many will work just fine with the new feature even if the theme author has not yet sent out an update that enables it. The only way most users can know is to turn it on and test it themselves.

\n\n\n\n

The Template Editor plugin by Webd Ltd does just this. There are no settings; just activate and give it a test run.

\n\n\n\n

Keep in mind that results may vary. If template editing does not work out, just disable the plugin.

\n\n\n\n

WebP and Controlling Image Formats

\n\n\n\nModern Images WP settings.\n\n\n\n

WordPress 5.8 introduced support for WebP images. This image type could reduce file sizes by 25-34%, depending on the original format. While WordPress supports WebP, it does not automatically change it upon upload. However, it now has the image_editor_output_format hook that plugin authors can filter.

\n\n\n\n

The Modern Images WP plugin by Adam Silverstein builds on top of that hook. It allows users to decide how their uploaded images are formatted on a case-by-case basis via the Media Settings screen. For example, users can transform their JPEG images to WebP or leave it as the default format.

\n\n\n\n

Classic Widgets

\n\n\n\nBlock widgets screen in WordPress 5.8.\n\n\n\n

Square peg, meet round hole. That is how I have often described the block-based widgets system introduced in WordPress 5.8. It is meant as a temporary transitional phase between classic and block themes. For many, myself included, it is one best avoided.

\n\n\n\n

Block widgets simply do not work with all themes, and some people just want the traditional widgets experience. Whatever the case, there is no shortage of options:

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

For users who would still rather simply avoid all things related to blocks, the Disable Gutenberg plugin by Jeff Starr is your best bet. It is the most robust solution available, allowing site owners to fine-tune the experience.

\n\n\n\n

Enable Infinite Scrolling for the Media Library

\n\n\n\nMedia library with load more button.\n\n\n\n

WordPress 5.8 replaced infinite scrolling in the media library in favor of an Ajax-powered load more button. This change limited each “page” of images and other media to 40 items. This was a necessary change for keyboard users attempting to reach content appended to the screen and those who rely on audible feedback for navigation. Infinite loading was also a performance issue for those on slower connections.

\n\n\n\n

Accessibility and performance should always trump bells and whistles, but the WordPress development team provided a filter hook for plugin authors to tap into and reenable the feature.

\n\n\n\n

The change was slated for the WordPress 5.7 release but did not quite make the cut. David Baumwald released the Media Library Enable Infinite Scrolling plugin months ago in anticipation of it. The plugin still works great with WordPress 5.8 and is the solution for those who want to load images in the media library without clicking a button.

\n\n\n\n

The one missing plugin would let users control the number of media items displayed. For some, they are OK dropping infinite scrolling but want to bump up that 40-item limit. There is currently no way for plugin developers to hook in and change this, at least until an open ticket works its way through the system.

\n\n\n\n

Maybe there is not a plugin for everything yet, but it is close enough.

\";s: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 Jul 2021 21:11:14 +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:\"Justin Tadlock\";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:13:\"\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:84:\"WordPress Foundation: Announcement: Online do_action hackathons in India and Nigeria\";s: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:41:\"https://wordpressfoundation.org/?p=191803\";s: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://wordpressfoundation.org/2021/announcement-online-do_action-hackathons-in-india-and-nigeria/\";s: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:5036:\"

Following the success of online do_action events worldwide in 2020, the WordPress Foundation is doubling down on its mission by supporting more charity hackathons in 2021. Even as COVID-19 continues to wreck havoc around the world, our community organizers in India and Nigeria are working hard to empower local non profits by helping them build a stellar online presence. We are excited to announce do_action Karnataka 2021 and do_action Nigeria 2021!

\n\n\n\n

do_action Karnataka (India) 2021

\n\n\n\n

do_action Karnataka will be a week-long online hackathon which is being planned on: 07 – 15 Aug 2021. WordPress enthusiasts in the state of Karnataka, India are coming together to organize this event, and the efforts are led by the WordPress Bengaluru meetup group. Bengaluru, the capital city of Karnataka, has already seen a successful do_action event in 2019.

\n\n\n\nA snapshot from do_action Bengaluru 2019\n\n\n\n

The hackathon has shortlisted three Non-profits: Luv Kush Foster Home (a foster home that aims to care for animals in need), Peacespark Foundation (which aims to support the education of underprivileged children), and Vridhi Foundation (Women and children welfare). The event has also put forth its call for participants/volunteers – if you would like to support non-profits by helping them build websites, simply fill up the form on the event website. Read the participant’s guide for more details on what is expected of you when you sign up. You can also support the event by signing up as a sponsor. Please email the organizers at: karnataka@doaction.org if you are interested in sponsoring the event.

\n\n\n\n

You can find more details about the event in their website:

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

do_action Nigeria 2021

\n\n\n\n

Following the spectacular success of do_action Nigeria 2020, the vibrant WordPress community of Nigeria is back once again to organize an online do_action charity hackathon from October 25 through October 31, 2021! For the last three years, local communities in Nigeria have organized in-person do_action WordPress Charity Hackathons in several cities, where they had spent an entire day building brand new websites for a selection of local charities and NGOs. This year, for the second annual regional do_action Nigeria event, the team aims to repeat the same in an online format, for a handful of charitable organizations! 

\n\n\n\nParticipants are building websites for non-profits at do_action Lagos 2019.\n\n\n\n

do_action Nigeria has currently opened up its call for non-profits. If you represent a non-profit based out of Nigeria which does not have an online presence, please submit the application on the event website. Applications close on the 15th September 2021. You can also support the event by sponsoring the event, please visit the do_action Nigeria website for more details. You can also email the organizers at: nigeria@doaction.org if you would like to support the event.

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

Organize a do_action charity hackathon in your region

\n\n\n\n

Are you excited about these upcoming do_action events? Would you like to support your local community by organizing a do_action event for your region? Send in your application right away! You can read more about do_action in the event handbook. Don’t  hesitate to ask any questions you may have in the comments. 

\n\n\n\n

Thank you for all that you do to empower the global community through 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 Jul 2021 15:32: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:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Hari Shanker\";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:13:\"\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:128:\"Gutenberg Times: Releases Galore in WordPress open-source projects, Business Case of Gutenberg and more — Weekend Edition #179\";s: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=18564\";s: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:133:\"https://gutenbergtimes.com/releases-galore-in-wordpress-open-source-projects-business-case-of-gutenberg-and-more-weekend-edition-179/\";s: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:15404:\"

Howdy, friend!

\n\n\n\n

Today’s weekend edition is a double-feature, so to speak. I’ll skip next week because of traveling overseas. First trip in 20 months. I am so excited and also busy to get ready. I will be back into your inbox on August 7th, 2021.

\n\n\n\n

This week was an exciting week for the WordPress open-source project and its many hundreds of contributors. One release after another! Just wow! Let’s dive right in.

\n\n\n\n

Stay well and keep safe!

\n\n\n\n

Yours, ?
Birgit

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

WordPress open-source project Releases in July 2021

\n\n\n\n

WordPress 5.8

\n\n\n\n

Five hundred thirty awesome contributors worked on WordPress 5.8 and the release team let it loose on Tuesday as Tatum, after Art Tatum, a renown American jazz pianist.

\n\n\n\n

Need to catch up on all the features in this new version?

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

BuddyPress 9.0

\n\n\n\n

In time for the block-based widget editor, the BuddyPress team released their block widgets in their 9.0 version this week. The new BP Widget Blocks are Legacy Widgets, rebuilt as BP Blocks. You can also access them in the Block Editor for use in your posts or pages!

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

WordPress Pattern Directory

\n\n\n\n

The Meta Team has been collaborating with the Design team and designers in the community on the first version of the WordPress Pattern Directory. They released it officially on Tuesday night. Justin Tadlock has the skinny.

\n\n\n\n

I found a few to add to my favorites. What are your favorite block patterns? These initial 80+ patterns are also a great inspiration for theme builders who look to include themes styled patterns in their themes.

\n\n\n\n

If you are interested in creating block patterns from scratch, browse through this list of resources around block patterns.

\n\n\n\n

Gutenberg Plugin Version 11.1

\n\n\n\n

The Gutenberg Team released another version of the Gutenberg plugin, version 11.1.

\n\n\n\n

Grzegorz Ziolkowski and I discussed its many of the changes on 48th episode of the Gutenberg Changelog

\n\n\n\n

Justin Tadlock wrote: Gutenberg 11.1 Adds Drag-and-Drop Support for List View and Upgrades Block Borders

\n\n\n\n\n

 “Keeping up with Gutenberg – Index 2021” 
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. 2021 on. Updated by yours truly. The index 2020 is here

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

Theme building for Full-Site Editing

\n\n\n\n

Tammie Lister shares here theme design journey on the site Ephemeral Themes. This week, she posted “Tips for creating a theme in the site editor” and explained the importance of testing early and often. Well worth your time!

\n\n\n\n\n

Need a plugin .zip from Gutenberg’s main (trunk) branch?
Gutenberg Times provides daily build for testing and review.
Have you been using it? Hit reply and let me know.

\n\n\n\n

\"GitHub

\n\n\n\n

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

Kjell Reigstad has the weekly round-up of issues, updates and discussions around Gutenberg and Themes for you. In this post Reigstad covered the most recent PR on FSE Blocks, General theme building and Global Styles. The list of overview issues is a great start if you need to catch up on the overall concepts and ideas.

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

Carolina Nymark, team rep on the Theme Review Team, ask for your comments on the newly proposed Theme requirements for inclusion into the Theme directory on WordPress.org. You can also read them in more details on GitHub issue #12 on the Theme Requirements repository of the Theme Review team.

\n\n\n\n

Deadline for the first round of comments is July 26th, 2021.

\n\n\n\n

On July 28th, 2pm CET. The team will conduct a Zoom interview with theme authors about the requirements. Spots are already full. Hopefully, the interviews will be recorded to educate more than a few theme developers about the requirements.

\n\n\n\n

Justin Tadlock provides background and more context as to the initiative via his post Next Phase of the WordPress Theme Review Overhaul.

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

Rich Tabor published The Ultimate Guide to WordPress Block Templates in Gutenberg and provides a comprehensive tutorial on how block-based theme template fit into WordPress template hierarchy and how they help WordPress users controls their site. Tabor also provided details instructions on how to build block-based templates and leverage them in your theme.

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

In his post Universal Themes: Customization on ThemeShaper, Ben Dwyer explored about how to make Global Styles and the Customizer work together. Dwyer looks at how to use classic WordPress tools (in this case the Customizer) to customize a block theme, while saving these changes in Global Styles – making a universal theme!

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

Developing Blocks and Plugins for the block editor

\n\n\n\n

Last month, Dmitry Mayorov, Senior Front-End Engineer at 10up, published a crash-course in WordPress Block Filters. Mayorov shows you how to extend core blocks with filters. He also helps you with the decision between extending a core or build a custom block instead.

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

Michael LaRoy wrote a tutorial on creating blocks with Advanced Custom Fields. He wrote: “By providing a PHP solution to block creation, a developer already familiar with ACF can efficiently create new custom blocks without writing any JavaScript.”

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

Bill Erickson has a tutorial on how to use Inner Blocks with ACF Blocks, to expand on the usefulness of the plugin for more complex layouts.

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

Alex Standiford explained in his post “How Gutenberg Blocks Work the basic concepts of how the block-editor stores content, why HTML comments and how is it rendered.

\n\n\n\n

Business Case for Gutenberg

\n\n\n\n

Artur Grabowski, co-founder of Extendify, a Gutenberg first product start-up, was Joe Howard‘s guest on episode 153 of WPMRR Podcast: Going Big by Solving WordPress’ Biggest Roadblock. Grabowski, like many other business development people in the WordPress space, regards the missing new user onboarding experience as the biggest roadblock for even bigger growth of the WordPress ecosystem. Howard and Grabowski had an honest and nuanced conversation about the business case for Gutenberg First approach to WordPress products.

\n\n\n\n

Grabowski took a historic view to the ongoing debate about Gutenberg being the right path for WordPress. Back in 2016, while working with Adobe and its product Spark, Grabowski became aware of many innovative web building tools. They were all block-based. It is only a fairly new concept for WordPress. “There is a lot less unknown here about the end state than some people realize.” If you are interested in the WordPress product space, I recommend you follow the link and dive into the details of things.

\n\n\n\n

The future is here. It’s just not evenly distributed.

Artur Grabowski
\n\n\n\n

Incidentally, Cory Miller, Post Status partner and Jeff Meziere talked to Chris Lubkert, also co-founder of Extendify, on their Webinar for the Business Value Academy. Webinar: Mergers & Acquisitions with Chris Lubkert

\n\n\n\n

Before co-founding Extendify, Chris Lubkert and Artur Grabowski worked in the Merger & Aquisitions department of Automattic. Tammie Lister also joined Extendify as their head of design. Extendify is the new home for a series of block-editor plugins and tools: Editor Plus, Redux Framework, Editors Kit, Gutenberg Hub, Gutenberg Forms, ACF Blocks, and Block Slider to name a few.

\n\n\n\n\n

Episode #48 is now available with transcript.
Next recording August 6th, 2021

\n\n\n\n

Subscribe to the Gutenberg Changelog podcast
?️ Spotify | Google | iTunes | PocketCasts | Stitcher |
?️ Pod Bean | CastBox | Podchaser | RSS Feed 

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

Don’t want to miss the next Weekend Edition?

\n\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 Jul 2021 18:42:16 +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:13:\"\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: Next Phase of the WordPress Theme Review Overhaul: Open Meeting and Call for Feedback\";s: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://wptavern.com/?p=120311\";s: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:233:\"https://wptavern.com/next-phase-of-the-wordpress-theme-review-overhaul-open-meeting-and-call-for-feedback?utm_source=rss&utm_medium=rss&utm_campaign=next-phase-of-the-wordpress-theme-review-overhaul-open-meeting-and-call-for-feedback\";s: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:7104:\"

The WordPress.org Themes Team announced an open discussion and date for a Zoom meeting with theme authors. The team is proposing a new set of guidelines that reduces and simplifies what is currently in place. Comments on the proposal are open through July 26, and the meeting is set for July 28, 2 pm CET.

\n\n\n\n

This is the next step in an ongoing plan to revamp the review system and make it easier for the WordPress community to submit themes. It comes after months of waiting to see the results of earlier discussions unfold.

\n\n\n\n

In January, the state of the theme review system seemed to have reached a crossroads. The Themes Team, a group of gatekeepers that oversees submissions to the official WordPress.org theme directory, had been making strides in the previous couple of years. Its members had cleaned up most of the submissions backlog, but they still had a lot of work ahead to smooth out the review process. On the whole, a series of incremental improvements seemed to be working at the time, albeit slowly.

\n\n\n\n

Then, WordPress project lead Matt Mullenweg dropped a bombshell via the Post Status Slack:

\n\n\n\n

The .org theme directory is particularly bad when you compare it to any half-decent commercial theme marketing page, or the designs available on other site building services or Themeforest directories. The .org theme directory rules and update mechanism have driven out creative contributions, it’s largely crowded out by upsell motived contributions.

\n\n\n\n

It was an age-old discussion of whether the theme review guidelines were too high of a barrier for entry into the directory.

\n\n\n\n

Were WordPress users missing out on the best themes because the most innovative theme authors were not playing in the .ORG sandbox? If so, were the rules driving them away?

\n\n\n\n

No one can know if a more lenient, free-for-all atmosphere would have unleashed a mountain of creativity paralleling or besting commercial theme producers. But, perhaps if the team opened things up, it would test the theory.

\n\n\n\n

That initial post led to a series of discussions and a decision to overhaul the system. However, the Themes Team would need some help from the Meta Team to implement more automation of its grunt work, such as security and other code checks. Behind the scenes, pieces of that system have been put into place in the months since.

\n\n\n\n

Guidelines Proposal and Questions

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

Themes Team representative Carolina Nymark listed a set of 13 overarching guidelines, each with sub-guidelines of their own. The proposal significantly simplifies the current rules for submission into the directory.

\n\n\n\n

She asks that theme authors review the proposal and answer the following questions in the comments ahead of the meeting:

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

The current proposal is more expansive than the shortlist of guardrails WordPress executive director Josepha Haden Chomphosy mentioned in a post that laid out the next steps. Most of these were not meant as blockers for submission.

\n\n\n\n

“Rather we should use the list to flag themes that have/don’t have each thing and show them in results accordingly,” she wrote. “Likely exceptions to this would be proper licensing, adherence to fair use of the trademark, and a ban on child pornography or other images of anyone unable to provide consent.”

\n\n\n\n

The goal was to put more responsibility into the hands of users, granting them privileges to say whether a theme was working or not. This would take a lot of the work off the shoulders of the review team.

\n\n\n\n

Another part of the original proposal was to mark themes with “quality tags” that went above and beyond the baseline for approval. For example, internationalization (i18n) and accessibility (A11Y) are items that do not stop a theme from technically working. Instead of making these requirements, themes would merely be tagged if they met those standards.

\n\n\n\n

Presumably, there would be incentives for taking those extra steps for theme authors, such as higher search rankings, the ability to be featured, and more. It is not that i18n and A11Y standards are unimportant, but they are sometimes hindrances to first-time authors. And, they definitely fall within the range of things that end-users can dock themes for in the ratings.

\n\n\n\n

Many will take a hard stance on i18n and A11Y, but they are merely examples. A less controversial guideline might be the one that proposes that themes can only recommend plugins directly hosted on WordPress.org. Why should that be a blocker for inclusion in the directory? Some will say there is no good reason for it since themes are disallowed from installing plugins anyway. There are no technical issues with allowing such recommendations.

\n\n\n\n

It is these sorts of rules that have plagued the theme review process over the years. Often, it moves discussions into ideological territory that most users do not care about. They just want themes that work.

\n\n\n\n

Under the new proposal, moving to 100% blocks would further reduce requirements for developers. Currently, classic themes have a more extensive list of rules they must adhere to. Many of these are unnecessary for block themes, essentially cutting everything back to including a few required files. Most of this can and should be automated in the long term since they are necessary for a functioning theme.

\n\n\n\n

Right now, the 13 guidelines (and their sub-guidelines) are only a proposal. Theme authors have a voice, but they must use it. As is so often the case, decisions are made by those who show up. Far too often, the team is shouting into the void, awaiting a response that rarely comes.

\n\n\n\n

For theme authors who are invested in the future of the WordPress theme directory, that July 28 meeting is a can’t miss opportunity. Early responses via the comments on that post will also help shape the conversation.

\";s: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 Jul 2021 02:20:53 +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:\"Justin Tadlock\";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:13:\"\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: WooCommerce 5.5.2 Fixes Performance Issues Found After Forced Security Update\";s: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://wptavern.com/?p=120467\";s: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:219:\"https://wptavern.com/woocommerce-5-5-2-fixes-performance-issues-found-after-forced-security-update?utm_source=rss&utm_medium=rss&utm_campaign=woocommerce-5-5-2-fixes-performance-issues-found-after-forced-security-update\";s: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:3187:\"

WooCommerce has shipped version 5.5.2 as a follow-up to the forced security update that patched a SQL Injection vulnerability last week. The vulnerability impacted versions 3.3 to 5.5 of the WooCommerce plugin, as well as versions 2.5 to 5.5 of the WooCommerce Blocks feature plugin. The team created a patch for more than 90 releases, which was sent as a forced security update from WordPress.org, due to the potential severity of impact for millions of WooCommerce installations.

\n\n\n\n

Shortly after the automatic update rolled out, many store owners started reporting serious performance issues on both WordPress.org and GitHub. Some users reported database crashes after receiving the automatic security patch in 5.5.1. One user reported a painfully slow, endless query that was “crippling to our operations,” with similar reports on GitHub of this same query “causing the entire server to go down.”

\n\n\n\n

Those with a large number of products in their databases were impacted more frequently. “We run a fairly big DB – 17k products,” one user said. “This has been a nightmare.”

\n\n\n\n

Store owners affected by this issue had resorted to downgrading to the previous releases at WooCommerce’s recommendation. They shared temporary workarounds to disable the query while WooCommerce investigated the issue. The problem was reported so frequently that it became a high priority for the team to fix.

\n\n\n\n

A week ago, WooCommerce developer Adrian Duffell reported back that they had determined the cause was twofold:

\n\n\n\n
  1. A slow SQL query used to retrieve the products that are low in stock. This SQL has been in WooCommerce for a number of releases.
  2. A REST API request, which executes this SQL query, is called more frequently in WooCommerce 5.5 than in previous versions.
\n\n\n\n

A combination of these factors was causing the degraded server performance when users updated to WooCommerce 5.5. A fix was released in WooCommerce Admin 2.4.4 three days ago, and the fix was also added to core today in 5.5.2. Users who had put workarounds in place are advised to remove them after updating to the latest 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:\"Sat, 24 Jul 2021 01:13:07 +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:13:\"Sarah Gooding\";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:13:\"\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:82:\"WPTavern: Revisions Extended Plugin Lets Users Schedule Updates to Published Posts\";s: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://wptavern.com/?p=119935\";s: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:209:\"https://wptavern.com/revisions-extended-plugin-lets-users-schedule-updates-to-published-posts?utm_source=rss&utm_medium=rss&utm_campaign=revisions-extended-plugin-lets-users-schedule-updates-to-published-posts\";s: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:3972:\"

WordPress has long had the ability to schedule content to be published in the future, but it can only make immediate changes to posts that are already published. If you want to schedule changes to published content, a plugin is necessary. Corey McKrill, a full-time sponsored contributor to the WordPress.org Meta team, has developed a plugin, with the help of contributor Steven Dufresnethat, which is now in use on WordPress.org.

\n\n\n\n

Revisions Extended allows users to schedule revisions, or updates, for posts that have already been published. It extends WordPress’ revision system to include a “future” post status as a revision post type. McKrill recorded a gif to demonstrate the UI:

\n\n\n\n
\nhttps://cloudup.com/cOHLm_77ECk\n
\n\n\n\n

Although there are existing plugins which already perform this functionality, McKrill said they were either inadequate for WordPress.org’s needs or add extra functionality that they don’t need. Revisions Extended supports the following for any post type that supports revisions:

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

The ability to schedule updates is especially useful for ensuring that software documentation is updated when a new release is available or when API changes go into effect.

\n\n\n\n

The plugin entered the testing phase in March and is now used on multiple sites across the WordPress.org network. It makes it easier to schedule updates to lesson plans on the Learn WordPress site after a new version of WordPress is released. It also makes updates to HelpHub and DevHub more efficient.

\n\n\n\n

“If you need to schedule updates for published WordPress post/page/CPT without changing what’s already published (nor switching to draft), this is something we recently started using at the WordPress Docs Team and it’s a game changer,” contributor Milana Cap said.

\n\n\n\n

Revisions Extended is currently being developed on GitHub. McKrill said it may be be submitted to the official plugin directory someday when it is more ready for that level of exposure.

\n\n\n\n

“It’s a possibility,” McKrill said. “There’s a bit more functionality I think should be added first, namely the ability to create updates in a ‘draft or ‘pending’ status to go alongside the current ‘future’ status. Adding it to the plugin directory would allow a lot more people to try it out and give feedback, but it might also greatly increase the support and maintenance burden. So that has to be part of the calculation when deciding if/when to add it.”

\n\n\n\n

McKrill believes Revisions Extended could be a useful addition to core but there is not currently an active plan to bring it into WordPress.

\n\n\n\n

“Something like this might get traction during Gutenberg Phase 3, which will focus on collaboration tools,” McKrill said.

\n\n\n\n

For now, those who are interested to use Revisions Extended can download it and/or contribute to its development on GitHub.

\";s: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 Jul 2021 03:02: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:13:\"Sarah Gooding\";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:13:\"\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:92:\"WPTavern: Gutenberg 11.1 Adds Drag-and-Drop Support for List View and Upgrades Block Borders\";s: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://wptavern.com/?p=120386\";s: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:229:\"https://wptavern.com/gutenberg-11-1-adds-drag-and-drop-support-for-list-view-and-upgrades-block-borders?utm_source=rss&utm_medium=rss&utm_campaign=gutenberg-11-1-adds-drag-and-drop-support-for-list-view-and-upgrades-block-borders\";s: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:6299:\"

The Gutenberg plugin continues to march forward. Yesterday’s release, coming merely a day after the launch of WordPress 5.8, brings several new features and nearly three dozen bug fixes. The big-ticket items are drag-and-drop blocks in the list view and a much-needed upgrade for border support.

\n\n\n\n

Theme authors should enjoy the ability to control the Columns block’s stacking on mobile and some updated design controls for nav menus. While labeled an “enhancement,” themers should also check their designs against a breaking change to the RSS block’s updated styles.

\n\n\n\n

Drag and Drop Blocks in List View

\n\n\n\nDragging a block around in list view.\n\n\n\n

Drumroll, please. The moment we — or at least many of us — have been waiting for has finally arrived. The editor’s list view has become a powerhouse for managing long documents with many blocks. Over the past dozen or so releases, the development team has continued to tack on necessary feature after necessary feature.

\n\n\n\n

In version 11.1, users can drag and drop blocks from within the list view to order and organize content. However, users are not merely limited to moving things around within the list view itself. They can drag blocks from the list over into the content canvas and vice versa.

\n\n\n\n

I do not often use emoji, but sometimes I like to dole out a slow clap for a job well done. 👏 👏

\n\n\n\n

Border Support

\n\n\n\nAdding a dashed border to a Group block.\n\n\n\n

I have already been having a bit of fun with the new border options. Lately, I have been in the holiday spirit because I was getting ahead and buying my Christmas tree in July (when you find the good deals). This inspired me to create a coupon code block pattern, and the Group block’s border support was perfect for this.

\n\n\n\n

Gutenberg 11.1 refines the user experience for border options. The development team tightened the UI and placed the settings into logical groupings.

\n\n\n\n

Only the following core blocks have partial or complete border support:

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

Users can also define individual corners with the border-radius option in this update. I would love to see the same treatment for the top, right, bottom, and left borders in the future. I also would not mind seeing a double-border style.

\n\n\n\n

Columns Block: Stack on Mobile

\n\n\n\nAdding post metadata to an unstacked set of columns.\n\n\n\n

By default, individual Column blocks will stack on top of each other in mobile views. However, users can now disable this via the parent Columns block on a case-by-case basis. This has also been one of the missing pieces for more layout control in block themes.

\n\n\n\n

One of the primary use cases for a Columns block that does not break on mobile devices is post metadata sections that should be inline. For example, theme authors often want to align the post author, date, and comments link in a single row below the post title.

\n\n\n\n

This toggle switch sort of moves us in that direction. However, it is a stopgap solution that does not afford theme designers the flexibility they are accustomed to with CSS (this is not generally a complicated affair).

\n\n\n\n

Before block themes and the site editor are rolled into core WordPress, theme developers will need fine-tuned responsive control over the Columns block and, perhaps, some type of row/inline/flex block to go along with it.

\n\n\n\n

Theme authors who need to target the Columns block based on whether mobile stacking is disabled can use the .is-not-stacked-on-mobile class.

\n\n\n\n

Post Terms and Tag Clouds

\n\n\n\nControlling the number of tags output.\n\n\n\n

The development team has crossed one of my months-long pet peeves off the list. In past releases of the plugin, the Post Terms block (variations of Post Tags and Post Categories) has displayed a pipe (|) separator between individual items by default. It now shows a comma, followed by a space.

\n\n\n\n

Theme authors can change this in their block templates, and users can customize it from the editor. The setting is located under the “Advanced” tab in the block options sidebar.

\n\n\n\n

The Tag Cloud block got a small but much-needed upgrade. Users can now set a limit on the number of tags to display. By default, it is set to show 45 tags.

\n\n\n\n

Navigation Submenu Colors

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

The Gutenberg development team added two new color options for the Navigation block. Aside from its existing text and background colors, users can now change the text and background colors for submenu items.

\n\n\n\n

The Navigation block, while improved, still seems to be one of the trickiest pieces of the site-editing puzzle. It is trying to be the Jack of all trades, mastering few — if any — solutions. And, there is already a ticket gaining traction that would allow users to stuff a wider range of inner blocks into it.

\n\n\n\n

But, we have submenu text and background colors, which is a win. Only, they are named “Overlay Text” and “Overlay Background.” I am unsure whether it works as part of the mobile responsive menu. Gutenberg seems to have once again failed to bundle its front-end navigation JavaScript.

\";s: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 Jul 2021 02:03:50 +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:\"Justin Tadlock\";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:13:\"\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:65:\"WPTavern: Stockfish Contributors Sue ChessBase for GPL Violations\";s: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://wptavern.com/?p=120248\";s: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:175:\"https://wptavern.com/stockfish-contributors-sue-chessbase-for-gpl-violations?utm_source=rss&utm_medium=rss&utm_campaign=stockfish-contributors-sue-chessbase-for-gpl-violations\";s: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:7065:\"image credit: Sebastian Voortman\n\n\n\n

A legal reckoning is brewing in the world of open source chess engines. Stockfish, a GPL-licensed chess engine widely recognized as one of the strongest in the world, has filed a lawsuit against ChessBase. The German-based company makes and sells chess software that relies heavily on the Stockfish engine, maintains a prominent chess news site, and runs a chess server for online games.

\n\n\n\n

Stockfish’s announcement, published this week on International Chess Day, claims that ChessBase has violated the GPL by not releasing the corresponding modifications of its products that are derivative works:

\n\n\n\n

We have come to realize that ChessBase concealed from their customers Stockfish as the true origin of key parts of their products. Indeed, few customers know they obtained a modified version of Stockfish when they paid for Fat Fritz 2 or Houdini 6 – both Stockfish derivatives – and they thus have good reason to be upset. ChessBase repeatedly violated central obligations of the GPL, which ensures that the user of the software is informed of their rights. These rights are explicit in the license and include access to the corresponding sources, and the right to reproduce, modify, and distribute GPLed programs royalty-free.

\n\n\n\n

In 2020, Stockfish added support for NNUE (Efficiently Updatable Neural Networks). ChessBase’s Fat Fritz 2 product includes a neural network that the company has not released. Stockfish’s previous statement on Fat Fritz 2 identifies these net weights as a derivative:

\n\n\n\n

“This chess engine is a Stockfish derivative, with a few lines of code modification (engine name, authors list and a few parameters), and a new set of NNUE net weights considered proprietary,” current Stockfish maintainer Joost VandeVondele said. “ChessBase’s communication on Fat Fritz 2, claiming originality where there is none, has shocked our community. Furthermore, the engine Fat Fritz 2 fails to convince on independent rating lists, casting doubt on the usefulness of those modifications. Indeed, we feel that customers buying Fat Fritz 2 get very little added value for money. Claims to the contrary appear misleading.”

\n\n\n\n

The GPLv3 permits ChessBase to sell its chess engine but requires the company to make its modifications available, along with all information needed to build the program. Stockfish informed Albert Silver, author of the neural net in Fat Fritz 2, of the license violation, resulting in ChessBase releasing its C++ sources but not the net weights. “Obviously, we condemn the approach taken,” VandeVondele said.

\n\n\n\n

Stockfish contributors have been working with a certified copyright and media law attorney in Germany to enforce their license and were able to force a recall of the Fat Fritz 2 DVD and the termination of the sales of Houdini 6. They are now pursuing the Termination clause of the GPL that would shut down ChessBase’s ability to distribute Stockfish in its products.

\n\n\n\n

“Due to Chessbase’s repeated license violations, leading developers of Stockfish have terminated their GPL license with ChessBase permanently,” the Stockfish team said in the most recent statement. “However, ChessBase is ignoring the fact that they no longer have the right to distribute Stockfish, modified or unmodified, as part of their products.”

\n\n\n\n

In a post titled, “Fat Fritz 2 is a rip-off,” published earlier this year, the Stockfish, Leela Chess Zero, and Lichess teams called out the product as a Stockfish clone, repackaged with a different neural network and “minimal changes that are neither innovative nor appear to make the engine stronger.”

\n\n\n\n

“It is sad to see claims of innovation where there has been none, and claims of improvement in an engine that is weaker than its open-source origins,” the teams wrote. “It is also sad to see people appropriating the open-source work and effort of others and claiming it as their own.” 

\n\n\n\n

Lichess, a free and open-source Internet chess server run by a non-profit organization that also uses Stockfish as a critical part of its infrastructure, has published multiple posts in support of Stockfish revoking ChessBase’s license to sell derivatives of the popular engine. Lichess also publishes the source code of everything they create using Stockfish so its users can see, modify, and redistribute it.

\n\n\n\n

Even if you’re not a connoisseur of chess drama, Lichess’ most recent statement of support for Stockfish identifies why this case is important to the greater open source community:

\n\n\n\n

Free open-source software offers essential freedoms that benefit developers and users alike, and those freedoms should have been extended to users of Fat Fritz 1, 2, and Houdini. Failing that, free-software licenses are only meaningful if they are enforced, making this an important case not only for Stockfish, but also for the open source community as a whole. We are happy that the Stockfish developers have the will and means to take action.

\n\n\n\n

Stockfish’s lawsuit may become an important landmark case for proving that the GPL can be enforced. It will also be interesting to see whether the courts regard the neural network weights that ChessBase trained as a derivative work that must be released as source code in order to be in compliance with the GPL.

\n\n\n\n

Stockfish has gained broad support from the project’s maintainers and developers who have stated they “have the evidence, the financial means, and the determination to bring this lawsuit to a successful end.” The team has promised to update their statement once the case makes progress.

\";s: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 Jul 2021 04:30: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:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Sarah Gooding\";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:13:\"\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:\"WPTavern: The WordPress.org Block Pattern Directory Is Now Live\";s: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://wptavern.com/?p=120264\";s: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:165:\"https://wptavern.com/the-wordpress-org-block-pattern-directory-now-live?utm_source=rss&utm_medium=rss&utm_campaign=the-wordpress-org-block-pattern-directory-now-live\";s: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:4519:\"

Yesterday, the WordPress pattern directory went live to the world as the development team behind it put the finishing touches on the project. It will work similarly to the theme and plugin directories in time. Along with WordPress 5.8, users can browse and use block patterns directly from the post editor.

\n\n\n\n

Officially, the pattern directory shipped as part of the WordPress 5.8 release. The Tavern did not include this in its coverage yesterday because it was still listed as an “in-progress” project until several hours later. The team was still wrapping up several issues yesterday for the initial launch.

\n\n\n\nPattern directory homepage.\n\n\n\n

The current patterns in the directory are a curated list of designs from over 20 volunteers. The team called upon the community in early June, and it answered. To date, there are over 70 patterns across six categories to choose from:

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

Thus far, translations are complete for 12 languages. Others are at varying completion percentages, but there are dozens more that are incomplete. This would be an easy entry point for anyone who wants to give something back to the WordPress project.

\n\n\n\n

I had a hand in building the About Me Cards and Team Social Cards patterns, but I cannot take all the credit. Kjell Reigstad and Mel Choyce-Dwan took my initial ideas and ran with them. It was a rewarding experience just peaking a bit into how other designers work. I only wish I could have put in more time during the initial submission window.

\n\n\n\nAbout Me Columns (left) and Team Social Cards (right) patterns\n\n\n\n

I look forward to submitting more patterns when submissions are open to everyone, the project’s next phase.

\n\n\n\n

“Work is now beginning on the next milestone, which will enable patterns to be submitted by anyone, similar to the Theme and Plugin Directories,” wrote Kelly Choyce-Dwan in the announcement.

\n\n\n\n

I am excited to see where the overall community can take the directory. Submissions have been limited and held to a specific aesthetic that will not be universally appealing. It may be hard for some users to look beyond centuries-old artwork, flowers, and the current fling with offset columns to see how a specific layout would work for their site. For others, it is perfect.

\n\n\n\n

Even I struggle with this. I can see the structure beneath the default images and text, but I am not inspired to use most of the patterns because they simply do not fit my personal style. When selecting one, I want to feel like the designer was building something just for me. I suspect that will play a part in winning over more users and bringing some holdouts over to the block system.

\n\n\n\nGallery-categorized patterns.\n\n\n\n

One limitation of the pattern directory is the imagery. Now that services like Unsplash, Pexels, and Pixabay have put limitations on their licensing, it can be tough to find photos and artwork that meet the guidelines for submissions to WordPress.org. However, that could open up a bit with the potential integration of Openverse, formerly the Creative Commons search engine. Making it easier for pattern designers to find the perfect images to build out their visions would improve the overall quality.

\n\n\n\n

What will eventually make the pattern directory a worthwhile venture is when the best designers from the WordPress ecosystem step up and begin competing. I eagerly await a breadth of authors putting their own stylistic spin on submissions.

\";s: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 Jul 2021 22:37:53 +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:\"Justin Tadlock\";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:13:\"\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:40:\"HeroPress: More Than Just Joost’s Wife\";s: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:56:\"https://heropress.com/?post_type=heropress-essays&p=3965\";s: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://heropress.com/essays/more-than-just-joosts-wife/#utm_source=rss&utm_medium=rss&utm_campaign=more-than-just-joosts-wife\";s: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:18682:\"\"Pull

Dit essay is ook beschikbaar in het Nederlands.

\n

My WordPress story is closely entangled with my Love story. Joost de Valk – my husband- led me to WordPress and the WordPress Community. And, while I love being Joost’s wife, I am much more than just Joost’s wife. My story on how I found my way in WordPress is also a story on how I stepped out of the shadows of Joost, without stepping away from (or on top of the toes of) my husband. It’s a story about my journey and my struggles in growing towards a leadership role. And, it’s a story about the wonderful inviting and inclusive world that WordPress is. But, there’s always room for some improvement!

\n

The early days – Marieke before Yoast

\n

I am extremely competitive and ambitious. Always have been. I was a highly competitive teenager, wanting to be the best at everything. I was president of the student council, editor of the school newspaper, and participated in debate clubs (that’s where I met Joost). After graduating high school (cum laude), I began studying Sociology and Communication Science. I obtained two bachelors and did a Masters in Sociology (all of it cum laude). And then, I decided to do my PhD in Criminology. I wrote my own research proposal and got funding to do my PhD. I was pretty keen on a scientific career. One year after I started my PhD I got pregnant…

\n

Joost and I were shocked by my pregnancy, but almost immediately decided that we wanted to have this baby. Joost quit his job and found a job closer to our home. This was his first job as an SEO consultant, a rather significant career move :-). He was working 4 days a week, as was I, which allowed us both to spend time and take care of our son Tycho. Joost and I got married.

\n

The pregnancy changed me. And it changed how people looked at me.

\n

All of a sudden, I wasn’t the high potential anymore. I was the girl that got pregnant during her PhD. I tried my best to prove that I could still do the same amount of work. But with a baby that was hardly sleeping and work piling up, I collapsed. I was diagnosed with burnout and depression. But I got better. I finished my PhD at a slightly slower pace. We decided that I wanted another baby and gave birth to our daughter Wende. I started to work as a teacher and a researcher. We had another son, Ravi. Yes, we really like children ;-). And Joost started his own business- Yoast.

\n

Joost was heavily involved in WordPress. His plugins had over one million users. He was speaking at all these conferences in the WordPress world and the SEO world. He was also doing consultancy. I helped him with his planning. I brainstormed with him about new business ideas. As of 2012, Joost started hiring people to work for him. He started working from an office. I helped with hiring. I did some research at Yoast. I liked being at the office. Thinking of ways to get a fun company culture.

\n

Finding my place at Yoast

\n

In 2013, I decided to join Yoast. I was having more fun at the Yoast offices than in my job as a teacher. It was a good decision, although it meant leaving my scientific career behind. That was hard. I started writing at Yoast. Writing about writing, about content SEO. I wrote an eBook, I launched Yoast Academy and I came up with the idea for a readability analysis within Yoast SEO. We had our fourth child, another son -Borre-, in 2015. At the same time I was doing a lot of work in setting up an inclusive and fun company culture for Yoast, inspired heavily by the WordPress community.

\n

At Yoast, I really was Joost’s wife for the first time. I felt that not everyone would take me seriously. People outside of Yoast often assumed that I was Joost’s assistant or his secretary. That never happened to me before. I struggled with those prejudices. My resume clearly showed that I had some brains, but some people did not seem to look beyond my marital status. People working within Yoast sometimes questioned my expertise too. Within Yoast, over time, that really changed. As I worked at Yoast for a longer period of time, people started to judge me on my track record within the company.

\n

Taking a leadership role

\n

In 2015, I started talking at conferences. At Yoast, I got my own team. I became a manager. A leader. That was new for me, uncomfortable even. Giving feedback, explaining to people what needed improvement or what I wanted different, that is challenging for me. Even today. I have a strong desire for people to like me. And, I was really insecure about my own skills. Who was I to tell people how to do their work? In my first years as a manager, I was super nervous whenever I needed to correct people. And, I often did not do that well. I was afraid of the confrontation, would postpone it and eventually addressed the issue when it had become this whole big thing. For everyone who worked with me and recognizes this: I am so sorry.

\n

Over time, I got more comfortable and less insecure. I was more confident that I knew what I was doing.

\n

Working hard and studying a lot pays off. I became an SEO expert. I felt comfortable talking about it on stage. As I became an expert in SEO and in marketing, it became more natural to give feedback or to ask coworkers to do something for me.

\n

I did a lot of the architecture of our company culture, our benefits and our HR plans.The WordPress community is well known for its diversity, for the openness and the acceptance. These are things that are really important within Yoast as well. Yoast breathes WordPress. Our core values are inspired by the WordPress community.

\n

Becoming CEO in a big WordPress organisation

\n

\"MariekeIn 2019, I became CEO of Yoast. Once again, I was faced with the prejudice of only getting the job because I am Joost’s wife. That threw me off my game a little bit. I felt like I had proved myself having enough capabilities to fill the role of CEO. I had founded Yoast Academy, written so many blog posts, talked at so many big conferences. I had designed the entire company culture and came up with a few really important product ideas. I didn’t feel like an imposter myself. I was shocked to find out that other people did see me as a puppet on a string.

\n

When I began as CEO, I was the only woman in our board and in our management team. I wanted to change that. I promised myself that I would change that. I began an inhouse coaching program for women that wanted to grow. And, we did our best to recruit more senior women. I succeeded.

\n

Nowadays, half of our management team consists of women. The board of directors (5 people) now consists of 3 men and 2 women. We are getting there.

\n

Also, we were trying our best to hire more people from traditionally underrepresented groups. We have a lot to learn and improve there. We launched a diversity fund to sponsor diversity at WordCamps.

\n

For me, having half of our management-team consisting of women seemed like something all companies are heading towards. However, being a CEO of a rather large WordPress company taught me otherwise. The number of women I encounter on my many partnership calls is really, really low. It often makes me uncomfortable being the only woman on a call yet again.

\n

WordPress is the most inviting, equal community I know. It’s the best! I know a lot of companies care about diversity. But that level of diversity is not yet reached at the level of management teams in WordPress companies. And that matters! Female leadership within WordPress means more than having women talk at WordCamps. We need to have more female leaders in WordPress companies as well. So, that’s my new mission ;-)!

\n

What a place to work!

\n

I love working in the WordPress world. I love working at Yoast. Most of the time, I enjoy being a leader, although I also struggle with the role. There’s a lot to gain in terms of diversity (and that’s more than gender of course) in the boardrooms of WordPress companies. And, although I struggle with being judged by my marital status, I wouldn’t dream of ever changing that. Joost has been a terrific ally in helping me with my struggles. We run Yoast together and we run our family together. I wouldn’t want it any other way.

\n

Meer dan de vrouw van Joost.

\n

Mijn WordPress verhaal en mijn liefdesleven lopen flink in elkaar over. Joost de Valk- mijn man- is degene die mij kennis heeft laten maken met WordPress en de WordPress community. Ik hou ontzettend veel van mijn man en ik vind het fantastisch om met hem getrouwd te zijn. Tegelijkertijd ben ik meer dan alleen maar de vrouw van Joost. Mijn WordPress verhaal is een verhaal van hoe ik uit de schaduw van Joost ben gestapt, zonder op zijn tenen te gaan staan of hem te moeten verlaten. Het is ook een verhaal over de moeite die het me heeft gekost om een leiderschapsrol te pakken. En het is een verhaal over hoe mooi open en inclusief de WordPress community is. Maar dat er tegelijkertijd nog werk aan de winkel is.

\n

Het begin: Marieke voor Yoast

\n

Ik wil altijd de beste zijn. Ik ben super ambitieus. Dat is altijd al zo geweest. Als middelbare scholier was ik voorzitter van de leerlingenraad, eindredacteur van de schoolkrant en deed ik mee aan het Europees Jongeren Parlement (daar heb ik Joost ook ontmoet). Na het behalen van mijn VWO diploma (cum laude) heb ik Sociologie en Communicatiewetenschappen gestudeerd. Ik heb beide bachelors gedaan en de master in Sociologie (alles cum laude). Daarna wilde ik gaan promoveren in de Criminologie. Mijn onderzoeksvoorstel kreeg NWO-subsidie, mijn wetenschappelijke carrière stond in de startblokken. En toen raakte ik zwanger…

\n

Dat was flink schrikken voor Joost en voor mij. Toch besloten we eigenlijk direct dat we heel graag een kindje wilden. Joost zocht een nieuwe baan dichterbij huis. Een baan als SEO consultant, wat achteraf een belangrijke carrière-switch is gebleken. Joost en ik gingen beiden 4 dagen in de week werken en zorgden gezamenlijk voor onze zoon Tycho. Een paar jaar later trouwden we.

\n

De zwangerschap en het moederschap was heftig voor mij. Ik veranderde erdoor.

\n

Maar het veranderde ook heel erg hoe andere mensen mij zagen, hoe andere mensen mij benaderden. Ik was ineens dat meisje dat ongepland zwanger was geworden. Ik was niet meer dat meisje met die hoge cijfers die altijd alles ‘volgens het boekje’ deed. Ik werkte keihard om niet onder te doen voor mijn collega’s en probeerde hetzelfde werktempo aan te houden als voordat ik moeder werd. Dat lukte niet. Tycho sliep heel slecht en alle veranderingen braken me op. Ik kreeg een depressie en een flinke burnout. Maar ik herstelde daarvan. Ik besloot het wat rustiger aan te doen. Maar ik maakte mijn proefschrift wel af en Joost en ik kregen nog een kindje, een dochter, Wende. Ik ben op het HBO gaan werken als onderzoeker en docent. Daarna kregen we nog een kindje, onze zoon Ravi (ja, wij houden dus erg van kinderen). Joost begon voor zichzelf en startte Yoast.

\n

Joost was enorm betrokken bij WordPress. Al vanaf 2006. Zijn plugins hadden ondertussen miljoenen gebruikers. Hij sprak op allerlei conferenties, zowel in de WordPress wereld, maar ook in de SEO wereld, waar hij inmiddels een grote naam was geworden. Hij deed een heleboel consultancy werk. Ik hielp hem. Ik hielp hem met zijn planning, ik brainstormde met hem over nieuwe business ideeën. Vanaf 2012 begon Joost ook mensen aan te nemen en vanuit een kantoor te werken. Ik hielp met de sollicitaties, ik deed ook wat onderzoek bij Yoast en schreef wat posts. Ik vond het heel erg leuk om op kantoor te zijn en om de bedrijfscultuur vorm te geven.

\n

Mijn plek bij Yoast vinden

\n

Het werken bij Yoast was eigenlijk leuker dan mijn werk op het HBO. In 2013 besloot ik om echt fulltime bij Yoast te gaan werken. Dat betekende dus dat ik mijn wetenschappelijke carrière afbrak. Dat was best heftig. Maar bij Yoast ging ik iets doen wat ik altijd heel erg leuk heb gevonden. Ik begon met schrijven. Ik ging schrijven over ‘hoe moet je nou eigenlijk schrijven’ en deed veel onderzoek naar content SEO. Ik schreef een eBook, ik lanceerde Yoast Academy en ik bedacht de readability analyse voor Yoast SEO. Joost en ik kregen nog een zoon, Borre, in 2015. Bij Yoast was ik ook druk met het opzetten van een leuke en inclusieve bedrijfscultuur. Daarvoor is de WordPress community een enorme inspiratiebron geweest.

\n

Toen ik bij Yoast kwam werken, werd ik voor het eerst ook echt ‘Joost zijn vrouw’. Voor mijn gevoel werd ik niet door iedereen serieus genomen. Mensen buiten Yoast gingen er ontzettend vaak vanuit dat ik Joost zijn assistent was, of zijn secretaresse. Dat was me nooit eerder overkomen. Ik vond dat mega ingewikkeld. Uit mijn CV blijkt toch dat ik capaciteiten heb? Sommige mensen lijken niet verder te kijken dan mijn burgerlijke staat. Ook binnen Yoast overkwam het me dat mensen twijfelden aan mijn expertise. Dat is echt wel veranderd in de afgelopen tijd. Nu ik langer bij Yoast werk, beoordelen mensen me gewoon op het werk dat ik bij Yoast heb gedaan.

\n

Een leiderschapsrol

\n

Gaandeweg kreeg ik een grotere rol. Ik ging spreken op conferenties en ik werd manager van een eigen marketing team. Ik werd een leider. Dat vond ik spannend. Feedback geven of vertellen tegen mensen wat anders moet is iets wat ik ingewikkeld vind. Nog steeds. Ik wil gewoon graag dat mensen me aardig vinden. En, ik was lange tijd heel erg onzeker over mijn eigen capaciteiten. Wie was ik om mensen te vertellen hoe ze hun werk moesten doen? In die eerste jaren als een manager was ik echt heel onzeker als ik mensen feedback moet geven. Ik vond confrontaties vaak te moeilijk en ging die dan uit de weg. Dan liet ik dingen uit de hand lopen en was het heel groot geworden voordat ik de feedback besprak. Voor iedereen die met me heeft gewerkt en zich daarin herkent: super sorry!

\n

Ik wende aan mijn leiderschapsrol en werd gaandeweg veel minder onzeker. Ik kreeg vertrouwen in mezelf, in mijn eigen capaciteiten.

\n

Door mijn deep dive in content SEO ben ik ook echt een SEO expert geworden. Ik werd gevraagd voor allerlei talks. Daarmee werd het ook veel natuurlijker voor mij om feedback aan collega’s te geven.

\n

Een groot deel van de bedrijfscultuur, onze arbeidsvoorwaarden en onze HR plannen komen uit mijn koker. De dingen die belangrijk zijn voor WordPress: diversiteit, openheid en inclusiviteit zijn ook de dingen die belangrijk zijn voor ons bedrijf. Yoast ademt WordPress. Onze core values zijn heel erg geinspireerd op de waarden in de WordPress community.

\n

CEO worden in een groot WordPress bedrijf

\n

En toen in 2019 werd ik CEO van Yoast. Wederom waren er mensen die zich afvroegen of ik die baan alleen had gekregen omdat ik Joost zijn vrouw ben. Dat kwetste me destijds. Ik had het idee dat ik me nu echt wel bewezen had. Ik had Yoast Academy gelanceerd, zoveel blog posts geschreven en op ontelbare conferenties gesproken. Ik ben verantwoordelijk voor de gehele bedrijfscultuur en ik heb ook een heel aantal belangrijke productideeën geïnitieerd. Ik had zelf geeneens meer last van een imposter syndroom en toch hadden mensen het idee dat ik een soort marionet van Joost zou zijn. Dat was even een tegenvaller.

\n

Maargoed, ik begon aan de taak als CEO en had al snel een extra missie te pakken. Toen ik CEO werd in 2019 was ik de enige vrouw in de directie van Yoast en ook de enige vrouw is ons MT. Ik wilde dat veranderen. Ik begon een inhouse coachingsprogramma voor vrouwen bij Yoast – het empowerwoment-project. Maar we gingen ook beter ons best doen in ons sollicitatieproces. En dat heeft echt gewerkt! We hebben nu 2 vrouwen in onze directie en de helft van ons MT bestaat uit vrouwen. Er is meer werk aan de winkel wat betreft het aannemen van mensen uit traditioneel onder gepresenteerde groepen. Daar moeten we bij Yoast nog meer mee aan de slag! In de WordPress wereld hebben we het diversity fund geïnitieerd wat voor nog meer diversiteit op WordCamps en in de WordPress community moet zorgen.

\n

Ik was altijd onder de indruk dat het belang dat wij bij Yoast aan diversiteit hangen iets is dat alle WordPress bedrijven onderschrijven. En misschien is dat wel zo, maar dat zie ik niet terug in de meeste boardrooms. Nu ik CEO van een groot WordPress bedrijf ben, merk ik dat ik heel vaak de enige vrouw in de vergadering ben. Dat vind ik nog steeds lastig. Ik voel me erg ‘anders’.

\n

WordPress is zo’n ontzettende open, uitnodigende cultuur om in te werken voor vrouwen. En ik weet dat heel veel bedrijven het belang van diversiteit zien en belangrijk vinden. Leiderschap door vrouwen betekent echter wel meer dan alleen veel vrouwelijke sprekers op WordCamps. We hebben die directeuren ook nodig! Dus dat wordt nu mijn nieuwe missie :-).

\n

Zo’n gave plek om te werken!

\n

Het is zo gaaf om met WordPress te werken! Het is geweldig om met de WordPress mensen te werken! En het is echt fantastisch om bij Yoast te werken! En ik vind het meestal ook heel leuk om een leider in de WordPress wereld te zijn, hoewel ik het ook vaak moeilijk vindt. Er is nog veel te verbeteren in die boardrooms van al die grote WordPress bedrijven en daar wordt ik enthousiast van!

\n

En, hoewel het getrouwd zijn met Joost soms iets is waar ik soms wat mee worstel, zou ik het echt niet anders willen. Joost is mijn bondgenoot en heeft mij zo geholpen met alle stappen in mijn carrière. Samen met hem run ik Yoast, samen met hem run ik ons fantastische gezin. I wouldn’t want it any other way!

\n

The post More Than Just Joost’s Wife appeared first on HeroPress.

\";s: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 Jul 2021 06:00: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:19:\"Marieke van de Rakt\";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:13:\"\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:64:\"WPTavern: BuddyPress 9.0.0 Transforms Legacy Widgets Into Blocks\";s: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://wptavern.com/?p=120209\";s: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:173:\"https://wptavern.com/buddypress-9-0-0-transforms-legacy-widgets-into-blocks?utm_source=rss&utm_medium=rss&utm_campaign=buddypress-9-0-0-transforms-legacy-widgets-into-blocks\";s: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:2305:\"

BuddyPress 9.0 was released one day before WordPress 5.8. As all major BuddyPress releases are named for pizza joints, this one has been dubbed “Mico” in honor of Pizzéria Chez Mico, a small restaurant on the French riviera, where you just may find capers and anchovies on your pie.

\n\n\n\n

This short release cycle was laser focused on getting all of the BP component widgets ready to be used as blocks to ensure that they work with WordPress 5.8’s new block widgets experience. BuddyPress 9.0 introduces 10 new BuddyPress blocks to be used in place of the legacy widgets.

\n\n\n\n
New BuddyPress Blocks in 9.0.0
\n\n\n\n

This release also enables users to transform legacy widgets into a block with two clicks, while preserving all of their settings and automatically importing them. The availability of these new blocks is an important milestone that BP contributing developer David Cavins said is “the first step toward the progressive retirement” of BuddyPress widgets.

\n\n\n\n

All this functionality that used to only be available in widgetized areas can now easily be used as blocks inside content areas. The blocks vastly expand BuddyPress’ flexibility, enabling site owners to do many things that used to require custom development. Designing unique landing pages for communities is now easier than it has ever been.

\n\n\n\n

“My coworkers are pretty excited to have these new BP blocks,” Cavins said during a chat in the BuddyPress development channel on Slack. “For instance, with the login form block, you can pretty well replace login form customization plugins and put the form in your landing page with ease.”

\n\n\n\n

The release also includes a new Sitewide Notices endpoint for the BP REST API that will enable site admins to create, edit, or delete notices and let users fetch the active notice. For a full list of the improvements and bug fixes included in 9.0.0, check out the release notes in the codex.

\";s: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 Jul 2021 02:56: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:13:\"Sarah Gooding\";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:13:\"\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:\"WPTavern: WordPress 5.8 “Tatum” Introduces Block Widgets, Duotone Media Filters, New Emoji Support, and More\";s: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://wptavern.com/?p=120192\";s: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:251:\"https://wptavern.com/wordpress-5-8-tatum-introduces-block-widgets-duotone-media-filters-new-emoji-support-and-more?utm_source=rss&utm_medium=rss&utm_campaign=wordpress-5-8-tatum-introduces-block-widgets-duotone-media-filters-new-emoji-support-and-more\";s: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:7541:\"

WordPress 5.8 “Tatum,” named in honor of jazz pianist Art Tatum, landed earlier today. It is the second major release in 2021. It includes duotone media filters, block-based widgets, theme-related blocks, template editing, and theme JSON file support.

\n\n\n\n

The release also ships tons of other notable features, such as support for new Emoji and an Update URI field for plugin authors to offer custom updates. The latest update also drops support for IE11, saying goodbye to the era of Internet Explorer.

\n\n\n\n

Matt Mullenweg led the WordPress 5.8 release, which saw contributions from 530 volunteers. The entire release team closed 320 Trac tickets and over 1,500 GitHub pull requests.

\n\n\n\n

The official release squad members were:

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

Duotone and Media Improvements

\n\n\n\nDuotone filter + gradient overlay on a Cover block.
\n\n\n\n

The Image and Cover blocks received a new duotone feature. It is a filter that allows users to lay two colors over their media, creating unique effects. The colors overwrite the shadows and highlights of the image or video. Users can use WordPress’s defaults, theme-defined colors, or create their own mixes.

\n\n\n\n

WordPress 5.8 also introduces several upgrades to the media library. The development team replaced infinite scrolling with a “load more” button, improving the experience for screen-reader and keyboard users. End-users can now copy media file URLs from the Add New media screen.

\n\n\n\n

The latest release offers WebP image format support for the first time, and developers have a new image_editor_output_format filter hook to fine-tune the experience.

\n\n\n\n

Block Widgets

\n\n\n\nWidgets screen with a Gallery block in the Footer sidebar.
\n\n\n\n

For the first time since the block system launched with WordPress 5.0 nearly three years ago, blocks are no longer confined to the post content editor. Users can now use them in any available sidebar. This is a stepping stone in the Full Site Editing experience that will eventually lead to block themes and the site editor. In the meantime, it is a way for users to begin trying out blocks in new ways.

\n\n\n\n

However, those experiences may vary, depending on the active theme. Some older projects may not hold up well with this system. Authors may need to opt-out of the feature. Users who do not want to use block widgets or run into trouble can install the Classic Widgets plugin.

\n\n\n\n

Query Loop and Theme Blocks

\n\n\n\nQuery Loop pattern inserter: carousel view.\n\n\n\n

The power to create lists, grids, and other designs around a group of posts has long been solely in the wheelhouse of developers. Users had to rely on their themes or specialized plugins to make such changes. This is no longer the case. Users will have the power to create almost any type of post list they want from now and far into the future with the Query Loop block.

\n\n\n\n

And, this is just the beginning. WordPress 5.8’s new block is merely an introduction to what will eventually be one of the foundational elements to Full Site Editing in the coming years. As more and more blocks continue to mature, users and theme authors will continue building all sorts of layouts from this simple starting point.

\n\n\n\n

The Query Loop block will also be the first introduction of the pattern inserter to many users. This is a new tool that allows users to scroll through block patterns, choose one, and customize. In the future, it will become a more prominent feature.

\n\n\n\n

Inserting lists of posts is just scratching the surface. WordPress 5.8 ships a new “Theme” category of blocks for users to play around with. Many of these are primarily for use within the Query Loop, such as the Post* blocks. However, others like Site Title and Site Tagline will be handy in the template editor.

\n\n\n\n

Template Editor

\n\n\n\nCreating a custom landing page template.\n\n\n\n

The new template editor provides users with a method of creating reusable templates. And, they do not need a 100% block theme to do it. The feature opens an overlay from the content-editing screen for users to customize their page header, footer, and everything in between.

\n\n\n\n

This is essentially a scaled-back version of the upcoming site editor. With 5.8, its primary use case will be for creating custom landing pages. It is a lot of power in the hands of the average user. And, it helps WordPress inch closer to its goal of not only democratizing publishing but also design.

\n\n\n\n

The downside to this feature? It is currently opt-in. The active theme must declare support for users to access it. Many will not see it until developers submit updates.

\n\n\n\n

Developers: theme.json Support

\n\n\n\nReal-world theme.json file.\n\n\n\n

WordPress 5.8 lets theme authors begin tapping into global styles and settings configuration via the new theme.json system. In the coming years, this will be the foundation of how themers build their projects.

\n\n\n\n

Essentially, the new file is a bridge between themes, WordPress, and users, a standardized method of communication that puts them all on the same page. Theme authors define which settings it supports and its default styles. WordPress reflects these via the editing interfaces and on the front end. And, users can overwrite them on a per-block basis or, eventually, through the Global Styles feature.

\n\n\n\n

Right now, it is an opt-in feature that both traditional and block themes can utilize. Themers will want to start moving their projects over to using it now that WordPress 5.8 is on the doorstep.

\";s: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, 20 Jul 2021 19:56: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:14:\"Justin Tadlock\";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:13:\"\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:39:\"WordPress.org blog: WordPress 5.8 Tatum\";s: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=10976\";s: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/2021/07/tatum/\";s: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:48364:\"
\n\n\n\n\"\"\n\n\n\n

Introducing 5.8 “Tatum”, our latest and greatest release now available for download or update in your dashboard. Named in honor of Art Tatum, the legendary Jazz pianist. His formidable technique and willingness to push boundaries inspired musicians and changed what people thought could be done. 

\n\n\n\n

So fire up your music service of choice and enjoy Tatum’s famous recordings of ‘Tea for Two’, ‘Tiger Rag’, ‘Begin the Beguine’, and ‘Night and Day’ as you read about what the latest WordPress version brings to you.

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

Three Essential Powerhouses

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

Manage Widgets with Blocks

\n\n\n\n

After months of hard work, the power of blocks has come to both the Block Widgets Editor and the Customizer. Now you can add blocks both in widget areas across your site and with live preview through the Customizer. This opens up new possibilities to create content: from no-code mini layouts to the vast library of core and third-party blocks. For our developers, you can find more details in the Widgets dev note.

\n\n\n\n

Display Posts with New Blocks and Patterns

\n\n\n\n

The Query Loop Block makes it possible to display posts based on specified parameters; like a PHP loop without the code. Easily display posts from a specific category, to do things like create a portfolio or a page full of your favorite recipes. Think of it as a more complex and powerful Latest Posts Block! Plus, pattern suggestions make it easier than ever to create a list of posts with the design you want.

\n\n\n\n

Edit the Templates Around Posts

\n\n\n\n

You can use the familiar block editor to edit templates that hold your content—simply activate a block theme or a theme that has opted in for this feature. Switch from editing your posts to editing your pages and back again, all while using a familiar block editor. There are more than 20 new blocks available within compatible themes. Read more about this feature and how to experiment with it in the release notes.

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

Three Workflow Helpers

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

Overview of the Page Structure

\n\n\n\n

Sometimes you need a simple landing page, but sometimes you need something a little more robust. As blocks increase, patterns emerge, and content creation gets easier, new solutions are needed to make complex content easy to navigate. List View is the best way to jump between layers of content and nested blocks. Since the List View gives you an overview of all the blocks in your content, you can now navigate quickly to the precise block you need. Ready to focus completely on your content? Toggle it on or off to suit your workflow.

\n\n\n\n

Suggested Patterns for Blocks

\n\n\n\n

Starting in this release the Pattern Transformations tool will suggest block patterns based on the block you are using. Right now, you can give it a try in the Query Block and Social Icon Block. As more patterns are added, you will be able to get inspiration for how to style your site without ever leaving the editor!

\n\n\n\n

Style and Colorize Images

\n\n\n\n

Colorize your image and cover blocks with duotone filters! Duotone can add a pop of color to your designs and style your images (or videos in the cover block) to integrate well with your themes. You can think of the duotone effect as a black and white filter, but instead of the shadows being black and the highlights being white, you pick your own colors for the shadows and highlights. There’s more to learn about how it works in the documentation.

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

For Developers to Explore

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

Theme.json

\n\n\n\n

Introducing the Global Styles and Global Settings APIs: control the editor settings, available customization tools, and style blocks using a theme.json file in the active theme. This configuration file enables or disables features and sets default styles for both a website and blocks. If you build themes, you can experiment with this early iteration of a useful new feature. For more about what is currently available and how it works, check out this dev note.

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

Dropping support for IE11

\n\n\n\n

Support for Internet Explorer 11 has been dropped as of this release. This means you may have issues managing your site that will not be fixed in the future. If you are currently using IE11, it is strongly recommended that you switch to a more modern browser.

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

Adding support for WebP

\n\n\n\n

WebP is a modern image format that provides improved lossless and lossy compression for images on the web. WebP images are around 30% smaller on average than their JPEG or PNG equivalents, resulting in sites that are faster and use less bandwidth.

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

Adding Additional Block Supports

\n\n\n\n

Expanding on previously implemented block supports in WordPress 5.6 and 5.7, WordPress 5.8 introduces several new block support flags and new options to customize your registered blocks. More information is available in the block supports dev note.

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

Check the Field Guide for more!

\n\n\n\n

Check out the latest version of the WordPress Field Guide. It highlights developer notes for each change you may want to be aware of: WordPress 5.8 Field Guide.

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

The Squad

\n\n\n\n

The WordPress 5.8 release was led by Matt Mullenweg, and supported by this highly enthusiastic release squad:

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

This release is the reflection of the hard work of 530 generous volunteer contributors. Collaboration occurred on over 320 tickets on Trac and over 1,500 pull requests on GitHub.

\n\n\n\n5ubliminal, 99w, 9primus, Aaron Jorbin, aaronrobertshaw, abderrahman, Abha Thakor, Abhijit Rakas, achbed, Adam Silverstein, Adam Zielinski, Addie, aduth, Ahmed Chaion, Ahmed Saeed, Ajit Bohra, Alain Schlesser, Alan Jacob Mathew, Albert Juhé Lluveras, Alejandro Perez, Alex Concha, Alex Kirk, Alex Lende, alexstine, allilevine, Amanda Riu, amarinediary, Amogh Harish, Andrea Fercia, Andrei Draganescu, Andrew Ozz, Andrew Serong, Andrey \"Rarst\" Savchenko, André Maneiro, Andy Fragen, Andy Peatling, Andy Skelton, Ankit Gade, annalamprou, Anne McCarthy, anotherdave, anotia, Anthony Burchell, Anton Lukin, Anton Vanyukov, Antonis Lilis, apedog, apokalyptik, arena, Argyris Margaritis, Ari Stathopoulos, ariskataoka, arkrs, Armand, ArnaudBan, Arthur Chu, Arun a11n, Aspexi, atjn, Aurooba Ahmed, Austin Matzko, Ayesh Karunaratne, Barry, bartkalisz, Beatriz Fialho, Bego Mario Garde, Benachi, Benoit Chantre, Bernhard Reiter, Bernhard Reiter, Birgir Erlendsson (birgire), Birgit Pauli-Haack, Blobfolio, bmcculley, Bob Linthorst, bobbingwide, Bogdan Preda, bonger, Boone Gorges, Brad Touesnard, Brandon Kraft, Brecht, Brent Swisher, Brett Shumaker, Bruno Ribaric, Burhan Nasir, Cameron Jones, Cameron Voell, Carike, Carl Alexander, carlomanf, carlosgprim, Carolina Nymark, Casey Milne, Cenay Nailor, Ceyhun Ozugur, Chandra M, Chetan Prajapati, Chintan hingrajiya, Chip Snyder, Chloé Bringmann, Chouby, Chris Van Patten, chriscct7, Christopher Churchill, Chuck Reynolds, Clayton Collie, Code Amp, CodePoet, Colin Stewart, Collins Agbonghama, Copons, Corey McKrill, Cory Hughart, Courtney Engle Robertson, crazycoders, critterverse, czapla, Dávid Szabó, Daisy Olsen, damonganto, Dan Farrow, Daniel Llewellyn, Daniel Richards, danieldudzic, Daniele Scasciafratte, Danny, David Aguilera, David Anderson, David Artiss, David Baumwald, David Biňovec, David Calhoun, David Herrera, David Kryzaniak, David Smith, dekervit, devfle, devrekli, dhruvkb, Diane Co, dingdang, Dion Hulse, djbu, Dominik Schilling, donmhico, Donna Peplinskie, Doug Wollison, dpik, dragongate, Dreb Bits, Drew Jaynes, eatsleepcode, Ebonie Butler, Edi Amin, Eileen Violini, Ella van Durpe, Emil E, Emilio Martinez, Emmanuel Hesry, empatogen, Enej Bajgorić, Enrique Sánchez, epiqueras, Erik, etoledom, Fabian Kägy, Fabian Pimminger, Fabian Todt, Felipe Elia, Felix Arntz, felixbaumgaertner, Femy Praseeth, fijisunshine, Florian Brinkmann, Florian TIAR, Francesca Marano, Frank Bueltge, frosso1 (a11n), fullofcaffeine, gab81, Gal Baras, Garrett Hyder, Gary Jones, Gary Pendergast, GeekPress, Gennady Kovshenin, Geoffrey, George Hotelling, George Mamadashvili, George Stephanis, geriux, glendaviesnz, Grant M. Kinney, Greg Ziółkowski, gRegor Morrill, Héctor Prieto, Hannah Malcolm, happiryu, Hareesh, Haz, hedgefield, Helen Hou-Sandí, Herm Martini, Herre Groen, herrvigg, htmgarcia, Ian Dunn, ianmjones, icopydoc, Ipstenu (Mika Epstein), Isabel Brison, Ivaylo Draganov, Ivete Tecedor, J.D. Grimes, Jack Lenox, Jake Spurlock, James Bonham, James Koster, James Nylen, James Richards, James Rosado, jamil95, janak Kaneriya, janw.oostendorp, Jason Johnston, Javier Arce, Jayman Pandya, Jean-Baptiste Audras, Jeff Ong, Jeff Paul, Jeffrey Pearce, Jenny Dupuy, Jeremy Felt, Jeremy Herve, Jeremy Yip, jeremy80, JeroenReumkens, jeryj, jillebehm, Jip Moors, Joe Bailey-Roberts, Joe Dolson, Joe McGill, Joen Asmussen, Johan Jonk Stenström, Johannes Kinast, John Blackbourn, John Godley, John James Jacoby, John Sundberg, Jon Brown, Jon Surrell, Jonathan Desrosiers, Jonny Harris, Jono Alderson, Joost de Valk, Jorge Bernal, Jorge Costa, Josee Wouters, Josepha Haden, JoshuaDoshua, Joy, jsnajdr, Juan Aldasoro, Juliette Reinders Folmer, Julio Potier, Justin Ahinon, k3nsai, kaavyaiyer, kafleg, Kai Hao, Kalpesh Akabari, Kapil Paul, Karolina Vyskocilova, Kelly Choyce-Dwan, Kelly Hoffman, Kerry Liu, Kishan Jasani, Kite, KittMedia, Kjell Reigstad, klevyke, Knut Sparhell, Koen Van den Wijngaert, Konstantin Obenland, Konstantinos Xenos, Kyle Nel, lakrisgubben, Lara Schenck, Larissa Murillo, Laxman Prajapati, LewisCowles, lifeforceinst, linux4me2, Lovro Hrust, Luis Sacristán, Luiz Araújo, Luke Carbis, m0ze, Maedah Batool, Maggie Cabrera, Maja Benke, Marco Ciampini, Marcus Kazmierczak, Marek Hrabe, Marin Atanasov, Marius L. J., Mark Jaquith, Mark Parnell, Marko Heijnen, Marty Helmick, Mary Baum, Mary Job, marylauc, Mathieu Viet, Matias Ventura, Matt Chowning, Matt Mullenweg, Maxime Pertici, mblach, Meet Makadia, Meher Bala, Mel Choyce-Dwan, meloniq, mensmaximus, Michael Babker, Michael Beckwith, Miguel Fonseca, Mikael Korpela, Mike Hansen, Mike Jolley, Mike Martel, Mike Schroder, Mikhail Kobzarev, Milan Dinić, Milana Cap, mkdgs, mmuyskens, mmxxi, Mohamed El Amine DADDOU, Mohammed Faragallah, Monika Rao, Morten Rand-Hendriksen, mrjoeldean, Mukesh Panchal, munyagu, Mustafa Uysal, mweichert, Nadir Seghir, Nalini Thakor, Naoki Ohashi, Naoko Takano, Nazrul Islam Nayan, nderambure, net, nicegamer7, Nicholas Garofalo, Nick Halsey, Nik Tsekouras, ninanmnm, Noah Allen, nvartolomei, oguzkocer, olafklejnstrupjensen, Olga Bulat, Olga Gleckler, Otshelnik-Fm, oxyrealm, Ozh, Paal Joachim Romdahl, palmiak, Panagiotis Angelidis, Paragon Initiative Enterprises, Pascal Birchler, Pascal Knecht, Pat, patricklindsay, Paul Biron, Paul Bunkham, Paul Schreiber, Paul Stonier, Paul Von Schrottky, Paulo Pinto, Pavel I, Paweł, Peter Wilson, Petter Walbø Johnsgård, phena109, Philip Jackson, Pierre SYLVESTRE, Pinar, Piotrek Boniu, Pippin Williamson, Pirate Dunbar, Pramod Jodhani, Presskopp, presstoke, pwallner, pyronaur, Q, Rachel Baker, rafhun, Rajesh Radadiya, Rami Yushuvaev, Ramon Ahnert, ramonopoly, Ravi Vaghela, ravipatel, Refael Iliaguyev, Rene Hermenau, retrofox, reynhartono, Riad Benguella, Rian Rietveld, Rima Prajapati, Rinat, Rnaby, robdxw, Robert Anderson, Robert Chapin, Roger Theriault, rogerlos, roo2, Roy, Russell Aaron, Ryan McCue, Ryan Welcher, Sören Wrede, Saša, Sabrina Zeidan, Sahil Mepani, Samir Shah, Samuel Wood (Otto), Sandip Mondal, Sanne van der Meulen, sarahricker, sarayourfriend, SASAPIYO, satrancali, savicmarko1985, Scott Lesovic, Scott Reilly, scottconnerly, scruffian, Sean Fisher, Sean Hayes, sebbb, Sergey Biryukov, Sergey Yakimov, SergioEstevao, sergiomdgomes, shaunandrews, Shital Marakana, silb3r, Siobhan, SirStuey, snapfractalpop, spikeuk1, spytzo, stacimc, Stanislav Khromov, Stefan Hüsges, stefanjoebstl, Stefano Minoia, Stefanos Togoulidis, Stephen Bernhardt, Stephen Edgar, Steve Dufresne, Steve Grunwell, Steve Henty, Steven Word, Subrata Sarkar, Sumaiya Siddika, Suman, Sumit Singh, Sumit Singh, sushmak, Sybre Waaijer, Synchro, szaqal21, tamlyn, Tammie Lister, Tellyworth, Terri Ann, Tetsuaki Hamano, them.es, Thomas Kräftner, Thomas Patrick Levy, Thomas Vitale, tigertech, Timothy Jacobs, TimoTijhof, Tkama, tmatsuur, tmdk, Tobias Zimpel, TobiasBg, tobifjellner (Tor-Bjorn Fjellner), Tom J Nowell, Toni Viemerö, Tonya Mork, Toro_Unit (Hiroshi Urabe), torres126, Torsten Landsiedel, Toru Miki, Travis Northcutt, trejder, Udit Desai, Ulrich, Utsav tilava, Vicente Canales, Vipul Chandel, Vlad T, wangql, WebDragon, Wendy Chen, Weston Ruter, William Earnhardt, williampatton, Xavi Ivars, Xristopher Anderton, Y_Kolev, Yan Sern, Yui, yuliyan, Yvette Sonneveld, Zack Krida, Zebulan Stanphill, zkancs, and 孙锡源.\n\n\n\n

\n\n\n\n

In addition to these contributors, many thanks to all of the community volunteers who contribute in the support forums. They answer questions from people across the world, whether they are using WordPress for the first time, or they’ve been around since the first release all the way back in 2003. These releases are as successful as they are because of their efforts!

\n\n\n\n

Finally, thanks to all the community translators who help make WordPress available in over 200 languages for every release. 80 languages have translated 80% or more WordPress 5.8 and our community translators are hard at work ensuring more languages are on their way. If contributing to WordPress appeals to you, it’s easy to learn more. Check out Make WordPress or the core development blog.

\";s: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, 20 Jul 2021 17:43: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: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:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:13:\"\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:41:\"WPTavern: Makers of TinyMCE Acquire Setka\";s: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://wptavern.com/?p=120116\";s: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:127:\"https://wptavern.com/makers-of-tinymce-acquire-setka?utm_source=rss&utm_medium=rss&utm_campaign=makers-of-tinymce-acquire-setka\";s: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:3035:\"

Tiny, the makers of TinyMCE, have acquired Setka, a content design and editing platform, for an undisclosed amount. Founders Katya Bazilevskaya, Alexey Ametov, Vasily Esmanov, Roman Khudonogov, and the rest of the Setka team will join Tiny as part of the agreement.

\n\n\n\n

Tiny has been tracking an increasing developer demand for rich text editing components, citing 8.1 million TinyMCE downloads (up 77%) and 106 million downloads of rich text editing components in general from NPM in the last 12 months (up 53% YoY).

\n\n\n\n

“TinyMCE has typically focused on the average business user or knowledge worker; someone familiar with Microsoft Word or Google Docs,” Tiny founder and CEO Andrew Roberts said. 

\n\n\n\n

“With Setka, we can now serve professional content creators and designers who want more advanced options.”

\n\n\n\n

TinyMCE is used by millions of WordPress users, most visibly in the Classic Editor plugin as well as the Advanced Editor Tools plugin, previously known as TinyMCE Advanced. Advanced Editor Tools adds a “Classic Paragraph” block to the block editor that gives access to the TinyMCE editor with configurable rows and buttons. It provides a stepping stone for those who are not quite ready to switch to the block editor.

\n\n\n\n

While Tiny is a widely recognized leader in rich text editing, Setka allows for more interactive content creation with design capabilities for arranging text, images, and other visual elements. It allows users to create and save post templates and easily reuse design elements throughout the WYSIWYG design process. Tiny plans to merge TinyMCE and Setka for a combined platform that will offer more than either product alone.

\n\n\n\n

“Modern day content creators are much more ambitious, and Setka allows us to meet more demanding use cases,” Roberts said. 

\n\n\n\n

“Over time, we envisage a combined editor platform that is both easy to use and powerful.”

\n\n\n\n

Setka currently offers integrations for several CMS’s, document management tools, and CRMs, including WordPress, Drupal, Magento, Ghost, Microsoft Sharepoint, and Hubspot. The Setka WordPress plugin integrates with the block editor and provides its own content block that can work together with other blocks on the page.

\n\n\n\n

Former CEO Kate Bazilevskaya, who will be assuming the role of director of business development and partnerships at Tiny, said the team intends to focus on the CMS space.

\n\n\n\n

“Through an array of integrations, we hope to make this visual building technology more accessible to businesses who already have a CMS in place, yet want more power in their editing tools,” Bazilevskaya said.

\";s: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, 20 Jul 2021 04:39:28 +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:13:\"Sarah Gooding\";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:13:\"\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:39:\"BuddyPress: BuddyPress 9.0.0 “Mico”\";s: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://buddypress.org/?p=320072\";s: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:53:\"https://buddypress.org/2021/07/buddypress-9-0-0-mico/\";s: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:7905:\"

9.0.0 is named after Mico’s Pizza in Sanary, a little town on the french riviera. The story of Mico starts in 1968 when Liliane and Jean-Louis bought a restaurant looking like a swiss chalet. “Mico” is the nickname customers gave to Liliane (Jean-Louis’s wife) because of the remarkable outfits and big colorful hats she used to wear. Their son Romuald, twelve years after following in his parents’ footsteps, continues the tradition and offers us a moment of happiness around a table that is always excellent, friendly and so uncommon, just like BuddyPress 9.0.0 \"?\"

\n\n\n\n
\"Mico\'s@imath took this picture 3 years ago \"?\"
\n\n\n\n\n\n\n\n
\n\n\n\n

You can get it clicking on the above button, downloading it from the WordPress.org plugin directory, installing or updating it directly from your WordPress dashboard or checking it out from our Subversion repository.

\n\n\n\n

\"?\" If you’re upgrading from a previous version of BuddyPress, it’s always a good idea to back-up your WordPress database and files ahead of time.

\n\n\n\n

You can review all of the changes in this 9.0.0 release in the release notes. Below are the key features we believe you are going to enjoy most!

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

It’s all about Widget Blocks!

\n\n\n\n\"Illustration\n\n\n\n

WordPress 5.8 is right around the corner and debuts a brand new way to manage widgets: the Widget Block Editor. With BuddyPress 9.0.0, we have introduced 10 new BuddyPress Blocks, so you can continue to use your favorite BP Widgets with the new WP Block approach.

\n\n\n\n

The new BP Widget Blocks are simply Legacy Widgets we’ve rebuilt as BP Blocks, which means you can also access them in the Block Editor for use in your posts or pages!

\n\n\n\n\"Illustration\n\n\n\n

PS: Have you noticed that the icons for BuddyPress Blocks are now bright red?

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

Convert a Legacy Widget into a Block Widget in two clicks \"?\"

\n\n\n\n\"Illustration\n\n\n\n

As shown in the image above, it’s very easy to transform a Widget into a Block. Your existing Widget settings will automagically be imported into your shiny, new BP Block.

\n\n\n\n

NB: Creating a BP Block for each existing BP Legacy Widget marks the first step toward the progressive retirement of these tiny pieces of BuddyPress content.

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

The BP REST API: Improved endpoints and a new one!

\n\n\n\n

This BuddyPress release was built in a short time frame to be ready for the release of WordPress 5.8.

\n\n\n\n

While doing the work on BP Widget Blocks, we’ve also manipulated many of our REST API endpoints and took this opportunity to improve several of them. We’re also introducing a new Sitewide Notices endpoint to allow site admins to create, edit, or delete notices and let all of your users fetch the active notice.

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

Under the hood

\n\n\n\n

9.0.0 comes with fewer changes than most of our releases but includes fixes for issues which appeared in 8.0.0 and BP Nouveau Template Pack improvements.

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

Many thanks to the 24 contributors who helped us build & translate BuddyPress 9.0.0

\n\n\n\n

Boone B Gorges (boonebgorges), Brajesh Singh (sbrajesh), David Cavins (dcavins), Dan Caragea (dancaragea), Ian Barnes (ianbarnes), Javier Esteban (nobnob), John James Jacoby (johnjamesjacoby), leahkoerper, marbaque, Mark Robson (markscottrobson), Mathieu Viet (imath), modemlooper, Nifty (niftythree), Paul Gibbs (DJPaul), Pieterjan Deneys (nekojonez), r-a-y, Renato Alves (espellcaste), shanebp, shawfactor, Slava Abakumov (slaffik), Stephen Edgar (netweb), tamarazambrana, TKServer, Varun Dubey (vapvarun).

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

Your feedback

\n\n\n\n

How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors. Please share your feedback about this version of BuddyPress on our website.

\n\n\n\n

Thank you for using BuddyPress!

\";s: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, 19 Jul 2021 22:45: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:12:\"David Cavins\";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:13:\"\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: WPBeginner Releases a Comment Moderator Solution Often Needed for Large Teams\";s: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://wptavern.com/?p=120195\";s: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:219:\"https://wptavern.com/wpbeginner-releases-a-comment-moderator-solution-often-needed-for-large-teams?utm_source=rss&utm_medium=rss&utm_campaign=wpbeginner-releases-a-comment-moderator-solution-often-needed-for-large-teams\";s: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:3607:\"

Last week, WPBeginner released Comment Moderation Role to the WordPress plugin directory. The plugin does a simple job of creating a single user role that can only moderate comments.

\n\n\n\n

The most common use case for such a role — named “WPB Comment Moderator” in the admin — is for larger teams that need a separate user account to tackle moderation. WordPress has no built-in way of handling this. For one of the most extendable CMSs on the planet, this is one area where it has always fallen short.

\n\n\n\n

It almost feels like yesterday. In reality, it was 10 years ago when I stumbled upon a (then) year-old ticket for a bug that was a breaking point in a project I was working on. I needed to grant specific users on a WordPress site permission to moderate comments but not allow them to edit other things in the admin.

\n\n\n\n

Some of you may be thinking that the moderate_comments capability should allow that. And, you would be correct in thinking that it should. However, that is not how it works at all. For users to edit comments, they must also be able to edit posts. It is a bit of a convoluted mess if you do a deep dive into the core code only to find hard-coded permissions checks that are impossible to override without rewriting large chunks of code.

\n\n\n\n

I would run into the same issue multiple times in the years since. I have built a few hacky, one-off workarounds for specific projects, but they were never ideal. And, I was never interested in maintaining a plugin that solved this problem because I knew it had the potential to be a bit of a pain.

\n\n\n\n

While I have seen a few other solutions, each fundamentally flawed, I am happy to see someone tackling this without exposing permissions issues.

\n\n\n\n

WPBeginner’s Comment Moderation Role plugin works in the same way that I think such a plugin should work, at least with the roadblocks that WordPress currently puts in the way.

\n\n\n\n

Site administrators can add WPB Comment Moderator to any account via the user management admin screen. The process is the same as adding or removing any other role in WordPress.

\n\n\n\nGranting the WPB Comment Moderator role to a user.\n\n\n\n

After adding the role to a user, that user can access the Comments admin screen. They can also see both the Dashboard and their own Profile in the admin. Except in the cases where they have another role added via a different plugin, they will not have permission to access other screens.

\n\n\n\nComments admin screen for user with the WPB Comment Moderator role\n\n\n\n

Because of core WordPress’s hard-coded permissions check, the plugin must create its own comments management screen. Most users will not notice this because it is all under the hood. The plugin only adds it when necessary, and it does not look or function any differently than the default screen. It is just a lot of code work and duplication to fix an 11-year-old reported bug in WordPress.

\n\n\n\n

Until the foundational issue is addressed in core WordPress, Comment Moderation Role is the best plugin for this job. After extensive testing, I can now say that it is now nestled firmly in my toolbox, ready to pull out when needed for a project.

\";s: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, 19 Jul 2021 22:13: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:14:\"Justin Tadlock\";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:13:\"\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:\"Gutenberg Times: List of WordPress Themes for Full-Site Editing and Resources\";s: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=18502\";s: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://gutenbergtimes.com/list-of-wordpress-themes-for-full-site-editing-and-resources/\";s: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:8014:\"

A few people ask about WordPress Themes that are already working with the Full-Site Editing system and the new Site Editor. Here is a List as of July 2021.

\n\n\n\n

The Themes are all built while Full-Site Editing is under active development and many features are experimental. Do not use in production or live site. Expect the themes to be wonky at times, until developers have a chance to update the themes for new Gutenberg plugin version. In short: There will be Dragons! ?

\n\n\n\n

Oh, yes. You also need to install the Gutenberg plugin.

\n\n\n\n

For the lastest updates pre-release, use the Gutenberg Nightly

\n\n\n\n

Themes for Full-Site Editing in the WordPress repository

\n\n\n\n

I only used TT1 Blocks Theme for FSE-Testing. I rely mostly on Justin Tadlock or others to provide more insights on the various themes. The articles are linked with the theme header.

\n\n\n\n

Armando by Carolyn Newmark

\n\n\n\n

Armando WordPress Theme Provides Insight Into the Current State of Full Site Editing

\n\n\n\n

Block Base by Automattic

\n\n\n\n

Using Blockbase for a theme experiment (ThemeShaper) by Kjell Reigstad

\n\n\n\n

The Automattic Theme Team Announces Blockbase, Its New Block Parent Theme (WordPress Tavern) by Justin Tadlock

\n\n\n\n

Blockbase: A parent theme for block themes (ThemeShaper) by Ben Dwyer

\n\n\n\n

Child themes of Block Base

\n\n\n\n

Mayland Blocks by Automattic

\n\n\n\n

Seedlet Blocks by Automattic

\n\n\n\n

Automattic Launches Mayland Blocks, Its Second FSE Theme on WordPress.org

\n\n\n\n

Block-Based Bosco by Fränk Klein

\n\n\n\n

What I Learned Building a Full-Site Editing Theme

\n\n\n\n

Implementing Global Styles in Block-Based Bosco

\n\n\n\n

Block-Based Bosco, Second Full-Site Editing Theme Lands in the WordPress Directory

\n\n\n\n

Clove by Anariel Design

\n\n\n\n

Clove: A Showcase of Block Patterns by Anariel Design (WPTavern)

\n\n\n\n

Hansen by Uxl Themes

\n\n\n\n

Build a Full WordPress Site via Block Patterns With the Hansen Theme

\n\n\n\n

Naledi by Anariel Design

\n\n\n\n

Anariel Design Launches Naledi, a Block-Based WordPress Theme (WordPress Tavern)

\n\n\n\n

by Ari Stathopoulos

\n\n\n\n

Exploring Full-Site Editing With the Q WordPress Theme

\n\n\n\n

Rick by WPEntire

\n\n\n\n

TT1 Blocks by WordPress contributors

\n\n\n\n

This is the FSE sibling of the Twenty-Twenty-One Theme

\n\n\n\n

If you find any theme missing in this list, let me know.

\n\n\n\n

WordPress Themes team resources

\n\n\n\n

The themes team share their experiments on GitHub. Some listed themes made it as stand-alone theme into the repository listed above.

\n\n\n\n

Contributors also included a script to generate a theme with the minimum necessary to build your own block theme: php new-empty-theme.php.

\n\n\n\n

Every other week, the themes team meets discussion Block-based themes: 2nd and 4th Tuesday at 15:00 UTC (11am EDT) wp-slack channel #themereview

\n\n\n\n

Every week, the Themes team published a roundup post about newly merged changes, and what is discussed on the GitHub repo for Gutenberg. The post also has a few overview issues so you can always catch up on what is in the works. Follow the #gutenberg-themes-roundup tag on the make-blog/themes

\n\n\n\n

Anne McCarthy, developer relations and program manage for the FSE outreach published a post on ThemeShaper with more Resources for block theme development

\n\n\n\n

DevNotes for WordPress 5.8

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

Developer Documentation

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

Courses and Tutorials

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

Updated 7/21 to add Rich Tabor’s article on Block Templates

\";s: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, 19 Jul 2021 12: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: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:18;a:6:{s:4:\"data\";s:13:\"\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:\"WordPress.org blog: WP Briefing: Episode 13: Cherishing WordPress Diversity\";s: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://wordpress.org/news/?post_type=podcast&p=10949\";s: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://wordpress.org/news/2021/07/episode-13-cherishing-wordpress-diversity/\";s: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:14888:\"

In this episode, Josepha Haden Chomphosy discusses the importance of Diversity, Equity, and Inclusion to the fabric of the WordPress project and how we can move from a place of welcoming it to cherishing it.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

\n\n\n\n

Editor: Dustin Hartzler

\n\n\n\n

Logo: Beatriz Fialho

\n\n\n\n

Production: Chloé Bringmann

\n\n\n\n

Song: Fearless First by Kevin MacLeod

\n\n\n\n

References

\n\n\n\n

Diverse Speaker Training Workshop

\n\n\n\n

A WordPress Dinner Party

\n\n\n\n

The Burden of Proof

\n\n\n\n

Leadership At Any Level

\n\n\n\n

Building a Culture of Safety

\n\n\n\n

Leadership Basics: Ethics in Communication

\n\n\n\n

WordPress 5.6

\n\n\n\n

Bonus resource: How to Be a WordPress Ally

\n\n\n\n

Transcript

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

Josepha Haden Chomphosy  00:10

\n\n\n\n

Hello, everyone, and welcome to the WordPress Briefing, the podcast where you can catch quick explanations of the ideas behind the WordPress open source project, some insight into the community that supports it, and get a small list of big things coming up in the next two weeks. I’m your host, Josepha Haden Chomphosy. And before we get started, I have to be honest with you all, this episode and the next one have made me feel really anxious. This one is about Diversity, Equity, and Inclusion in open source, and especially in WordPress. And the next one is about accessibility in WordPress. And I feel like there’s just so much to do, and we don’t do enough, but we do what we can. And still, we will never be done with that work. And if you don’t know what I mean by Diversity, Equity, and Inclusion, you can kind of think of it this way. Diversity is bringing in people with different viewpoints and lived experiences. Equity is making sure everyone has what they need to get a fair chance of success, which is different from equality. And Inclusion is making sure that the environment is built to not only tolerate diverse groups but to celebrate them as well. So remember this as you listen to what I have to say here. We are never where we want to be in either of those spaces. But that shouldn’t stop us from looking at the things we have done to get us in the right direction. All right. Here we go.

\n\n\n\n

Josepha Haden Chomphosy  01:54

\n\n\n\n

I say a lot that we are a project that serves a majority collection of minority voices. WordPress is global in reach and open source in nature. And you would assume that what allows the software to be used by anyone would also enable it to be built by anyone. After all, your location doesn’t matter, and who employs you also doesn’t matter. And your relative social standing certainly shouldn’t matter. As long as you can communicate with the others contributing to the project, there should be no obstacle to your participation. The mission of the WordPress project is to democratize publishing, right? It’s to get the ability to have a website tap into passive income on your web presence. I mean, the job is to level the playing field for everyone. However, it’s my experience that bringing in new voices takes a lot of proactive work on behalf of leaders and contributors. It’s not enough to say, “Hey, I’m having a party,” you also have to say, “I’m having a party, and I’d like you to be there.” It’s not enough to think people will make their own space at this table. You have to make sure that you have table settings for everyone. And even beyond the basics of directing people to you. 

\n\n\n\n

Josepha Haden Chomphosy  03:12

\n\n\n\n

And on toward the next steps, you have to be honest about the fact that open source contribution requires a fair amount of privilege. By privilege, I mean the luxury of extra time or extra funding or just an understanding employer. WordPress supports 41% of the web. I think it’s 42% of the web right now. But less than 1% of people who use WordPress show up to help maintain it. And that 1% that does show up skews toward people who already have a pretty high level of representation and technology. And so, when you look at who is building it versus who is using it, it doesn’t always match. And since what we build so frequently reflects who we are, sometimes what we build doesn’t match the needs of the people who are using what we have.

\n\n\n\n

Josepha Haden Chomphosy  04:10

\n\n\n\n

So what has WordPress done to be proactive on the question of Diversity, Equity, and Inclusion? There are quite a few unseen things that have gone into this over the years and a few pretty visible things. This is a very long list. And it has a whole lot of just reference material. And so the show notes today will come in handy for people, and there will be just a laundry list of linked resources for everyone. 

\n\n\n\n

Josepha Haden Chomphosy  04:39

\n\n\n\n

But the first thing that WordPress has done is that we have accepted the burden of proof. I’m going to share a post about this in the show notes. That means we accept that it’s not the job of underrepresented folks to figure out if they are welcome. It’s up to us to make it clear that they are. So, there are three big little things that the community has done over the years. One is that many teams open their text-based meetings with an explanation of what is done in the meeting, who comes to the meetings, where to find help if you’re lost in the meeting, and for teams that have a specific type of requests that comes into those channels that aren’t handled in those channels. They also will share where people can go to get those requests taken care of. Many teams have also updated their team handbooks to have good beginner docs, limited use of inside jokes or jargon, and good first bugs. And also, there is a code of conduct in the community declaring that everyone is welcome and clarifies what to do if you see folks being unwelcoming. 

\n\n\n\n

Josepha Haden Chomphosy  05:51

\n\n\n\n

A second big thing that folks in the WordPress community have done is written down what was unwritten. Having things clearly documented unlocks institutional knowledge that you’d otherwise have to know someone to get. Clarity and process and the structure help anyone engage with your organization, not just the people who have extra time to figure things out. What that looks like in the WordPress project is that many teams have documented their workflows and their working spaces and just their general team norms. Many teams have also started defining what it means to be a team rep and holding open processes to choose those team reps. Many other community leaders and I have written down countless unspoken rules, guidelines, and philosophical underpinnings so that people don’t have to guess what we’re doing or why we’re doing things, or where we want to do them.

\n\n\n\n

Josepha Haden Chomphosy  06:46

\n\n\n\n

And the more visible thing that the WordPress project has been doing is that we found ways to invite people in, and they’re not failsafe; they’re not foolproof, but it is certainly a step in the right direction. The first one is an ongoing, diverse speaker training initiative. And I’ll include a link to that in the show notes as well. It is run by Jill Binder and a fantastic group of contributors that collaborate with her. And I really have loved watching that particular program grow and flourish and help WordPress make a difference where we absolutely can. 

\n\n\n\n

Josepha Haden Chomphosy  07:27

\n\n\n\n

The second thing that was pretty visible about how we invited people in was at the end of 2020, and we had an all-women and nonbinary release squad for our biggest release of the year; WordPress 5.6. I had a group of probably 70 women and nonbinary identifying folx who joined in the process and joined in learning more about the process. Some of them have continued in the project. Others have stepped away for various reasons. But all of them are welcome to return. And I encourage everyone to return to contribution when time and resources make that possible for you. 

\n\n\n\n

Josepha Haden Chomphosy  08:09

\n\n\n\n

And then the third thing that we’ve done, which I have talked about a lot, is the revival of the testing and triage practices. That has been work that’s been ongoing for a number of years. And it happens across multiple teams. It is not always immediately clear to people why the testing work. And the triage work is identifiable for me as a way to invite people into this process. And so I’ll be briefly clear about it right now. So testing as a practice brings in the users that otherwise don’t have a lot of spare time and that extra privilege to like, figure out what’s going on with WordPress, and contribute their own fixes to problems. They can give back to this project by being co-developers with us, co-creators with our entire process of making WordPress real and usable for the largest number of people that we can because we now support 42% of the web. And then, the triage practice invites in a diverse voice of people. Because you don’t necessarily always need to know everything about a project to help with triage. And when you’re helping with triage, you get active learning through participating in the process. But you also get passive learning from the people who already know huge amounts about the project and the process and everything that goes into it. And so it’s a low key low stress way to get your feet wet and start building that knowledge that sometimes is hard to come by unless you are actively working in it. So the testing practices, the triage practices, I really to the core of my being believe that those are active and ongoing ways for us to invite people who otherwise wouldn’t have a chance to get their voices heard in an open source project. And y’all, as I said at the start, y’all, there’s nothing about this list that I just shared, which makes me feel like our work on this is done. Just like any muscle, you don’t fight to peak fitness, and then hit the big stop button on time and say, “Now, I never have to work out again.” If we did, the world would be a very different place probably. But it does then lead us to the next steps for fostering a community culture that’s as broad as the people who use this software. If you believe in leadership at any level, as I do, there are a ton of things that you can do right now. But I’ll boil them down into three big chunks of things.

\n\n\n\n

Josepha Haden Chomphosy  10:54

\n\n\n\n

First, check your community area, or whatever community you want to apply this to, for things that need a little more proactive work. I will share a post called Building A Culture of Safety that will take you through a list of good first steps. And it is not as hard as it looks. When you say build a culture of safety, there are many really clear-cut minor changes that you can ask people to make and, in like, four or five different areas that can help your community be more welcoming and more open. 

\n\n\n\n

Josepha Haden Chomphosy  11:30

\n\n\n\n

The second thing that you can do is know that small changes add up over time and commit to making those changes where you can. If you are elite at any level, you know that supporting people and processes is the responsibility of everyone in the group. And if you can make your own autonomous decisions and commit to making small changes that make a big difference over time, you will be part of that solution. And that is not specific to any one group that we have in our communities. You can be an ally for anyone, whether they look like you, whether they have your same experiences, or not. And sometimes, it’s as easy as just holding space for the people who haven’t had a chance to talk yet. And on the subject of holding space and the way that we communicate. 

\n\n\n\n

Josepha Haden Chomphosy  12:22

\n\n\n\n

The third thing that I think is incredibly important is that you can take on as a foundational personal practice the concept of ethical communication. I’ll share a post about that as well in the show notes, but the core of it is that you have to know that what you say and don’t say what you do and don’t do has an impact on others and embrace that responsibility. All right, so you made it all the way through, and I am so proud of you. I’m sure you have questions about this. And I encourage you to share those. You can email them to me at wp briefing@wordpress.org.

\n\n\n\n

Josepha Haden Chomphosy  13:10

\n\n\n\n

This brings us to our small list of big things. I’ve got two things for you today. First and foremost, WordPress 5.8 gets released tomorrow. It’s a big release, and lots of people have been working on it. So get your update processes ready and keep an eye on wordpress.org/news for the announcement post. Second, and still pretty important, team reps have been working on their quarterly check-ins so that all other teams can get an idea of what’s happening around the WordPress office. Keep an eye out for that post on make.wordpress.org/updates. And that is your smallest of big things. Thank you for tuning in today for the WordPress Briefing. I’m your host Joseph Hayden Chomphosy, and I’ll see you again in a couple of 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:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 19 Jul 2021 12: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:15:\"Chloe Bringmann\";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:13:\"\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:110:\"Gutenberg Times: Theme creation, Block plugin development and the Future of WordPress – Weekend Edition #178\";s: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=18531\";s: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://gutenbergtimes.com/theme-creation-block-plugin-development-and-the-future-of-wordpress-weekend-edition-17/\";s: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:12172:\"

Howdy, my friends!

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

WordPress 5.8 will be release next week. Are you ready? Well, if you didn’t get any chance to test things, you should still be alright. If you know your customers will be fiddling with their site’s widget section, do yourself a favor and install the Classic Widget plugin, so there are no surprises.

\n\n\n\n

For last-minute testing, use the Release Candidate number 4. The final release is scheduled for Tuesday, July 20, 2021. The Field Guide covers all changes.

\n\n\n\n

Wishing you all the best for the upgrade! Holler if you need any help!

\n\n\n\n

Yours, ?
Birgit

\n\n\n\n

Gutenberg and the Future of WordPress

\n\n\n\n

In this week’s Jukebox episode, host Nathan Wrigley discussed with Robert Jacobi the Future of WordPress in the era of Gutenberg. Jacobi explained why he is persuing a Gutenberg first approach. You can listen on WordPress Tavern or your favorite podcast app.

\n\n\n\n

From the section “Neither Gutenberg nor WordPress News”: I am excited about the acquisition of Pocket Casts by Automattic. I tested many other podcast apps, but Pocket Casts has been my favorite for many, many years.

\n\n\n\n

Nathan da Silva, founder of Silva Web Designs, wrote about the Future of Page Builders and concludes, there are still pieces missing before Gutenberg makes 3rd Party page builders obsolete. Da Silva mentions, Full-Site Editing is not there yet and there are not as many add-on available as Elementor or Beaver Builder provide for their site builders workflow.

\n\n\n\n\n

Episode #47 is now available with transcript.
Next recording July 23, 2021

\n\n\n\n

Subscribe to the Gutenberg Changelog podcast
?️ Spotify | Google | iTunes | PocketCasts | Stitcher |
?️ Pod Bean | CastBox | Podchaser | RSS Feed 

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

Block-editor for Content Creators

\n\n\n\n

On July 29th, 10 a.m. PT / 1 p.m. ET / 5 p.m. UTC. WordPress VIP will hold a webinar with the title Gutenberg Full-Site Editing: Unlocking Agility for Enterprise WordPress. James Proctor will share lessons from the cutting edge of implementation. “By taking Gutenberg blocks beyond the post editor, these new features allow content creators unprecedented agility and control over the entire site experience. “ Any site owner and agency will be able to take advantage of the knowledge shared at scale.

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

Deborah Edwards-Onoro posted a great tutorial on how to Manage your Block Editor preferences and increase productivity and comfort.

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

WordPress 5.8 brings Duotone Filters to images of the block editor. Justin Tadlock takes you on a tour of this fabulous new feature: Duotone Filters: WordPress 5.8 Puts a Powerful Image-Editing Tool Into Users’ Hands‘.

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

Developing Plugins for the Block Editor

\n\n\n\n

After the Primer last week, Rich Tabor posted How to Build & Publish Gutenberg Block Plugins to the WordPress Block Directory. Tabor guides you through the process from create block scaffolding and running the block plugin checker to uploading your block to WordPress repository and get it approved for the Block Directory.

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

Marcus Kazmierczak wrote a series of posts on how to Conditionally Load Block Assets when building block plugins. There are quite a few different ways to skin that proverbial cat. Start at the latest post, explaining the new WordPress 5.8 way to handle this. Kazmierczak also provides a video walk through.

\n\n\n\n

This helped me to understand the feature Ari Stathopoulos worked on and described in his Dev Note: Block-styles loading enhancements in WordPress 5.8

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

Riad Benguella has a few more Miscellaneous block editor API additions in WordPress 5.8 – it covers:

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

 “Keeping up with Gutenberg – Index 2021” 
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. 2021 on. Updated by yours truly. The index 2020 is here

\n\n\n\n\n

Gutenberg and Themes

\n\n\n\n

Jason Crist published this week’s Gutenberg + Themes roundup. Two issues caught my eye:

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

There is of course, much more going on. Another great round-up post from the Theme Team!

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

Anne McCarthy shared Resources for block theme development on ThemeShaper. She wrote: “Whether you’re just starting out or already deep in the block theme world, the following resources should help you be aware of what’s to come and how to get involved in shaping the future.”

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

Tammie Lister published here process on how to create a theme and what she encountered. She wrote: “I am still like many discovering how I create themes using site editing, but I wanted to share my current process and some observations I’ve made along the way. “

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

Nick Diego collected three small fixes to his theme to change the breakpoint for the column block to become responsive, how to change the order of the mobile columns and how to disable responsive columns completely. For the latter, Diego uses a solution by Andy Serong, that is already merged to Gutenberg and will be released with the plugin version 11.2 on July 21st, 2021. Details in Disable Responsive Columns in Gutenberg and Other Tips

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

Rob Stinson posted about WordPress 5.8 Widgets Changes and How they Impact the Genesis Framework. He wrote: “To help navigate this for the 100,000’s of sites that run on the Genesis Framework we have implemented an opt-in experience in version 3.3.4 for whenever anyone updates to WordPress 5.8.”

\n\n\n\n\n

Need a plugin .zip from Gutenberg’s main (trunk) branch?
Gutenberg Times provides daily build for testing and review.
Have you been using it? Hit reply and let me know.

\n\n\n\n

\"GitHub

\n\n\n\n

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

Don’t want to miss the next Weekend Edition?

\n\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, 17 Jul 2021 23:19:47 +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:20;a:6:{s:4:\"data\";s:13:\"\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:\"WPTavern: Identify and Select Blocks via the Wayfinder 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:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://wptavern.com/?p=120070\";s: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:187:\"https://wptavern.com/identify-and-select-blocks-via-the-wayfinder-wordpress-plugin?utm_source=rss&utm_medium=rss&utm_campaign=identify-and-select-blocks-via-the-wayfinder-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:6962:\"

Christopher John, a Seattle-based designer and UX engineer, released his first project to the plugin directory yesterday. Announced via Twitter to high praise, Wayfinder is a block outline solution for the WordPress editor.

\n\n\n\n

Like similar plugins, the goal is to make it easier for end-users to select nested blocks, which can sometimes be tough to pin down. Wayfinder outlines each block in the editor on hover. It then displays the block name at the upper left of the box.

\n\n\n\n

My favorite feature that you will not find elsewhere is the addition of each block’s classes at the bottom right of the box. This makes it easy for designers or users who want to quickly find a class for styling.

\n\n\n\nOutline of a Heading block.\n\n\n\n

Users can also enable or disable the pieces of the UI they want to appear via the plugin’s setting screen. However, any changes affect all of the site’s user experiences. Currently, there are no per-user settings.

\n\n\n\n

At first glance, the plugin seemed to work great. The hover outline experience felt smooth, and I did not need to change the default options. Wayfinder almost seemed to be everything one might look for in a block-outline solution. It was besting existing plugins in nearly every way.

\n\n\n\n

However, things soon began rolling downhill when writing a typical blog post with nothing other than Heading, Paragraph, and Image blocks. I first noticed that I could not type the same number of words as usual on one line. My perfectly-tuned typography was breaking sooner than it should have. Spacing between paragraphs seemed a bit too large. My wide-aligned images were just a little smaller than usual.

\n\n\n\n

The user experience still felt good until this point, but the little oddities were stacking up. Something was not right. The plugin had been showered with praise on Twitter and already received three five-star reviews in its first 24 hours. Maybe my custom theme was the issue. However, similar problems arose when testing several others, such as Twenty Twenty-One, Nutmeg, and Eksell — each a well-rounded theme catered to the block editor.

\n\n\n\n

As clean as the plugin’s UI is, it more often than not wrecks the theme’s default block spacing. This becomes more noticeable as users begin adding nested layers of blocks.

\n\n\n\n

The problem is the plugin adds 18 pixels of padding around every block via its stylesheet.

\n\n\n\n
.wp-block:not(.block-list-appender) {\n    position: relative;\n    outline: 1px dashed transparent;\n    padding: 18px;\n    overflow: visible !important;\n}
\n\n\n\n

To the untrained eye, this may not be a visible issue in many cases. It will affect each site differently, but 18 pixels of extra padding on every block will undoubtedly mess things up to some degree unless the theme itself uses that exact same spacing in its design.

\n\n\n\n

The more noticeable issues are seen with blocks like Social Icons:

\n\n\n\nHoly moly! Those are some gigantic social icons!\n\n\n\n

But, even something as basic as a List block can be misaligned:

\n\n\n\nList block shifted out of alignment.\n\n\n\n

Theme authors can write custom CSS to overrule the plugin’s padding. However, the last thing the WordPress community needs is a specificity war between themes and plugins. Themers already have to do this enough to wrangle blocks now.

\n\n\n\n

Removing that one padding rule from the plugin’s editor-style.css killed 99% of its issues. Afterward, things were running like a well-oiled machine.

\n\n\n\n

As a developer, I would explore outline-offset for spacing between the block and its outline, maybe cutting that 18px down a bit. Because outlines are not a part of the CSS box model, it would not affect spacing. Adjustments may be necessary on a per-block basis, especially when those blocks are nested or small (e.g., Social Icons, Navigation). It would carry its own challenges but should be a less destructive course.

\n\n\n\n

To a lesser extent, the plugin’s overflow rule breaks the theme design from time to time. Its position and outline rules could overrule some edge-case block styles too, but they are necessary for the plugin to actually do its job. In particular, I could see positioning being problematic with sticky headers as we get into site editing.

\n\n\n\n

The only other issue might be themes that use ::before and ::after pseudo-elements on blocks, but the plugin also needs to overwrite those to display the block name and classes list. This is likely another edge case.

\n\n\n\n

Despite the issues, the plugin is ahead of the pack at this point.

\n\n\n\n

Gutenberg Editor Full Width Blocks Border (a bit of a mouthful), another recent plugin to offer similar functionality, breaks custom theme design across the board. It does accomplish the job of making blocks easier to select, but the sacrifice of a WYSIWYG is not worth it.

\n\n\n\n

The Editor Block Outline plugin has been my go-to recommendation for a while. It has a few design issues of its own, but some of those are adjustable on a per-user basis. However, as of late, it has made the editor feel sluggish. Plus, its misuse of the WordPress admin notice system for Twitter followers makes it something I’d prefer to steer clear of.

\n\n\n\n

EditorsKit has a similar “block guidelines” feature that uses a box-shadow instead of padding and an outline. It does not muck up most theme layouts with that technique. However, I have hit other style conflicts with the plugin. Plus, EditorsKit is overkill for users who simply want just one feature.

\n\n\n\n

That leaves us with Wayfinder. Warts and all, it is the best standalone option right now. Maybe that’s not saying much, but it is saying something. This is a feature that is hard to nail down. I do not envy the developers who are trying to make miracles happen.

\n\n\n\n

It is sure to please many who have been on the lookout for a block outline solution. It is in a position to pull farther ahead of the competition with its relatively solid first outing. With more thorough theme testing and a bit of adjustment to its approach, it could be even better. I am eager to test future iterations.

\";s: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, 17 Jul 2021 01:56:53 +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:\"Justin Tadlock\";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:13:\"\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:56:\"WordPress.org blog: People of WordPress: Tijana Andrejic\";s: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=10427\";s: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/2021/06/people-of-wordpress-tijana-andrejic/\";s: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:13617:\"

WordPress is open source software, maintained by a global network of contributors. There are many examples of how WordPress has changed people’s lives for the better. In this monthly series, we share some of the amazing stories.

\n\n\n\n

This month to coincide with WordCamp Europe, we feature Tijana Andrejic from Belgrade, Serbia, about her journey from fitness trainer to the WordPress world, with the freelance and corporate opportunities it introduced.

\n\n\n\n\"Tijana\n\n\n\n

As a professional manager with a college degree in Organizational Science and a certified fitness instructor, Tijana is nothing if not driven and goal-oriented. 

\n\n\n\n

Following her time as a fitness trainer, Tijana moved to work in IT around 2016. She first explored content creation and design before focusing on SEO and becoming an independent specialist.  

\n\n\n\n

Tijana was hired as a Customer Happiness Engineer for a hosting company, where she discovered the benefits of having a team. She realized that having close working relationships with colleagues is helpful for business success and accelerates personal growth.

\n\n\n\n

Tijana hopes that by sharing her story, she can help others who are either starting their career or are moving roles. She describes the opportunities she discovered in the WordPress community as ‘a huge epiphany’, especially in the world of freelancing.

\n\n\n\n

She highlights 5 things that helped her to start a new freelancing career. Let’s dive into them.

\n\n\n\n

What motivates me?

\n\n\n\n

“Why am I doing this?” is the first question that Tijana asks herself before starting anything new. This self-review and honesty, she feels, allows her to determine her priorities. She also benchmarks options around her motivations of wanting a flexible schedule and to grow professionally. 

\n\n\n\n

She lists the reasons to make a particular choice, like being a freelancer, to help her choose the right job, pathway, or identify alternatives. 

\n\n\n\n

She recommends that others can take a similar approach. If freelancing is still the best solution after examining all their goals and motivations, Tijana believes a good next step would be to learn WordPress-related skills.

\n\n\n\n\"WordCamp\n\n\n\n

Develop WordPress related skills

\n\n\n\n

The next question you may ask: “Why WordPress?”

\n\n\n\n

WordPress is used by more than 40% of websites in some form and offers various roles, many of which are not developer-specific. Tijana highlights a few: 

\n\n\n\n\n\n\n\n\"WCBGD\n\n\n\n

Tijana emphasized: “Another reason why WordPress is great for freelancers is the strong community that exists around this content management system (CMS).” WordCamps and Meetups are a way to get useful information and meet people from a large and very diverse community and get answers to many questions straight away. 

\n\n\n\n

In the past year, these events have been primarily online. However, the contributors who run them continue to make an effort to provide an experience as close to in-person events as possible. The biggest advantage to online events is that we can attend events from across the world, even if sometimes during these difficult times, it is difficult to get enough time to deeply into this new experience. Since Tijana’s first Meetup, she has attended many WordPress community events and volunteered as a speaker.

\n\n\n\n

Plan in advance

\n\n\n\n

Becoming a freelancer takes time. For Tijana, success came with proper planning and following her plan to ‘acquire or improve relevant skills that will make you stand out in the freelance market.’ She strongly believes that learning and growing as a professional opens more business opportunities. 

\n\n\n\n

If you are considering a freelance career, she advises improving relevant skills or developing new skills related to your hobbies as ‘there is nothing better than doing what you love.’ In cases where no previous experience and knowledge can be used, she suggests choosing ‘a job that has a shorter learning curve and builds your knowledge around that.’

\n\n\n\n

Tijana started as a content creator and learned to become an SEO expert. However, she highlights many alternative paths, including starting as a web implementer and moving to train as a developer. 

\n\n\n\n

She suggests to others: “It would be a good idea to analyze the market before you jump into the learning process.” She also recommends people check the latest trends and consider the future of the skills they are developing.

\n\n\n\n

Visit the new Learn WordPress.org to see what topics are of interest to you. In this newly established resource, the WordPress community aggregates workshops to support those who want to start and improve their skills, provides lesson plans for professional WordPress trainers and helps you create personal learning to develop key skills. There is also material on helping you be part of and organize events for your local community.

\n\n\n\n

Tijana highlights that there are many places for freelancers to find clients. For example, the WordPress Community has a place where companies and individual site owners publish their job advertisements  – Jobs.WordPress.net.

\n\n\n\n

Hurray, it’s time to get a first freelancing job

\n\n\n\n

As a pragmatic person, Tijana recommends: “Save money before quitting your job to become a full-time freelancer. Alternatively, try freelancing for a few hours per week to see if you like it. Although some people do benefit when taking a risk, think twice before you take any irreversible actions.” 

\n\n\n\n

She shared some possible next steps: 

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

“By using video material, your clients will not see you like a list of skills and previous experiences, but as a real person that has these skills and experiences and that provides a certain service for them.”

\n\n\n\n

She adds: “Have a detailed strategy when choosing your first employer. Choose your first employer wisely, very wisely. I can’t emphasize enough how important this is”.

\n\n\n\n

When Tijana took her first freelancing job, she considered the following:

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

“The first job is not all about the money. Don’t get greedy on your first job. If you get good recommendations, your second job can pay two to three times more. And your third job can go up to five times more. That was my experience.”

\n\n\n\n

Take responsibility as a freelancer

\n\n\n\n

Tijana reminds us: “Freedom often comes with responsibility; individual responsibility is key when it comes to freelancing.”

\n\n\n\n

She advises others not to take a job if you can not make a deadline and have someone reliable who can help you. 

\n\n\n\n

Missing deadlines will cost your client money and affect the review the client will be willing to leave about your job, and this can have a big impact on your future opportunities or freelance jobs.

\n\n\n\n

She adds: “This can start a downward spiral for your career. However, we are all humans, and unpredictable things can happen. If for some reason you are not able to complete your work in a timely manner, let your client know immediately so they can have enough time to hire someone else”.

\n\n\n\n

Tijana emphasizes the importance of making expectations clear before accepting a job, both what the client is expecting and what you can expect from the client. 

\n\n\n\n

Lastly, she points out that if you are working from home, your friends and family should treat you the way they would if you were in an office. She advises: “Let them know about your working schedule.”

\n\n\n\n

She hopes that these basic guidelines will be useful in launching freelance careers, as they did her, even though there is no universal recipe for all.

\n\n\n\n

Tijana highlights: “It’s just important to stay focused on your goals and to be open to new opportunities.” Freelancing wasn’t the only way she could have fulfilled her goals, but it was an important part of her path, and it helped her be confident in her abilities to make the next big step in her life.

\n\n\n\n

As a freelancer, she was missing close relationships with colleagues and teamwork, which she has now found in her current firm. Her colleagues describe her as a: “walking-talking bundle of superpowers: sports medicine and fitness professional, SEO expert, blogger, designer and a kitty foster mum”.

\n\n\n\n\"Conference\n\n\n\n

If you are considering starting your career as a freelancer, take the courses offered at learn.wordpress.org, reach out to companies that you would be interested in working with, and remember that there are a whole host of opportunities in the WordPress project.

\n\n\n\n

The WordPress.org Teams – what they do, when and where they meet

\n\n\n\n

Learn WordPress resource – free to use to expand your knowledge and skills of using the platform and learning about the community around it.

\n\n\n\n

The 3-day WordCamp Europe 2021 online event begins on 7 June 2021. You can discover more about being a contributor in its live sessions and section on ways to contribute to WordPress.

\n\n\n\n

Contributors

\n\n\n\n

Thanks to Olga Gleckler (@oglekler), Abha Thakor (@webcommsat), Chloé Bringmann (@cbringmann), Surendra Thakor (@sthakor), and Meher Bala (@meher) for working on this story. Josepha Haden (@chanthaboune) and also to Topher DeRosia (@topher1kenobe) who created HeroPress. Thank you to Tijana Andrejic (@andtijana) for sharing her #ContributorStory

\n\n\n\n\"HeroPress\n\n\n\n

This post is based on an article originally published on HeroPress.com. It highlights people in the WordPress community who have overcome barriers and whose stories would otherwise go unheard.

\n\n\n\n

Meet more WordPress community members in our People of WordPress series.

\n\n\n\n

#ContributorStory #HeroPress

\";s: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, 16 Jul 2021 22: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:28:\"webcommsat AbhaNonStopNewsUK\";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:13:\"\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:42:\"WPTavern: Automattic Acquires Pocket Casts\";s: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://wptavern.com/?p=120114\";s: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/automattic-acquires-pocket-casts?utm_source=rss&utm_medium=rss&utm_campaign=automattic-acquires-pocket-casts\";s: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:3288:\"

Automattic has acquired Pocket Casts, a popular podcast listening, search, and discovery app for Android and iOS. Australian co-founders Russell Ivanovic and Philip Simpson are staying on to continue leading Pocket Casts as a part of the acquisition.

\n\n\n\n

The app allows users to keep all of their podcast subscriptions together in one place and sync between platforms. Previously a commercial-only app, Pocket Casts has been free since it switched to the freemium model in September 2019. Its creators have been monetizing the app through its Pocket Cast Plus tier, which gives users access to desktop apps, cloud storage, watch playback, and themes and icons for $9.99/year.

\n\n\n\n

In May 2018, Pocket Casts was acquired by public media organizations NPR, WNYC Studios, WBEZ Chicago, and This American Life. BBC Studios also held a small ownership stake in the platform prior to Automattic’s acquisition.

\n\n\n\n

Despite being widely regarded as one of the best podcasting apps available, NPR’s financial statements and auditor’s report from 2020 shows a net loss of more than $800K. The board governing the company met in December 2020 and agreed to sell Pocket Casts.

\n\n\n\n

No financial details of the acquisition were disclosed but Automattic may have gotten a bargain on Pocket Casts if its other owners were also losing money. After acquiring Tumblr and Day One, Automattic is starting to gain a reputation for buying up apps that people love to use and giving them a fighting chance at financial stability and longevity. The company has also demonstrated a growing interest in podcasting-related technologies with its recent investment in Castos and partnership with Spotify’s Anchor podcast creation platform.

\n\n\n\n

Acquisition announcements often include assurances of no changes for current customers but Automattic’s post made no promises and did not share many details regarding its plans for Pocket Casts. Integration with WordPress.com may be on the horizon but it’s currently in the exploration stage.

\n\n\n\n

“As part of Automattic, Pocket Casts will continue to provide you with the features needed to enjoy your favorite podcasts (or find something new),” Automattic’s Head of Apps Eli Budelli said. “We will explore building deep integrations with WordPress.com and Pocket Casts, making it easier to distribute and listen to podcasts. We’re thrilled that we can continue to give our users a multitude of ways to tell and engage with stories that matter.”

\";s: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, 16 Jul 2021 22:39: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:13:\"Sarah Gooding\";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:13:\"\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:97:\"WPTavern: Google Concludes FLoC Origin Trial, Does Not Intend to Share Feedback from Participants\";s: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://wptavern.com/?p=119872\";s: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:237:\"https://wptavern.com/google-concludes-floc-origin-trial-does-not-intend-to-share-feedback-from-participants?utm_source=rss&utm_medium=rss&utm_campaign=google-concludes-floc-origin-trial-does-not-intend-to-share-feedback-from-participants\";s: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:6127:\"

Google quietly concluded its FLoC (Federated Learning of Cohorts) origin trial this week. The trial was part of Google’s Privacy Sandbox initiative, a suite of new technologies designed to replace third-party cookies, fingerprinting, and other commonly-used tracking mechanisms. This particular experiment groups people together based on browsing habits and labels them using machine learning.

\n\n\n\n

FLoC’s trial was scheduled to end Jul 13, 2021, and Google has decided to remove the project from the testing phase while analyzing feedback.

\n\n\n\n

“We’ve decided not to extend this initial Origin Trial,” Google senior software engineer Josh Karlin said in thread on Chromium’s Blink Developers group forum. “Instead, we’re hard at work on improving FLoC to incorporate the feedback we’ve heard from the community before advancing to further ecosystem testing.”

\n\n\n\n

The controversial experiment has been met with opposition from privacy advocates like makers of the Brave browser and EFF who do not perceive FLoC to be a compelling alternative to the surveillance business model currently used by the advertising industry. Amazon, GitHub, Firefox, Vivaldi, Drupal, Joomla, DuckDuckGo, and other major tech companies and open source projects have already opted to block FLoC by default.

\n\n\n\n

So far, Twitter has been the first major online platform that appears to be on board with FLoC after references to it were recently discovered in the app’s source code.

\n\n\n\n

Google’s initial efforts in presenting FLoC failed to gain broad support, which may have contributed to the company putting the brakes on its plan to phase out third-party cookies in Chrome by 2022. As the advertising industry yields to pressure from the last few years of privacy legislation, third-party cookies will be on their way out in what is colloquially known as the “Cookie Apocalypse.” Google has postponed this milestone for Chrome to begin in mid-2023 and end in late 2023. 

\n\n\n\n

“We need to move at a responsible pace,” Chrome Privacy Engineering Director Vinay Goel said. “This will allow sufficient time for public discussion on the right solutions, continued engagement with regulators, and for publishers and the advertising industry to migrate their services. This is important to avoid jeopardizing the business models of many web publishers which support freely available content.”

\n\n\n\n

Discussion on a proposal for WordPress to block FLoC has stalled in Trac but may have been premature in the first place if FLoC doesn’t end making it to further testing. Proponents of blocking FLoC saw WordPress’ support or opposition as critical to the success or failure of FLoC adoption on the web.

\n\n\n\n

A recent article on the WordPress.com VIP blog titled “Goodbye, Third-Party Cookies, Hello Google’s FloC,” indicates that Automattic may be straddling the fence on the controversial new technology:

\n\n\n\n

FLoC has its plus points. But it isn’t as privacy-focused as we would like, and can lead to discriminatory practices, as described above. Then there’s the concern of letting Google dominate yet another aspect of tech. Google also plans to charge any third-party tracking company for use of any of the data it has collected.

\n\n\n\n

For the time being, it looks like major tech platforms are off the hook for taking an active position on FLoC since it has been sent back for major modifications. In the most recently updated timeline for Privacy Sandbox milestones, Vinay Goel said Google received “substantial feedback from the web community during the origin trial for the first version of FLoC.”

\n\n\n\n

At the conclusion of its origin trial, FLoC seems far from ready for adoption, having failed to gain a foothold in the industry. The concern is that Google may ram FLoC through anyway using the weight of Chrome’s market share, despite the web community’s chilly reception. Although these proposed changes to ad tech will impact the entire industry, as well as regular internet users, Google does not intend to disclose any of the private feedback the company received during FLoC’s origin trial.

\n\n\n\n

“The main summary of that feedback will be the next version, and you can surmise based on what features (and the reasoning for these changes) are available in the next version,” Google mathematician Michael Kleber said during a recent Web Commerce Interest Group (WCIG) meeting

\n\n\n\n

Privacy advocates want to see more transparency incorporated into this process so that major concerns are not left unaddressed, instead of leaving it to stakeholders across the web to try to deduce what Google has solved in the next version of FLoC. Overhauling the advertising industry with new technologies should be done in the open if these changes are truly intended to protect people’s privacy.

\";s: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, 16 Jul 2021 03:26:21 +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:13:\"Sarah Gooding\";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:13:\"\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:88:\"WPTavern: Edupack Is Tackling Higher Ed With WordPress, Looking for Development Partners\";s: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://wptavern.com/?p=119928\";s: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:219:\"https://wptavern.com/edupack-is-tackling-higher-ed-with-wordpress-looking-for-development-partners?utm_source=rss&utm_medium=rss&utm_campaign=edupack-is-tackling-higher-ed-with-wordpress-looking-for-development-partners\";s: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:6721:\"

“We’re basically building the Jetpack for Higher Ed,” said Blake Bertuccelli as he pitched me on the idea of Edupack, a project still in its early stages.

\n\n\n\n

He and his team are looking for more advisors to join the eighth round of their once-monthly braintrust events. It is a project they began in November 2020, now coming to fruition. Feedback is crucial to pushing such undertakings out of the gate, and the team needs more of it.

\n\n\n\n

Bertuccelli listed several focal points for the Edupack project:

\n\n\n\n\n\n\n\nOnboarding form with Tulane-branded elements.\n\n\n\n

“Our onboarding form offers pre-built sites for users to start from,” said Bertuccelli. “So, if a scientist needs a new site for their lab, the scientist can select a pre-built lab site from our onboarding form then add in their unique content.”

\n\n\n\n

Bertuccelli is Edupack’s CEO. He called himself a “forever learner” and is currently reading A History of Western Philosophy by Bertrand Russell.

\n\n\n\n

“I paid for my Tulane education by coding WordPress themes,” said Bertuccelli. “After college, I founded one of New Orleans’ first WordPress dev shops (Decubing). A year ago, I presented on building a self-publishing platform with Multisite at WP Campus. The feedback was phenomenal, and two blokes from Birmingham offered to work on a plugin with me. A few months later, we launched Edupack’s MVP. Since then, folks from Harvard, Dartmouth, and about 17 other universities have been working with us to make WordPress an even better CMS for Higher Ed pros.”

\n\n\n\n

The “two blokes” he is referring to are his co-founders, Nathan Monk and Matt Lees. They run a WordPress shop called SMILE. Monk is serving as Edupack’s CTO. Lees is the Chief Creative Officer — Bertuccelli called him “Lord of the UX.” Altogether, the three co-founders have over 30 years of experience working with Higher Ed and WordPress.

\n\n\n\n

The Edupack team is making accessible content a priority, which is a primary issue for Higher Ed. The goal is to offer A11Y reports inside of the WordPress dashboard and tie them into publishing workflows. This would notify users of errors as they publish content.

\n\n\n\n

“Our accessibility reports tie into another feature we are launching this month: site archiving,” said Bertuccelli. “Campus users graduate and often forget about their sites. Edupack sends a notification to a user if the site hasn’t been accessed, then adds an “archived” meta value to the site that super administrators can take action from.

\n\n\n\nSetting up automated archiving.\n\n\n\n

“Devs often recode thousands of sites to add new Campus branding,” said Bertuccelli on the reasons behind Edupack. “Department budgets are drained on resources for stale sites. Institutions are sued over inaccessible content or misused branding.

\n\n\n\n

“Edupack intends to automate website management so that Higher Ed pros can focus on supporting education.”

\n\n\n\n

The following video is an introduction to Edupack:

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

Join the Braintrust Session

\n\n\n\n

Every third Wednesday of each month, Edupack holds a “Braintrust” event. Bertuccelli says it is the best way to get involved. The session lasts for an hour over a Zoom video chat. The next event is scheduled for July 21, 10 am – 11 am (CDT).

\n\n\n\n

Each session focuses on a single question. Next week’s question: “How can we enhance WordPress blocks for Higher Ed?”

\n\n\n\n

“We’ll demo Edupack updates, brainstorm solutions for block enhancements, then wrap up with action steps for us to do by next month,” said Bertuccelli. “Folks who manage WordPress sites for global institutions and companies have attended our last seven braintrusts. Any Higher Ed pro is welcome!”

\n\n\n\n

Those interested can also keep track of progress via the Edupack blog.

\n\n\n\n

Pricing and the Future

\n\n\n\n

There is currently no publicly available pricing list. The project’s FAQs page says the team is still tuning the costs, and Bertuccelli remained quiet on any hard numbers.

\n\n\n\n

“Community colleges can’t afford tech used by bigger schools,” he said. “That’s not fair. Edupack will be priced so that every institution can afford the service. We haven’t thought about pricing beyond that.”

\n\n\n\n

Universities that wish to get check out the project should schedule a demo from the site’s homepage.

\n\n\n\n

Edupack has around 20 institutions serving as development partners and guiding the roadmap. The team invites new schools to join every few months. Currently, Tulane and the University of Gloucestershire are using Edupack. Harvard and Dartmouth should be next.

\n\n\n\n

The service is limited to universities and colleges at the moment. However, the team would eventually like to expand across the education sector. After that, we will have to see.

\n\n\n\n

“Edupack’s features can be applied to any industry where users run lots of sites,” said Bertuccelli. “I could see ad agencies using Edupack, hosting companies integrating our tools, and School Districts running their site network via Edupack and 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:\"Fri, 16 Jul 2021 02:07:52 +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:\"Justin Tadlock\";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:13:\"\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:46:\"BuddyPress: BuddyPress 9.0.0 Release Candidate\";s: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://buddypress.org/?p=319979\";s: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://buddypress.org/2021/07/buddypress-9-0-0-release-candidate/\";s: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:4379:\"

Important note: this BuddyPress release was built in a short time frame (we even skipped the beta release) to be ready for the release of WordPress 5.8. Our team’s primary goal for 9.0.0 was to migrate the BP Legacy Widgets to new BP Widget Blocks. You don’t necessarily need the latest WordPress 5.8 pre-release to test the BuddyPress 9.0.0 Release Candidate, but we’d be happy if you could use both pre-release versions to have your feedback about your experience with managing the BP Widget Blocks within the Widget Block Editor.

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

“Release Candidate” means that we believe the new version is ready for release, but with more than 200,000 active installs, hundreds of BuddyPress plugins and Thousands of WordPress themes, it’s possible something was missed. BuddyPress 9.0.0 is slated for release on July 19, 2021, but your help is needed to get there \"?\".

\n\n\n\n

You can test the 9.0.0-RC1 pre-release in 4 ways :

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

A detailed changelog will be part of our official release note. In the meantime, you can check the 9.0.0 milestone changes list from our Trac environment.

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

In one picture, here’s what to expect in 9.0.0

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

The 10 BuddyPress legacy widgets will have their corresponding BP Blocks so that you can fully enjoy them within the next Widget Block editor and of course inside your Post/Page Block Editor.

\n\n\n\n

The BP Block collection is going to be tripled from 5 to 15 Blocks \"?\"

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

How you can help

\n\n\n\n

This is really important: this release also marks the string freeze point of the 9.0.0 release schedule. And we have less than 4 days to update BuddyPress translation.

\n\n\n\n

So if you speak a language other than English, please help us translate BuddyPress into as many languages as possible!

\n\n\n\n

PS: If you think you’ve found a bug, you can share it with us replying to this support topic or if you’re comfortable writing a reproducible bug report, file one on BuddyPress Trac.

\";s: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, 15 Jul 2021 20:45: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:12:\"Mathieu Viet\";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:13:\"\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:\"WPTavern: WordPress 5.8 Media Library Changes You Should Know About\";s: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://wptavern.com/?p=120010\";s: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:179:\"https://wptavern.com/wordpress-5-8-media-library-changes-you-should-know-about?utm_source=rss&utm_medium=rss&utm_campaign=wordpress-5-8-media-library-changes-you-should-know-about\";s: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:5914:\"

It is hard not to look through a list of upcoming WordPress 5.8 changes and not find at least a little something to whet your appetite. With so many enhancements headed our way, even we have not been able to keep up with them all here at WP Tavern. The next release will bring a few much-needed media-related upgrades.

\n\n\n\n

Users should enjoy WebP image format support and a copy-to-clipboard button on the media upload screen. Developers have a new hook for filtering the image output format, and the platform is dropping infinite scrolling.

\n\n\n\n

WordPress 5.8 is scheduled to ship on July 20, so these changes will be landing in less than a week. If you have not already done so, give WordPress 5.8 Release Candidate 3 a test run and report any issues.

\n\n\n\n

Infinite Scroll Replaced With Ajax Button

\n\n\n\nMedia Library screen (first) and overlay (second) with “load more” buttons. \n\n\n\n

The upcoming core release will drop infinite scrolling for media in favor of an Ajax-powered “Load more” button. The admin screen and editor’s media overlay will cap the initial and subsequent “pages” to 40 media items each.

\n\n\n\n

This change is a part of an effort from the WordPress accessibility team to improve the experience for end-users. Team member and core contributor Andrea Fercia noted two a11y problems with infinite scrolling. The first is that it is impossible or nearly for keyboard users to reach content appended to the screen. Second, there is no audible feedback or instructions about how infinite scrolling works for screen readers.

\n\n\n\n

He also noted usability and performance issues. Infinite scroll can break the browser’s history, and there is no JavaScript fallback. And loading hundreds or more large-sized images increases the memory footprint.

\n\n\n\n

While the media library is getting the Ajax treatment in WordPress 5.8, we should expect similar updates for other areas in the future, including:

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

Copy URL From Add New Media Screen

\n\n\n\nCopy URL to clipboard button on the Add New Media screen.\n\n\n\n

This change is an enhancement that rids the platform of a small but noticeable nuisance that has plagued it for years. When uploading an image from the Media > Add New screen in the WordPress admin, there was no way to grab its URL without clicking over to the edit screen.

\n\n\n\n

WordPress 5.8 introduces a “Copy URL to clipboard” button that appears after the image has been uploaded. No need to leave the page and track down the URL. The change also makes the user experience consistent with the Media Library screen and overlay in the post editor.

\n\n\n\n

More often than not, browsing Trac means seeing many of the same names. This time around, it seems that a regular user wanted a feature. They created an account — perhaps for this purpose alone –, wrote a support forum post, was directed to Trac, and created their first ticket. It took eight months to work its way into WordPress, but it is one of those success stories of an average user making things happen by just providing feedback. Thanks for the contribution, @anotia.

\n\n\n\n

WebP Image Format Support

\n\n\n\n

WordPress is allowing a new image format. And, no, it is not SVG (technically not an image). There are still security hurdles to jump for that to ever happen. However, it now supports WebP, which carries with it the promise of better performance for those who use it.

\n\n\n\n

As Sarah Gooding reported for WP Tavern last month:

\n\n\n\n

This modern image file format was created by Google in September 2010, and is now supported by 95% of the web browsers in use worldwide. It has distinct advantages over more commonly used formats, providing both lossless and lossy compression that is 26% smaller in size compared to PNGs and 25-34% smaller than comparable JPEG images.

\n\n\n\n

In the report, she noted that only 1.6% (currently at 1.8%) of the top 10 million websites used the WebP format. With WordPress now adding support, that percentage is likely to rise in the coming years.

\n\n\n\n

Developers: Image Editor Output Format Hook

\n\n\n\n

For developers who want to transform images with one mime type to another, 5.8 introduces the image_editor_output_format filter hook. Plugin authors can convert all newly uploaded images or only overwrite specific formats.

\n\n\n\n

The following example converts JPG images to the new WebP format:

\n\n\n\n
add_filter( \'image_editor_output_format\', function( $formats ) {\n        $formats[\'image/jpeg\'] = \'image/webp\';\n\n        return $formats;\n} );
\n\n\n\n

The output format will be applied to all image sub-sizes as they are created. However, this will only work for WebP images if the webserver supports it.

\";s: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, 15 Jul 2021 03:09:34 +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:\"Justin Tadlock\";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:13:\"\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:\"WPTavern: WooCommerce Patches Critical Vulnerability, Sending Forced Security Update from 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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://wptavern.com/?p=120008\";s: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:249:\"https://wptavern.com/woocommerce-patches-critical-vulnerability-sending-forced-security-update-from-wordpress-org?utm_source=rss&utm_medium=rss&utm_campaign=woocommerce-patches-critical-vulnerability-sending-forced-security-update-from-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3619:\"

WooCommerce has patched an unspecified, critical vulnerability identified on July 13, 2021, by a security researcher through Automattic’s HackerOne security program. The vulnerability impacts versions 3.3 to 5.5 of the WooCommerce plugin, as well as version 2.5 to 5.5 of the WooCommerce Blocks feature plugin.

\n\n\n\n

“Upon learning about the issue, our team immediately conducted a thorough investigation, audited all related codebases, and created a patch fix for every impacted version (90+ releases) which was deployed automatically to vulnerable stores,” WooCommerce Head of Engineering Beau Lebens said in the security announcement.

\n\n\n\n

WordPress.org is currently pushing out forced automatic updates to vulnerable stores, a practice that is rarely employed to mitigate potentially severe security issues impacting a large number of sites. Even with the automatic update, WooCommerce merchants are encouraged to check that their stores are running the latest version (5.5.1).

\n\n\n\n

Since WooCommerce backported this security fix to every release branch back to 3.3, store owners using older versions of WooCommerce can safely update to the highest number in their current release branch even if not running the very latest 5.5.1 version.

\n\n\n\n

At the time of publishing, only 7.2% of WooCommerce installations are using version 5.5+. More than half of stores (51.7%) are running on a version older than 5.1. WordPress.org doesn’t offer a more specific breakdown of the older versions, but it’s safe to say without these backported security fixes, the majority of WooCommerce installs might be left vulnerable.

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

The security announcement indicates that WooCommerce cannot yet confirm that this vulnerability has not been exploited:

\n\n\n\n

Our investigation into this vulnerability and whether data has been compromised is ongoing. We will be sharing more information with site owners on how to investigate this security vulnerability on their site, which we will publish on our blog when it is ready. If a store was affected, the exposed information will be specific to what that site is storing but could include order, customer, and administrative information.

\n\n\n\n

For those who are concerned about possible exploitation, the WooCommerce team is recommending merchants update their passwords after installing the patched version as a cautionary measure.

\n\n\n\n

The good news for WooCommerce store owners is that this particular critical vulnerability was responsibly disclosed and patched within one day after it was identified. The plugin’s team has committed to being transparent about the security issue. In addition to publishing an announcement on the plugin’s blog, WooCommerce also emailed everyone who has opted into their mailing list. Concerned store owners should keep an eye on the WooCommerce blog for a follow-up post on how to investigate if their stores have been compromised.

\";s: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, 15 Jul 2021 01:51:24 +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:13:\"Sarah Gooding\";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:13:\"\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:\"WPTavern: #5 – Robert Jacobi on Why He’s Putting Gutenberg First\";s: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=119987\";s: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:173:\"https://wptavern.com/podcast/5-robert-jacobi-on-why-hes-putting-gutenberg-first?utm_source=rss&utm_medium=rss&utm_campaign=5-robert-jacobi-on-why-hes-putting-gutenberg-first\";s: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:56963:\"

About this episode.

\n\n\n\n

On the podcast today we have Robert Jacobi.

\n\n\n\n

Robert is Director of WordPress at Cloudways. He’s been working with open source software for almost twenty years, and has been the president of Joomla, a member of Make WordPress Hosting and contributor to ICANN At-Large. He is well known for his public speaking about open source and so the discussion today is broad and thought provoking.

\n\n\n\n

We talk about Robert’s ‘Gutenberg First’ approach in which he places the WordPress Block Editor at the heart of all that he does. He sees Gutenberg as a critical component for WordPress’ future; a future in which as yet unimagined technologies will be built on top of Gutenberg and leverage the ‘atomic’ way data is stored.

\n\n\n\n

This leads to a discussion on how 3rd party developers will be able to use Gutenberg as an application platform, with unique pathways to create, store and display content.

\n\n\n\n

The heritage of Gutenberg’s development is also discussed. Right from the start we knew that the intention of the project was ambitious; it’s aim to become a full site editor was explained at the outset. This has led to comparisons with other editing tools and Robert takes on why he thinks that the incremental steps that the Gutenberg project has taken are making it a vital part of WordPress.

\n\n\n\n

We also look forward and get into the subject of how technology never stands still. The underpinnings of WordPress are shifting. New skills and tools will need to be learned, but that does not mean that existing ones are obsolete.
Shifting gears, we move into community events and how we’ve managed events during the last year. Robert is a huge proponent of in-person events, and is hoping for their return. He loves the accidental situations which arise when you’re in the same space as so many other like-minded people. Perhaps though, there’s a place for hybrid events; events in which there’s in-person and online happening at the same time?

\n\n\n\n

Towards the end we chat about the plethora of mergers and acquisitions which are happening right now, as well as a discussion of Openverse, a search engine for openly licensed media, which was launched with little fanfare recently.

\n\n\n\n

Useful links.

\n\n\n\n

Openverse

\n\n\n\n

Robert’s website

\n\n\nTranscript
Nathan Wrigley [00:00:00]

Welcome to the fifth edition of the Jukebox podcast from WP Tavern. My name is Nathan Wrigley. Jukebox is a podcast all about WordPress and the community surrounding it. Every month, we’re bringing you someone from that community to discuss a topic of current importance. If you like the podcast, why not subscribe on your podcast player?

\n

You can do that by going to WP Tavern dot com forward slash feed forward slash podcast. If you have any thoughts about the podcast, perhaps a suggestion of a potential guest or subject, then head over to WP Tavern dot com forward slash contact forward slash jukebox. There’s a contact form there, and we’d certainly welcome your input.

\n

Okay, so on the podcast today, we have Robert Jacobi. Robert is director of WordPress at Cloudways. He’s been working with open source software for almost 20 years and has been president of Joomla, a member of Make WordPress Hosting and contributor to ICANN At-Large. He’s well known for his public speaking about open source, and so the discussion today is broad and thought provoking. We talk about Robert’s Gutenberg first approach in which he places the WordPress block editor at the heart of all that he does. He sees Gutenberg as a critical component for WordPress’ future, a future in which as yet unimagined technologies will be built on top of Gutenberg and leverage the atomic way that data is stored.

\n

This leads to a discussion of how third party developers will be able to use Gutenberg as an application platform with unique pathways to create, store and display content. The heritage of Gutenberg’s development is also discussed. Right from the start we knew that the intention of the project was ambitious. It’s aim to become a full site editor was explained at the outset. This has led to comparisons with other editing tools and Robert takes on why he thinks that the incremental steps that the Gutenberg project has taken are making it a vital part of WordPress.

\n

We also look forward and get into the subject of how technology never stands still. The underpinnings of WordPress are shifting. New skills and tools will need to be learned, but that does not mean that existing ones are obsolete.

\n

Shifting gears, we move into the community events and how we’ve managed events during the last year. Robert is a huge proponent of in-person events and is hoping for their return. He loves the accidental situations which arrive when you’re in the same space as so many other like-minded people. Perhaps though there’s a place for hybrid event. Events in which there’s in-person and online happening at the same time. Towards the end, we chat about the plethora of mergers and acquisitions, which are happening right now, as well as a discussion of Openverse, a search engine for openly licensed media, which launched with little fanfare recently.

\n

If any of the points raised in this podcast resonate with you, be sure to head over and find the post at WP Tavern dot com forward slash podcast, and leave a comment there.

\n

And so without further delay, I bring you Robert Jacobi.

\n

I am joined by Robert Jacobi on the podcast today. How are you Robert?

\n
Robert Jacobi [00:04:06]

Doing well. Fantastic to be here. Thank you Nathan.

\n
Nathan Wrigley [00:04:09]

Would you mind introducing yourself? Tell us who you are and what’s your relationship with technology and work?

\n
Robert Jacobi [00:04:15]

I’m Robert Jacobi director of WordPress at Cloudways. I’ve been in the open source space, wow, for almost 20 years, I’m feeling old and actually got my raising on open source with the Joomla project, which is a hundred percent volunteer, open source content management system as well, and picked up WordPress slowly got into there. And boy, that’s a lot of ands.

\n

I love the community. I love the greater goal. That open source, espouses and tries to reach. And we’re never, always successful. But having code and information more freely accessible is something I really believe in. And I think empowers people globally and provides opportunities that wouldn’t happen if these ones and zeros were siloed away in golden towers. I’m always just so tickled to talk about open source and all the interesting things we can do with it. It powers communities, it powers, politics, powers, freedoms, it powers companies. It’s really amazing. And we talk about WordPress all the time as one of the defining tools in this space. You look at something like Linux, which pretty much literally everything uses these days. It’s crazy how, to use Matt Mullenweg’s, favorite phrase, these things democratize all of us in so many different ways.

\n
Nathan Wrigley [00:05:39]

We’ve got a really broad pallet of things that we’re going to discuss today, ranging from Gutenberg, right through to WordCamps and all sorts. So we’ll crack on with the smorgasbord of what we’ve got to discuss. The first of our little laundry list is Gutenberg. You wanted to talk to us a bit today about Gutenberg, what you think of it, and so on. There was an event that I attended recently, which you were also in attendance at, and you were on a panel there, and you mentioned that in the face of proprietary page builders, you always had the approach that Gutenberg should be the first relation. It should come first. And I’m curious to know, what did you mean by that? What is Gutenberg first? What is this approach?

\n
Robert Jacobi [00:06:17]

So Gutenberg first to me is that we recognize the benefits of Gutenberg, and don’t try to subvert them or sneak around them. I think Gutenberg is one of the most critical backend, frontend changes that has happened to WordPress in its last umpteen years and the potential for all the interesting future forward things that Gutenberg can do should be taken into account. So page builders are wonderful. They offer all this functionality, ease of use, but I think that, they should also take and utilize Gutenberg concurrently.

\n

The advantages are, one, that Gutenberg’s not going anywhere. So God bless all the classic editor folk who loved that experience. More than just being deprecated, it’s just, that is not going to be the way of the future.

\n

And secondly, the potential, what can happen when you start making all that content a bit more atomic. I come from a lot of database work. So you think of atomic data points and Gutenberg does that sort of automagically for you? So there are opportunities in the future with Gutenberg to start parcing that data more finely.

\n

That’s why I think it’s very exciting and why everything should be Gutenberg first. Again, that doesn’t mean get rid of page builders or different types of themes and theming systems. It’s just that at the base, Gutenberg should be a core building block of what you’re working with going forward.

\n
Nathan Wrigley [00:07:51]

The way that I think many people are using Gutenberg at the moment, I should probably say the block editor, but if you’re using the Gutenberg plugin, you’ll obviously have an enhanced experience. But if you’re using the block editor at the moment, it feels as if it’s prime time for editing text, inserting images and some pretty basic stuff like that. But I can see on the horizon a whole plethora of interesting, curious, let’s call them plug-ins for now, because that’s what they are. Different block components, different plugins, which adapt and amend the capability of Gutenberg. And it feels to me as if that’s where its strength might lie. I know we’ve got the full site editing and all of that coming down the road, but it feels to me that, there’s going to be a whole plethora of third-party tools, bringing all sorts of added benefits into the ecosystem, a block for this thing, and a block for that thing. And whilst that might create some kind of bloat, that to me is an exciting area, and I just wondered if that’s something you’re interested in, if there’s any plugins or blocks that you’ve been looking at and thinking, oh, that’s curious. That seems to be stretching things a little bit.

\n
Robert Jacobi [00:08:55]

So, you make a, first of all, great point that there’s block editor and then Gutenberg platform as a whole, and what end users typically experience is the block editor, but the Gutenberg API, Gutenberg platform as a whole is going to allow for all sorts of crazy third party integrations. That’s great. And it might even be a little, you said the perfect word, there might be a bit of bloat and craziness. I’ll say that’ll probably exist for the next 12 to 24 months. Sure, that’s fine. As people figure out what works and doesn’t. This is a dawn of a new age around taking WordPress to the next step. We’ve talked about for many years, WordPress is just a blog, blah, blah, blah. Okay. We’ve gotten past WordPress as a blog. Now WordPress as a CMS. That’s great. I think what happens with Gutenberg is we look at it and say, WordPress is an application platform, and this is just another API that we can take advantage of in very different ways. So we can have forums that are much more catered to content creators, that get rid of all the WordPress backend and admin stuff. Okay, you’re authenticated. You’re logged in. Here’s your daily news forum that you’re going to add content to. And because we’re using Gutenberg, that makes it a lot easier to publish that content and gets rid of the technical cruft, and allows developers and third-party plugin providers to have wholly unique and valuable experiences around that. And that’s where the magic I think of Gutenberg really comes into play is where will all these third parties start finding those unique value propositions for specific content, whether it’s an, a vertical, like travel or e-commerce, in a generic sense or news or publications or whatnot. It’s really expanded the opportunities to create workflows and interfaces and make content production speedier and safer.

\n
Nathan Wrigley [00:10:55]

I think one of the curious things that I’ve observed over the last couple of years about it is that perhaps if we had the magic rewind button, we could go back a couple of years and potentially not really get into a conversation where it was… okay, we’ve got stage 1, 2, 3, and 4, and stages two, three, and four, start to add in functionality that things like page builders, can currently do, full site editing and all that. If it had just been touted as, we’ve got a new editor for you, here it is, I think it would have taken people along for the ride much more easily, but we’ve got this problem now, this impasse where, it got sold as it’s going to become a page builder, but the pace of development and the fact that they’ve got the legacy of 40 percent of the web, 40 plus percent of the web, to protect and so on it hasn’t been able to move in that direction potentially at the speed that people thought… well, it’s going to be a page builder. It hasn’t been able to mature at the rate that they would have liked to have done. And so I’m just curious in the next year, two years, whether it will do those things, but also I wish we could rewind and say look, slow down. Let’s get the editor experience sussed out first, then we’ll do the full site editing and don’t expect it to be all these things. Beause at the minute I hear a lot of people saying it’s not as good as the tool I’ve got over here, and it’s not as good as the tool I’ve got over there. Speaking of which do you think there’s a case where it isn’t the best tool where you would say actually, do you know what, I’m just going to relegate that and not use it first. Or is it literally, always the first thing in your toolkit for WordPress?

\n
Robert Jacobi [00:12:28]

It is literally the first thing in my toolkit, because it will provide the greatest longevity in whatever’s built. Gutenberg’s not going anywhere. There was a massive commitment to it from the project side of the universe. And to answer one of your earlier questions about, has it done enough? I think it’s exceeded all expectations and this is where I’ll get to it. They’re always going to be a voices like, okay, it doesn’t make bacon and eggs for me in the morning. Okay, That’s fine, it doesn’t. I think, and I truly believe what the magic of Gutenberg is, is the paradigm shift in forcing people to look at other things. So it’s hard to make a giant feature change in anything, whether it’s proprietary project, open source project. There are going to be plenty of people who are like, no, this works for me. This is great. Please don’t change. I get that. But technology moves forward. People’s expectations increase. Ten years ago, we barely had iPhones. All of a sudden we do, and now we expect everything to be infinitely easier and simpler and more responsive. I guess it doesn’t do everything that page builders do. That’s great. That’s fine. We’re not trying to cut out the middle man here, and I say we, I’m not actually involved directly in Gutenberg at any point, but it moves the technological user experience goal posts forward. All things being equal, the page builders of the world, Beaver Builder, Elementor, they’re all going to go their own way. Having Gutenberg as a critical component, soon enough, it will be just a mandatory component, that’s the end of the conversation. Says, listen, everyone, this is what we need as part of the ecosystem. This is how you’re going to connect with tools. You can absolutely go around those, but why would you want to, because this will be supported by a worldwide community.

\n

It’s not just going to be supported by the Beaver Builder community or the Elementor community, yada yada, this is now the new core and that’s very difficult to do, and it’s not, jumping back to what I said earlier about it, I think just making that change in and of itself and committing to that change is more important than full site editor or anything else. There’ll be incremental steps, but that was the big milestone step. Wow. Okay. This is the new tech, and we’re going to have to take advantage of it.

\n
Nathan Wrigley [00:14:45]

You said two words in that last little bit, well you certainly said paradigm shift and you said atomic. And I think for me, the atomic bit is really interesting because what I think many people haven’t had a chance to get to grips with is literally the atomic nature of it. This little section of your blog post or whatever it may be. You can just have this little interactive thing. It might be that you’ve got a block which does, I don’t know, lead generation, or you’ve got a block, like the cover block, which will just take care of the top of your posts. And each one of those things will have a different array of settings and it doesn’t have to be built inside a proprietary thing. It’s being built inside of the default editor for WordPress. So it’s going to bring a ton of functionality and a ton of interesting things. Some of it will be bloated. I’m sure there’ll be many people who fall into the trap of installing fifty times more than they need to, or five times more than they need to. But for those of us who were curious and check things out and look and see what the end result is, you’re going to be able to create really unique experiences on this one surface, and that to me is really exciting, but have the feeling that the community got left behind in the conversation about this a little bit. So the confusion that it was going to be a page builder leads me to the whole community conversation. I know you’re all about community. This is something that you thrive on. You love the WordPress community, as you have had loved many other communities in the past. Do you have any feelings around whether there’s been enough involvement. Asking the questions, what should it look like? How should it behave? What do we want to leave on the floor and edit out that we just, it was a blind alley, we shouldn’t have had that because there are some things that I think a really excellent, there are some things that I think I’m not sure anybody’s actually going to make use of that, but there it is. And just wondering what your thoughts were around, whether the community had been involved, whether it could have been involved more.

\n
Robert Jacobi [00:16:38]

I’m getting chuckles about a lot of these things. Could there have been more all the editing and whatnot. Since community is, especially in WordPress, a huge word, it’s always difficult to get every stakeholder, give them the space, give them the time given the vote.

\n

What I like about what happened with Gutenberg is that it did move, in my mind, relatively quickly, and expeditiously and said, this is what we’re doing. And I think it’s too easy to be bogged down in the politics of community to actually get stuff done. So if things fall to the wayside, if things were not edit out properly, that’s where I think, the greater ecosystem can come into play and say, we’re going to tweak this, with a plugin that makes this just a bit better. It takes this out and we have such a robust economy in WordPress. That yeah, go for it. I like to see a bit more activism from people as a whole on these projects, but it’s hard. We all have day jobs. We all have stuff to do, and I’m not going to blame the leaders of the project for trying to get stuff done. In fact, I’m going to give them kudos to just doing it because it’s very easy to get pulled back and say you didn’t listen to so and so, at some point we have to fish or cut bait, we need to do something and we need to move the technology forward because everyone else is doing it. And open source projects have a tendency, especially at their, let’s say late teens, early adult stages, getting sucked into managing the community more than managing the project and pushing it forward.

\n

You have to do both. It’s such a tricky balance. All kudos to everyone at Make dot WordPress, that they were able to do this. And it’s a large scale change and get it done. Fine, if you want to complain, that’s great. Guess what? No software lives, at that moment in time, it’s always updated and tweaked and there are still opportunities to make changes, advocate or different functionality. Expand the API, shrink the API, all those kinds of things. I do love that WordPress was able to cut bait and just go with it.

\n
Nathan Wrigley [00:18:43]

One of the underpinnings of WordPress since the inception really was PHP. And obviously now we’re moving into an era where these technologies are being inspected, and improvements have been created along the way. And so now we’re moving into an era where other technologies, for example, React is coming along and that requires quite a bit of relearning, you’ve really got to down tools, get the manuals out, start to read again. Do you have any concern that that kind of thing could be a bit of a roadblock? It will be a bit of have a roadblock for certain people, but the technology has to move forward. Just curious as to what your thoughts are about how that’s being implemented and whether or not we’re taking it at a slow enough pace or whether we should have just stuck with good old PHP?

\n
Robert Jacobi [00:19:29]

I like to use the right tool for the right projects, And I’ve been a coder, developer, engineer in multiple languages. I’ve actually never done anything with React, that’s one of the first ones. And that’s okay. We evolve. If we hadn’t evolved all these still using C from 1969 or whenever it came out. So this stuff has to move forward. And if React is the best solution to do that on the front end, that’s great.

\n

Some people will be excited by that. Okay. I can expand my personal knowledge and horizons by adding to React. Honestly, a lot of the headless stuff that we see these days is also React. So it’s not a bad thing to learn if you want to learn that. If you don’t want to learn it. Okay, that’s fine. There are plenty of opportunities to still expand your WordPress activities solely with PHP. Okay. Those are more personal choices. Do I want to learn another language? Do I want to improve on what I already have? Yes. Those are choices you have to make, but none of this lives in isolation. So we have to understand that a WordPress, plain old PHP site, might still need to connect up to a bunch of different things and not all those things are going to be on PHP. You still might be connecting up to something with Perl or Python. No, one’s forcing you to learn it. Granted Gutenberg injects this react universe into your face, but you can focus on the core things that you need to do without necessarily running into React. It’s a tool that more people are… here’s the trick, there are plenty of new people who are entering coding, development, open source communities, and they like React. So it makes sense to take advantage of all this new found wealth, and then also draw them back into the community. Great, you love running with all this JS stuff. Fantastic. Hey, by the way, did you know you could actually implement that as part and parcel with an old-school PHP content management system? Yeah, we can do that. That’s great. And look how you can expand your horizon. Yeah, it stinks if you don’t want to learn any kind of Node, React stuff. Okay. But, it’s sort of the nature of code. If we really want to take the analogy to the extreme, why aren’t we still coding on punch cards with ones and zeros. We’re going to abstract it and find the best tool to implement the functionality we want to see.

\n

And I get it me personally, I’m not going to go out and learn React today. Me twenty years ago, though, I would have added it into my tool belt in a heartbeat, just because it was just one of those things that you needed at that time, that was the case. People are going to go through their own personal and professional sort of life cycles of what they think they need to have on their knee or in their tool belt to be successful. We can’t stop for people who don’t want to do anything outside of PHP.

\n
Nathan Wrigley [00:22:04]

We’re going to shift gears now and talk about in-person events. Under the auspices of things like WordCamp Europe, which is depending on when you’re listening to this podcast that may just have happened, or it may be it’s coming around in a year’s time or something like that.

\n

Clearly we’ve been through a period that has really shaken the community. I feel that as a community, we were probably as well-prepared as any community could be because we were already working via the internet. We all had our computers out and so on. And yet still there is a concern. And I know that for example, people like Josepha Haden Chomposy has mentioned things like this, that the community in the absence of in-person events, there’s been a modest disengagement. And what I mean by that, this is the project, the WordPress project was propelled forward in a large part by those in-person events. So you’ve got contrib day, you’ve just got the handshaking, you can actually meet people for the first time. You can build relationships and so on. And none of that’s happened. We’ve had a year out. We don’t know quite when that is coming back, hopefully at some point in the near future, but we don’t know. And so just curious about your thoughts on that. What do you have to say about events coming back and how a project as big as WordPress, where there’s no central office where there’s no boss telling everybody what to do. So if you’re on the payroll, you’ve got to do this today and fix this thing, but that’s not how it works. And so the open source model, there may be a chink in its armor here where in-person events don’t happen, that camaraderie and those solutions don’t present themselves. And so the project, I’m going to use the word stalls, that’s a complete over-exaggeration, but bits of the project stalled because nobody’s meeting up.

\n
Robert Jacobi [00:23:49]

I am a huge, huge advocate of in-person anything. Whether you’re extrovert or introvert, there’s always going to be someone that you really want to talk to sit down in a corner, or have a cup of coffee with and build that relationship. I’m no anthropologist or anything, but feel that those kinds of human connections help us grow stronger in light of all the mundane things we do day to day. I don’t think the project has suffered because of a lack of in-person events over the last year. I think it’s suffered because everyone else has had a lot on their mind and there’ll be a, certainly a renaissance of activity as soon as we get into in person but this is one of those things where I don’t think correlation and causation match up. If you are worried about friends and family getting ill, did the economy, my personal economies take a downturn. That’s going to weigh a lot more on someone than, oh, did I catch up on the latest WordPress dot org, Slack notification about Full Site Editing. So I don’t think they’re completely tied together, but I will certainly tell you that as those in-person meetups start ramping up, I think that’ll be a flurry of excitement and activity. Part of that will be just because we’re not still trapped in our tiny little Covid bubbles.

\n
Nathan Wrigley [00:25:12]

What personally do you miss from the in-person events? You mentioned about having a coffee and sitting in a corner with somebody and so on, but anything that you find you’re missing, it could be something quite banal or it could be something a lot deeper.

\n
Robert Jacobi [00:25:24]

It’s really the accidents that happen at in person events. With a completely regimented online experience, I know I’m going to be talking with Nathan at such and such time. I know I’m going to be talking to whoever everything’s organized, calendars. Okay, there’s digital here, digital there. We may edit ourselves more on these platforms. When you’re in-person accidents happen. We may be walking through the sponsor hall and accidentally bump shoulders. And it’s oh my goodness, Nathan, great to see you. I haven’t seen you in 14 months. This is amazing. And you just start a conversation and those kinds of conversations are organic and random and not necessarily so overly planned and well thought out. And at those moments, I think unique ideas, exciting things can happen that just don’t happen in a much more shrunken space. I love the distributed world. And to your point, I think WordPress is not only just gone through well, it’s actually succeeded because we’ve already been in that position. We’re already ready to be online and take care of the day to day.

\n

We need those accidental bumpings of atoms to create new kinds of alloys. Oh my goodness. carbon and oxygen linked together. Oh, no, look what happened here. I don’t know what they do, I’m not a chemist! But my point being is when you’re in person and I’m going to keep calling them accidents, but not like in a pejorative kind of way, accidents happen, and it allows for very random, unique ideas, conversations, thoughts, whatever to happen, or just even a personal pick me up. Like you do remember me from being on slack for the last year. That’s fantastic. There’s an affirmation I think that happens for all of us when we’re in that kind of proximity with other like-minded people.

\n
Nathan Wrigley [00:27:21]

I think one of the, there’s two points about the online events that I seem to keep coming back to. And the first one is that I feel it’s taught us that we ought to have hybrid going forward. What I mean by that is that WordCamp EU, I feel it’s going to be difficult to put the genie back in the box of you have to go to the place where the event is. I feel that the future is going to be, sure enough, if you want to turn up and you want to benefit from the hallway and all of those things, go for it. But also if you’re living halfway around the world, that now needs to be a door which is not closed to you, you need to have it open. There needs to be streaming of those talks that are happening each day so that everybody can take part. That’s one of the things that I feel is going to happen.

\n
Robert Jacobi [00:28:03]

I completely agree. There are events that I would have never been able to attend on a very regular basis without there being an online component. Someone will solve this puzzle, but I think it’s going to be difficult to do a online and in-person event concurrently. I feel that you’ll get the worst of both worlds in that case. What I’d like to see, let’s take WordCamp Europe 2022. There’s going to be a three, four day in person spectacle. That’s fantastic. What I would like to see is maybe two days before the in-person starts. There’s a whole online portion of that. I’d be concerned about trying to do them concurrently. Are we really going to have, we can do all the live video for example, but how interactive can we make those live portions? Oh, look from online, we have a question to the speakers. Okay. That works. But outside of those sessions, how are we going to integrate the sponsor hall, the hallway track as we talk about it? Those are those accidents that I like to refer back to just walking up and down and bumping into each other. I don’t think that’s an easy problem to solve, but I’d love to see some kind of greater online kickoff onboarding experience, where you can meet the speakers, do some quick Q and A’s, and conversely, have the speakers say, make sure you don’t miss my session on such and such date and time, then that will, of course be also livestreamed.

\n

It’s going to be expensive. It’s going to be complicated. And I think there’s going to be multiple variations of attempts at making that succeed. I like to go with baby steps to see results. And I think just starting out with maybe a one or two day virtual camp tied to the in-person camp would be a good starter.

\n
Nathan Wrigley [00:29:46]

That’s what I was meaning really is just basically a camera at the back of the room where there’s a presentation going on with the possibility of questions coming, not just from the audience, sat in the auditorium, but from people in a different part of the world. And in fact, I feel it in a way, these kind of like skeuomorphic pieces of software, which tries to replicate the real world, you’ve got these AI representations of the hall. It’s nice. It’s a bit of fun. I feel it’s a dead end. Nobody ought to be under the illusion that’s what they’re going to do. But I do like the idea of just, here’s the talk, you can watch it at the same time as everybody else. And then maybe you and your pals can hang out. You can do your bit online and we can do our bit in the real world, and so it goes. It’s really just an opening up so that you don’t have to attend because the problem there would be that nobody actually makes the attempt to attend, but I don’t feel that’s the case. And my second point is that I feel that we need this stuff back just because the online stuff, there’s a fatigue associated with that, and I don’t for a minute think that everybody’s fatigued and I don’t for a minute, think the online events don’t have merit because they have enormous merit and they’ve been an amazing bridge, but I feel that there’s a proportion of the people who would love to be at live events who just can’t make the transition to the virtual events. There’s something about it. Something stifles them, perhaps they have the best will in the world, and then it’s on the screen. But then something in the real world occurs to them. The cat decides to chew up the sofas, so off you go, you’ve got to deal with the cat. You get distracted, you want to go and make a cup of tea, so you get distracted. Whereas if you’re at the WordCamp, you’re fully there. You’ve engaged, you’ve committed. You’ve potentially got on a plane. You’ve booked a hotel, all of that. And there’s no substitute for that. So that really was my second point is that I want to get the people who’ve been disengaged back in and ready to take on all of the challenges that we’ve got.

\n
Robert Jacobi [00:31:42]

Yeah. I think we’re on the same page. I can do virtual events. I certainly prefer in person. And the best example of how we know that in-person is very valuable is when you go to a lot of these virtual events, the networking spaces are generally very empty. People aren’t having those conversations, those random accidental conversations that they would add an in-person event because at an in-person event, you are physically, quote unquote, stuck in that space. If you don’t want to talk to someone, you’re just going to go your own way. That’s great. But if you do, who knows who’s next to you and you’re going to overhear things and interrupt the conversation and be interrupted and that’s that magic that occurs.

\n
Nathan Wrigley [00:32:29]

Okay. Let’s talk about the third point that we wanted to discuss today. I’m straying into an area where I don’t have a great deal of experience because I watch these things happen from afar. There’s nothing that really concerned me. That concerned me in the sense that I might be a consumer of some of the things that are being bought up. But you wanted to talk about, as you described it, the WordPress economy acquisition madness. Now, what did you mean by that? Just kick us off. Explain what you mean by that phrase.

\n
Robert Jacobi [00:32:56]

Here’s the beauty of being a successful project, people with money will find ways to make money from it. And that’s okay, and that’s a good thing. We’re seeing the likes of Automattic, WP Engine, GoDaddy, Liquid Web, Cloudways, yada, yada, yada. All these companies, wink wink, they’re all hosting companies because they’ve been in the space for awhile under different platforms and have recurring streams of revenue and cash on hand, they’re going to look to grow their businesses, and one of the easiest ways is to find valuable niche projects, that not only will bring cool bit of code into what they’re trying to do, but also allow them to reach out to all the people who have installed that plugin.

\n
Nathan Wrigley [00:33:45]

Do you have concern then that certain parts of the WordPress, let’s say plugin or theme space, are going to be consumed by these bigger entities as you described? In many cases, there will be hosting companies for reasons you’ve just explained. Do you have a feeling that silos in the future are going to occur? Where if you really want a decent, let’s go for, I dunno, membership experience, you really are better off going in the direction of that company, with the brands that it’s acquired over time. Or if you want to go for a WooCommerce experience, your best bet is going to be over here, and everything else is a poor relation of that. So we get silos, which we haven’t had until now.

\n
Robert Jacobi [00:34:28]

I think that’ll happen in the short term, but when that happens, a vacuum is created in the overall ecosystem. So if hosting company X has a, quote unquote, monopoly on that membership plugin, you know what, first of all, it’s all open source. All it takes is company Y to be like, we want to be in that space as well, and we’re going to re-imagine the underlying open source code base in XYZ format. Yes, a lot of letters there, but it’ll happen. These kinds of acquisitions and changes in economy I feel are okay. We’re all working from an open source code base. If this was all proprietary stuff that you can never take advantage of, I think that would be bad for the community as a whole, but that’s not the case. It’s just one company saying we’re going to be owners of this project. You can still fork that project any day of the week, don’t forget. Cause it’s all GPL. So I don’t think we’re losing anything in the long run. There’ll be short term hiccups. People won’t be happy. If that plugin doesn’t do exactly what they want, but they probably wouldn’t necessarily be happy even if it wasn’t taken over by someone else. I think there’s a percentage of people that will always want to see all this independent software, but all these companies are technically, okay maybe they’re not all independent because some of them are actually listed on public exchanges, but the opportunity hasn’t been taken away, and if such and such plugin gets acquired by such and such hosting company, I certainly see another hosting company looking for that competitor also happening.

\n
Nathan Wrigley [00:36:01]

Do you feel that, okay, again, rewinding the clock for the second time in this podcast, if we could go back maybe 6, 7, 8 years, something like that, before these companies were buying up suites of plugins and what have you, to bulk out their offering. We basically had independent plugin developers. There may have been a team that grew up over time and they were inventing a solution for a particular problem, and they were really invested in that, and that was great. We want to solve the calendar thing or we want to solve the, I don’t know, the menu thing, whatever it may be. I’m just wondering if we’re maybe getting into the territory of designing things to be acquired. We designed something so that this can happen, so that we can become bought up, taken along for the ride by a big hosting company, and just really whether or not there’s any dynamic that changes the way that instead of serving the customer and always trying to offer the best support for the product, really your whole intention for that business isn’t to create the product for the customer, it’s to create the product for the sell in the future.

\n
Robert Jacobi [00:37:01]

I agree. I think there’s a potential for that. On the correlator, are you getting value in what you want out of that product? So if I use, there’s something I’m going to jump into because it’s happened recently, but on the face of it, it’s a product that is so useful to me that I’m not going to have to do custom code. It’s above and beyond every other plugin competitor in that space. Am I going to use it? I’m going to use it, yes. And to some degree it doesn’t really matter what the incentives for the developer are at that point. If it’s doing what I wanted to do, that I’m going to use it because that’s what I needed to do, and it’s going to save me 10 50, 200 hours of development time to use this plugin as opposed to trying to create something on my own. And that’s question one, or the answer one. Answer two is there certainly is an issue with, what’s a nice word for miscreant. I guess it’s gonna be miscreant, where we’ve seen recently some plugin developers literally switch out what that plugin does and what its value proposition is with, quote unquote, upgrades. And they’ve done it behind your back. Oh, well you signed up for this cute little plugin that makes banners, guess what, now it’s going to do all these things and you have to pay for it just to get banners again, and it’s like really, really is that really what you want to do? And I think those developers are getting called out on it.

\n

The agencies and content creators, certainly in the nearby community are aware of that. I think those kinds of, yeah, they’re not necessarily illegal in any way, shape or form because you can do that, but it doesn’t really stick by the unofficial developer third party ecosystem code of conduct. And I think we’re always going to see exceptions to the rule, but as long as those are just exceptions, I think we’re in a good spot.

\n
Nathan Wrigley [00:38:43]

Let’s pivot again. Openverse. I’ve got to say, this is something that kind of passed me by. The radar wasn’t working properly over the last few weeks since Openverse came along. I’m going to ask you to tell us what Openverse is. I have a very vague understanding of what it is, but I’d like you to tell us why you think it’s important.

\n
Robert Jacobi [00:39:03]

This is a new project in the WordPress ecosystem. I should say WordPress dot org ecosystem. It comes from creative commons search project that was languishing at creative commons. They didn’t have community and developers interested in pushing the search component along and, with support from Automattic, it came into the welcoming arms of wordpress dot org. And it has it’s own thing called Openverse. I’m excited by it. One, because it expands the open source vision of WordPress, WordPress becoming even a greater open source proponent. It’s not just the CMS, but now we also have additional things that we’re caring about, which I think is fantastic. It simultaneously is going to be working on technical aspects as well as open libra software model, or content model, I should say, where the tool will be helping WordPress as well as anyone else, obviously on finding creative commons, open licensed media. So in this case, images. I think it’s a great expansion that’s completely in line with what the project is looking to do. And I think it’s going to be surprisingly helpful and people won’t even realize what’s going on, but they’ll all of a sudden be able to access a bunch of new content natively in whatever application, obviously WordPress will be at that top of the list, but, you’ll be able to access it with Drupal or proprietary systems.

\n
Nathan Wrigley [00:40:40]

What was the problem with the old licensing model? What was broken with it?

\n
Robert Jacobi [00:40:43]

What was broken was there was no one who was going to commit to keeping up the code base to make CC search working and functioning, tweaking it, bug fixes, whatnot. So, as part of the WordPress project, there will actually be active development and maintenance of the creative common search.

\n
Nathan Wrigley [00:41:02]

Okay, so was there any concern that things which you may have downloaded from third-party sites, we all know the ones that we customarily go to, that they were often perhaps changing the license after you downloaded things, and then suddenly you didn’t realize that you were in contravention of a license, which you thought you had full access to download, redistribute, do whatever you wanted and suddenly you realize, oh, okay, that’s no longer the case. This image that I’ve got, I need to take down.

\n
Robert Jacobi [00:41:28]

So, licensing is so fun and entertaining. So a lot of these download an image sites, those licenses still stand. So if you have downloaded it and are using an image that was licensed under creative comments, that’s not going away. Will they relicense new images? Possibly. The point is how easy will it be to find more creative commons based media? And I think that is the purpose of Openverse, to make that as easy and intuitive as possible. So again, it’s taking what used to exist as part of creative, common search, almost like a fork, rebranding it under Openverse and, making it part of an ecosystem that’s open source.

\n
Nathan Wrigley [00:42:15]

And this is going to be completely available inside the WP admin. So you’ll have search integrated there, and if you want to search for, I don’t know, a cat on cushions, for example, you’ll be able to do that and everything that’s returned, you’ll be able to use, hopefully because the search will have returned something valuable to you in this case cat’s on cushions.

\n
Robert Jacobi [00:42:35]

So that is my expectation. Obviously it’s not built into any of that yet, but yeah, that is that’s where I see the project going.

\n
Nathan Wrigley [00:42:40]

But it was a nice philanthropic gesture of Automattic to take this on board and just basically put it into WordPress so that the likes of me, and you can find our cats on cushions whenever we please.

\n
Robert Jacobi [00:43:35]

Right.

\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, 14 Jul 2021 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:29;a:6:{s:4:\"data\";s:13:\"\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:\"HeroPress: How WordPress Has Changed My Life – Gtarafdar\";s: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:56:\"https://heropress.com/?post_type=heropress-essays&p=3939\";s: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:160:\"https://heropress.com/essays/how-wordpress-has-changed-my-life-gtarafdar/#utm_source=rss&utm_medium=rss&utm_campaign=how-wordpress-has-changed-my-life-gtarafdar\";s: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:19947:\"\"Pull

I’m Gobinda Tarafdar from Dhaka, Bangladesh. In short, Gtarafdar. This short form is available everywhere on social media. Actually, while I was a kid, a medicine specialist suggested this short form of my name. From that time, I had a plan to use it. Moving on, now I have become a WordPress Enthusiast Marketer. In this essay, I will share my journey to WordPress with you.

\n

\n

Early Stage Of My Career:

\n

I started my career as a teacher in an academic coaching center back in 2010. I was then a 1st-year student of my 4-year Graduation Program. But the number of my earnings was not sufficient to cover all my livelihood. My parents were giving me support to continue my study at that time. So I was looking for more ways to earn my living. But in our country, it’s tough to get a job without graduation. I tried to find more tutoring jobs but failed to get one. Then I gave stand-up comedy a try. At that time, it became popular. I participated in a TV reality show based on stand-up comedy. But failed to reach the top five. So, didn’t get much success in the comedy sector as well.

\n

\n

In this way, two years passed. After a while, I got the idea of a call center job in the telco industry of our country. I gave an interview to our number one telco company Grameenphone – a sister concern of Telenor. And luckily got the chance to join there. And it’s a game-changing part of my career. I learned a lot about team play, pressure handling, the ability to put myself in a customer’s shoes, and more. But it was a part-time job, and my graduation was about to end. Immediately after finishing my graduation, I got the opportunity to join Grameenphone’s Finance team. However, I had to pass the challenging interview as many other promising candidates were competing with me. Everything seemed so great at that time. Got the opportunity to work in the country’s best corporate office, but bad luck struck again. Didn’t get the chance to be a full-time employee from contractual employee status.

\n

I took a break to join the country’s public service commission. Unfortunately, I failed to get the desired position again. In the meantime, my father retired from his job. All of a sudden, so many responsibilities came upon me. By the way, I forgot to mention, in this time frame, I had completed my Graduation, Masters, and MBA. The year where I’m now in the beginning of 2018. After my father’s retirement, I had no time for an experiment. But the main challenge came then.

\n

No one wanted to give me a chance as I worked at one of Bangladesh’s most prominent companies; they thought I couldn’t fit into their office culture.

\n

Also, I wanted to start my career as a Digital Marketer, and I had no practical experience at that time. I had some certification of Udemy and Hubspot free courses. But I was confident that I had a degree of MBA in Marketing. But all of my confidence was doomed within three months. I stopped applying everywhere, started to do some research on the job sector. Finally, I decided to join the IT industry, and in our country, WordPress Based companies are in the leading position. So, I had my target fixed towards the WordPress industry.

\n

A Huge Risk-Taking State in My Career:

\n

I took a huge risk to start my career in the WordPress industry. After not seeing much job opportunities in the Digital Marketing area in my country, I was planning to join the telco industry again as I was finding no option to cherish my dream. I badly needed a job at that time. But meanwhile, I found a job circular in weDevs. They were looking for a Digital Marketer Intern. So I made my decision to take part in this program. Surprisingly, I got another job offer from a renowned MNC of our country in the sales team. But I took a huge risk and started trying for the weDevs internship program, and refused the salesperson job. My friends Mayeen & Arif helped me a lot to learn more about WordPress. And they guided me on how I could set up localhost on my computer, and from then, I started to explore themes and plugins from the WordPress repository. I must say I got an interesting tool to play with. After passing three stages, I finally got the chance to join weDevs. weDevs is a popular WordPress Plugin making company. It’s famous for Dokan Multivendor Marketplace Solution for WooCommerce.

\nMy Life at weDevs\n

Ohh, maybe you have a question about how it can be risky to go for the weDevs internship program! Well, the payout of the other company was three times higher than the weDevs internship payout. And I refused to join the other sales team while I still didn’t have any guarantee to join the weDevs team. So now you can judge, isn’t that risky? (Sorry, I can’t share the name of the sales company publicly here due to some policy issue.)

\n

The Journey to WordPress:

\n

From the day when I had installed WordPress in my local host, my journey in this ecosystem started. I found it so easy to use and user-friendly that I felt anyone could create a website. I started to read articles and explore the World of WordPress. Also, weDevs’s internship program helped me a lot to get involved in the WordPress industry. My mentor Afshana Diya and Mainul Kabir Aion guided me a lot to dive deep into the sea of WordPress. Learned the area of content marketing, explored paid mediums, gathered knowledge on social media marketing, and more within three months. The internship program was exact and compact, along with interactive.

\n

Here came another twist. I wanted to be a part of the Digital Marketing Team. But because of my communication skills and interpersonal relationship skills, Mr. Nizam Uddin (Founder & CEO at weDevs) offered me the Business Development executive position. It was an entirely new thing at weDevs. I was the one-man army in the Business Development Team. And it opened up a new world to me. At that time, I got my first chance to attend a WordCamp (WCAhmedabad, India 2018). From that time, I got the motive to be involved in the WordPress Community. I’ll share how WordCamps can help you to join the community closely. Later on, I got the chance to participate in WordCamp Kolkata 2019, WordCamp Nagpur 2019. It was a fantastic journey to join WordCamps in person. In 2019 I took part in WordCamp Dhaka as a volunteer.

\nMy Journey to WordCamps\n

I’d love to share with you; now, I have become part of the Digital Marketing Team of weDevs. After almost two years of my journey as a business development executive, I got this new opportunity to prove myself again. So I took this opportunity and became a Digital Strategist.

\n

Now I’m dedicatedly taking care of a sole product. It’s an Addon of Elementor Page Builder. It’s HappyAddons for Elementor. I’m the product coordinator of this excellent tool. From zero to now, 100k+ users are actively using this tool. It’s an incredible learning period in my career path. I learned how to grow a product from the ground level. It’s a great achievement for me as a Product Marketer.

\n

How WordCamp Helps Me to Become a Member in the WordPress Community:

\n

WordCamps are the place of like-minded people. When you are in touch with the right people under the same roof, you will get that homely feeling. Also, in WordCamps, you get to meet industry experts. Interestingly, you can collect lucrative swag items. To some extent, you will get an opportunity to make partnerships to expand the business. Moreover, some companies share job boxes where anyone can share their resume. So it could be a place of opportunities. Who knows what you will get. But in my case, I made so many friends. We are now close buddies.

\n

The exciting part, some WordCamps run contributors day. On that day, you will get the chance to know closely about how you can take part in the core programs of WordPress. From WordCamp Ahmedabad, I started participating in WordPress programs, also started joining WordPress teams meetings. I’ve become active on social media as well to spread news and updates related to WordPress.

\n

How I’m Enriching My Knowledge of WordPress:

\n

One line changes my way of thinking. Once I was talking with our Founder & CTO, Mr. Tareq Hasan, regarding this topic. He just said, “Gobinda, you don’t have to learn coding to solve the problems of WordPress; you have to gain the ability to solve the problem by anyhow. You can solve any kind of problem by referring to other WordPress Plugins and tools.”

\n

I got a new meaning of using WordPress. From that time, I have started to check WordPress plugins and themes to learn more about their purpose. WordPress repository now becomes a place of amusement for me. Sometimes, my colleagues refer to me as a ‘plugin man’ as I try to give a quick solution to WordPress-related problems with the help of WordPress plugins.

\n

Still, I’m participating in several Facebook Group discussions. Trying to solve several solutions and learning what problems are usually people facing while creating websites with WordPress. And believe me, there is definitely a solution to each particular problem.

\n

You have to keep patience and search for the solution in the right type of keywords.

\n

For example, yesterday on the Facebook group – WordPressian (Dedicated Facebook Group for those who speak Bangali), a person was looking to create a courier service platform where people can track their package. Most people suggested building a custom-made solution. But I know there is a solution; I randomly found it on the WP repository.

\n

So I just googled this term “WordPress plugin: courier service”. Google didn’t disappoint me.

\n

I got my answer, read the description, reviewed, checked screenshots, and shared the solution with that person.

\n

To increase my knowledge of WordPress, I use another method. I use some Google Chrome Extensions for checking the Builtwith Materials of WordPress sites. When I jump on a WordPress site, I just click on the Chrome Ext. and check the plugins they’ve used to create their site. And it helps me a lot to learn the tools and their purposes. You can do that if you want to increase your knowledge of WordPress.

\n

Lastly, you have to create a site by yourself. Otherwise, you would not be able to know the issue on your own. At least create your own portfolio site. I have learned so many things while creating my portfolio site: gtarafdar.com. You will know some untold facts, and finally, you will get a boost. Mr. Asif Rahman, the founder of WP Developers, gave me this idea. He always inspires me to create a personal website. Also, he forced me to write about WordPress daily. Guided me on how I can create a site with Elementor in 2018. I became familiar with a handy tool that helps me create a site without having coding experiences from that time. Later on, it helped me to take over the Happy Elementor Addons Project.

\n

How you can connect with WordPress Socially:

\n

Twitter is the best medium. I opened my Twitter account in 2010. But I had no motivation to use it as I didn’t have people close to me there. My friends were all on Facebook. I was also trying to involve myself on Facebook. But after joining weDevs, I found my Mentor, Afshana Diya, was so active on Twitter, and she has so many like-minded people on Twitter, and most of them belong to the WordPress community. I got new motivation to use Twitter. I started to connect with WordPress Professionals. Also interacted with them regularly. And I must say it feels really amazing.

\n

I’ve prepared a Twitter list of WordPress Influencers. You can easily follow them from here.

\n

How you can start your career at WordPress:

\n

If you have a passion for coding, you could be a WordPress developer. In our region, here is a myth. To become a developer, you have to be a CSE grad. But it’s not true. Let’s check a fact. In our weDevs, most of the Developers are directly not from Computer Science Engineering backgrounds. In the same way, you may have joined the CSE program at an early stage, but now you may not have that much passion for coding. You can be a Product Manager. In the WordPress industry, there is scope for a Product manager as well. Another exciting sector is the Quality Assurance team. So many companies are hiring in this sector. Moreover, if you like to communicate with people, you can join the Support Engineering team. You can’t imagine how many job openings there are in the support engineering field.

\n

Those who don’t have any coding knowledge but are proficient in English and have a passion for writing can join as Content Marketers. There are plenty of job vacancies in the content marketing area.

\n

Another interesting option is joining the Designing team. If you find interest in the designing sector and love to play with the designing tools like Figma, Adobe Tools, Sketch, you can definitely join the design team of a WordPress company.

\n

Later on, other job sectors like HR management, Accounts, Business Development, and other necessary areas are also available on WordPress companies. More interestingly, you can work remotely in so many companies. WordPress founding company Automattic is running its whole operation remotely. You just have to find your perfect niche. Otherwise, you can be frustrated.

\n

I’ve prepared a list of WordPress companies where you can apply for jobs.

\n

Finally, don’t be frustrated, my mate. I often hear from my fellow friends and juniors always blame God, parents, and the government because of their unemployment problem. But when I reach them and personally request to gain some technical skills, they just run away most of the time. Not even reply to my messages anymore. Even some of them block me. Lol. Also, some other groups are available; they knock me for jobs and share their family issues, but when I ask them to learn more about web development, they just fly like a bat. I don’t know what their problem is. If you are in the same category, then my mate, you are in huge trouble. Change your mindset. Gain some skills. It could be anything. Try one by one. Then choose the best one for you. But again, don’t be frustrated. Keep focusing on your goal. And dive into it.

\n

What’s The Challenge on Working in WordPress Industry:

\n

I’ve shared all the positive things about joining the WordPress industry. But there is a significant challenge you have to face while you will join the community. In my region, very few people know WordPress. Only tech-savvy people are familiar with that. Even most of the people don’t have any prior knowledge about remote job life. I have personally experienced so many funny incidents. Last year when my family members found me in front of my Mac and sometimes talking with some people, sometimes in English, they found me as an alien in my house. Even most of the time, I failed to give proof of how the whole work was done. You will face the same situation if you belong to the rural area of Bangladesh. But don’t worry, I prepared a comic book on Describe WordPress To Non-Techies. You can read the conversation with my Grandpa. I have tried to give an idea about WordPress. I hope this will help you to introduce WordPress to the non-tech guys.

\n

How I’m Contributing to the WordPress Community and how you can start:

\n

Usually, I try to attend the weekly meeting of WordPress teams. I have attended several coffee-talk sessions of WordPress Teams. It helps me join with the members. Also, I’m trying to contribute to the Polyglot team. I have started to give suggestions of translating WordPress in Bangla. But mostly, I contribute in different ways. I have conducted local WordPress meet-ups, volunteered on WordCamps. I spread the news and updates through my social media accounts. Help WordPress people to find jobs. Recently, I’ve started my YouTube Channel(Gtarafdarr). I have begun to create how-to tutorials on WordPress.

\n

If you want to join WordPress core teams, you will need a WordPress Slack Account. From here, you can join WordPress Slack.

\n

From here, you will find the meeting schedules of different teams. Don’t get puzzled. You can sort out your desired teams and add the meeting reminders to your calendar.

\n

Everyone in the WordPress community is so helpful. If you find any difficulties, raise your hand and people will guide you in the right way.

\n

Also, there are so many WordPress Facebook communities. Some are locals, and few are international, like WordPress, Advanced WordPress, WordPress For Non-Techies by WPCrafter, The WP Admin Bar, WPLeague, WPBeginner Engage – WordPress Help for Non-Techies, etc. Local Communities are, WordPressians, Kolkata WordPress Community (WPKolkata), etc. You can join these groups to get help from experts. Also, you can help others if you know the answers of the queries.

\n

This How WordPress Changed My Life

\n

Finally, I’m really thankful to WordPress. Because of this community I have overseas friends. We talk and meet virtually. All of them are so helpful. I get new motivations to do something extraordinary in my daily routine. I’m thankful to my parents and my younger sister as they rely upon me. They help me to take the risk to chess my dream. I’m grateful to weDevs and Tareq Hasan, Nizam Uddin, Asif Rahman, Afshana Diya, Mainul Kabir Aion, and my friends Arif, Mayeen, Shahriar, Mazhar, and so on. They all have played a significant role in helping me become Gtarafdar, a WordPress enthusiast. Also, thanks to the HeroPress team for reaching me and encouraging me to share my story here.

\n

I’m still learning about WordPress and have to go further. If you want to connect with me, you can follow me on Twitter: @Gtarafdarr. Let’s contribute to WordPress and hold the glory of the supreme power of an open-source platform.

\n

The post How WordPress Has Changed My Life – Gtarafdar appeared first on HeroPress.

\";s: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, 14 Jul 2021 06:42: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:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"Gobinda Tarafdar\";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:13:\"\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:\"WPTavern: InstaWP Launches New Service for Disposable WordPress Testing Sites\";s: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://wptavern.com/?p=119740\";s: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:199:\"https://wptavern.com/instawp-launches-new-service-for-disposable-wordpress-testing-sites?utm_source=rss&utm_medium=rss&utm_campaign=instawp-launches-new-service-for-disposable-wordpress-testing-sites\";s: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:4526:\"

Competition in the sandboxing products space is heating with the entrance of InstaWP, a new service for setting up disposable WordPress testing sites. Founder Vikas Singhal created the tool to provide a quick way to set up live testing sites online or to show something to a client or team.

\n\n\n\n

InstaWP joins the ranks of services like TasteWP and WPSandbox but with a few unique options. At setup, users can select from WordPress versions back to 4.7 and may even choose to spin up a site using the latest beta or release candidate. Like other services, InstaWP allows you to choose your PHP version. The ability to disable WP cache and browser cache is coming soon. Users can create a custom name for their sites or leave it blank for a randomly generated name.

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

Free WordPress instances stay live for 8 hours, and users can link their accounts via email to extend it to 48 hours.

\n\n\n\n

InstaWP, not to be confused with InstantWP, a local WordPress installation tool, was built on an nginx + Apache server without any containers. Singhal said he found containers to be too heavy for this particular use case. He runs a WordPress plugin/theme shop along with an agency on the side, both of which could benefit from InstaWP’s quick testing sites.

\n\n\n\n

“I wanted to build a solution for ourselves where we can quickly launch WP instances for a variety of reasons – testing a feature of WP, testing a plugin/theme, testing in different versions of WP/PHP and last but not the least – creating an ‘instant’ test environment for the clients for them to test our plugins/themes,” he said.

\n\n\n\n

Singhal started InstaWP a month ago and received so much positive feedback on Reddit and from the Post Status community that he hired two dedicated developers to work on the project. Testers have commented on how fast the service spins up sites. Version 1.1.0 introduced Slack integration, which allows users to instantly set up a site by typing /wp in Slack. The release also added WordPress admin auto login for quick access without username and password.

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

InstaWP has a public road map. Features on deck for future releases include the following:

\n\n\n\n
  1. Slack and cli commands
  2. Download Files and DB Backup from the UI
  3. Direct push to FTP or cPanel
  4. nginx and nginx + Apache configurations
  5. Finer controls on PHP settings
  6. Save configurations for instant launch of pre-configured WP
  7. Integrations with hosting providers
  8. Map custom domains
  9. Multiple servers around the world (USA, Singapore, London, etc.)
\n\n\n\n

Singhal said he was aware of TasteWP as a competitor but plans to differentiate InstaWP based on simplicity and feature set.

\n\n\n\n

“My vision with InstaWP is make it a default tool for WP learners, enthusiasts, freelancers, and agencies – basically everyone,” he said.

\n\n\n\n

Singhal plans to monetize the tool for both end-users and plugin and theme authors. Users will have to upgrade to gain access to increased limits, custom domains, FTP access, and the ability to reserve a site. WordPress product authors can upgrade to provide 1-click demos to their clients and prospective customers.

\n\n\n\n

Singhal said so far more than 500 instances have been created and teams from Yoast and some agencies are already using the tool. Several prominent WordPress businesses have requested agency pricing that would allow their users to test their plugins via a 1-click preconfigured install. The service is still under active development and Singhal plans to iron out pricing in the near future. Testers who have suggestions for InstaWP can log them on the tool’s idea board for future consideration.

\";s: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, 14 Jul 2021 04:25:16 +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:13:\"Sarah Gooding\";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:13:\"\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: Duotone Filters: WordPress 5.8 Puts a Powerful Image-Editing Tool Into Users’ Hands\";s: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://wptavern.com/?p=119885\";s: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:227:\"https://wptavern.com/duotone-filters-wordpress-5-8-puts-a-powerful-image-editing-tool-into-users-hands?utm_source=rss&utm_medium=rss&utm_campaign=duotone-filters-wordpress-5-8-puts-a-powerful-image-editing-tool-into-users-hands\";s: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:4769:\"

Features such as the upcoming block-based widgets system, the template editor, theme-related blocks, and others have taken up much of the spotlight as of late. However, one of the best user-focused tools shipping with WordPress 5.8 is a duotone filter for Image and Cover blocks.

\n\n\n\n

The term “duotone” in this sense means combining two colors as a filter. Then, layering it over an image or video. More specifically, one color is used for the shadows (dark elements), and the second color is used for the highlights (light colors).

\n\n\n\n

When the feature first landed in Gutenberg 10.6 back in May, I spent a couple of hours just tinkering around with it on that first day. Since then, I have racked up a few more. It is a powerful media-editing tool that does not require users to dive into image-editing programs, allowing them to change the mood of a story at the click of a button.

\n\n\n\n

Duotones can be anything from a simple grayscale to a mixture of any two colors. Shadows and highlights can even be inverted, depending on the shades chosen.

\n\n\n\n

The following shows the difference between an original image of kittens (because who doesn’t love kittens?) and one with a grayscale filter:

\n\n\n\n
\"\"\"\"
Original image vs. grayscale duotone version.\n\n\n\n

WordPress offers a set of eight duotone color sets by default. This includes a grayscale, dark grayscale, and various combinations, making for some fun filters. Some will work better than others, often depending on the media file uploaded.

\n\n\n\nApplying the WordPress purple and yellow duotone filter.\n\n\n\n

Like many other features awaiting users with WordPress 5.8, theme authors are those who need to dig in to offer a range of ready-baked options for users. The new theme JSON file configuration allows developers to define a set of duotone colors that match their theme.

\n\n\n\n

Defining custom duotone filters is as easy as plugging a name, a slug, and two colors into a theme.json file. The theme developer handbook includes examples of creating such presets.

\n\n\n\nCustom “emerald scale” duotone filter from a theme.\n\n\n\n

Users are not limited to the filters that WordPress or their themes offer. The duotone popover allows them to choose from any range of colors for custom shadows and highlights.

\n\n\n\n

Duotone typically works best when an image has a high contrast, which means a wide-ranging spread between the light and dark colors. Darker shadows and lighter highlights make for more visually stunning filters.

\n\n\n\n

When used with the Cover block, users can add filters to both image and video backgrounds. However, they also have access to the typical overlay color or gradient option. This provides a ton of flexibility for customizing media.

\n\n\n\nDuotone filter + gradient overlay on a Cover block.\n\n\n\n

Because the duotone feature works with an inline SVG file under the hood, it also means that using it does not permanently change image or video files. Users can still use their original media elsewhere on the site without uploading a second copy.

\n\n\n\n

Duotone is just the tip of the iceberg. There are so many other possibilities outside of just laying a couple of colors on top of an image. Bence Szabó wrote an extensive tutorial on using SVG filters for patterns on CSS-Tricks. This could be a route for background options in the future — wood grain, anyone? Maybe not every possibility is suitable for core WordPress, but I would love to see plugin authors taking a stab at some alternatives.

\";s: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, 14 Jul 2021 02:04: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:14:\"Justin Tadlock\";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:13:\"\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:\"WordPress.org blog: WordPress 5.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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10933\";s: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/2021/07/wordpress-5-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3239:\"

The third release candidate for WordPress 5.8 is now available!

\n\n\n\n

WordPress 5.8 is slated for release on July 20, 2021, and we need your help to get there—if you have not tried 5.8 yet, now is the time!

\n\n\n\n

You can test the WordPress 5.8 release candidate 3 in any of these three ways:

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

Thank you to all of the contributors who tested the Beta/RC releases and gave feedback. Testing for bugs is a critical part of polishing every release and a great way to contribute to WordPress.

\n\n\n\n

Plugin and Theme Developers

\n\n\n\n

Please test your plugins and themes against WordPress 5.8 and update the Tested up to version in the readme file to 5.8. If you find compatibility problems, please be sure to post to the support forums so we can work to solve them in time for the final release.

\n\n\n\n

For a more detailed breakdown of the changes included in WordPress 5.8, check out the WordPress 5.8 beta 1 post. The WordPress 5.8 Field Guide, which is particularly useful for developers, has all the info and further links to help you get comfortable with the major changes.

\n\n\n\n

How to Help

\n\n\n\n

Can you speak and write in a language other than English?  Help us translate WordPress into more than 100 languages!

\n\n\n\n

If you think you have found a bug, you can post to the Alpha/Beta area in the support forums. We would love to hear from you! If you are comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

\n\n\n\n

Props to @cbringmann, @chanthaboune, and @marybaum for peer-reviewing!

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

Code is poetry
Jazz is improvisation
Both are forms of art

\";s: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, 14 Jul 2021 01:09: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: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:\"\";}}}}}i:33;a:6:{s:4:\"data\";s:13:\"\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:94:\"WPTavern: UK State of Open Report Finds 97% of UK Businesses Surveyed Use Open Source Software\";s: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://wptavern.com/?p=119726\";s: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:231:\"https://wptavern.com/uk-state-of-open-report-finds-97-of-uk-businesses-surveyed-use-open-source-software?utm_source=rss&utm_medium=rss&utm_campaign=uk-state-of-open-report-finds-97-of-uk-businesses-surveyed-use-open-source-software\";s: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:4513:\"

OpenUK, a WordPress-powered not-for-profit company, has released its State of the Open report with data from the UK in 2021. The company advocates for open source software, open source hardware, and open data, while providing a central point of collaboration for people working in the open sectors.

\n\n\n\n

The State of the Open report offers a broad overview of the UK’s open source ecosystem. This collection of research includes surveys of UK companies, interviews, industry reports, and analysis from different publications. It was sponsored by GitHub, SUSE, and the Open Invention Network, and conducted by Smoothmedia consulting firm under the direction of ethnographer and social researcher Dr. Jennifer Barth.

\n\n\n\n

Key findings in Phase 1 of the report include research demonstrating that open source software contributes an estimated £43.1 billion to the UK economy, with the UK ringing in as Europe’s largest contributor.

\n\n\n\n

Phase 2 covers open source adoption in the UK. Researchers found a staggering 97% of the 273 UK businesses surveyed use some form of open source software:

\n\n\n\n

We found that 97% of businesses of different sizes in all sectors of the UK economy use open source software technology. Although resources became a more pressing concern during the pandemic, 64% of businesses in our sample experienced business growth which translated into a high recruitment drive for roles relating to open source software in the past 12 months (see recruitment findings). Further, we find that almost half of businesses surveyed (48%) are using open source software more as digital adoption becomes embedded in organisational culture and business.

\n\n\n\n

Other key findings from Phase 2 include the following:

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

One interesting observation from the contribution data is that smaller companies are more likely to contribute back to open source than larger companies. Smaller companies are also more likely to use open source software in their businesses.

\n\n\n\n

From the #StateOfOpen report from @openuk_uk, it\'s clear that businesses of all sizes make key use of open source. The report correlates company size and open source involvement, showing smaller companies more active in contributing to open source. https://t.co/A7dz3pjqFm pic.twitter.com/L5qeRrs9Xc

— Aiven (@aiven_io) July 12, 2021
\n\n\n\n

Survey respondents cited “saving on costs” as the main reason for adopting open source (75%), followed by more collaboration (72%), skill development (64%), the quality of code (61%), and security (52%).

\n\n\n\n

Phase 3 is planned to be published in September 2021. This report will focus on UK data with a methodology tailored to reveal the value of open source software to the digital economy. It will also include case studies that demonstrate the non-economic, intangible benefits of open source software, such as skills development and collaboration.

\n\n\n\n

The published reports are lengthy but will be of particular interest to companies working in the UK and Europe, especially consultancies that may need to justify using open source technologies in engineering decisions. OpenUK plans to conduct a further survey in 2022 as part of this effort to estimate the impact of open source on the UK economy.

\";s: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, 13 Jul 2021 04:20: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:13:\"Sarah Gooding\";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:13:\"\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:\"WPTavern: Contributing to Open Source Is ‘Better Than Any College Degree’\";s: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://wptavern.com/?p=118776\";s: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:187:\"https://wptavern.com/contributing-to-open-source-is-better-than-any-college-degree?utm_source=rss&utm_medium=rss&utm_campaign=contributing-to-open-source-is-better-than-any-college-degree\";s: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:7666:\"

A week ago, I published my thoughts on the block system from a developer’s perspective. Taking a weekend-afternoon deep dive into creating custom block types meant learning some tough lessons and familiarizing myself with a programming language I had little experience using.

\n\n\n\n

Programming has always been a trial-and-error affair for me: write code, refresh the browser, read the error message, and attempt to fix the problem. Then, simply rinse and repeat the process until the program is not broken. Those mistakes are woven into the art of coding, the layers underneath that poetry on the visible canvas.

\n\n\n\n

I have absolutely made the same mistake twice. And, thrice. Probably a lot more than that if I am being honest with myself and you. Eventually, I stop making those same mistakes, and some method or procedure is permanently seared into my brain.

\n\n\n\n

I have written a few hundred WordPress tutorials in the past decade and a half. I am a twice-published author of development books and served as a tech editor on another. However, I am not much of a reader of tech books and documentation. For one, programmers are not necessarily the most engaging writers. Plus, book smarts can only get you so far. You need the street smarts of programming to become good at it, which means learning from experience.

\n\n\n\n

While I firmly believe that reading is a central part of that, there is no replacement for getting your hands dirty. Building things, making mistakes, and learning to fix them is what makes programming fun.

\n\n\n\n

Working on open-source software like WordPress is one of the best ways to do that. There is no upfront cost, assuming you have access to a computer, a prerequisite to programming of any kind. There are usually people willing to lend a hand or answer questions, and there are always problems to solve for those ready to dive into them.

\n\n\n\n

As WordPress Executive Director Josepha Haden Chomphosy chatted with Matt Mullenweg on the Openverse project a couple of months ago, there was a moment that I found myself nodding my head in agreement.

\n\n\n\n

Because, of course, you know, contributing and being involved with open source is probably the best way to learn a technology, better than any college degree.

Matt Mullenweg, WordPress Project Lead
\n\n\n\n

I have learned more about WordPress, PHP, HTML, CSS, and JavaScript by contributing to open-source software than I ever learned in a college course.

\n\n\n\n

I grew up in a generation that was told that we must get a college degree. It was an integral part of the American dream that would result in suburban life in a neighborhood with perfectly aligned rows of houses, ending in a cul-de-sac. It was the first step toward a two-car garage, white-picket-fence, 2.5 kids, and a dog. College was the promise that my peers and I hinged everything on. It was expected of us, and so many of us did our duty.

\n\n\n\n

Here is the thing that our parents did not know. The internet would change everything.

\n\n\n\n

I graduated high school in 2002. This was during that stretch where the online world was exploding. All of the world’s knowledge would soon be at our fingertips. Today that is truer than ever. Anything you will ever need to learn about writing code is available through an internet connection.

\n\n\n\n

My experience with college-level courses in programming was mixed, but I learned a necessary life lesson from them: I was not cut out for a degree in software engineering. I am glad I wised up early on and pursued a different degree, saving myself some time and money.

\n\n\n\n

I rocked my half-summer C programming class, my introduction to writing code. I also had a passionate professor who once worked on U.S. missile projects as a bug-tester. It was probably not the most glamorous job, but he always made it sound exciting because he loved what he was doing. Our class was tasked with building various programs throughout the course, but we usually had a choice in what we were building. For my group’s final project, we created vending machine software.

\n\n\n\n

I was on the fast track to becoming a software engineer after that first class. I had built a way for merchants to get paid for delivering sugary treats and soft drinks to customers. It was capitalism meeting programming, and I had a taste for it.

\n\n\n\n

The fall semester rolled around, and I was motivated to move beyond the realm of procedural programming in C. Java, an object-oriented programming (OOP) language, would be my next challenge.

\n\n\n\n

The most advanced thing our class built for an entire semester was a basic calculator. I skipped nearly every lecture because I could not stay awake watching the professor chicken-peck his way through programs for three hours every week. I attended the mandatory “labs” — basically a fancy way of saying an extra class where the professor’s assistants would teach the actual coursework.

\n\n\n\n

Needless to say, my fire died down. While calculator programs are handy tools, I wanted to branch out and build things that mattered.

\n\n\n\n

You know what reignited my flame for programming? At first, it was general web development. But, WordPress was what I really became passionate about. And, I have not looked back since I started using it in 2005.

\n\n\n\n

WordPress was my gateway into a world where I could create things that interested me. I could jump ahead into a project far more advanced than my skill level, trial-and-error my way ahead, and eventually build something that others found value in.

\n\n\n\n

Unless universities have changed, most teach step-by-step foundational lessons to their pupils. Some students may luck out and land in that unique professor’s class who gives them leeway to explore various ideas. However, there is no substitute for creating something of your own, solving a problem that you see.

\n\n\n\n

And, that is what programming is all about — solving problems.

\n\n\n\n

In 2007, I released my first WordPress plugin into the wild. It automatically listed all of the subpages of the currently-viewed page. Dozens of similar plugins have been written since and probably before (it seems WordPress would have a simple “list subpages” function by now).

\n\n\n\n

Last week, after writing a new plugin, I was reminded of the free education that the WordPress community has given me over the years. Some of it has been reading documentation. Some from WordPress Stack Exchange answers. Other bits have been studying from those who came before me, building upon their open-source code. All of it was from other people giving something back to our community.

\n\n\n\n

This is not necessarily a knock on college. Some people perform better in that structured environment, and there is value in all forms of education. However, there are alternatives for those who cannot afford college or learn better in a different environment. And, there is no discounting the experience you get from contributing to something bigger.

\n\n\n\n

If you are one of our readers thinking about getting into programming, just dive in. Make some mistakes. Build. Learn.

\";s: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, 13 Jul 2021 00:40:23 +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:\"Justin Tadlock\";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:13:\"\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:\"Gutenberg Times: Block Building, Query Loop block and more – Weekend Edition #177\";s: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=18471\";s: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://gutenbergtimes.com/block-building-query-loop-block-and-more-weekend-edition-177/\";s: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:15136:\"

Howdy,

\n\n\n\n

For a few days, we enjoyed non-humid weather in Florida as Hurricane Elsa sucked all the moisture out of the air and took it with it. Sorry, Northern friends.

\n\n\n\n

For some fun summer reading, I can highly recommend the WordPress 5.8 DevNotes, all handily assembled into a massive Field Guide by Milana Cap.

\n\n\n\n

After the publishing rush around the WordPress 5.8 release last week, this week is certainly a lot calmer. Although I know that behind the scenes, contributors are working hard on getting Block Editor End-User documentation ready, too. ?

\n\n\n\n

Hopefully, you have been busy testing plugins and themes for compatibility with the new widget block-editor. July 20th is only 10 days away. WordPress 5.8 RC 2 is out and could use your eagle eyes to spot last-minute bugs and quirks.

\n\n\n\n

What else has happened in the WordPress Gutenberg space last week? I have a few more links for you. As always, you don’t have to consume them all in one sitting, you can always come back during the week.

\n\n\n\n

Wishing you a wonderful weekend and start into your next week!

\n\n\n\n

Yours, ?
Birgit

\n\n\n\n

Gutenberg Development

\n\n\n\n

Gutenberg 11.0 was released and Dave Smith compiled the release notes for the team. This time in the release cycle of the next WordPress release, it’s all about bug fixing. Justin Tadlock highlights a few enhancements in his post. Grzegorz Ziolkowski and I recorded the 47th episode of the Gutenberg Changelog on Friday. Listen in and get a few more ideas of what’s in this Gutenberg 11.0 release. the audio should be available over the weekend.

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

Matias Ventura updated scope for site editing projects to help the team and the community to track upcoming tasks around the main site editing projects. There are a few separate tracking issues for covering some general improvements and then some broader projects. It covers some general UI features that need to be iterated on, mentioned a Browse mode for the site editor, and lists Infrastructure, Patterns, Styling and the Navigation Block.

\n\n\n\n

Gutenberg and Themes

\n\n\n\n

Carolina Nymark summarized all the Theme features that will come to a WordPress instance near you with WordPress 5.8. It’s the Cliff Notes with actionable code snippets for opt-in and opt-out decisions.

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

Daisy Olson posted a summary and the recording of this week’s Hallway Hangout Discussion the Theme.json.

\n\n\n\n

The Theme.json Call for testing is still open until July 14, 2021. It has instructions for beginners, Intermediate and advanced WordPress theme developers. It’s a fabulous way to learn and share your feedback.

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

Maggie Cabrera created an outstanding weekly round-up (#56) post with theme related recently merged PRs, what is discussed and again a great list of overview git hub issues that are waiting for your comments and ideas!

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

A couple of weeks ago, we had Daisy Olsen, Tammie Lister and Jeff Ong on a Live Q & A. First we have a short introduction demo on how to work with theme.json and a discussion on how this new way to organize the settings and styles for your theme change how themes work in WordPress. We also answered interesting questions from the audience. If you haven’t seen it yet, you can watch it here with transcript and resources.

\n\n\n\n\n

 “Keeping up with Gutenberg – Index 2021” 
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. 2021 on. Updated by yours truly. The index 2020 is here

\n\n\n\n\n

Block Editor for Content creators

\n\n\n\n

This is a first in the almost three-year history of the Block editor! ? ?
Thanks to the indefatigable Anne McCarthy, content creators can review End-user documentation for the new features before they are released.

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

Now it’s all still a work in progress and there is still time until July 20th.

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

Anne McCarthy‘s Block-based Widget Editor Demo is now available on WordPress TV. Check it out to seen what’s coming to WordPress 5.8.
Yep, as Grzegorz Ziolkowski said yesterday, Anne McCarthy is everywhere!

\n\n\n\n

Query Loop Block

\n\n\n\n

Even if you are not familiar with the developer term Query Loop, once you look at the examples you’ll instantly realize that this is about the layout of a list of posts you might want to include on your pages, templates or posts. You can change the layout for post title, featured image, excerpt and link. An early version of this was the Latest Post Block.

\n\n\n\n

The design team also implemented a series of Block Patterns of a few nice variations to display a post list on templates, post and pages. It’s a fun feature, and it has taken quite a long time to build. The wait was definitely worth it.

\n\n\n\n

It is mighty and could be the most powerful feature in 5.8 as Justin Tadlock headlined his post Query Loop: The Ins and Outs.

\n\n\n\n

Allison Rivers over the Torque Magazine also published an article What is the Query Loop Block? with lots of great insights and examples. Rivers also has a list of plugins that implemented some advanced features the WordPress version is still missing with its first iteration.

\n\n\n\n

Block Building and Plugins

\n\n\n\n

Reading throught the release notes for Gutenberg 11, I found great gem posted by Riad Benguella. It’s a flow graphic that explains the relationship between the packages that make the post editor.

\n\n\n\nPartial view of Riad Benguella’s schema\n\n\n\n

I find this very helpful to keep in mind when to use which package at which stage or the user interactions.

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

Rich Tabor, Senior Product Manager, WordPress Experience GoDaddy published A Primer on Gutenberg Block Plugins for the WordPress Block Directory in which he walks you through the process of submit your plugin to the WordPress Directory, as he went through when submitting his Markdown Comment block to the repository.

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

In the same space, Ella van Durpe published a plugin for private note-taking in WordPress called Hypernotes. Justin Tadlock reviewed it for the WordPress Tavern. Van Durpe explain her comment to the article’s, that the plugin uses some experimental PWA capabilities she introduced to the Gutenberg plugin for WP-Admin.

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

Alex Standiford, developer at Sandhills Development (makers of the EDD plugin) published a tutorial about API Fetch – The WordPress Library You Didn’t Know You Needed with code snippets and plenty of theory to with them, too.

\n\n\n\n

Standiford also started the WPAcademy with the course WordPress Plugin Development Course, with 37 videos teaching you how to make a beer custom post type, customize the Gutenberg editor, create a new block, and create WP-CLI commands to make testing fast and easy.

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

Justin Tadlock shared his experience in Taking the Leap: Building My First WordPress Block Plugin. He built a breadcrumbs block as a dynamic block that’s rendered server side.

\n\n\n\n\n

Need a plugin .zip from Gutenberg’s main (trunk) branch?
Gutenberg Times provides daily build for testing and review.
Have you been using it? Hit reply and let me know.

\n\n\n\n

\"GitHub

\n\n\n\n

\n\n\n\n\n

Upcoming WordPress Events

\n\n\n\n

July 17 + 18th, 2021
WordCamp Santa Clarita

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

July 23, 2021
WordFest Live The festival of WordPress

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

August 6 + 7, 2021
WordCamp Nicaragua

\n\n\n\n

September 21 + 22, 2021
WPCampus 2021 Online
“A free online conference for web accessibility and WordPress in higher education.”

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

Don’t want to miss the next Weekend Edition?

\n\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, 10 Jul 2021 21:48:29 +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:36;a:6:{s:4:\"data\";s:13:\"\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:89:\"WPTavern: Query Loop: The Ins and Outs of One of WordPress 5.8’s Most Powerful Features\";s: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://wptavern.com/?p=119799\";s: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:215:\"https://wptavern.com/query-loop-the-ins-and-outs-of-one-of-wordpress-5-8s-most-powerful-features?utm_source=rss&utm_medium=rss&utm_campaign=query-loop-the-ins-and-outs-of-one-of-wordpress-5-8s-most-powerful-features\";s: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:8613:\"

WordPress 5.8 is on deck for July 20, just a mere 10 days from now. The release is geared up to be the most feature-packed update the community has seen in a while. Block-based widgets, the pattern directory, WebP image support, template-editing mode, and many more tools are nearly ready to ship to the masses.

\n\n\n\n

However, one of the most powerful features is the Query Loop block.

\n\n\n\n

If you are unfamiliar with the terms “Query” and “Loop,” they are vital concepts within WordPress. Traditionally, they were only necessary for theme and plugin development. However, through the Query Loop block, users will gain exposure to what is, for all intents and purposes, the backbone of how WordPress displays posts on a site’s front end.

\n\n\n\n

Queries? Loops?

\n\n\n\n

Not everyone will be immediately familiar with these developer terms that WordPress is plopping down in the user interface. For theme and plugin authors, these are everyday concepts. However, even some users who have been using the platform for a decade have never been exposed to them. So, we should get some basic definitions in place.

\n\n\n\n

The term “Query” is simpler than you might think. It merely means to “query” or “ask” for posts from the database according to a defined set of options. For example, one might attempt to get the last 10 blog posts.

\n\n\n\n

“Loop” is an even easier concept to grasp. It means to “loop” or “cycle” through each queried post and output it. Technically, a developer could do things other than displaying the posts during this process, but we are only concerned with what gets printed on the screen.

\n\n\n\n

The two things combined become the Query Loop block. It allows users to ask for a set of posts and display each one.

\n\n\n\n

There is also a Post Template block, which throws a wrinkle in all of this. Aside from the word “template” being overused in WordPress for various features, this is a new method for an old concept. Traditionally, WordPress theme authors would write out all the HTML and call specific template tags within the queried posts loop to show things like the post title, author, content, and more. This is easy to do within a PHP file. However, in the block editor, there needed to be a new way to group these things together. The Post Template block acts as this group, housing the things users want to display in the Query Loop.

\n\n\n\n

WordPress also has a variation on the Query Loop block called Posts List. They do the same thing, but the latter has a more user-friendly title than the former. The only problem with this variation is that, when it is inserted, the user still sees the same “Query Loop” block title. There is a ticket to fix this, but it is unlikely to make it into WordPress 5.8.

\n\n\n\n

Query Loop Pattern Inserter

\n\n\n\n

When first inserting a Query Loop into the editor, WordPress will introduce users to another version 5.8 feature: the pattern inserter. Instead of having immediate access to interact with the block, users can select from a list of predefined patterns.

\n\n\n\n

By default, the inserter is a carousel that lets users can scroll through patterns individually:

\n\n\n\nQuery Loop pattern inserter: carousel view.\n\n\n\n

However, they can switch to a grid-based layout and view all of the patterns at once:

\n\n\n\nQuery Loop pattern inserter: grid view.\n\n\n\n

WordPress 5.8 is set to ship with six Query Loop patterns by default, unless more are added in the coming days:

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

I am not particularly fond of any of the default patterns other than the “Large title” one (shown in the screenshots above with the black background and white text). For this block to shine, users will need to build out their own designs or wait for theme authors to begin bundling custom Query Loop patterns.

\n\n\n\n

And, that is how it should be. Core WordPress should ship some basics while letting our community of theme designers showcase their craft.

\n\n\n\nA custom simple blog posts listing.\n\n\n\n

This is also an opportunity for theme authors to offer alternatives to their custom page template designs. It is not time to throw them out entirely. However, it is a way to begin recreating old ideas in the block era, such as building out eCommerce plugin integrations, portfolio grids, and much more. Some of the tools are still limited (we are getting to those next), but there is enough initial groundwork for exploration, helping users experience WordPress in new ways.

\n\n\n\n

Block Options

\n\n\n\n

The Query Loop block has several options for users to customize which posts to query the database for:

\n\n\n\nQuery Loop block and its options.\n\n\n\n

In the block toolbar, there is a “Display settings” button. When clicked, it creates a popover with options for how many posts to show:

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

The “Settings” panel in the Query Loop’s block sidebar has several secondary options. Users can enable “Inherit query from template” to use WordPress’s global query, but this is mostly useless for WordPress 5.8 users without the Gutenberg plugin enabled and a block-based theme. For now, you will almost always want to disable this option. This will grant access to a slew of new choices, such as:

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

The Settings and Filters panels are the most fine-tuned pieces of the Query Loop block. The development team struck a sensible balance between ease-of-use and the dozens of query-related parameters available through code. It provides users with a ton of power right of the gate but should be flexible enough in the future for plugin authors to extend.

\n\n\n\n

The Post Template

\n\n\n\n

When inserting a Query Loop, the editor automatically adds its inner Post Template block. This is where most of the magic happens. Users can directly change how their posts appear. Primarily, they will do so by adding blocks from the Theme category, many of which are for outputting post-related data.

\n\n\n\nTheme-categorized blocks for outputting dynamic data.\n\n\n\n

Nearly all other blocks are available for insertion here too. However, many of them will not be great candidates for use within the Query Loop.

\n\n\n\n

One thing that may not be immediately evident is that changes you make to one post within the Post Template block will affect all others. So, if you add a Video or Buttons block here, they will be identical. Remember, this is a “template” for designing how all posts within the Query Loop will appear.

\n\n\n\n

The drawback for customizing the Post Template block output is the lack of design options for some of the blocks. It is easy to build something like a simple post list:

\n\n\n\nPosts list with titles and dates.\n\n\n\n

You can also build a layout like a portfolio project grid, as shown in the following screenshot. However, the Post Featured Image block does not currently have sizing controls, so you are stuck with your theme’s default post-thumbnail size — assuming it is actually registered. Experiences may vary. Wildly.

\n\n\n\nBuilding a basic portfolio grid.\n\n\n\n

For more advanced things than changing typography, colors, and spacing, users will need to wait for WordPress 5.9 and beyond. However, theme authors still have the block styles API at their disposal. I, for one, look forward to seeing what they do with it.

\";s: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, 10 Jul 2021 05:17:12 +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:\"Justin Tadlock\";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:13:\"\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:\"WPTavern: WordPress.org Meta Team Fixes Search Snippet Issue with Download Page Promoting WordPress.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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://wptavern.com/?p=119785\";s: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:251:\"https://wptavern.com/wordpress-org-meta-team-fixes-search-snippet-issue-with-download-page-promoting-wordpress-com?utm_source=rss&utm_medium=rss&utm_campaign=wordpress-org-meta-team-fixes-search-snippet-issue-with-download-page-promoting-wordpress-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:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4709:\"

Yesterday evening Chris Klosowski, Sandhills Development Partner and Director of Technology, tweeted out a problem with the way WordPress.org’s Download page was appearing in Google’s Search results snippets when searching for “WordPress.” Underneath the link, the preview text referenced WordPress.com’s hosting:

\n\n\n\n

WordPress.com is the easiest way to create a free website or blog. It’s a powerful hosting platform that grows with you. We offer expert support for your WordPress site.

\n\n\n\n
\n

Seems like maybe the SEO is not working correctly here….or is it? You decide… pic.twitter.com/hhwZ6LQnW4

— Chris Klosowski (@cklosowski) July 8, 2021
\n
\n\n\n\n

Others reported seeing the intended description when Googling, which is designated in the Schema.org tag in the head tag but not printed on the page:

\n\n\n\n

“Download WordPress today, and get started on creating your website with one of the most powerful, popular, and customizable platforms in the world.”

\n\n\n\n

The reference to WordPress.com came from the hosting providers listed at the top of the page, where it randomly displays two upon each page refresh. The Download button used to be at the top of the Download page but ever since mid-January 2021, it has been pushed further down below recommended hosts. This is presumably to help people who want to set up a self-hosted site but don’t know where to get started.

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

“Google was skipping our defined page descriptions in favor of some in-page content,” WordPress lead developer Dion Hulse said, regarding the issue with the search results snippet.

\n\n\n\n

The WordPress Meta team was alerted to the problem and quickly put a solution in place to encourage Google to look somewhere else on the page for the main content.

\n\n\n\n

“The Download page has info about the mobile apps and hosting for WordPress,” core contributor Corey McKrill wrote in the commit message. “These are in section container elements, which might be the reason that Google is using the content of the hosting container for its search result snippet, instead of the meta description tag. By changing these containers to aside elements, hopefully Google will get the message that they don’t contain the most pertinent information for that page.”

\n\n\n\n

The meta team also marked the hosting recommendations on the download page as exempt from being included in the Google search result snippet, so that it doesn’t pull text from these aside elements.

\n\n\n\n

Here is what the updated search result snippet looks like after the changes were put in place:

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

Klosowski’s tweet highlighted the perennial tension that arises from the confusion between WordPress.com and WordPress.org. The recommended hosting page has always been a contentious bit of real estate on WordPress.org but especially now that hosting companies are also prominently promoted on the Download page.

\n\n\n\nhttps://twitter.com/cklosowski/status/1413264854643736577\n\n\n\n

In this situation, Josepha Haden Chomphosy, WordPress’ Executive Director, quickly acknowledged that the search snippet promoting WordPress.com was in fact a problem, heading off those who might promote the notion that it was intentional. The Meta team acted swiftly to resolve the issue and return the snippet to its former meta description. It is not known how long Google has been pulling from the text in the recommended hosts sections to populate the snippet, but the code is now more explicit about the fact that those companies are not the most important content on the Download page.

\";s: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, 10 Jul 2021 02:05: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:13:\"Sarah Gooding\";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:13:\"\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:42:\"WPTavern: Awesome Motive Acquires SearchWP\";s: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://wptavern.com/?p=119714\";s: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/awesome-motive-acquires-searchwp?utm_source=rss&utm_medium=rss&utm_campaign=awesome-motive-acquires-searchwp\";s: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:4345:\"

Awesome Motive, the company behind MonsterInsights, OptinMonster, WPForms, and several other popular products, has acquired SearchWP, a commercial plugin that enhances WordPress’ search functionality. No changes have been announced for the plugin and Awesome Motive CEO Syed Balkhi says it will be “business as usual” for current customers.

\n\n\n\n

“We have built a lot of internal tools to improve our website search that I’m really looking forward to sharing with the WordPress community,” Balkhi said.

\n\n\n\n

“We will be combining Jon’s vision with our own experience, so you can literally have the best search plugin in the industry without the high costs.”

\n\n\n\n

In 2013, when Jon Christopher launched SearchWP, he quickly carved out a slice of the WordPress search market among early competitors. The freemium model was already popular in those days with plugins like Relevanssi, but Christopher chose to launch SearchWP as a commercial-only product.

\n\n\n\n

“There was already freemium competition, and I felt that the pricing model (which is the same today) was stronger given the product itself,” Christopher said. “I saw the pricing model as something that would help SearchWP stand out, and I also wanted to avoid opening the doors to overwhelming amounts of support requests right from the start.

\n\n\n\n

“I had no idea if SearchWP would be successful given the landscape, I built it first to scratch my own itch while knowing that even if no one bought it, I would 100% use it in my own work, and use it a lot.”

\n\n\n\n

His gamble paid off and the plugin has been used on more than 30,000 WordPress sites. Christopher had one support contractor but otherwise had been running the business alone for the past eight years. WordPress’ growing market share has made one-person plugin businesses difficult to maintain once they become very popular, as seen in the recent sale of ACF to Delicious Brains.

\n\n\n\n

“I was looking ahead and considering what would be best for SearchWP’s customers,” Christopher said. “I want SearchWP to live as long as it possibly can. If I’m by myself it’s a bit of a risk to continue that way as the business continues to grow. I know that I prefer to build things from the ground up, and I also know that I’m not the guy to build (or manage) a team, it’s not my strong suit. Given all of those pieces it was clear to me that it was a good time to consider selling.”

\n\n\n\n

Christopher described the 2013 WordPress ecosystem as more “scrappy,” as developers launched product businesses and worked to figure it out along the way.

\n\n\n\n

“There are pros and cons to an environment like that, but it was fantastic from my perspective,” he said. “Over time that feeling went away as companies grew, matured, and playbooks began to take shape. That cycle has continued over time and especially in the last 18 months we’re getting a look at where WordPress is headed – lots of big players in a really big space.”

\n\n\n\n

For those who are jumping into the waters with a new product business, Christopher underscored the need for strong marketing.

\n\n\n\n

“I think that a lack of serious marketing will in fact be a limiter in today’s WordPress economy,” he said. “Products that have been around a long time have a natural momentum that’s really tough to beat, but that momentum doesn’t come without friction. In order to keep up with where WordPress is going, I do feel like you need assets (and capital) aimed directly and solely at marketing for the long haul.”

\n\n\n\n

Balkhi did not elaborate on Awesome Motive’s immediate plans for the search plugin but said the company will be executing on a 12-month plan to make it easier for beginners and non-technical business owners to set up in less than 10 minutes.

\";s: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, 09 Jul 2021 03:17:48 +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:13:\"Sarah Gooding\";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:13:\"\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:111:\"WPTavern: Gutenberg 11.0 Includes Over 70 Bug Fixes, Continues Improving With WordPress 5.8 Just Two Weeks Away\";s: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://wptavern.com/?p=119703\";s: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:265:\"https://wptavern.com/gutenberg-11-0-includes-over-70-bug-fixes-continues-improving-with-wordpress-5-8-just-two-weeks-away?utm_source=rss&utm_medium=rss&utm_campaign=gutenberg-11-0-includes-over-70-bug-fixes-continues-improving-with-wordpress-5-8-just-two-weeks-away\";s: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:6795:\"

Gutenberg 11.0 landed yesterday with a pile of changes. The development team has been moving fast, and it shows.

\n\n\n\n

For a two-week cycle, version 11.0 includes an insane number of bug fixes. Contributors squashed over 70 in this release alone. This seems to be in preparation for WordPress 5.8, which is expected to land on July 20. The upcoming block-based Widgets screen had the lion’s share of bugs. However, the block library had nearly two dozen, many of those issues with new theme-related blocks.

\n\n\n\n

The downside of such a massive release is that there are too many features and not enough time to cover them all. I will be cherry-picking some of my favorites, but feel free to dive into the release notes for a complete picture.

\n\n\n\n

Theme and Template-Editing Mode Changes

\n\n\n\n

One of the primary Full Site Editing features making its way to WordPress 5.8 will be disabled by default for most users. In a rare move from the core project, the template editor will be opt-in, at least for users with classic themes. It is opt-out for block themes.

\n\n\n\n

As I wrote last month, until users are on actual block themes, the template editor is “a sort-of-OK-but-kind-of-amazing landing page creator.”

\n\n\n\n

Template-editing is really only as good as the weakest link in the system. This will almost always be the theme over the next few months. Because the template editor is a new feature that directly attempts to overwrite the front-end output, it will always be at odds with many themes that were never designed with it in mind. The opt-in approach is unlikely the best route to mass adoption, but it is in the interest of the user experience.

\n\n\n\n

Making it opt-in also allows theme authors to make template editing a smooth experience. Gutenberg 11.0 introduces a new defaultBlockTemplate editor setting. Theme authors can create the default blocks that users begin with when creating a new template.

\n\n\n\nStarting with a custom default block template.\n\n\n\n

Ideally, this default template should include some base layout components, such as a header, footer, and post/page content. However, themers are free to put their own spin on this.

\n\n\n\n

For more information on creating default block templates, theme authors should read Themes Team rep Carolina Nymark’s overview of WordPress 5.8 theme features.

\n\n\n\n

Media & Text Block: Drag-and-Drop Media Replacement

\n\n\n\nDragging a new media file into the Media & Text block.\n\n\n\n

Users have long been able to drag and drop an initial image or video into the Media & Text block. However, they were unable to replace it using the same method. Gutenberg 11.0 creates a new “drop zone” over the media column, making it easy to change the media to something new.

\n\n\n\n

The feature already exists with the Cover and Image blocks, so this change brings Media & Text up to date. We probably should have had this feature months ago, but the patch sat in limbo waiting for a code review.

\n\n\n\n

Accessibility: Categories Dropdown Has Label

\n\n\n\nLabel difference between the Archives and Categories blocks.\n\n\n\n

The development team added a new “Categories” label when the Categories block is shown as a dropdown. This is a welcome improvement to help those using screen-readers better navigate the page.

\n\n\n\n

The problem with this change is the lack of consistency. In Gutenberg 10.8, the team removed the .screen-reader-text class for the Archives block label, making it appear on screen for all users. These types of inconsistencies that seem trivial on the surface tend to pile up, creating code bloat for theme designers in the long run as they try to wrangle them.

\n\n\n\n

I would prefer both labels to be marked as screen-reader text. Regardless of the default, the two should match. Then, throw in an option for the end-user to decide whether to show the label similar to how the Search form handles it.

\n\n\n\n

The Return of Post Classes

\n\n\n\nPost classes appear for Post Template block.\n\n\n\n

For those theme designers who need them, Gutenberg 11.0 brings back post classes. If you are wondering where posts classes had gone, you may not be alone. In the world of blocks, they are not needed as much as they once were. Traditionally, WordPress theme authors used these classes to dynamically change the output of a post based on contexts such as type, format, category, and more.

\n\n\n\n

When the Post Template block (formerly named Query Loop) was introduced, there was a noticeable lack of the traditional classes attached to the wrapper for individual posts. This latest update brings them back.

\n\n\n\n

In the future, block themes will likely rely on these classes less and less. With much of the design configuration moving to theme.json files and user-controlled options, it is probably time to say goodbye to one of the core features of theme design over the past decade. However, it is a comfort to know it is there when needed.

\n\n\n\n

Decimals Allowed in Spacing Controls

\n\n\n\n

For those who are particular about getting their margin and padding just right, they can finally rejoice. Spacing controls now allow for decimal values and not just whole numbers.

\n\n\n\n

In past versions of the plugin, a value such as 1.5 would be rounded up to 2. When used with rem and em units, such rounding created a 50% difference between the intended spacing and reality.

\n\n\n\n

I am happy about this one. It is a fix for one of the tickets I opened (hooray for contributing!). However, I cannot take credit for fixing the problem. That honor goes to Themes Team representative Ari Stathopoulos.

\";s: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, 09 Jul 2021 02:55: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:14:\"Justin Tadlock\";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:13:\"\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:81:\"WPTavern: Private Note-Taking and Journaling With the Hypernotes 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:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://wptavern.com/?p=119707\";s: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:207:\"https://wptavern.com/private-note-taking-and-journaling-with-the-hypernotes-wordpress-plugin?utm_source=rss&utm_medium=rss&utm_campaign=private-note-taking-and-journaling-with-the-hypernotes-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:4831:\"

Ella van Durpe, a core WordPress contributor and software engineer at Automattic, released a note-taking plugin earlier today. Hypernotes is a simple custom post type that allows end-users to take private notes or serve as a journaling tool.

\n\n\n\n

I have seen similar plugins in the past. I even began building one years ago before ultimately abandoning it for a simple Markdown solution in a private repository.

\n\n\n\n

What makes Hypernotes unique is its handling of “folders,” which essentially work like categories. However, each folder gets its own sub-menu link under the Notes section in the WordPress admin.

\n\n\n\nHypernotes’ folder system.\n\n\n\n

This more closely mimics other note-taking apps where users can switch between various folders to quickly find notes.

\n\n\n\n

The code to make this happen is simple; the idea is ingenious. It is the sort of outside-the-box thinking I love to see from plugin developers.

\n\n\n\n

There are a few trivial issues with it, such as the folder names not being highlighted when viewing their screens. However, that is a WordPress-specific bug. A simple dash before each folder name could spruce up the UI a bit too. They sit below the “All Notes” menu item, so it would create more of a folder effect.

\n\n\n\n

On the whole, the plugin works well as a note-taking application.

\n\n\n\nWriting a note in the WordPress editor.\n\n\n\n

The plugin description does have a security note for users who are wondering just how private their content is:

\n\n\n\n

Only you will be able to see your notes within the WordPress admin, but the notes are NOT encrypted at the moment, so anyone with database access will be able to read them.

\n\n\n\n

Hypernotes also ensures that no post is ever accidentally published for all the world to see. Under the hood, it automatically sets all notes to the “private” status. The plugin’s post type cannot be publicly queried on the front end either.

\n\n\n\n

It is worth mentioning that the plugin does not create custom capabilities (permissions) for its post type and taxonomy. Any registered user on the site with the right post-editing capabilities can access others’ notes in the backend, such as people with the Editor role.

\n\n\n\n

This is unlikely an issue given the nature of the plugin. I imagine the primary audience will be made up of solo bloggers who want a simple note-taking solution.

\n\n\n\n

I ran into one not-so-trivial issue when I began trying out Hypernotes, believing my website was broken. This is usually because of a patch I am testing for the Gutenberg plugin or just one of its run-of-the-mill updates. However, the typical culprit was not to blame. After a half-hour or so trying to figure out why my theme styles were not appearing for Note posts, I finally cracked the issue.

\n\n\n\n

Hypernotes disables all theme editor styles. The beautiful typography of my currently active theme was gone, which would work well with a note or journaling plugin.

\n\n\n\n

This was easy enough to overrule with a few lines of custom code. If I was going to save a few quotes that I liked as personal notes, I at least wanted to do it in style:

\n\n\n\nBringing back my theme’s custom quotes style.\n\n\n\n

The plugin also attempts to disable wide/full alignment and theme editor font sizes. The code it uses works for traditional WordPress themes but not for block themes, which have a different mechanism for registering such support. This was also one of the reasons it was tough to track down the issue. Everything else from my theme was working but custom editor styles.

\n\n\n\n

I understand the idea behind removing support for those features. Themes design the front end of the site, and Hypernotes is purely a backend tool. However, I would rather see an option for letting the user control what gets disabled. Some theme editor styles would pair well with the plugin.

\n\n\n\n

Disabling these features has other implications too. For example, all of my theme’s custom block style variations were registered and usable from the editor. However, because my styles were not loaded, they did not work correctly.

\n\n\n\n

Another option would be for the plugin to provide its own editor styles. There would still be some complications going that route, such as the block style variations issue, but the plugin could become a beautifully designed note-taking app in its own right.

\n\n\n\n

For a version 1.0 outing, I am a fan of the simplicity. More so, I am impressed with the clever method of handling note “folders.” I am eager to see how this plugin evolves over future iterations.

\";s: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, 08 Jul 2021 03:13:07 +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:\"Justin Tadlock\";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:13:\"\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:18:\"Matt: Open Insulin\";s: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:22:\"https://ma.tt/?p=54516\";s: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:35:\"https://ma.tt/2021/07/open-insulin/\";s: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:895:\"

One of my big themes is that open source will transform every industry, with key examples being WordPress in web publishing, WooCommerce in online commerce, Wikipedia in reference, and Bitcoin/Ethereum in finance. Medicine, though, has been relatively unscathed so far. Here’s a great video introducing the Open Insulin project, which for the past 6 years has been developing their own method of manufacturing insulin and is going to open source its process to the world for anyone to recreate.

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

It also reminds me of the What If? article in the Economist a few days ago about mRNA self-biohacking. Hat tip: Riaan Knoetze.

\";s: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 Jul 2021 13:49:33 +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:42;a:6:{s:4:\"data\";s:13:\"\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:\"WPTavern: WordPress 5.8 Adds Support for New Emoji Introduced in Twemoji 13.1.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:30:\"https://wptavern.com/?p=119656\";s: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:203:\"https://wptavern.com/wordpress-5-8-adds-support-for-new-emoji-introduced-in-twemoji-13-1-0?utm_source=rss&utm_medium=rss&utm_campaign=wordpress-5-8-adds-support-for-new-emoji-introduced-in-twemoji-13-1-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3577:\"

In the upcoming 5.8 release, WordPress is updating its version of Twemoji, Twitter’s open source emoji library that supports the latest Unicode emoji specification. Version 13.1.0 introduces five new smileys and emotions, including heart on fire, mending heart, face with spiral eyes, face in clouds, and face exhaling.

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

Version 13.1 adds mixed skin tone support for all variations of the “Kiss” emoji and the “Couple with Heart” emoji. It also makes it possible to add a bearded man or a bearded woman in all skin tone variations.

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

WordPress 5.8 will also include significant changes to the syringe emoji that were committed to a previous version of Twemoji (13.0.2) earlier this year. Instead of a blood-filled barrel accented with drops of blood leaking out of the tip, the new syringe emoji contains a non-specific liquid. This makes it more flexible for use cases that don’t involve removing blood. Emojipedia has a fascinating look at the syringe emoji’s history, dating back to 1999 when it was primarily used in Japan for blood donation. A 2021 refresh on the syringe makes it possible for it to be used in reference to vaccines, a topic of public conversation across the globe.

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

In addition to changes to the syringe, Jonathan Desrosiers, who opened the trac ticket to initiate the update, summarized a few other changes from previous Twemoji versions that modify existing emoji:

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

The official emoji lexicon is constantly being tweaked and updated for accuracy, and to better serve conversations, as current events increase demand for visual representations of specific objects and emotions. Although many of these updates and new additions may seem pandemic-inspired, there’s a lengthy, official process for proposing changes to the Unicode Consortium. The Unicode Emoji Subcommittee reviews proposals, which require compelling data on compatibility, expected usage level, distinctiveness, and other factors. Candidates approved for inclusion do not arrive to major platforms for approximately a year.

\n\n\n\n

WordPress 5.8 will bump Twemoji from 13.0.1 to 13.1.0. Unicode 14.0, the next major update, is expected for release in late 2021. Emojipedia has a draft list of what is on deck for the next version and those that are approved would likely make it to major platforms by the end of 2022.

\";s: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 Jul 2021 05:16:34 +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:13:\"Sarah Gooding\";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:13:\"\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:70:\"WPTavern: Jetpack 9.9 Released With a Refreshed Image Gallery Carousel\";s: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://wptavern.com/?p=119629\";s: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:185:\"https://wptavern.com/jetpack-9-9-released-with-a-refreshed-image-gallery-carousel?utm_source=rss&utm_medium=rss&utm_campaign=jetpack-9-9-released-with-a-refreshed-image-gallery-carousel\";s: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:3094:\"

Today, Automattic released version 9.9 of its popular Jetpack plugin. The development team improved the modal animation and transition speed for the Instant Search module and added the Social Preview panel to the pre-publish sidebar. However, the most notable user-facing update was a refresh of its Carousel feature.

\n\n\n\n

The module creates a fullscreen overlay gallery of a post’s images once one is clicked. Users can enable this feature via the Jetpack > Settings > Writing page in the WordPress admin. Users can also turn on the display of EXIF data and the media attachment commenting form.

\n\n\n\n

Jetpack Carousel handles Image and Gallery blocks a bit differently. Regardless of whether Gallery images are linked or not, they will always be included in the image carousel when clicked. However, only Image blocks that specifically link to the attachment page are added.

\n\n\n\n

I have never much cared for the Jetpack Carousel feature. There were always prettier image-overlay, lightbox-type solutions out in the wild. We use the plugin here at WP Tavern, so it is just something I have learned to live with. There was no sense in installing yet another plugin when we were already using the massive mono-project to run many other features on the site. And, it generally got the job done.

\n\n\n\n

However, today, I can finally say that I am happy with the implementation. It is cleaner, offers a larger viewing area for individual images, and tucks unnecessary bits away for the average user.

\n\n\n\n

The following is a screenshot of the carousel in all its fullscreen wonder:

\n\n\n\nJetpack carousel in version 9.9.\n\n\n\n

For comparison, here is what the same image slide looks like in Jetpack 9.8.1:

\n\n\n\nJetpack carousel in version 9.8.1.\n\n\n\n

In the new version, the image metadata and commenting form are hidden by default. The user must click the info or comment icon buttons to slide each section open. This is a better implementation because it decreases the noise in the carousel while still making the features available for those who want them.

\n\n\n\nImage metadata in the carousel.\n\n\n\n

Overall, I am enjoying this update. Swiping and scrolling through the gallery feels smoother.

\n\n\n\n

I would love for WordPress to bring a standard set of functions and blocks for displaying media metadata to the development community. Every plugin and theme author who wants to showcase that info must build a custom system for their projects, such as formatting aperture, shutter speed, and focal length. The following is the output of an image attachment page from a theme I have worked on:

\n\n\n\nCustom theme image info.\n\n\n\n

There is no reason that the theme and Jetpack should be working with custom wrappers for the metadata. WordPress stores EXIF and ID3 tags automatically. It just does not expose them to developers in any meaningful way.

\";s: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 Jul 2021 03:13: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:14:\"Justin Tadlock\";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:13:\"\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:\"WordPress.org blog: WordPress 5.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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=10912\";s: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/2021/07/wordpress-5-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3340:\"

The second release candidate for WordPress 5.8 is now available! \"?\"

\n\n\n\n

WordPress 5.8 is slated for release on July 20, 2021, and we need your help to get there—if you have not tried 5.8 yet, now is the time!

\n\n\n\n

You can test the WordPress 5.8 release candidate 2 in any of these three ways:

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

Thank you to all of the contributors who tested the Beta/RC releases and gave feedback. Testing for bugs is a critical part of polishing every release and a great way to contribute to WordPress.

\n\n\n\n

Plugin and Theme Developers

\n\n\n\n

Please test your plugins and themes against WordPress 5.8 and update the Tested up to version in the readme file to 5.8. If you find compatibility problems, please be sure to post to the support forums, so they can get ready for the final release.

\n\n\n\n

For a more detailed breakdown of the changes included in WordPress 5.8, check out the WordPress 5.8 beta 1 post. The WordPress 5.8 Field Guide, which is particularly useful for developers, has all the info and further links to help you get comfortable with the major changes.

\n\n\n\n

How to Help

\n\n\n\n

Can you speak and write in a language other than English?  Help us translate WordPress into more than 100 languages!

\n\n\n\n

If you think you have found a bug, you can post to the Alpha/Beta area in the support forums. We would love to hear from you! If you are comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

\n\n\n\n

Props to @lukecarbis for the haiku, @webcommsat and @marybaum for peer reviewing!

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

Five-eight in two weeks
So test your plugins and themes
Update your readme

\";s: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 Jul 2021 01:12:57 +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:\"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:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:13:\"\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:\"Akismet: Version 4.1.10 of the Akismet WordPress Plugin is Now Available\";s: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:\"http://blog.akismet.com/?p=2117\";s: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.akismet.com/2021/07/06/akismet-plugin-4-1-10/\";s: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:818:\"

Version 4.1.10 of the Akismet plugin for WordPress is now available. It contains the following changes:

\n\n

To upgrade, visit the Updates page of your WordPress dashboard and follow the instructions. If you need to download the plugin zip file directly, links to all versions are available in the WordPress plugins directory.

\";s: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, 06 Jul 2021 20:33:57 +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:17:\"Christopher Finke\";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:13:\"\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:\"WPTavern: Taking the Leap: Building My First WordPress Block 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:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://wptavern.com/?p=119592\";s: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:177:\"https://wptavern.com/taking-the-leap-building-my-first-wordpress-block-plugin?utm_source=rss&utm_medium=rss&utm_campaign=taking-the-leap-building-my-first-wordpress-block-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:7356:\"

Like most years, I spent this U.S. Independence Day cooped up with my furry friends. I closed all the windows, shuttered the blinds, switched on a couple of fans for white noise, and clicked the television on. My cats and I relaxed. It is my job to keep them calm while my — usually drunken — compatriots burn hundreds of dollars away in the night sky. It is my ritual, and I enjoy it.

\n\n\n\n

For this holiday, we re-watched Season 1 of Star Trek: Lower Decks, and I learned how to build a block plugin.

\n\n\n\n

This was not my first attempt. When the block editor launched nearly three years ago, I tinkered with a few block type ideas. However, I never got far. Documentation was sparse, and I had almost no experience with JavaScript beyond building trivial bells and whistles for front-end design.

\n\n\n\n

Leaving my day job as a developer to write for WP Tavern also meant limited time to learn block development. And, my free time for the last couple of years has been filled with other projects. Lately, I have had the urge to jump back in and start building things for fun once again. My extended sabbatical from development work gave me time to pursue other interests while allowing my well of creativeness a chance to refill. The break did me some good.

\n\n\n\n

With time to kill yesterday afternoon, I dove right in. After a couple of hours of reading docs, studying other developers’ code, and breaking things, I had a functional block for a breadcrumbs list.

\n\n\n\nCustom block registered and ready to insert.\n\n\n\n

Marcus Kazmierczak’s Copyright Block plugin helped me get over one of the initial humps. It was helpful to see real-world, non-example code written in vanilla JavaScript to get to the meat of how the system worked.

\n\n\n\n

My overall thoughts on building custom block types?

\n\n\n\n

It was easier than I thought it would be. Documentation is, at the same time, both overwhelming and limiting. It is tough to find the correct answer if you do not even know what you are looking for. The barrier to entry is much higher than when I built my first plugin in 2007. The Block Type API makes some things stupidly simple but complicates others.

\n\n\n\n

Successfully inserting my first block type into the editor canvas was gratifying. I don’t think that feeling ever goes away as a developer.

\n\n\n\nSuccessful insertion and rendering of my first block plugin.\n\n\n\n

I am excited about the potential for blocks, such as a breadcrumbs list, when the site editor launches. Many similar features do not make sense in the post editor. However, when users can make direct edits to their templates, it will open a world of possibilities.

\n\n\n\n

Learning Curve

\n\n\n\n

I know enough JavaScript to be a danger to myself and others. Having spent almost the entirety of my professional career in the WordPress realm has meant focusing on PHP. But, programming is programming. Once you have a strong understanding of one language, it not an impossible leap to piddle around enough to create a functional script in another. Most of the same foundational concepts are there. The hurdle is often with learning some new syntax.

\n\n\n\n

However, the biggest obstacle with “modern” JavaScript is setting up the build tools, bundlers, and more. It can be a tall order to even type out that first line of code.

\n\n\n\n

Sure, some of the documentation has vanilla JavaScript examples, but when you get into anything more complex than the basics, it is not so vanilla anymore. You will need a way to bundle JavaScript and transform JSX syntax. That means tools like webpack and Babel.

\n\n\n\n

WordPress has its own script for cutting through most of the complexity, but I recommend Laravel Mix. It is simple enough for even the least-savvy JavaScript programmers among us and has thorough documentation. It is a script made for folks who want to worry less about tooling and more about actually writing code.

\n\n\n\n

Block building is also a different kind of leap. Whether it was custom template tags, shortcodes, widgets, or hooks, traditional WordPress development has meant building those in a PHP environment. I suspect that most plugin developers have tons of features that they can bring to the masses via the block editor. They will often rely on server-side rendering. WordPress has a ServerSideRender component for actually handling this.

\n\n\n\n

One of the handiest features of registering block types is the block “supports” system. Want a background color option? Just one line of code will do. Want the user to access the font-size control? That is a single line too. With little effort, I extended my breadcrumbs block to include a ton of styling options for users. And, they adapt to the site’s active theme.

\n\n\n\nTesting various combination of block-supported styling options.\n\n\n\n

The list of block-supported features offers an array of standardized options at pretty much no development cost. Even the Customize API, previously the most advanced tool for building form fields, did not come this close.

\n\n\n\n

Building custom inspector controls was straightforward once I got the hang of how the block edit piece of the puzzle worked. For now, I have a simple toggle option for enabling/disabling a feature. Often, the hardest part is just finding what you are looking for. WordPress has a massive library of components to choose from.

\n\n\n\n

At this point, I have a basic block on the client (editor) side. Most of the complexity is handled on the server via PHP. If I could build this in an afternoon while attending to nervous cats, it should not be a stretch for more plugin authors to hop aboard this train. There are thousands of shortcodes and widgets that developers can convert to blocks with minimal code.

\n\n\n\n

I am not ready to release my breadcrumbs block into the wild just yet. There is still some fine-tuning left to do and a few advanced features to implement. Also, a breadcrumbs list is primarily needed in a site editor context where users can drop it into something like their header template. We are not there yet, but I will undoubtedly share the final result with the community when we are.

\n\n\n\n

Next, I will try to build a block that does not rely on server-side rendering. I think I have the hang of it now. Breaking through that initial barrier is always the hardest step.

\";s: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, 06 Jul 2021 00:28:53 +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:\"Justin Tadlock\";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:13:\"\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: WP Briefing: Episode 12: WordPress – In Person!\";s: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://wordpress.org/news/?post_type=podcast&p=10889\";s: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://wordpress.org/news/2021/07/episode-12-wordpress-in-person/\";s: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:13116:\"

In this episode, Josepha Haden Chomphosy talks about WordPress – In Person! The WordPress events that provide the dark matter of connection that helps sustain the open source project.

\n\n\n\n

Have a question you’d like answered? You can submit them to wpbriefing@wordpress.org, either written or as a voice recording.

\n\n\n\n

Credits

\n\n\n\n

Editor: Dustin Hartzler

\n\n\n\n

Logo: Beatriz Fialho

\n\n\n\n

Production: Chloé Bringmann

\n\n\n\n

Song: Fearless First by Kevin MacLeod

\n\n\n\n

References

\n\n\n\n

The tragedy of the commons

\n\n\n\n

WordPress 5.8 Release Candidate announcement

\n\n\n\n

Transcript

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

Josepha Haden Chomphosy  00:11

\n\n\n\n

Hello, everyone, and welcome to the WordPress Briefing, the podcast where you can catch quick explanations of the ideas behind the WordPress open source project, some insight into the community that supports it, and get a small list of big things coming up in the next two weeks. I’m your host, Josepha Haden Chomphosy. Here we go!

\n\n\n\n

Josepha Haden Chomphosy  00:39

\n\n\n\n

Today we’re talking about one of my favorite parts of the project – WordPress events. The in-person component of the project is the dark matter that helps us build resilience and thrive as a group. A lot of what I’m going to share applies to every WordPress event, whether it’s a meetup or workshop, a contributor day, any other sort of format. But I’ll be focused on WordCamps. It’s been a while since we had any in-person WordCamps. Our last two were WordCamp Malaga in Spain and WordCamp Greenville in the US. But that hasn’t stopped anyone from gathering people together online. Which honestly makes a lot of sense for WordPress. Because there are many reasons we gather, the main three reasons are connecting, inspiring, and contributing. It’s true. It says so right in our documentation, “paper rustling.” All WordPress events should connect WordPress users, inspire people to do more with WordPress, and contribute to the WordPress project. As an aside, I’ll tell you that some groups also get to collaborate and educate in there, but connect, inspire, contribute. Those are the big three. And that’s what I’m talking about today. And if you subscribe to this podcast for the back office deep cuts, I’ll also have a few of those for you. 

\n\n\n\n

Josepha Haden Chomphosy  01:57

\n\n\n\n

Alright, so first up, connect. WordCamps are generally annual-ish gatherings organized by local WordPress meetup groups. They’re not meant to be big or fancy. The definition of the minimum viable product for WordCamp is 50 people gathered all day to talk about WordPress. They are intentionally affordable to allow people from all walks of life to attend, meet, share and learn. This is made possible by donations and sponsorships from local businesses and larger businesses in the WordPress ecosystem. And this helps us get people connected to those in their community that works with or are sustained by WordPress. That connection feeds into the overall health of the global WordPress project. 

\n\n\n\n

Josepha Haden Chomphosy  02:45

\n\n\n\n

Next up is inspire. WordCamps do not discriminate. They are open to any WordPress users, developers, designers, or other enthusiasts, regardless of their level of experience. And because of this, sessions generally span a variety of formats. So presentations or live demos to workshops or panels, any other format you can think of. But that also means that there are a variety of skill levels represented. There’s always content about how to use WordPress. That’s a given. But you can also count on content that inspires people to do more with their own dreams and aspirations. When I was still organizing WordCamps, my favorite thing was seeing people who came back year after year, putting into practice something that they learned the year before. It is that Choose Your Own Adventure aspect to WordCamps that lets people see the edge of their ideas and then expand that just a little bit further. 

\n\n\n\n

Josepha Haden Chomphosy  03:42

\n\n\n\n

And finally, contribute. WordCamps often have a contribution component to them. Sometimes it’s just a talk telling you how you can get more involved in the WordPress project. But sometimes, it’s a whole contributor day. And those range in size from single focus, like everyone, will show up and learn how to review a theme or a focus from every team that we have, like at the big flagship events where we gather hundreds of people into a room just to contribute to WordPress and all of the teams that go with it. Getting started with contributing can be daunting, but it is also essential to avoid something called the Tragedy of the Commons, an economic concept. So I’ll share a link to that in the show notes below. But the most important thing, the most important thing to remember, is that WordPress is open source. And we asked people to help us keep this great tool running by giving back a little bit of their time if they have gotten any benefit from the WordPress project or CMS over the course of their careers. 

\n\n\n\n

Josepha Haden Chomphosy  04:40

\n\n\n\n

So that’s it. The three big things you can get from a WordCamp. I know that I can’t wait to get back to them myself because while a lot of these things can still happen online and do, it’s really hard to replace the dark matter of in-person connections for open source projects. And since we’re talking dark matter anyway, let’s dig into it a little.

\n\n\n\n

Josepha Haden Chomphosy  05:01

\n\n\n\n

At the start of the section, I mentioned that WordCamps are local, locally organized, and people are encouraged to attend locally. But I am part of a group that ends up traveling to a lot of WordCamps. If you don’t know about the unseen work of WordPress, this raises eyebrows. So here is some clarification around the back office work that some of these traveling WordCampers often do. When I listed these out, there were about 20 different tasks, 20 different jobs, which was, frankly, a bit overwhelming when I listed them that way. So I’ve grouped them into kind of two genres, each with a group of current versus future types of work. So my two big buckets, big picture stuff, and then community stewardship. 

\n\n\n\n

Josepha Haden Chomphosy  05:50

\n\n\n\n

The big picture stuff, our first big genre here, when you’re looking at current topics, current issues kind of information, when we’re working on big picture stuff, you get the clarification of the mission or vision of WordPress, the sharing of open source methods or processes that we use in the WordPress project, and also sometimes those goal-setting conversations that you have to have both because we have a bunch of teams and team reps, that have a lot of really great ideas about what can be done in their teams to help WordPress succeed. But then also, because when you are working, when you’re contributing to a single team in the project, it can sometimes be hard to know how your work relates to the overall goals and visions of WordPress. And so that’s part of the work that gets done that I do there. 

\n\n\n\n

Josepha Haden Chomphosy  06:43

\n\n\n\n

And when you’re looking at future topics, future issues, the second part of this genre, that stuff like starting conversations or discussions around what the future holds for WordPress, and that’s the project as well as the technology or hearing from people about big things coming up for them. And any content that can support it, anything that I can provide to support those big things. It’s also a good time for me and others to identify trends based on what I see in presentations or what I hear from people at social functions. Really, it’s just a huge opportunity for information gathering to make sure that I know what everyone else in the project is trying to do and if they understand what the project is trying to do. 

\n\n\n\n

Josepha Haden Chomphosy  07:32

\n\n\n\n

And then the second big genre of things that happen in that dark matter kind of work at WordCamps is what I call community stewardship—so taking care of the community itself for the project itself. And a lot of that work is actually incident response kind of work. So conflict resolution, mediation often happens at in-person events, but also uncovering the shared foundations, the shared understanding for upcoming changes. So a lot of really, in the weeds kind of change management work. And for me, it’s certainly doing my best as a cultural liaison when I do see that there has been some miscommunication or gathering context for the latest disagreement that people are having with me so that I can clarify anything that was misunderstood from what I said. And also a little bit of policy clarification, just explaining why we do things and the way we do them. So for community stewardship, that’s kind of the current stuff that we look at. And that I do when I’m traveling for WordCamps. 

\n\n\n\n

Josepha Haden Chomphosy  08:36

\n\n\n\n

And then for the future tasks that we do with community stewardship in the project, that stuff like training, and that’s training team reps, community deputies, or new contributors like it’s, it’s not really one type of training, necessarily. But then also, all of the checking in with our organizers, team reps, volunteers, sponsors, everyone like that, to make sure that what we have in the project and what’s happening in the project, the tools that we have, the experience that contributors have while they are working here, and WordPress is good, and is what they need. We’ve got a lot of tools to get things done in WordPress, and we can always make them better. And so checking in with people to kind of see how those processes are, how the tools are making sure that I have an idea of where our holes are and what needs to be patched, and how we can patch them in the long run. So that’s all of the future planning kind of work and topic stuff, just you know, making sure that WordPress has what it needs to survive long into the future and long after I’m doing anything with it, and long after you’re doing anything with it either. 

\n\n\n\n

Josepha Haden Chomphosy  09:56

\n\n\n\n

So, lots and lots of unseen work being done at our in-person events. But folks who keep a keen eye on the online global work of WordPress will probably recognize that a lot of that work is also done routinely on make.wordpress.org and within the making WordPress Slack. There’s just, I don’t know, there’s just something different about receiving information from a human being with a face rather than an avatar with a photo. So I guess at the end of the day, that means the dark matter that keeps open source together is really an issue of communication. And you’ll get no arguments for me there.

\n\n\n\n

Josepha Haden Chomphosy  10:44

\n\n\n\n

That brings us now to our small list of big things. And there’s really just one big thing. And that’s WordPress 5.8. We are about two weeks away from this big release; the community has been working tirelessly on it. And it’s shaping up to be one of the most tested releases that we’ve had in a long time. Myself, I’m grateful to see so much activity before the release. Since 5.8 and 5.9 releases represent such monumental shifts in our software, I’m incredibly grateful to see so much activity prior to the release, especially in the beta period. We’ve been testing everything for it feels like six or eight months, and we’re really starting to see the positive benefits of that. And I think that we, the WordPress community, should be really proud of everything that we’re going to ship in 2021. Okay, so that was less of a small list of big things and really like one big thing with a generous garnish of encouragement, but you deserve it. So thank you for tuning in today for the WordPress briefing. I’m your host, Josepha Haden Chomphosy, and I’ll see you again in a couple of 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:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 05 Jul 2021 12: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:15:\"Chloe Bringmann\";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:13:\"\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:105:\"Gutenberg Times: Block-Based Widget Screen and DevNotes Galore for WordPress 5.8 – Weekend Edition #176\";s: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=18404\";s: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:73:\"https://gutenbergtimes.com/block-based-widget-screen-weekend-edition-176/\";s: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:19897:\"

Howdy,

\n\n\n\n

July is the month celebrating North American Independence (for white people) and the start of the French Revolution.

\n\n\n\n

Happy 154th Birthday, Canada ?? (July 1st).
Happy 245th Birthday, USA ?? (July 4th)
Happy 232nd Bastille Day, France ?? (July 14th)

\n\n\n\n

There are many more countries celebrating Independence Day in July, though. Here is the list. Take a look! ?

\n\n\n\n

July 20th, WordPress 5.8 will be released and there are a ton of block editor related dev notes for themes and plugin developers. Use this week’s RC 1 version to test your sites, plugins and themes!

\n\n\n\n

Be well! Have a great weekend, wherever you are located!

\n\n\n\n

Yours, ?
Birgit

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

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

WordPress 5.8 Dev Notes for Block editor features

\n\n\n\n

This week was also the deadline to published Developer Notes around the upcoming WordPress 5.8 release.

\n\n\n\n

Block-styles loading enhancements by Ari Stathopoulos – Ari has the details on how the two new features – Load styles only for rendered blocks and Inline small styles – work and how theme developers and block builders can tap into it.

\n\n\n\n

Blocks in an iframed (template) editor by Ella van Durpe – The new Template editor is the first block editor loaded in an iframe and isolate it from the rest of the admin screen. Ella has the benefits for you as well as the details on how to adjust your blocks if you rely on document or window and provides code fixes for your ReactJS blocks. There is more. Definitely worth a read if you are deep in plugin development. Ella’s post compliments Grzegorz Ziolkowski’s post: Block Editor API Changes to Support Multiple Admin Screens

\n\n\n\n

On layout and content width by Riad Benguella – This is a shorter post, introducing the Settings for layout and content width and how you can adjust your theme to take advantage of them.

\n\n\n\n

Block-based Widgets Editor by Robert Anderson. He wrote: “WordPress 5.8 introduces a new block-based widgets editor to the Widgets screen (Appearance → Widgets) and Customizer (Appearance → Customize → Widgets).” and continues to explain the three methods (including the Classic Widget plugin) of opting out. You might find interesting to learn how the Legacy Widget block helps with the backward compatibility for existing widgets and widget areas.

\n\n\n\n

Various Block Editor API removals by Riad Benguella has the details on the removal of EditorGlobalKeyboardShortcuts, hasUploadPermissions and their alternatives. Also, the block “Subheading” has been removed, too.

\n\n\n\n

Timothy Jacobs post lists all the REST API Changes necessary for the Widget Block Editor. He also shows how to adjust Legacy widgets, so they are seen and handled by it. Timothy illustrates the changes with extensive code snippets, that should help you get up to speed fast.

\n\n\n\n

And if that isn’t enough already, Milana Cap lists Miscellaneous developer focused changes in her dev note. The team removed support for IE 11 from build and test tools and gives you more control and consistency for the document title. WordPress 5.8 also brings a consistent type for integer properties of WP_Post, WP_Term, WP_User and a bookmark object and better caching of post/page IDs for subsequent request. There are quite a few more goodies in this upcoming release. Take a look!

\n\n\n\n\n

 “Keeping up with Gutenberg – Index 2021” 
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. 2021 on. Updated by yours truly. The index 2020 is here

\n\n\n\n\n

User-facing changes in WordPress 5.8

\n\n\n\n

Timothy Jacobs gave a detailed preview of What’s coming to the Block editor in WordPress 5.8 to the members of the WordPress NYC meetup. You can see a demo of Duotone for image & cover, Single Column color and spacing settings, Table block updates, and reusable block changes. He spent a few more minutes on the new Widget Screen as well as the Post Template Editor and the new Query Block.

\n\n\n\n

Courtney Robertson wrote in What WordPress 5.8 means for your clients’ websites “This release expands the role of the block editor to include nearly every area of WordPress. You’ll want to check out all the updates to discover what WordPress 5.8, Full Site Editing, and Block-Based Themes mean for your clients’ websites.”. The post is a fabulous comprehensive list of what is new in WordPress 5.8 with short videos and the relevant details.

\n\n\n\n

Block-Based Widget in WP Admin and Customizer

\n\n\n\n

You can also watch Anne McCarthy Exploring the Block Widgets Editor in WP Admin and Customizer on YouTube. She wrote in the description: “This video seeks to give an initial look at this feature and answer some top questions people might have. Shout out to Channing Ritter who put together the demo portion!”.

\n\n\n\n

Eric Karkovack also did a deep dive into the block-based Widget Screen for you: The WordPress Widgets Screen Joins the Gutenberg Era and provides you with a great tutorial on how to use the new screens with screenshot and all.

\n\n\n\n

Diving Into WordPress 5.8’s New Widgets Screen by Justin Tadlock. He is a fan of the new feature and glad it made it into the WordPress core for this upcoming release. While the WPAdmin Widget screen feels like a good block editor, he wrote about the block widgets in the Customizer: “Customizer support for block widgets is light years ahead of where it was just a few short months ago. However, it feels awkward at best. There is a deep feeling of not belonging. While it was a remarkable programming feat to make the two features work together, the user experiences are nearly a decade apart.”

\n\n\n\n\n

Need a plugin .zip from Gutenberg’s main (trunk) branch?
Gutenberg Times provides daily build for testing and review.
Have you been using it? Hit reply and let me know.

\n\n\n\n

\"GitHub

\n\n\n\n

\n\n\n\n\n

Plugins for the Block Editor

\n\n\n\n

This week, I found quite a few people sharing their experiences with block editor plugins.

\n\n\n\n

Chris Lema compared in his post Content Visibility for Gutenberg three plugins that allow you to control the visibility of single blocks on your page or posts. We mentioned two of them here multiple times. Chris tested the pro version for his purposes:

\n\n\n\n\n

Episode #46 is now available with transcript.
Next recording July 9th, 2021

\n\n\n\n

Send questions, comments or news to changelog@gutenbergtimes.com

\n\n\n\n

Subscribe to the Gutenberg Changelog podcast
?️ Spotify | Google | iTunes | PocketCasts | Stitcher |
?️ Pod Bean | CastBox | Podchaser | RSS Feed 

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

Rich Tabor released Markdown Comment Block in the WordPress plugin repository. He wrote in his description: “Having the ability to add, and keep, any relevant editing comments within my posts, without rendering them on the front-end, means that I am freed up to mentally jot any idea down without thinking about it. It is simply natural and convenient.” Justin Tadlock gave it a review in Add Editor-Only Notes via the Markdown Comment Block WordPress Plugin

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

Thanks to Remkus De Vries’ new newsletter “Remkus Ramblings“, I learned about two more plugins for the block editor:

\n\n\n\n

Highlight and Share by Ronald Huereca – “It’s a social sharing plugin that allows you to highlight text and and share among several social networks including Twitter, Facebook, LinkedIn and more,” Remkus said. I wished I had this plugin when I ran a social media marketing agency….

\n\n\n\n

The second one is Block Editor Colors by MotoPress – Remkus wrote: “(…)which allows you to edit default Gutenberg block editor colors or the ones registered in a theme, as well as add your colors!”

\n\n\n\n

Remkus de Vries, Head of Partner & Customer Relationship at ServeBolt, started his newsletter last month, and he uses – you probably guessed it – my favorite newsletter plugin: Newsletter Glue. ? Waving at Lesley Sim

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

I got quite excited when I learned about Automattic’s Sketch plugin, a plugin that allows its users to sketch within the editor and show it immediately on the front end. Based on perfect-hand library, it is the product of a collaboration between Matias Ventura, Pablo Honey and Oscar Lopez. It’s one of Automattic’s Block Experiments.

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

Building Blocks

\n\n\n\n

Ben Gillbanks shows you how to get a list of all blocks in the editor of a post or page. He wrote: “It’s particularly handy for WordPress plugin developers, but will also be useful when setting properties in theme.json a new feature that is part of the upcoming Full Site Editing functionality of WordPress.”

\n\n\n\n

Fabian Kägy‘s WordCamp Europe presentation Building great experiences in the new editor is now available on WordPress TV. He wrote in his session description “Starting out building blocks or experiences for the WordPress block editor can be a bit daunting. Where do I start? Custom blocks, block patterns or just styling core blocks. In this talk, I will walk through the different options and share the benefits and downsides of each while talking about overall good practices for building great editorial experiences.”

\n\n\n\n

If you are looking for other talks, you might have missed, 23 WordCamp Europe 2021 talks are now available on WordPress TV

\n\n\n\n

Upcoming WordPress Event

\n\n\n\n

July 7th, 2021 -1pm EDT / 17:00 UTC
Hallway Hangout: FSE Testing call #8 theme.json with Daisy Olson

\n\n\n\n

July 17 + 18th, 2021
WordCamp Santa Clarita

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

July 23, 2021
WordFest Live The festival of WordPress

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

August 6 + 7, 2021
WordCamp Nicaragua

\n\n\n\n

September 21 + 22, 2021
WPCampus 2021 Online
“A free online conference for web accessibility and WordPress in higher education.”

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

On the Calendar for WordPress Online Events you can browse a list of the upcoming WordPress Meetups, around the world, including WooCommerce, Elementor, Divi Builder and Beaver Builder meetups.

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

Don’t want to miss the next Weekend Edition?

\n\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, 03 Jul 2021 15:17:23 +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:49;a:6:{s:4:\"data\";s:13:\"\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:124:\"WPTavern: Castos Picks Up $756K in Funding from Automattic and Yoast SEO to Expand Services in the Private Podcasting Market\";s: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://wptavern.com/?p=119530\";s: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:299:\"https://wptavern.com/castos-picks-up-756k-in-funding-from-automattic-and-joost-de-valk-to-expand-services-in-the-private-podcasting-market?utm_source=rss&utm_medium=rss&utm_campaign=castos-picks-up-756k-in-funding-from-automattic-and-joost-de-valk-to-expand-services-in-the-private-podcasting-market\";s: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:3974:\"

Castos, a WordPress-powered podcast hosting provider, announced a $756K pre-seed fundraising round today from Automattic, Yoast SEO, and several individuals. The company raised money from all the investors in this round via a SAFE note, which founder and CEO Craig Hewitt said is a fairly standard investment vehicle for companies at Castos’ stage of growth.

\n\n\n\n

“On both the individual and corporate investor side I think the investors see the vision that we have for what the Private Podcasting market can mean for Castos and want to help us achieve that potential,” Hewitt said.

\n\n\n\n

Private Podcasting is a growing trend where creators and organizations broadcast to supporters in a more intimate format that isn’t open to the public. Hewitt likens them to membership sites, except in audio format. It is often used by people who are running membership sites, courses, or online communities as a way to stay connected with members.

\n\n\n\n

“The other application is companies wanting a way to connect with their employees in audio format,” Hewitt said. “Podcasting is perfect for that because it’s mobile-first, on-demand, and can be consumed asynchronously.  We call it the Step Away Experience. Companies that are adopting Private Podcasting internally are giving their team members a way to consume their internal content without being tied to their computer on a Zoom call or glued to Slack.”

\n\n\n\n

Castos is developing a mobile app specifically targeted at the private podcasting market. Hewitt’s team is aiming to have the app become a place where people can listen to all of the private podcasts for which they have a subscription. Listeners would simply use the app instead of going through the process of manually subscribing to all their private podcasts via RSS feed. New episodes will appear automatically in the app for subscribers.

\n\n\n\n

“For our corporate clients, the ability to white label our app with their own branding/style is a big win,” Hewitt said. “It’s also a much more secure way to distribute private podcast content.  There’s no RSS feed to share around, no files to download (our app is streaming only to offer more security to those files).” 

\n\n\n\n

The pandemic ramped up unprecedented interest in podcasting when lockdowns were in place across the globe. Even with vaccines more readily available now, Hewitt said Castos is still witnessing strong growth in the podcasting industry.

\n\n\n\n

“There are all the new podcasters in the market now since so many launched podcasts during the pandemic, but now that people are traveling again and commuting to work we’re seeing listenership going up quite a bit,” he said. “This is a trend we expect to continue into the future.”

\n\n\n\n

In the past 10 months, Castos has grown to serve nearly 3,500 customers and the team has grown from seven employees to 13. The company’s Seriously Simple Podcasting plugin is used on more than 30,000 WordPress sites. Castos is actively hiring for several roles right now, thanks to the new round of fundraising.

\n\n\n\n

“All of the funds will go towards growing our team,” Hewitt said. “This will be pretty evenly split between product (designers and developers) and Sales and Marketing roles – more people, more energy, more great minds working on ways that we can better serve our customers.” 

\";s: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, 03 Jul 2021 02:18:40 +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:13:\"Sarah Gooding\";s: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:42:\"Requests_Utility_CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:8:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 27 Jul 2021 18:34:54 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:13:\"last-modified\";s:29:\"Tue, 27 Jul 2021 18:30:09 GMT\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:4:\"x-nc\";s:9:\"HIT ord 2\";s:16:\"content-encoding\";s:4:\"gzip\";}}s:5:\"build\";s:14:\"20201016172007\";}','no'),(144,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1627454094','no'),(145,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1627410894','no'),(146,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1627454094','no'),(147,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','','no'),(148,'recently_activated','a:0:{}','yes'),(149,'fs_active_plugins','O:8:\"stdClass\":3:{s:7:\"plugins\";a:1:{s:34:\"pods/vendor/freemius/wordpress-sdk\";O:8:\"stdClass\":4:{s:7:\"version\";s:5:\"2.4.2\";s:4:\"type\";s:6:\"plugin\";s:9:\"timestamp\";i:1627410905;s:11:\"plugin_path\";s:13:\"pods/init.php\";}}s:7:\"abspath\";s:60:\"/Users/sc0ttkclark/Local Sites/testpmprophxlocal/app/public/\";s:6:\"newest\";O:8:\"stdClass\":5:{s:11:\"plugin_path\";s:13:\"pods/init.php\";s:8:\"sdk_path\";s:34:\"pods/vendor/freemius/wordpress-sdk\";s:7:\"version\";s:5:\"2.4.2\";s:13:\"in_activation\";b:0;s:9:\"timestamp\";i:1627410905;}}','yes'),(150,'fs_debug_mode','','yes'),(151,'fs_accounts','a:6:{s:21:\"id_slug_type_path_map\";a:1:{i:5347;a:3:{s:4:\"slug\";s:4:\"pods\";s:4:\"type\";s:6:\"plugin\";s:4:\"path\";s:13:\"pods/init.php\";}}s:11:\"plugin_data\";a:1:{s:4:\"pods\";a:16:{s:16:\"plugin_main_file\";O:8:\"stdClass\":1:{s:4:\"path\";s:13:\"pods/init.php\";}s:20:\"is_network_activated\";b:0;s:17:\"install_timestamp\";i:1627410905;s:17:\"was_plugin_loaded\";b:1;s:21:\"is_plugin_new_install\";b:0;s:16:\"sdk_last_version\";N;s:11:\"sdk_version\";s:5:\"2.4.2\";s:16:\"sdk_upgrade_mode\";b:1;s:18:\"sdk_downgrade_mode\";b:0;s:19:\"plugin_last_version\";N;s:14:\"plugin_version\";s:9:\"2.8.0-b-3\";s:19:\"plugin_upgrade_mode\";b:1;s:21:\"plugin_downgrade_mode\";b:0;s:17:\"connectivity_test\";a:6:{s:12:\"is_connected\";b:1;s:4:\"host\";s:20:\"test.pmpro-phx.local\";s:9:\"server_ip\";s:3:\"::1\";s:9:\"is_active\";b:1;s:9:\"timestamp\";i:1627410905;s:7:\"version\";s:9:\"2.8.0-b-3\";}s:15:\"prev_is_premium\";b:0;s:18:\"sticky_optin_added\";b:1;}}s:13:\"file_slug_map\";a:1:{s:13:\"pods/init.php\";s:4:\"pods\";}s:7:\"plugins\";a:1:{s:4:\"pods\";O:9:\"FS_Plugin\":23:{s:16:\"parent_plugin_id\";N;s:5:\"title\";s:38:\"Pods - Custom Content Types and Fields\";s:4:\"slug\";s:4:\"pods\";s:12:\"premium_slug\";s:12:\"pods-premium\";s:4:\"type\";s:6:\"plugin\";s:20:\"affiliate_moderation\";b:0;s:19:\"is_wp_org_compliant\";b:1;s:22:\"premium_releases_count\";N;s:4:\"file\";s:13:\"pods/init.php\";s:7:\"version\";s:9:\"2.8.0-b-3\";s:11:\"auto_update\";N;s:4:\"info\";N;s:10:\"is_premium\";b:0;s:14:\"premium_suffix\";s:9:\"(Premium)\";s:7:\"is_live\";b:1;s:9:\"bundle_id\";N;s:17:\"bundle_public_key\";N;s:10:\"public_key\";s:32:\"pk_737105490825babae220297e18920\";s:10:\"secret_key\";N;s:2:\"id\";s:4:\"5347\";s:7:\"updated\";N;s:7:\"created\";N;s:22:\"\0FS_Entity\0_is_updated\";b:0;}}s:9:\"unique_id\";s:32:\"1dca38afbca32a6f150c667bb26db89a\";s:13:\"admin_notices\";a:1:{s:4:\"pods\";a:0:{}}}','yes'),(152,'fs_gdpr','a:1:{s:2:\"u1\";a:1:{s:8:\"required\";b:0;}}','yes'),(156,'pods_component_settings','{\"components\":{\"templates\":[]}}','yes'),(157,'pods_framework_version','2.8.0-b-3','yes'),(158,'pods_framework_db_version','2.3.5','yes'),(159,'_transient_pods_pods_flush_rewrites-2.8.0-b-3','0','yes'),(160,'_transient_timeout_pods_pods_components_refresh-2.8.0-b-3','1627454106','no'),(161,'_transient_pods_pods_components_refresh-2.8.0-b-3','1','no'),(162,'_transient_pods_pods_components-2.8.0-b-3','a:11:{s:22:\"advanced-content-types\";a:25:{s:2:\"ID\";s:22:\"advanced-content-types\";s:4:\"Name\";s:22:\"Advanced Content Types\";s:9:\"ShortName\";s:22:\"Advanced Content Types\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:22:\"Advanced Content Types\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:252:\"A content type that exists outside of the WordPress post and postmeta table and uses custom tables instead. You most likely don\'t need these and we strongly recommend that you use Custom Post Types or Custom Taxonomies instead. FOR ADVANCED USERS ONLY.\";s:7:\"Version\";s:3:\"2.3\";s:8:\"Category\";s:8:\"Advanced\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:27:\"Pods_Advanced_Content_Types\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:26:\"Advanced-Content-Types.php\";}s:22:\"advanced-relationships\";a:25:{s:2:\"ID\";s:22:\"advanced-relationships\";s:4:\"Name\";s:22:\"Advanced Relationships\";s:9:\"ShortName\";s:22:\"Advanced Relationships\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:22:\"Advanced Relationships\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:187:\"Add advanced relationship objects for relating to including Database Tables, Multisite Networks, Multisite Sites, Themes, Page Templates, Sidebars, Post Type Objects, and Taxonomy Objects\";s:7:\"Version\";s:3:\"2.3\";s:8:\"Category\";s:8:\"Advanced\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:27:\"Pods_Advanced_Relationships\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:26:\"Advanced-Relationships.php\";}s:19:\"builder-integration\";a:25:{s:2:\"ID\";s:19:\"builder-integration\";s:4:\"Name\";s:19:\"Builder Integration\";s:9:\"ShortName\";s:19:\"Builder Integration\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:19:\"Builder Integration\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:169:\"Integration with the Builder theme / child themes from iThemes; Adds new modules to the Layout engine\";s:7:\"Version\";s:3:\"1.0\";s:8:\"Category\";s:11:\"Integration\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:12:\"Pods_Builder\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:29:\"pods-builder/pods-builder.php\";s:8:\"External\";b:0;s:4:\"File\";s:19:\"Builder/Builder.php\";}s:15:\"markdown-syntax\";a:25:{s:2:\"ID\";s:15:\"markdown-syntax\";s:4:\"Name\";s:15:\"Markdown Syntax\";s:9:\"ShortName\";s:15:\"Markdown Syntax\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:15:\"Markdown Syntax\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:138:\"Integration with Markdown (http://michelf.com/projects/php-markdown/); Adds an option to enable Markdown syntax for Paragraph text fields.\";s:7:\"Version\";s:3:\"1.0\";s:8:\"Category\";s:11:\"Field Types\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:13:\"Pods_Markdown\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:12:\"Markdown.php\";}s:50:\"migrate-import-from-the-custom-post-type-ui-plugin\";a:25:{s:2:\"ID\";s:50:\"migrate-import-from-the-custom-post-type-ui-plugin\";s:4:\"Name\";s:51:\"Migrate: Import from the Custom Post Type UI plugin\";s:9:\"ShortName\";s:51:\"Migrate: Import from the Custom Post Type UI plugin\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:14:\"Migrate CPT UI\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:186:\"Import Custom Post Types and Taxonomies from Custom Post Type UI (http://webdevstudios.com/plugin/custom-post-type-ui/)\";s:7:\"Version\";s:3:\"1.0\";s:8:\"Category\";s:9:\"Migration\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:18:\"Pods_Migrate_CPTUI\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:69:\"pods-migrate-custom-post-type-ui/pods-migrate-custom-post-type-ui.php\";s:8:\"External\";b:0;s:4:\"File\";s:31:\"Migrate-CPTUI/Migrate-CPTUI.php\";}s:16:\"migrate-packages\";a:25:{s:2:\"ID\";s:16:\"migrate-packages\";s:4:\"Name\";s:17:\"Migrate: Packages\";s:9:\"ShortName\";s:17:\"Migrate: Packages\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:16:\"Migrate Packages\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:121:\"Import/Export your Pods, Fields, and other settings from any Pods site; Includes an API to Import/Export Packages via PHP\";s:7:\"Version\";s:3:\"2.0\";s:8:\"Category\";s:9:\"Migration\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:21:\"Pods_Migrate_Packages\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:47:\"pods-migrate-packages/pods-migrate-packages.php\";s:8:\"External\";b:0;s:4:\"File\";s:37:\"Migrate-Packages/Migrate-Packages.php\";}s:5:\"pages\";a:25:{s:2:\"ID\";s:5:\"pages\";s:4:\"Name\";s:5:\"Pages\";s:9:\"ShortName\";s:5:\"Pages\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:9:\"Pod Pages\";s:8:\"MenuPage\";s:29:\"edit.php?post_type=_pods_page\";s:11:\"MenuAddPage\";s:33:\"post-new.php?post_type=_pods_page\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:170:\"Creates advanced URL structures using wildcards in order to enable the front-end display of Pods Advanced Content Types. Not recommended for use with other content types.\";s:7:\"Version\";s:3:\"2.3\";s:8:\"Category\";s:8:\"Advanced\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:10:\"Pods_Pages\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:9:\"Pages.php\";}s:22:\"roles-and-capabilities\";a:25:{s:2:\"ID\";s:22:\"roles-and-capabilities\";s:4:\"Name\";s:22:\"Roles and Capabilities\";s:9:\"ShortName\";s:22:\"Roles and Capabilities\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:24:\"Roles & Capabilities\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:379:\"Create and Manage WordPress User Roles and Capabilities; Uses the \'Members\' plugin filters for additional plugin integrations; Portions of code based on the \'Members\' plugin by Justin Tadlock\";s:7:\"Version\";s:3:\"1.0\";s:8:\"Category\";s:5:\"Tools\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:10:\"Pods_Roles\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:15:\"Roles/Roles.php\";}s:13:\"table-storage\";a:25:{s:2:\"ID\";s:13:\"table-storage\";s:4:\"Name\";s:13:\"Table Storage\";s:9:\"ShortName\";s:13:\"Table Storage\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:13:\"Table Storage\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:108:\"Enable a custom database table for your custom fields on Post Types, Media, Taxonomies, Users, and Comments.\";s:7:\"Version\";s:3:\"2.3\";s:8:\"Category\";s:8:\"Advanced\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:18:\"Pods_Table_Storage\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:17:\"Table-Storage.php\";}s:9:\"templates\";a:25:{s:2:\"ID\";s:9:\"templates\";s:4:\"Name\";s:9:\"Templates\";s:9:\"ShortName\";s:9:\"Templates\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:13:\"Pod Templates\";s:8:\"MenuPage\";s:33:\"edit.php?post_type=_pods_template\";s:11:\"MenuAddPage\";s:37:\"post-new.php?post_type=_pods_template\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:114:\"An easy to use templating engine for Pods. Use {@field_name} magic tags to output values, within your HTML markup.\";s:7:\"Version\";s:3:\"2.3\";s:8:\"Category\";s:8:\"Advanced\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:14:\"Pods_Templates\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:23:\"Templates/Templates.php\";}s:20:\"translate-pods-admin\";a:25:{s:2:\"ID\";s:20:\"translate-pods-admin\";s:4:\"Name\";s:20:\"Translate Pods Admin\";s:9:\"ShortName\";s:20:\"Translate Pods Admin\";s:10:\"PluginName\";s:0:\"\";s:13:\"ComponentName\";s:0:\"\";s:3:\"URI\";s:0:\"\";s:8:\"MenuName\";s:14:\"Translate Pods\";s:8:\"MenuPage\";s:0:\"\";s:11:\"MenuAddPage\";s:0:\"\";s:7:\"MustUse\";b:0;s:11:\"Description\";s:45:\"Allow UI of Pods and fields to be translated.\";s:7:\"Version\";s:3:\"0.2\";s:8:\"Category\";s:4:\"I18n\";s:6:\"Author\";s:0:\"\";s:9:\"AuthorURI\";s:0:\"\";s:5:\"Class\";s:19:\"Pods_Component_I18n\";s:4:\"Hide\";s:0:\"\";s:16:\"PluginDependency\";s:0:\"\";s:15:\"ThemeDependency\";s:0:\"\";s:13:\"DeveloperMode\";b:0;s:13:\"TablelessMode\";b:0;s:10:\"Capability\";s:0:\"\";s:6:\"Plugin\";s:0:\"\";s:8:\"External\";b:0;s:4:\"File\";s:13:\"I18n/I18n.php\";}}','yes'),(163,'_transient_pods_c7a24d31bb792ab9ceeb70c4c3c46694','a:0:{}','yes'),(164,'_transient_pods_55c1e26297db9eee716e8ebc6341f45d','a:0:{}','yes'),(165,'_transient_pods_c5f15e6c5585461e4d159f46abf0cd0f','a:0:{}','yes'),(166,'_transient_pods_ce2fe6bc60c2d30940a64abe359e6f99','a:0:{}','yes'),(167,'_transient_pods_8a13b10763d28e72d9463a746af3549c','a:0:{}','yes'),(168,'_transient_pods_16edde87c24d13d3e95163d42b8723c5','a:0:{}','yes'),(169,'_transient_pods_af382365e665d6f8aefb0bf85fbecdbf','a:0:{}','yes'),(170,'widget_pods_widget_single','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(171,'widget_pods_widget_list','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(172,'widget_pods_widget_field','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(173,'widget_pods_widget_form','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(174,'widget_pods_widget_view','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(175,'_transient_pods_pods_wp_cpt_ct-2.8.0-b-3','a:3:{s:10:\"post_types\";a:0:{}s:10:\"taxonomies\";a:0:{}s:22:\"post_format_post_types\";a:0:{}}','yes'),(176,'_transient_pods_136df1b9106403f5aee0a2d6f6190842','a:0:{}','yes'),(177,'_transient_pods_929c94e056c107f8eb4aa6028d45573c','a:0:{}','yes'),(178,'_transient_pods_7470825572610569af145ff469beecb5','a:0:{}','yes'),(180,'_transient_pods_pods_field_types-2.8.0-b-3','a:22:{s:4:\"text\";a:7:{s:5:\"group\";s:4:\"Text\";s:4:\"type\";s:4:\"text\";s:5:\"label\";s:10:\"Plain Text\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:7:\"website\";a:7:{s:5:\"group\";s:4:\"Text\";s:4:\"type\";s:7:\"website\";s:5:\"label\";s:7:\"Website\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:5:\"phone\";a:7:{s:5:\"group\";s:4:\"Text\";s:4:\"type\";s:5:\"phone\";s:5:\"label\";s:5:\"Phone\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:5:\"email\";a:7:{s:5:\"group\";s:4:\"Text\";s:4:\"type\";s:5:\"email\";s:5:\"label\";s:6:\"E-mail\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:8:\"password\";a:7:{s:5:\"group\";s:4:\"Text\";s:4:\"type\";s:8:\"password\";s:5:\"label\";s:8:\"Password\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:9:\"paragraph\";a:7:{s:5:\"group\";s:9:\"Paragraph\";s:4:\"type\";s:9:\"paragraph\";s:5:\"label\";s:20:\"Plain Paragraph Text\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:7:\"wysiwyg\";a:7:{s:5:\"group\";s:9:\"Paragraph\";s:4:\"type\";s:7:\"wysiwyg\";s:5:\"label\";s:23:\"WYSIWYG (Visual Editor)\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"code\";a:7:{s:5:\"group\";s:9:\"Paragraph\";s:4:\"type\";s:4:\"code\";s:5:\"label\";s:26:\"Code (Syntax Highlighting)\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:8:\"datetime\";a:9:{s:5:\"group\";s:11:\"Date / Time\";s:4:\"type\";s:8:\"datetime\";s:5:\"label\";s:11:\"Date / Time\";s:7:\"prepare\";s:2:\"%s\";s:14:\"storage_format\";s:11:\"Y-m-d H:i:s\";s:11:\"empty_value\";s:19:\"0000-00-00 00:00:00\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"date\";a:9:{s:5:\"group\";s:11:\"Date / Time\";s:4:\"type\";s:4:\"date\";s:5:\"label\";s:4:\"Date\";s:7:\"prepare\";s:2:\"%s\";s:14:\"storage_format\";s:5:\"Y-m-d\";s:11:\"empty_value\";s:10:\"0000-00-00\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"time\";a:9:{s:5:\"group\";s:11:\"Date / Time\";s:4:\"type\";s:4:\"time\";s:5:\"label\";s:4:\"Time\";s:7:\"prepare\";s:2:\"%s\";s:14:\"storage_format\";s:5:\"H:i:s\";s:11:\"empty_value\";s:0:\"\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:6:\"number\";a:7:{s:5:\"group\";s:6:\"Number\";s:4:\"type\";s:6:\"number\";s:5:\"label\";s:12:\"Plain Number\";s:7:\"prepare\";s:2:\"%d\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:8:\"currency\";a:8:{s:5:\"group\";s:6:\"Number\";s:4:\"type\";s:8:\"currency\";s:5:\"label\";s:8:\"Currency\";s:7:\"prepare\";s:2:\"%d\";s:10:\"currencies\";a:34:{s:3:\"aud\";a:4:{s:5:\"label\";s:3:\"AUD\";s:4:\"name\";s:17:\"Australian Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"brl\";a:4:{s:5:\"label\";s:3:\"BRL\";s:4:\"name\";s:14:\"Brazilian Real\";s:4:\"sign\";s:2:\"R$\";s:6:\"entity\";s:6:\"R$\";}s:3:\"cad\";a:4:{s:5:\"label\";s:3:\"CAD\";s:4:\"name\";s:15:\"Canadian Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"chf\";a:4:{s:5:\"label\";s:3:\"CHF\";s:4:\"name\";s:11:\"Swiss Franc\";s:4:\"sign\";s:2:\"Fr\";s:6:\"entity\";s:2:\"Fr\";}s:3:\"cny\";a:4:{s:5:\"label\";s:3:\"CNY\";s:4:\"name\";s:16:\"Chinese Yen (¥)\";s:4:\"sign\";s:2:\"¥\";s:6:\"entity\";s:5:\"¥\";}s:4:\"cny2\";a:4:{s:5:\"label\";s:3:\"CNY\";s:4:\"name\";s:18:\"Chinese Yuan (元)\";s:4:\"sign\";s:3:\"元\";s:6:\"entity\";s:8:\"元\";}s:3:\"czk\";a:4:{s:5:\"label\";s:3:\"CZK\";s:4:\"name\";s:12:\"Czech Koruna\";s:4:\"sign\";s:3:\"Kč\";s:6:\"entity\";s:8:\"Kč\";}s:3:\"dkk\";a:4:{s:5:\"label\";s:3:\"DKK\";s:4:\"name\";s:12:\"Danish Krone\";s:4:\"sign\";s:3:\"kr.\";s:6:\"entity\";s:3:\"kr.\";}s:4:\"euro\";a:4:{s:5:\"label\";s:3:\"EUR\";s:4:\"name\";s:4:\"Euro\";s:4:\"sign\";s:3:\"€\";s:6:\"entity\";s:6:\"€\";}s:3:\"gbp\";a:4:{s:5:\"label\";s:3:\"GBP\";s:4:\"name\";s:13:\"British Pound\";s:4:\"sign\";s:2:\"£\";s:6:\"entity\";s:7:\"£\";}s:3:\"hkd\";a:4:{s:5:\"label\";s:3:\"HKD\";s:4:\"name\";s:16:\"Hong Kong Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"huf\";a:4:{s:5:\"label\";s:3:\"HUF\";s:4:\"name\";s:16:\"Hungarian Forint\";s:4:\"sign\";s:2:\"Ft\";s:6:\"entity\";s:2:\"Ft\";}s:3:\"idr\";a:4:{s:5:\"label\";s:3:\"IDR\";s:4:\"name\";s:17:\"Indonesian Rupiah\";s:4:\"sign\";s:2:\"Rp\";s:6:\"entity\";s:2:\"Rp\";}s:3:\"ils\";a:4:{s:5:\"label\";s:3:\"ILS\";s:4:\"name\";s:18:\"Israeli New Sheqel\";s:4:\"sign\";s:3:\"₪\";s:6:\"entity\";s:8:\"₪\";}s:3:\"inr\";a:4:{s:5:\"label\";s:3:\"INR\";s:4:\"name\";s:12:\"Indian Rupee\";s:4:\"sign\";s:3:\"₹\";s:6:\"entity\";s:8:\"₹\";}s:3:\"jpy\";a:4:{s:5:\"label\";s:3:\"JPY\";s:4:\"name\";s:12:\"Japanese Yen\";s:4:\"sign\";s:2:\"¥\";s:6:\"entity\";s:5:\"¥\";}s:3:\"krw\";a:4:{s:5:\"label\";s:3:\"KRW\";s:4:\"name\";s:10:\"Korean Won\";s:4:\"sign\";s:3:\"₩\";s:6:\"entity\";s:7:\"₩\";}s:3:\"mxn\";a:4:{s:5:\"label\";s:3:\"MXN\";s:4:\"name\";s:12:\"Mexican Peso\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"myr\";a:4:{s:5:\"label\";s:3:\"MYR\";s:4:\"name\";s:17:\"Malaysian Ringgit\";s:4:\"sign\";s:2:\"RM\";s:6:\"entity\";s:2:\"RM\";}s:3:\"ngn\";a:4:{s:5:\"label\";s:3:\"NGN\";s:4:\"name\";s:14:\"Nigerian Naira\";s:4:\"sign\";s:3:\"₦\";s:6:\"entity\";s:7:\"₦\";}s:3:\"nok\";a:4:{s:5:\"label\";s:3:\"NOK\";s:4:\"name\";s:15:\"Norwegian Krone\";s:4:\"sign\";s:2:\"kr\";s:6:\"entity\";s:2:\"kr\";}s:3:\"nzd\";a:4:{s:5:\"label\";s:3:\"NZD\";s:4:\"name\";s:18:\"New Zealand Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"php\";a:4:{s:5:\"label\";s:3:\"PHP\";s:4:\"name\";s:15:\"Philippine Peso\";s:4:\"sign\";s:3:\"₱\";s:6:\"entity\";s:8:\"₱\";}s:3:\"pln\";a:4:{s:5:\"label\";s:3:\"PLN\";s:4:\"name\";s:13:\"Polish Złoty\";s:4:\"sign\";s:3:\"zł\";s:6:\"entity\";s:8:\"zł\";}s:3:\"rub\";a:4:{s:5:\"label\";s:3:\"RUB\";s:4:\"name\";s:13:\"Russian Ruble\";s:4:\"sign\";s:3:\"₽\";s:6:\"entity\";s:7:\"₽\";}s:3:\"sek\";a:4:{s:5:\"label\";s:3:\"SEK\";s:4:\"name\";s:13:\"Swedish Krona\";s:4:\"sign\";s:2:\"kr\";s:6:\"entity\";s:2:\"kr\";}s:3:\"sgd\";a:4:{s:5:\"label\";s:3:\"SGD\";s:4:\"name\";s:16:\"Singapore Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"thb\";a:4:{s:5:\"label\";s:3:\"THB\";s:4:\"name\";s:9:\"Thai Baht\";s:4:\"sign\";s:3:\"฿\";s:6:\"entity\";s:8:\"฿\";}s:3:\"trl\";a:4:{s:5:\"label\";s:3:\"TRL\";s:4:\"name\";s:12:\"Turkish Lira\";s:4:\"sign\";s:3:\"₺\";s:6:\"entity\";s:7:\"₺\";}s:3:\"twd\";a:4:{s:5:\"label\";s:3:\"TWD\";s:4:\"name\";s:17:\"Taiwan New Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:3:\"usd\";a:4:{s:5:\"label\";s:3:\"USD\";s:4:\"name\";s:9:\"US Dollar\";s:4:\"sign\";s:1:\"$\";s:6:\"entity\";s:5:\"$\";}s:7:\"usdcent\";a:4:{s:5:\"label\";s:7:\"USDCENT\";s:4:\"name\";s:14:\"US Dollar Cent\";s:4:\"sign\";s:2:\"¢\";s:6:\"entity\";s:6:\"¢\";}s:3:\"vnd\";a:4:{s:5:\"label\";s:3:\"VND\";s:4:\"name\";s:15:\"Vietnamese Dong\";s:4:\"sign\";s:3:\"₫\";s:6:\"entity\";s:7:\"₫\";}s:3:\"zar\";a:4:{s:5:\"label\";s:3:\"ZAR\";s:4:\"name\";s:18:\"South African Rand\";s:4:\"sign\";s:1:\"R\";s:6:\"entity\";s:1:\"R\";}}s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"file\";a:7:{s:5:\"group\";s:21:\"Relationships / Media\";s:4:\"type\";s:4:\"file\";s:5:\"label\";s:20:\"File / Image / Video\";s:10:\"deprecated\";b:0;s:7:\"prepare\";s:2:\"%s\";s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:6:\"avatar\";a:7:{s:5:\"group\";s:21:\"Relationships / Media\";s:4:\"type\";s:6:\"avatar\";s:5:\"label\";s:6:\"Avatar\";s:9:\"pod_types\";a:1:{i:0;s:4:\"user\";}s:10:\"deprecated\";b:0;s:7:\"prepare\";s:2:\"%s\";s:4:\"file\";N;}s:6:\"oembed\";a:7:{s:5:\"group\";s:21:\"Relationships / Media\";s:4:\"type\";s:6:\"oembed\";s:5:\"label\";s:6:\"oEmbed\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"pick\";a:11:{s:5:\"group\";s:21:\"Relationships / Media\";s:4:\"type\";s:4:\"pick\";s:5:\"label\";s:12:\"Relationship\";s:15:\"related_objects\";a:0:{}s:22:\"custom_related_objects\";a:0:{}s:12:\"related_data\";a:0:{}s:10:\"field_data\";a:0:{}s:10:\"deprecated\";b:0;s:7:\"prepare\";s:2:\"%s\";s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:7:\"boolean\";a:6:{s:4:\"type\";s:7:\"boolean\";s:5:\"label\";s:8:\"Yes / No\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:5:\"color\";a:6:{s:4:\"type\";s:5:\"color\";s:5:\"label\";s:12:\"Color Picker\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"slug\";a:6:{s:4:\"type\";s:4:\"slug\";s:5:\"label\";s:24:\"Permalink (url-friendly)\";s:7:\"prepare\";s:2:\"%s\";s:9:\"pod_types\";a:2:{i:0;s:3:\"pod\";i:1;s:5:\"table\";}s:10:\"deprecated\";b:0;s:4:\"file\";N;}s:7:\"heading\";a:7:{s:5:\"group\";s:15:\"Layout Elements\";s:4:\"type\";s:7:\"heading\";s:5:\"label\";s:7:\"Heading\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}s:4:\"html\";a:7:{s:5:\"group\";s:15:\"Layout Elements\";s:4:\"type\";s:4:\"html\";s:5:\"label\";s:12:\"HTML Content\";s:7:\"prepare\";s:2:\"%s\";s:10:\"deprecated\";b:0;s:9:\"pod_types\";b:1;s:4:\"file\";N;}}','yes'),(181,'_transient_pods_fd3d7cccf43e711c0649fb02553a1585','a:22:{i:0;s:4:\"text\";i:1;s:7:\"website\";i:2;s:5:\"phone\";i:3;s:5:\"email\";i:4;s:8:\"password\";i:5;s:9:\"paragraph\";i:6;s:7:\"wysiwyg\";i:7;s:4:\"code\";i:8;s:8:\"datetime\";i:9;s:4:\"date\";i:10;s:4:\"time\";i:11;s:6:\"number\";i:12;s:8:\"currency\";i:13;s:4:\"file\";i:14;s:6:\"avatar\";i:15;s:6:\"oembed\";i:16;s:4:\"pick\";i:17;s:7:\"boolean\";i:18;s:5:\"color\";i:19;s:4:\"slug\";i:20;s:7:\"heading\";i:21;s:4:\"html\";}','yes'),(185,'_transient_timeout_tribe_feature_detection','1628015706','no'),(186,'_transient_tribe_feature_detection','a:1:{s:22:\"supports_async_process\";b:1;}','no'),(187,'_transient_pods_72eaaf40aa22cd213964001a4dd30b42','a:0:{}','yes'),(188,'_transient_pods__pods_pfat_the_pods-2.8.0-b-3','a:0:{}','yes'),(189,'_transient_pods__pods_pfat_auto_pods-2.8.0-b-3','a:0:{}','yes'),(190,'pmpro_nonmembertext','This content is for !!levels!! members only.
Join Now','yes'),(191,'pmpro_notloggedintext','This content is for !!levels!! members only.
Login Join Now','yes'),(192,'pmpro_rsstext','This content is for members only. Visit the site and log in/register to read.','yes'),(193,'pmpro_gateway_environment','sandbox','yes'),(194,'pmpro_currency','USD','yes'),(195,'pmpro_accepted_credit_cards','Visa,Mastercard,American Express,Discover','yes'),(196,'pmpro_from_email','wordpress@pmpro-phx.local','yes'),(197,'pmpro_from_name','WordPress','yes'),(198,'pmpro_email_admin_checkout','1','yes'),(199,'pmpro_email_admin_changes','1','yes'),(200,'pmpro_email_admin_cancels','1','yes'),(201,'pmpro_email_admin_billing','1','yes'),(202,'pmpro_tospage','','yes'),(203,'pmpro_dismissed_wp_pointers','a:1:{i:0;s:19:\"pmpro_v2_menu_moved\";}','yes'),(204,'pmpro_nag_paused','1628015712','no'),(205,'pmpro_db_version','2.5','yes'),(206,'pmpro_filterqueries','1','yes'),(209,'pmpro_dashboard_version','2.5.10.1','no'),(215,'_transient_timeout_pmpro_report_prices_paid','1627498925','no'),(216,'_transient_pmpro_report_prices_paid','a:4:{s:6:\"today5\";a:0:{}s:11:\"this month5\";a:0:{}s:10:\"this year5\";a:0:{}s:9:\"all time5\";a:0:{}}','no'),(217,'_transient_timeout_pmpro_report_sales','1627498925','no'),(218,'_transient_pmpro_report_sales','a:4:{s:5:\"today\";a:1:{s:0:\"\";s:1:\"0\";}s:10:\"this month\";a:1:{s:0:\"\";s:1:\"0\";}s:9:\"this year\";a:1:{s:0:\"\";s:1:\"0\";}s:8:\"all time\";a:1:{s:0:\"\";s:1:\"0\";}}','no'),(219,'_transient_timeout_pmpro_report_revenue','1627498925','no'),(220,'_transient_pmpro_report_revenue','a:4:{s:5:\"today\";a:1:{s:0:\"\";N;}s:10:\"this month\";a:1:{s:0:\"\";N;}s:9:\"this year\";a:1:{s:0:\"\";N;}s:8:\"all time\";a:1:{s:0:\"\";N;}}','no'),(221,'_transient_timeout_pmpro_report_memberships_signups','1627498925','no'),(222,'_transient_pmpro_report_memberships_signups','a:4:{s:5:\"today\";a:1:{s:3:\"all\";s:1:\"0\";}s:10:\"this month\";a:1:{s:3:\"all\";s:1:\"0\";}s:9:\"this year\";a:1:{s:3:\"all\";s:1:\"0\";}s:8:\"all time\";a:1:{s:3:\"all\";s:1:\"0\";}}','no'),(223,'_transient_timeout_pmpro_report_memberships_cancellations','1627498925','no'),(224,'_transient_pmpro_report_memberships_cancellations','a:4:{s:32:\"24f01c361f0104fb988dcc628975217d\";s:1:\"0\";s:32:\"e209118c846f1467b51b87d579f0b673\";s:1:\"0\";s:32:\"a2c4fe060f9f56671dc335aa913b5132\";s:1:\"0\";s:32:\"604935d0e552a1394c45547d064cabb9\";s:1:\"0\";}','no'),(225,'_transient_timeout_feed_5966b7b1b1ba5243c38216abce94203f','1627454114','no'),(226,'_transient_feed_5966b7b1b1ba5243c38216abce94203f','a:4:{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:3:{s:0:\"\";a:8:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"Paid Memberships Pro\";s: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:34:\"https://www.paidmembershipspro.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:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:27:\"WordPress Membership 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:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Jul 2021 16:53:57 +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:30:\"https://wordpress.org/?v=5.7.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:\"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:108:\"https://www.paidmembershipspro.com/wp-content/uploads/2020/09/cropped-Paid-Memberships-Pro_favicon-32x32.png\";s: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:20:\"Paid Memberships Pro\";s: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:34:\"https://www.paidmembershipspro.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:\"\";}}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: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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"10 Years of Experiments\";s: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://www.paidmembershipspro.com/10-years-experiments/\";s: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 Jul 2021 10: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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"About PMPro\";s: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:44:\"https://www.paidmembershipspro.com/?p=360079\";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:389:\"It’s not everyday a business turns 10 years old. Only ⅓ of businesses even make it to 10 years. But on July 6, 2021, Paid Memberships Pro turned 10, and we couldn’t be more proud. One of the hardest aspects of running a business is that there is no playbook. There are a billion business (more...)\";s: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:15:\"Patrick Rauland\";s: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:23461:\"
\n

It’s not everyday a business turns 10 years old. Only ⅓ of businesses even make it to 10 years. But on July 6, 2021, Paid Memberships Pro turned 10, and we couldn’t be more proud.

\n\n\n\n
\"10
\n\n\n\n

\n\n\n\n

One of the hardest aspects of running a business is that there is no playbook. There are a billion business books that offer generic advice—but not for your business specifically. So there’s a lot of head scratching, asking peer groups, and taking risks.

\n\n\n\n

In the spirit of taking risks safely, we have run many experiments over the past 10 years. Some of them worked and became part of our strategy while others “failed” and made us re-think our assumptions. 

\n\n\n\n

Successful entrepreneurs can use experiments like these to run tests, gather data, and learn from the findings. With that in mind, here are the top 10 experiments we ran and what we learned.

\n\n\n\n

1) Testing a Price Increase

\n\n\n\n

When we first started Paid Memberships Pro, we only offered a few Add Ons. Today, our platform includes over 65 premium Add Ons and with this growth, we increased our price accordingly. But, before we increased the price of our Plus level from $197 to $297, we tested the price increase.

\n\n\n\n

We ran an A/B test. Half of users saw the $297 price everywhere on the website except the checkout page. At checkout, we truly charged this half of users $197 and displayed a message about a secret “Fall sale”.

\n\n\n\n
\"Membership
\n\n\n\n

While this test wasn’t perfect, it did allow us to see how the price increase would affect conversion rates from the homepage to the pricing page and from the pricing page to the checkout page.

\n\n\n\n

We expected sales to fall (pun intended), but we also were charging 50% more. The higher price would drive better overall revenue as long as orders fell less than 33%. In our tests, sales were nearly even. The experiment proved that we could increase the price with confidence. Jason talks more about this experiment and pricing in general in his Art of Value Podcast appearance.

\n\n\n\n

Takeaway: A/B test major changes to your product or membership. Sometimes you spend too much time worrying about nonissues.

\n\n\n\n

2) Happy Banner FOMO

\n\n\n\n

You may notice some websites with a banner at the top mentioning a 5-10% deal that ends in exactly 3 hours and 53 minutes. If you’re an astute web user you probably noticed that these deals are fake. They create artificial fear of missing out — or FOMO.

\n\n\n\n

We don’t like lying to our customers. It sets a bad precedent. In practice, everyone gets this offer every time they come to your site. And is it really a sale if it’s always available? Is this illegal in some countries? Probably. But we don’t know the laws in every country. 

\n\n\n\n

We didn’t feel completely comfortable using the FOMO tactic, but… if you look at the case studies, the tactic works. After all, customers like purchasing stuff on sale, plus countdown timers add a sense of urgency that can nudge people into purchasing now.

Queue the experiment. Are we leaving money on the table by not using the artificial FOMO  tactic? We created a version of this strategy that we were comfortable running.

\n\n\n\n

We called this experiment the “Happy Banner”. The banner read: “Buy now and save 10%. Studies show customers who get a deal are happier, and we want you to be happy.”

\n\n\n\n
\"Happy
\n\n\n\n

We ran an A/B test where 50% of visitors to the site got that message and deal, while 50% were shown the full price. We did make a bit more money while running the banner, but in the end it was not enough of a difference to enter this kind of shady territory. Running a constant sale like this is also likely to negatively impact the seasonal sales we do run.

\n\n\n\n
\"Happy
\n\n\n\n

We suspect a banner with more “urgency” would perform better. We also suspect that part of the difference in revenue from the test might be due to funneling more people into our pricing page vs. going directly to checkout. So we’re coming up with some experiments to try there.

\n\n\n\n

Takeaway: If there are best practices that tell you to do something uncomfortable—give it a test. See how much money you’re leaving on the table. Sometimes when you have hard numbers it’s easier to say “Ah for $1,000 a week I’d rather not engage in that practice.”

\n\n\n\n

3) Hire in Advance of the Need

\n\n\n\n

As we get ready to hire our 15th employee, I still remember how hard it was to hire our first full time employee. It feels like such a commitment, and it is. One thing that helps us as we expand is to hire early and view new hires as an investment. 

\n\n\n\n

We target 25% profit margins in the business and have generally hit that target. At the start of a new year, we will set aside an amount equal to the profit from last year and use that to hire new folks—even if we don’t immediately, urgently, need people.

\n\n\n\n

The benefits are subtle but hugely important. By the time we realize we have a need (we need at least 5 people in customer service) we already have people on our staff, they’re fully trained, and fully integrated into the team. If we didn’t hire in advance of the need we’d spend a month looking for the right candidate, and 2-3 months just waiting for them to get up to speed. 

\n\n\n\n

And since we’ve been hiring in advance of need we are profitable every single year which gives us more margin to invest in the business and keep growing.

\n\n\n\n

Takeaway: Don’t be afraid to use profit to grow your company. Solving problems when they pop up is efficient for your money. Solving problems before they come up is effective for your business.

\n\n\n\n

4) Monthly vs. Annual Pricing

\n\n\n\n

Way back in 2012, when we first launched the site, our membership was $19 per month. Many folks liked this price, and we had a good number of happy members ready to pay that price every month for access to our support, documentation, and good will.

\n\n\n\n

However, most members were canceling their membership within 6 months. The average member stuck around for 3 months, paying us only $57.

\n\n\n\n

We realized there was a disconnect between when people paid and the value they received. With PMPro you get all of the value immediately when you set up the plugin. Then each subsequent month feels expensive and wasteful. Changing to annual pricing more closely aligns our goals with our customers’ goals. 

\n\n\n\n

Takeaway: Make sure that the timing of your pricing matches the timing of the value.

\n\n\n\n

5) “Buy Now” CTA on the Homepage vs. “View Pricing”

\n\n\n\n

It’s a good idea to test your intuitions. One of our intuitions is that most people wouldn’t want to immediately purchase Paid Memberships Pro. They probably want to read about the features, then compare plans, and then purchase.

\n\n\n\n

And if we trusted that intuition (or assumption) we would have left money on the table. That’s why we A/B tested our homepage CTA and found that linking directly to the checkout page for Plus converts better: more people complete checkout after clicking this CTA over those that click through from the Pricing page.

\n\n\n\n

Here’s what we learned with this A/B test: your homepage should have one or more links that are just one click away from your most popular product.

We are due to retest this one. It’s possible our pricing page is better today, or at least better than that one we tested with. It’s possible that refund rates are higher for folks who are pushed directly to the checkout page, and we should make sure to include that in our tests.

But overall, make sure it’s easy for people to pay you. Don’t force people to read through everything before they get to the payment part. Remember that not everyone is coming to your homepage for the first time. Many of the people visiting your homepage and your website are already familiar with your membership, so helping them join and pay ASAP will boost your performance.

\n\n\n\n

Takeaway: Test your intuitions. It’s worth doing A/B tests on things you’re pretty sure are working.

\n\n\n\n

6) Writing Transparency Reports

\n\n\n\n

One of the ways we give back to the community is by writing transparency reports. It helps new business owners understand cash flow, how to hire, how to manage software, and more. It also forces us to take a close look at our own numbers. And reviewing these numbers from time to time teaches you what is working and what needs to change.

\n\n\n\n

We are not operating this business just to make money (shocking, I know). We are helping entrepreneurs large and small with a software platform that helps them get paid, find financial freedom, and achieve their goals. Transparency reports help those people get to know us as a company, and also as human beings. We’re committed to supporting and growing this plugin for many years to come (another few decades, even).  

\n\n\n\n

Aside from the customer-facing aspect of these reports, they also support our recruiting efforts. When applicants ask why they should join our company, we point to our transparency reports as a way to “get an inside peek” at how we run and operate. The report helps to build the trust that we are growing, that we are here to stay.

\n\n\n\n

Takeaway: You can help yourself and your community by sharing regularly. You don’t have to share everything but share some important details and you might be surprised how they improve over the next couple years.

\n\n\n\n

7) PMPro Core vs. Plus vs. Unlimited Plans

\n\n\n\n

When we started Paid Memberships Pro and were still figuring out a pricing model, we didn’t offer automatic installs and updates for our Add Ons. We started by just offering downloadable .zip files of all the open source plugins, and charged customers for technical support. This membership was called “PMPro Core”.

\n\n\n\n

Three years later we launched our Plus plan which includes premium Add On installs, updates, and super in-depth technical support. People had the choice of Core (support for the core plugin only) or Plus (support for everything + all the code served to them). Unfortunately, this assortment created loads of confusion for users who wanted to upgrade. And some of the people on our support team noticed that users would download the Plus Add Ons on GitHub, sign up for the less expensive Core level, and receive support for products they didn’t technically qualify for.

\n\n\n\n

We realized we made a lot of work for ourselves. We had to simplify pricing. So we said goodbye to PMPro Core and now we only offer the Plus plan (and our Unlimited Plan for people with more sites).

\n\n\n\n

The Unlimited Plan is there for users who might want to run PMPro on dozens or hundreds of sites. But it’s also there as a price anchor. By putting such a large package next to our Plus product it makes the Plus product feel cheaper.

\n\n\n\n
\"Membership
\n\n\n\n

Takeaway: Products evolve. What made sense one year might not make sense the next. Go through your products at least once a year. Do they still make sense for your audience? If they don’t, update or remove them.

\n\n\n\n

8) Only Offering Automatically Recurring Subscription Plans

\n\n\n\n

The business community loves annual subscriptions. And contrary to popular belief, the business model here is NOT to trap people into paying you because they forgot to cancel.

\n\n\n\n

We don’t want those customers. Send a reminder prior to renewal so members who no longer need your product have a chance to cancel. Honor their refund requests when they realize they accidentally renewed.

The real reason automatic subscriptions are valuable is that members who want your product and are happy to pay for your membership inevitably, occasionally, fail to renew. It might be that they’re busy. Maybe they tried to renew but forgot their password and got distracted. Maybe they didn’t get the reminder when they were ready and able to pay.

We’ve seen many businesses go through this process. In year one, they offer a one-time payment for membership that expires in one year. The next year, they make renewals optional, perhaps using our Auto-Renewal Checkbox Add On. This step increases renewals and total revenue by as much as 25%. Then finally in year three, they realize that all checkouts should default to recurring subscription, increasing renewals AND total revenue by another 25%.

\n\n\n\n

Don’t take three years to figure this one out.

\n\n\n\n

Takeaway: Consider starting with default or mandatory recurring subscriptions. Some folks will want one-time payments and you can have a special discount code for them or allow them to cancel and retain membership until the date their next payment would have been, but for many membership sites, it makes sense to stick to recurring subscriptions.

\n\n\n\n

9) Charging for Support

\n\n\n\n

Some open source software developers get frustrated by the free support they are expected to provide for their plugins and apps. They rightly realize the need to get paid for their work, but what complex service, premium offering, or sponsorship system is the right way to make money?

\n\n\n\n

In reality, they might just be able to figure out a reasonable rate they’d like to get paid, and charge that for support. That’s what we did. We found that push back in the channels we used to give free support were minimal, and many people were happy to pay. We were able to start with a simple business model to continue development on our platform and business.

\n\n\n\n

Takeaway: Just like products, business models can change. Something that works for the first couple years can give you the knowledge and experience to pivot into a more sustainable business model later.

\n\n\n\n

10) Making All of Our Plugins Available on Github for Free

\n\n\n\n

We believe in open source software. We believe this license is the best way to make the best software.

\n\n\n\n

And, while it is legal and reasonable to charge for open source software, and we do so ourselves, we do not believe in making open source code inaccessible to everyone. We believe that publicly available software is the best way to fully embrace open source. We share our source code publicly so people are able to find and use it for free.

\n\n\n\n

We’ve checked and this hasn’t had a material impact on our sales. And we have a few theories why:

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

And unrelated to revenue, having our repositories public means more code and more ideas get contributed by others. This improves both the quality and the features of our platform. And further still, free access to our code protects users from downloading a “nulled” version of the code base that could be hacked, insecure, and possibly riddled with malware.

\n\n\n\n

Takeaway: Customers buy for a variety of reasons. Access to the codebase is just one of them. So making code repositories open to developers likely won’t have a large impact on your bottom line, and we don’t worry about it. The pros outweigh any cons.

\n\n\n\n

11) Black Friday Sales

\n\n\n\n

We held off on sales for a long time because we believed that running sales can make your product look cheap. And that running frequent sales trains your customer to expect (and wait) for a sale. 

\n\n\n\n

This is true. 

\n\n\n\n

At the same time, running a small number of sales, particularly one around Black Friday, can still be a good idea. Many downsides are minimized around Black Friday when every business is expected to run sales. Running a small number of sales throughout the year will make your product accessible to customers who normally would not buy. And you don’t need to lower your price for the rest of the year.

\n\n\n\n
\n

(BTW – since you’re reading about sales check out our Birthday Sale \"?\")

\n
\n\n\n\n

We believe in Black Friday sales so much that we built a plugin, Sitewide Sales, to make it as easy as possible to set one up for your PMPro or WooCommerce website.

\n\n\n\n

Read more posts on why and how to run a good sale on our Stranger Studios blog.

\n\n\n\n

Takeaway: There are ethical ways to run sales, help your customers, build your brand, and be profitable. Don’t be convinced that all sales are “too promotion-y” or “attract the wrong type of customers”.

\n\n\n\n

Wrap Up

\n\n\n\n

We’re grateful and fortunate to be here after 10 years. Another 3 years and PMPro can go see a PG-13 movie without a guardian \"?\".

\n\n\n\n

We want to help you grow your nest egg. One of the best pieces of advice we can give you is to run your own experiments. Not all of our experiments were successful. Sometimes they gave us unexpected results and we had to rethink our business model. As long as you’re learning you have a chance to improve your business.

\n\n\n\n
\n

To celebrate Paid Memberships Pro’s 10th birthday we’re having a sale: save 33% on PMPro now during the birthday sale. Let’s work together to build you a membership site to run some experiments on \"?\".

\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:\"\";}}}}}i:1;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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"Include Current Free Members With a Past Paid Level in the Filtered Members List View\";s: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://www.paidmembershipspro.com/show-free-members-past-paid-level-in-cancelled-old-members-list/\";s: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, 14 Jul 2021 13:47: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:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:33:\"Plus and Unlimited Member 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:\"\";}i:1;a:5:{s:4:\"data\";s:7:\"Recipes\";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:22:\"pmpro_members_list_sql\";s: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:44:\"https://www.paidmembershipspro.com/?p=358132\";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:466:\"When a member cancels or expires, they are shown on the Members List when filtering by Cancelled, Expired, or Old Members. Some membership sites, though, are set up to downgrade paid members to a free level on cancellation or expiration. For these sites, members with a previous paid level are not considered old, cancelled, or (more...)\";s: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:16:\"Kimberly Coleman\";s: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:1715:\"\n

When a member cancels or expires, they are shown on the Members List when filtering by Cancelled, Expired, or Old Members. Some membership sites, though, are set up to downgrade paid members to a free level on cancellation or expiration. For these sites, members with a previous paid level are not considered old, cancelled, or expired anymore.

\n\n\n\n

Admins may still want to see those users on the “Old Members” list, highlighting the members for a win-back campaign to resubscribe to a paid membership. This code does that.

\n\n\n\n
\"Banner
\n\n\n\n
This content is for members only. Visit the site and log in/register to read.
\";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: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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"How Podcasting Can Grow Your Membership Site\";s: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://www.paidmembershipspro.com/membership-site-podcasting-benefits/\";s: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, 12 Jul 2021 12:48: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:8:\"category\";a:4:{i:0;a:5:{s:4:\"data\";s:9:\"Marketing\";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:17:\"Member Experience\";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:16:\"podcast benefits\";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:18:\"podcast statistics\";s: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:44:\"https://www.paidmembershipspro.com/?p=302285\";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:443:\"Wouldn’t it be great if you could have a one-on-one conversation with every single user of your membership site?  For website owners, growth is a double-edged sword. On one hand, you have an opportunity to grow your user base and recurring revenue. On the other hand, it’s difficult to provide a personal experience to each (more...)\";s: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:15:\"Patrick Rauland\";s: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:10512:\"
\n

Wouldn’t it be great if you could have a one-on-one conversation with every single user of your membership site? 

\n\n\n\n

For website owners, growth is a double-edged sword. On one hand, you have an opportunity to grow your user base and recurring revenue. On the other hand, it’s difficult to provide a personal experience to each individual who visits your site. 

\n\n\n\n

The solution? 

\n\n\n\n

Podcasting. 

\n\n\n\n
\"How
\n\n\n\n

\n\n\n\n

The modern equivalent of traditional radio programs has rapidly grown in popularity in recent years — research from Statista shows that 88 million Americans downloading their favorite podcasts. And that number is expected to surpass 160 million by 2023. 

\n\n\n\n

With all those listeners, it’s unsurprising AdStage found podcasting to be the second most effective form of advertising. It’s surpassed Facebook, Twitter, and Instagram. 

\n\n\n\n

Did that grab your attention? 

\n\n\n\n

Continue reading to learn more about the unique benefits of podcasting and how it can help you grow your membership website.

\n\n\n\n

The Basics of Podcasting

\n\n\n\n

Podcasting was previously known as audio blogging. According to Podcast.co, the process of sharing a digital audio file online has roots dating back to the 1980s.  

\n\n\n\n

Then, broadband Internet access spread rapidly. Portable digital audio devices became more accessible — most notably, Apple’s very first iPod in 2001. And by 2004 the podcasting industry started to take off. 

\n\n\n\n

Now, thousands of podcasts are released every week, covering just about any topic you can imagine. Typically, creators will launch their show with plans for a long-term series. They’ll regularly release new installments on platforms such as Spotify, Apple Music or on their website. 

\n\n\n\n

Themes and discussions can vary greatly, but most maintain a steady premise, like coverage of a sports season or educational lessons on a chapter of history. The beauty of a podcast is it can be about anything you and your listeners are passionate about. 

\n\n\n\n

Podcasts have continued to increase in popularity. This is at least partially due to their more intimate nature. Audiences can connect more directly to content creators, as compared to alternative mediums, such as videos and articles. 

\n\n\n\n

As the world becomes busier, podcasts have become more relevant than ever. Respondents to a survey from NPR and Edison Research list the ability to multitask while listening to their favorite podcast as a leading motivator to tune in each week. They also cited an interest in learning as well as the fact that the format usually lends itself to higher quality.

\n\n\n\n

As a membership site owner, you’re already ahead of the game when it comes to creating podcasts. You probably offer a mixture of premium content across different mediums already. 

\n\n\n\n

So, why add podcasting? 

\n\n\n\n

Since it is audio-based, there are some unique features that will empower you to achieve your membership site goals.

\n\n\n\n

The Power of Podcasting

\n\n\n\n

Podcasting is a modern version of humanity’s oldest pastime: storytelling. 

\n\n\n\n

Like storytellers around the fire or kitchen table, podcasters create a human connection to their audience. The easy-to-listen-to format gives people the sense they are in the room listening in on a conversation. This informality is especially helpful for learning about more complex topics. 

\n\n\n\n

Podcasting also grants creators an opportunity to engage and grow their subscriber base. You’ll attract listeners looking for the community you serve. And, if you’ve already built your membership website, you can direct your podcast listeners to explore your website. There, they’ll find additional relevant content and users that share their interests. 

\n\n\n\n

Another major benefit of the audio-based format?

\n\n\n\n

It can capture your audience’s attention much longer than other mediums. 

\n\n\n\n

In a study by Edison Research, they found over 50% of podcast listeners consume an entire 40 minute (on average) episode in one session. According to DataBox, the ideal word count of a blog post is 1,500 words — that’s a mere seven minutes spent reading an article.

\n\n\n\n

Edison Research also discovered more than half of listeners are more likely to consider the brands advertised on their favorite podcasts. 

\n\n\n\n
\"Edison
\n\n\n\n

Your existing members are already advocates of your mission and trust your point of view. You can leverage your authority with your audience to obtain sponsorships and partnerships with quality brands. This can lead to additional revenue for sales made through your show. 

\n\n\n\n

Whether you’re pitching your products or an affiliate’s, advertising on a podcast can generate more income than other mediums.

\n\n\n\n

The benefits of creating a podcast are clear. As a membership website owner, the audio format is another tool for connecting with your users and differentiating yourself from other sites.

\n\n\n\n

How to Get Started in Podcasting

\n\n\n\n

Fortunately, if you want to start a podcast, the barriers to entry are surprisingly low:

\n\n\n\n
  1. Start with any free recording and editing app to create the first episodes of your show.
  2. As time goes on, look into more professional equipment to improve your sound quality. But don’t spend too much money if you’re just getting started. 
  3. Decide which podcast hosting platform will store your audio files. The host will provide everything else you need, including an RSS feed, which is a list of links to each episode and other details like your title, description, and image.
\n\n\n\n

A word of caution: If you plan to have a paid or members-only podcast, make sure the hosting provider has private podcasting features. Unfortunately, this structure will bar you from some of the most popular channels, including Apple and Spotify. 

\n\n\n\n

Whether you’re repurposing your written content or creating something entirely new, there’s no shortage of creative freedom when it comes to what you talk about on your podcast. 

\n\n\n\n

Grow Your Membership Site Through Podcasting

\n\n\n\n

In the competitive world of members-only content, a podcast will help differentiate your brand, grow your revenue stream, and appeal to a wider audience than ever before. 

\n\n\n\n

If you’re ready to create your podcast, check out Casto’s article on the steps to take. The podcast hosting platform also offers a WordPress plugin, Seriously Simple Podcasting, which will simplify the process. 

\n\n\n\n

Jason and Kim, co-founders of Stranger Studios and PMPro, are using Castos for their show, That Talking Thing. Tune into the earliest episodes where they cover family, work, and life.

\n\n\n\n

\n\n\n\n

\n\n\n\n

\n\n\n\n
\n
\n\"PMPro\n
\n\n\n\n
\n

PMPro Editorial Staff

\n\n\n\n

Editorial Staff at Paid Memberships Pro is a team of WordPress membership site and online business experts led by Kim and Jason Coleman. Trusted by over 350,000 readers worldwide.

\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:\"\";}}}}}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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:21:\"PMPro Update 2.5.10.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:57:\"https://www.paidmembershipspro.com/pmpro-update-2-5-10-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:\"Mon, 05 Jul 2021 19:23:11 +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:13:\"Release Notes\";s: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:44:\"https://www.paidmembershipspro.com/?p=356287\";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:444:\"Version 2.5.10.1 of Paid Memberships Pro is out with a couple of fixes. Specifically, this update fixes a bug in our getfile.php script, which can be used to lock down files with PMPro. Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version (more...)\";s: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:13:\"Jason Coleman\";s: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:1046:\"
\n

Version 2.5.10.1 of Paid Memberships Pro is out with a couple of fixes. Specifically, this update fixes a bug in our getfile.php script, which can be used to lock down files with PMPro.

\n\n\n\n

\n\n\n\n

Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 2.5.10 specifically here.

\n\n\n\n

The full list of updates is below.

\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:\"\";}}}}}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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"PMPro Update 2.5.10\";s: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://www.paidmembershipspro.com/pmpro-update-2-5-10/\";s: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, 25 Jun 2021 17:00: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:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Release Notes\";s: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:44:\"https://www.paidmembershipspro.com/?p=354187\";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:449:\"Version 2.5.10 of Paid Memberships Pro is out with a handful of bug fixes. Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 2.5.10 specifically here. The full list of updates is below. SECURITY: Fixed XSS vulnerability on the edit order page (more...)\";s: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:13:\"Jason Coleman\";s: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:2705:\"\n

Version 2.5.10 of Paid Memberships Pro is out with a handful of bug fixes.

\n\n\n\n

Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 2.5.10 specifically here.

\n\n\n\n

The full list of updates is below.

\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:\"\";}}}}}i:5;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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"How to Set up a Membership Site for Free Members Only\";s: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:89:\"https://www.paidmembershipspro.com/how-to-set-up-a-membership-site-for-free-members-only/\";s: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, 24 Jun 2021 21: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:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:8:\"Business\";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:10:\"free level\";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:15:\"free membership\";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:10:\"free trial\";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:17:\"membership 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:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"https://www.paidmembershipspro.com/?p=272993\";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:478:\"Looking to grow your membership website? If you already own and operate a premium membership website, you might be missing out on an entire additional pool of potential users: free members. It may sound counterintuitive, but content for free members helps to create a customer acquisition model that converts, attracts, and retains more paying users (more...)\";s: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:16:\"Kimberly Coleman\";s: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:14074:\"
\n

Looking to grow your membership website? If you already own and operate a premium membership website, you might be missing out on an entire additional pool of potential users: free members.

\n\n\n\n

It may sound counterintuitive, but content for free members helps to create a customer acquisition model that converts, attracts, and retains more paying users in the long run.

\n\n\n\n
\"Banner
\n\n\n\n

Continue reading to learn how building a free membership site with Paid Memberships Pro can help you successfully grow your business.

\n\n\n\n

\n\n\n\n

The Benefits of Content for Free Members

\n\n\n\n

By offering users access to quality content without payment, you can nurture potential customers while also positioning yourself as a thought leader in your field.

\n\n\n\n

From a marketing perspective, this “freemium” approach gives you further insight into your audience demographics. This insight allows you to start curating a mailing list of prospects. Having this segment will help you to create ultra-targeted email campaigns. These campaigns attract and convert non-paying members into full-fledged subscribers. For websites who don’t yet have a premium product or service, this approach builds a following for a future launch. 

\n\n\n\n

According to OpenView Partners, when you factor in the cost and effort required for outbound marketing efforts, freemium access to a platform or website helps to convert users 25% more often than free trials alone.

\n\n\n\n

A free membership kickstarts the trust-building process.

\n\n\n\n

As you work to build out your user base, consider the overarching stages with the marketing and sales funnel:

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

The customer journey starts with a general awareness that your website exists. This gradually narrows down as visitors who aren’t interested exit your site. And those who are take the steps to learn more.

\n\n\n\n

By offering premium content, you can create messaging that guides users through each stage. From content with the sole purpose of attracting traffic through organic search all the way down to bottom-of-funnel pieces that show users why they should convert to being paid members, your content should (and will) do the heavy lifting. When offering free content, you’ll want to consider the resources that went into creating it and whether it would make sense to a new visitor. More complex or highly specific pieces might be better off behind your pay wall. 

\n\n\n\n

When someone signs up to your website, it’s fair to assume they see value in the general theme of the content you’re providing — even if they aren’t paying for it just yet. This free membership kickstarts the trust-building process. Loyal members appreciate the value you deliver, which in turn makes them more likely to become a premium member.

\n\n\n\n

The benefits of a free membership website are clear, including stronger user insights, personalized marketing opportunities, and a more effective sales funnel. And, now that you understand the advantages of deploying free content as the first step in your customer acquisition model, it’s time to start configuring your website.

\n\n\n\n

Creating a Free Membership Level 

\n\n\n\n

No matter what your experience level with PMPro, creating a free tier on your membership website is a straightforward, user-friendly process:

\n\n\n\n
  1. Navigate to Memberships > Settings > Levels in the WordPress admin.
  2. If this is the first time you’re creating a membership level, click the “Create a Membership Level” button.
  3. If you’re adding a new level to your existing membership site, just click “Add New Level.”
\n\n\n\n

And just like that, you’re well on your way to building your free membership site. The tier you just created will have several different customization options, including the name, description, confirmation message, billing details, and more. While the exact setting you decide on will depend on your business model, feel free to explore our documentation on setting up membership levels in PMPro to learn more about managing these features.

\n\n\n\n

The next step in building your free membership site is to create your PMPro pages.

\n\n\n\n

Setting up PMPro Pages 

\n\n\n\n

After you set up your PMPro pages, you’ll be able to manage member data, such as bill information, passwords, and profile edits, all in one place. To configure these pages, follow these steps:

\n\n\n\n
  1. Navigate to Memberships > Settings > Pages in the WordPress admin.
  2. If you’re installing PMPro for the first time, select either manual setup or allow the plugin to do it for you. We recommend doing the latter, as it lets you make edits as needed down the road.
  3. Click “Generate Pages for Me.”
  4. Don’t forget to save your settings.
\n\n\n\n

For further guidelines, we recommend you check out our admin pages walkthrough.

\n\n\n\n

Once you’ve generated your pages either manually or automatically, you can configure more advanced settings for your unique site and user needs.

\n\n\n\n

Accessing Advanced Settings

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

Additional configuration settings are available for your membership level from the Advanced Settings tab. From here, you’ll be able to set rules for excerpts, dashboard access, hiding content from non-member view, and more:

\n\n\n\n
  1. From your WordPress admin, go to Memberships > Settings > Advanced.
  2. Select or change options as needed.
  3. As always, don’t forget to save your settings once you’re done!
\n\n\n\n

There are several ways to configure the Advanced Settings in PMPro to give your users the best experience possible.

\n\n\n\n

Additional Customization Options

\n\n\n\n

Every website and user base is unique. As you create your PMPro membership site for free members, you’ll want to consider customizing the following settings:

\n\n\n\n

“The price for membership is $0.00 for now”

\n\n\n\n

By default, free membership levels will display this message to members. Depending on your preferences and users, you may want to entirely hide this text or change it to display “Free.”

\n\n\n\n

To change the pricing statement as needed, you’ll want to use our PMPro Custom Level Cost Text Add On. This feature overrides the default text and will let you edit pricing statements as you see fit. For additional guidance, check out our walkthrough on setting up the Custom Level Cost Text Add On to learn how it works and the advanced settings you’ll need to modify. 

\n\n\n\n

Skip the Membership Levels Page

\n\n\n\n

If you want free users to entirely skip the PMPro levels page and go straight to check out, add the following line of code to the customization plugin: 

\n\n\n\n

define ( “PMPRO_DEFAULT_LEVEL” , “1” ) ;

\n\n\n\n

Be sure to double check that your free level has ID 1, or adjust that in the code above. If you add additional levels in the future, you’ll need to remove this line. For more information on this process, refer to this step-by-step guide.

\n\n\n\n

Remove the “Invoices” Section

\n\n\n\n

PMPro comes with shortcodes and blocks that can be used to insert or show plugin-generated content on membership level inside pages, posts, widgets, and more.

\n\n\n\n

When you’re offering a free membership level, you might want to remove any block or shortcode under the membership invoice page. To check whether the shortcode or block is active, follow these steps:

\n\n\n\n
  1. Navigate to Memberships > Settings > Pages in the WordPress admin.
  2. On the “Invoice Page (Membership Invoice)” tab, click on “Edit Page.”
  3. Make sure there’s no active block or additional CSS.
  4. Update the page.
\n\n\n\n
\"\"
\n\n\n\n

You can also toggle the display under the “Invoices” section on the Membership Account page:

\n\n\n\n
  1. Navigate to Memberships > Settings > Pages in the WordPress admin.
  2. On the “Account Page (Membership Account),”click “Edit Page.”
  3. If the invoice block is active, uncheck the “Show Invoices” button.
  4. Update the page.
\n\n\n\n
\"\"
\n\n\n\n

Use the Signup Shortcode Add On

\n\n\n\n

The Signup Shortcode is another useful Add On that makes the signup process quick and convenient—especially for free members. The feature streamlines check out by:

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

For installation procedures, check out this companion guide on the Signup Shortcode Add On. If you’re going to use the shortcode in a popup, this post has details on filtering popup displays based on membership level.

\n\n\n\n

There are several ways to customize your free membership website with PMPro—remember that you can always adjust your settings as your needs change. Offering a free membership is just one way to grow your website, and you can set up a free trial period that more directly converts users to a paying model. 

\n\n\n\n

Get Started with a Free Membership Website

\n\n\n\n

At Stranger Studios, we offer the most complete WordPress membership plugin available to businesses that need an easy way to restrict content and manage subscriptions. Through our Add On plugins, you can explore new features, functionalities, and integrate with third-party services to create the exact experience you hope to deliver to your users.

\n\n\n\n

If you are interested in creating a free membership website or have any additional questions about Paid Memberships Pro, contact our team 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:\"\";}}}}}i:6;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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"Four Strategies to Improve Member Retention\";s: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:63:\"https://www.paidmembershipspro.com/member-retention-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:\"Fri, 18 Jun 2021 16:17:54 +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:\"Business\";s: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:44:\"https://www.paidmembershipspro.com/?p=352552\";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:438:\"The number one question I hear from membership sites that are already bringing in members and revenue is: “How do I keep my members coming back, month after month, and year after year.” In this guide, I share the top four strategies for improving member retention. With very little effort, anyone who manages a subscription (more...)\";s: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:16:\"Kimberly Coleman\";s: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:6255:\"
\n

The number one question I hear from membership sites that are already bringing in members and revenue is: “How do I keep my members coming back, month after month, and year after year.” In this guide, I share the top four strategies for improving member retention. With very little effort, anyone who manages a subscription or member-supported online business can launch these strategies and start tackling churn.

\n\n\n\n
\"Strategies
\n\n\n\n

\n\n\n\n

Don’t force a recurring business model, just because you like the idea of recurring income.

\n\n\n\n

Do you even need to offer a recurring subscription? Maybe you don’t. Maybe your content doesn’t fit with a recurring subscription model.

\n\n\n\n

There are plenty of businesses selling one-time products that make money month, after month, after month. One of my rules of thumb is this, the timing of your membership pricing should match the timing of the value that you deliver. If you have a course that is changing lives in one month, get paid for that upfront. Consider charging a higher one-time price. Instead of charging $50 per month charge $150 one time. Front-loading your pricing like this can even reduce churn for recurring subscriptions.

\n\n\n\n

Match the timing of your membership pricing to the timing of the value you deliver.

\n\n\n\n

What does that mean? First, make sure that you’re delivering value for your members every single month or for annual memberships every single year. Second, even if you’re delivering value every month, you’ll often find that customers still get most of the value in month one.

\n\n\n\n

If your impact is front-loaded, you should consider front-loading your pricing, too. Put simply, charge more upfront with a lower recurring amount. Here’s a quick example. Say you’re charging $50 per month for your membership, but you find customers canceling after two to three months. Consider instead charging $150 upfront and $20 per month after that. The $150 will match the lifetime value you were getting before. And while raising prices means fewer sales, you’ll often make more money overall. Experiment to find the specific numbers that work for you. The key to this tactic is for the recurring amount to be less than the initial payment.

\n\n\n\n

When the value members receive is more in line with the price they are paying, they are more likely to renew.

\n\n\n\n

Make sure that you’re handling failed payments well.

\n\n\n\n

Email every single member who expires because of a failed payment. Email them multiple times until they sign back up. Spread the later emails out, but don’t stop until they ask you to stop. If you have their phone number, call them. There are SaaS products that will do this for you. Or you could set up an automated email series yourself.

\n\n\n\n

At a certain scale, it makes sense to hire someone part-time, maybe on commission, just to manage failed payments for you. 

\n\n\n\n

Get personal with your members.

\n\n\n\n

Share more about your own journey. In many membership businesses, people are really just patronizing the personality behind the product. So get personal. If your story connects with someone and changes their life, well, then you might just have yourself a customer for life. You must deliver real useful value for your membership. But if you’re too robotic or formulaic in your offerings, people will stop paying once they’ve gotten what they need. Sharing more about yourself and your mission will keep people subscribed.

\n\n\n\n

I recorded each of these strategies for busting churn and improving member retention in a three part video series you can watch now on YouTube.

\n\n\n\n\n\n\n\n
\n\n\n\n
\n
\n\"Jason\n
\n\n\n\n
\n

Author: Jason Coleman

\n

Jason is co-founder of Paid Memberships Pro, the 100% open source membership plugin for WordPress. He has been pushing WordPress to its limits for many years and is an advocate for using WordPress as an application framework to build web sites and apps that go above and beyond the typical blog of CMS site.

\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:\"\";}}}}}i:7;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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"Make That Money: Your Guide to Collecting Membership Dues\";s: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:59:\"https://www.paidmembershipspro.com/collect-membership-dues/\";s: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, 11 Jun 2021 15:46: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:2:{i:0;a:5:{s:4:\"data\";s:8:\"Business\";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:11:\"association\";s: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:44:\"https://www.paidmembershipspro.com/?p=351191\";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:462:\"If you are in charge of a membership-based association, you probably wear a haberdashery’s worth of hats. You are rarely just a creative or executive — you’re also an administrator, manager, marketer, and webmaster. And you handle it all with determination, organization, and a talent for multitasking.  But then it comes time to be an accountant, (more...)\";s: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:15:\"Patrick Rauland\";s: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:10419:\"
\n

If you are in charge of a membership-based association, you probably wear a haberdashery’s worth of hats. You are rarely just a creative or executive — you’re also an administrator, manager, marketer, and webmaster. And you handle it all with determination, organization, and a talent for multitasking. 

\n\n\n\n

But then it comes time to be an accountant, and you start to feel squeamish. We are uncomfortable talking about money. You are daunted by the onslaught of requests, questions, and issues that arise during membership renewal periods. 

\n\n\n\n
\"Collecting
\n\n\n\n

You are consumed by member registrations, scheduling, email communications, and other administrative tasks. You think, “I do not have time for this. There must be a better way!” 

\n\n\n\n

Here is the good news: 

\n\n\n\n

There is a better way. This guide will show you how membership software can manage your membership dues. We will also go over best practices to alleviate the stress and overhead you might face during renewal season. 

\n\n\n\n

\n\n\n\n

Jump Ahead to Learn:

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

How Membership Software Handles Due Reminders

\n\n\n\n

Most association members are busy — they have careers, hobbies, and plenty of life commitments. Among their many worries, concerns about when their association dues are up for renewal are unlikely to rank top of mind.

\n\n\n\n

You need a system to collect dues from your busy members. 

\n\n\n\n

And that is where membership software comes in like an organizational superhero. Its superpowers are taking payments and providing something (like access) in return.

\n\n\n\n

Good membership software includes features that make its payment-taking job easier and more effective — including automatic reminders. 

\n\n\n\n

The method of delivery varies between platforms. But whether they are push notifications or emails, these reminders let you spend more time growing your member base and less time chasing down dues.

\n\n\n\n

According to 2020 data from Statista, on average, Americans use 12 subscription services per person — and that is just for entertainment services. So it makes sense that most people do not memorize the renewal dates for every membership. 

\n\n\n\n

But as your membership base expands, it gets harder to manually track all those dates and send reminders.

\n\n\n\n

Membership software monitors each user’s membership period and sends them a notification when it is time to renew. These automated reminders will drive you towards a better return on investment (ROI) faster and keep your membership number high without manual intervention.

\n\n\n\n

Best Practices for Sending Due Reminders to Members

\n\n\n\n

Every association and membership base is different. So membership software should provide a variety of ways to notify your members they have dues coming up.

\n\n\n\n

These alerts shouldn’t be limited to renewal notices, either. Regularly encourage your members to take advantage of the opportunities and benefits your organization provides. This ensures they feel their membership is a good value when it’s time to pay their dues. 

\n\n\n\n

Here are 10 notifications your association should send members to keep them connected and engaged:

\n\n\n\n
  1. Confirmation emails when a subscriber signs up for your service
  2. Subscription-approved emails if there is an approval process for members.
  3. Thank-you messages when users sign up for a subscription
  4. Thank-you messages for received payments
  5. Content restricted messages when users try to access premium content
  6. Renewal reminders when it’s time for users to renew their membership
  7. Upgrade special offers to encourage users to upgrade to a higher-level plan
  8. Cancellation confirmation emails when subscribers cancel their membership
  9. Price-adjustment notifications to tell your subscribers if the cost of their membership dues will increase
  10. Text message reminders to notify users before and after their subscription expires
\n\n\n\n

How Membership Software Handles Late Payments

\n\n\n\n

Not all associations can collect late fees. Some industries do not allow it, and some organizations do not specify a fee structure for late payments, which makes those retroactive late fees unenforceable. 

\n\n\n\n

If your association applies late fees for tardy membership dues, your membership software may provide options to enforce and streamline the collection process.

\n\n\n\n

But association members are inevitably going to miss their payments. If you want to keep them in your organization (which is usually in your best interest), you should formulate a strategy for approaching tardy membership dues. 

\n\n\n\n

Always assume a missed payment was an innocent mistake. There is likely a logical reason why the member’s payment is delayed. A soft emailed reminder from your membership software might be enough to clear it up.

\n\n\n\n

The first late-payment email should detail the past-due payment and give the member a way to get in touch with you in case of difficulties. If the account remains delinquent, send a second follow-up email to remind them of the amount due and available payment options. If there is no response, your membership system can send a warning of impending service suspension.

\n\n\n\n

Outside of your membership software, you may need to adopt additional standard operating procedures to ensure you are communicating directly with your members if their subscription is especially valuable.

\n\n\n\n

How Paid Memberships Pro Improves Your Membership Renewal Process

\n\n\n\n

While Paid Memberships Pro does work for free membership sites, the majority of people building on PMPro want to get paid. And we built our platform in a way that makes recurring payments painless. That’s why PMPro makes sure auto-renewal is configured by default. The vast majority of the time your site successfully renews memberships and sends a success notification to the customer.

\n\n\n\n

Sometimes of course payments do fail—usually when a credit card expires. And PMPro built entire systems to minimize the harm of missed payments. 

\n\n\n\n

To start with, both users and admins get an email notification when a payment fails. The user can then log in and update their payment information and the admin can follow up with the user if no action is taken. In addition, payment gateways will retry the card automatically several times depending on your gateway. Stripe retries a card up to 4 times over several days (users receive an email from your site each time a payment retry fails).

\n\n\n\n

And to prevent a missed payment in the first place Paid Memberships Pro notifies users one week before expiration. You can use our Extra Expiration Warning Add On to send out additional notifications as early as you like. This gives customers plenty of time to update their credit card information should anything be out of date.

\n\n\n\n

Final Tips

\n\n\n\n

Asking for money can be a challenge in its own right. It quickly becomes that awkward conversation you have with someone. It doesn’t have to be though. When you start collecting membership dues, taking a smart approach about how to collect and creating a process that makes things easier and more efficient can be achieved with your membership system.

\n\n\n\n
\n
\n\"Patrick\n
\n\n\n\n
\n

Author: Patrick Rauland

\n

Patrick is the Brand Manager at Paid Memberships Pro. He loves helping small businesses, membership, and eCommerce sites. When not being a WordPress nerd he’s designing board games like a regular nerd.

\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:\"\";}}}}}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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Set the Member’s Display Name to Username at Membership Checkout\";s: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://www.paidmembershipspro.com/set-the-members-display-name-to-username-at-membership-checkout/\";s: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, 10 Jun 2021 10:21:11 +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:33:\"Plus and Unlimited Member 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:\"\";}i:1;a:5:{s:4:\"data\";s:7:\"Recipes\";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:11:\"code recipe\";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:14:\"customizations\";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:29:\"pmpro_checkout_new_user_array\";s: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:44:\"https://www.paidmembershipspro.com/?p=351061\";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:486:\"Correctly displaying your member’s name on your membership site can have a big impact. Imagine displaying a formal name when subtle privacy is needed. This code recipe will allow you to set your member’s default display name to their username. About the Code Recipe Member display names are important. A member’s name can be seen (more...)\";s: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:\"Travis Lima\";s: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:997:\"\n

Correctly displaying your member’s name on your membership site can have a big impact. Imagine displaying a formal name when subtle privacy is needed. This code recipe will allow you to set your member’s default display name to their username.

\n\n\n\n
\"member
\n\n\n\n
This content is for members only. Visit the site and log in/register to read.
\";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:72:\"\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:3:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"How to Send Your Sponsored or Group Members Discount Code to Zapier\";s: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://www.paidmembershipspro.com/how-to-send-your-sponsored-or-group-members-discount-code-to-zapier/\";s: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, 02 Jun 2021 11:27:48 +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:6:{i:0;a:5:{s:4:\"data\";s:33:\"Plus and Unlimited Member 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:\"\";}i:1;a:5:{s:4:\"data\";s:7:\"Recipes\";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:11:\"code recipe\";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:14:\"customizations\";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:26:\"pmproz_after_checkout_data\";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:5:{s:4:\"data\";s:17:\"sponsored members\";s: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:44:\"https://www.paidmembershipspro.com/?p=348968\";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:474:\"Automate your Sponsored or Group members discount code process by sending it through to Zapier. Once sent you can use this data with other apps and programs to utilize the discount code more efficiently. About the Code Recipe Our PMPro Sponsored/Group Members Add On will allow you to sell a “group” of memberships to a (more...)\";s: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:\"Travis Lima\";s: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:1061:\"\n

Automate your Sponsored or Group members discount code process by sending it through to Zapier. Once sent you can use this data with other apps and programs to utilize the discount code more efficiently.

\n\n\n\n
\"group
\n\n\n\n
This content is for members only. Visit the site and log in/register to read.
\";s: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:40:\"https://www.paidmembershipspro.com/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:4:\"type\";i:128;s:7:\"headers\";O:42:\"Requests_Utility_CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:17:\"Sucuri/Cloudproxy\";s:4:\"date\";s:29:\"Tue, 27 Jul 2021 18:35:14 GMT\";s:12:\"content-type\";s:34:\"application/rss+xml; charset=UTF-8\";s:11:\"x-sucuri-id\";s:5:\"11003\";s:13:\"last-modified\";s:29:\"Tue, 27 Jul 2021 18:25:26 GMT\";s:16:\"content-encoding\";s:4:\"gzip\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:15:\"referrer-policy\";s:26:\"no-referrer-when-downgrade\";s:14:\"x-sucuri-cache\";s:11:\"REVALIDATED\";}}s:5:\"build\";s:14:\"20201016172007\";}','no'),(227,'_transient_timeout_feed_mod_5966b7b1b1ba5243c38216abce94203f','1627454114','no'),(228,'_transient_feed_mod_5966b7b1b1ba5243c38216abce94203f','1627410914','no'),(230,'_transient_timeout_pmpro_notifications_2.5.10.1','1627497315','no'),(231,'_transient_pmpro_notifications_2.5.10.1','a:23:{i:0;O:8:\"stdClass\":11:{s:2:\"id\";i:20001;s:4:\"name\";s:18:\"pmpro-ten-birthday\";s:6:\"starts\";s:10:\"2021-07-26\";s:4:\"ends\";s:10:\"2021-08-01\";s:8:\"priority\";s:1:\"2\";s:7:\"hide_if\";O:8:\"stdClass\":1:{s:13:\"pmpro_license\";s:4:\"plus\";}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:19:\"buddicons-community\";s:5:\"title\";s:59:\"Celebrating 10 Years of PMPro: Save $100 on Plus Membership\";s:7:\"content\";s:633:\"

Now through Sunday, August 1st, save $100 on Plus Membership. Your license includes access to premium technical support and automatic installs and updates for 65 premium Add Ons. All purchases are backed by a 30-day money back guarantee.

Get Started »

\";s:11:\"dismissable\";b:1;}i:1;O:8:\"stdClass\":11:{s:2:\"id\";i:40008;s:4:\"name\";s:28:\"review-pmpro-over-100-orders\";s:6:\"starts\";s:10:\"2020-01-22\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:16:\"pmpro_num_orders\";a:2:{i:0;s:1:\">\";i:1;s:3:\"100\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:11:\"star-filled\";s:5:\"title\";s:24:\"Thank you for your help.\";s:7:\"content\";s:253:\"

If you have a minute to spare and find Paid Memberships Pro useful, please consider posting an honest review on our WordPress.org plugin page.

\";s:11:\"dismissable\";b:1;}i:2;O:8:\"stdClass\":11:{s:2:\"id\";i:40101;s:4:\"name\";s:22:\"install-sitewide-sales\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:33:\"sitewide-sales/sitewide-sales.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:4:\"cart\";s:5:\"title\";s:63:\"Run Black Friday or Cyber Monday Sales in WooCommerce or PMPro.\";s:7:\"content\";s:559:\"

The Sitewide Sales plugin handles your discounts, banners, landing pages, and reporting. Check out this new all-in-one tool that helps ecommerce or membership sites run better sales.

Visit SitewideSales.com

\";s:11:\"dismissable\";b:1;}i:3;O:8:\"stdClass\":12:{s:2:\"id\";i:40102;s:4:\"name\";s:33:\"install-pmpro-bbpress-integration\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:19:\"bbpress/bbpress.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:31:\"pmpro-bbpress/pmpro-bbpress.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:22:\"buddicons-bbpress-logo\";s:5:\"title\";s:41:\"Connect Paid Memberships Pro and bbPress.\";s:7:\"content\";s:572:\"

Restrict Forums by membership level. Display additional profile information for member replies only. The bbPress Integration for PMPro does all this and more.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:4;O:8:\"stdClass\":12:{s:2:\"id\";i:40103;s:4:\"name\";s:36:\"install-pmpro-buddypress-integration\";s:6:\"starts\";s:10:\"2019-11-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:25:\"buddypress/buddypress.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:37:\"pmpro-buddypress/pmpro-buddypress.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:25:\"buddicons-buddypress-logo\";s:5:\"title\";s:44:\"Connect Paid Memberships Pro and BuddyPress.\";s:7:\"content\";s:644:\"

Restrict access to specific features of your BuddyPress community by membership level, allowing you to build a custom, private, and flexible members-only community. Check out the BuddyPress Integration for PMPro.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:5;O:8:\"stdClass\":12:{s:2:\"id\";i:40104;s:4:\"name\";s:37:\"install-pmpro-woocommerce-integration\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":2:{s:14:\"plugins_active\";a:1:{i:0;s:27:\"woocommerce/woocommerce.php\";}s:14:\"site_url_match\";a:1:{i:0;s:5:\".shop\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:39:\"pmpro-woocommerce/pmpro-woocommerce.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:3:\"tag\";s:5:\"title\";s:45:\"Connect Paid Memberships Pro and Woocommerce.\";s:7:\"content\";s:583:\"

Set a global or per-product discounts for members only. Require membership to buy certain products. The WooCommerce Integration for PMPro does all this and more.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:6;O:8:\"stdClass\":12:{s:2:\"id\";i:40105;s:4:\"name\";s:20:\"install-pmpro-events\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:4:{i:0;s:33:\"events-manager/events-manager.php\";i:1;s:43:\"the-events-calendar/the-events-calendar.php\";i:2;s:43:\"sugar-calendar-lite/sugar-calendar-lite.php\";i:3;s:55:\"all-in-one-event-calendar/all-in-one-event-calendar.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:29:\"pmpro-events/pmpro-events.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:12:\"calendar-alt\";s:5:\"title\";s:40:\"Connect Paid Memberships Pro and Events.\";s:7:\"content\";s:656:\"

Offer members-only events using popular events plugins and Paid Memberships Pro. Completely hide events from non-members. Restrict event registration by membership level. The Events Add On for PMPro does all this and more.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:7;O:8:\"stdClass\":12:{s:2:\"id\";i:40106;s:4:\"name\";s:31:\"install-pmpro-courses-learndash\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:21:\"sfwd-lms/sfwd_lms.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:31:\"pmpro-courses/pmpro-courses.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:18:\"welcome-learn-more\";s:5:\"title\";s:43:\"Connect Paid Memberships Pro and LearnDash.\";s:7:\"content\";s:569:\"

Protect your LearnDash course enrollment for members only using the Courses for Membership Add On for PMPro.

Connect PMPro and LearnDash »

\";s:11:\"dismissable\";b:1;}i:8;O:8:\"stdClass\":12:{s:2:\"id\";i:40107;s:4:\"name\";s:31:\"install-pmpro-courses-lifterlms\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:23:\"lifterlms/lifterlms.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:31:\"pmpro-courses/pmpro-courses.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:18:\"welcome-learn-more\";s:5:\"title\";s:43:\"Connect Paid Memberships Pro and LifterLMS.\";s:7:\"content\";s:569:\"

Protect your LifterLMS course enrollment for members only using the Courses for Membership Add On for PMPro.

Connect PMPro and LifterLMS »

\";s:11:\"dismissable\";b:1;}i:9;O:8:\"stdClass\":12:{s:2:\"id\";i:40108;s:4:\"name\";s:19:\"install-pmpro-roles\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:37:\"user-role-editor/user-role-editor.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:27:\"pmpro-roles/pmpro-roles.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:6:\"hidden\";s:5:\"title\";s:50:\"Connect Paid Memberships Pro and User Role Editor.\";s:7:\"content\";s:536:\"

Assign permissions or capabilities for each specific membership level using the Roles for Memberships Levels Add On for PMPro.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:10;O:8:\"stdClass\":12:{s:2:\"id\";i:40109;s:4:\"name\";s:23:\"install-pmpro-hollerbox\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:23:\"hollerbox/hollerbox.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:35:\"pmpro-hollerbox/pmpro-hollerbox.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:9:\"megaphone\";s:5:\"title\";s:44:\"Connect Paid Memberships Pro and Holler Box.\";s:7:\"content\";s:544:\"

Display unique popups and banners based on the user’s membership status using the Holler Box Add On for PMPro.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:11;O:8:\"stdClass\":12:{s:2:\"id\";i:40110;s:4:\"name\";s:42:\"install-pmpro-download-monitor-integration\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"4\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:37:\"download-monitor/download-monitor.php\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:49:\"pmpro-download-monitor/pmpro-download-monitor.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:8:\"download\";s:5:\"title\";s:50:\"Connect Paid Memberships Pro and Download Monitor.\";s:7:\"content\";s:528:\"

Require membership for specific Downloads. Check out the Download Monitor Integration for PMPro.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:12;O:8:\"stdClass\":11:{s:2:\"id\";i:50101;s:4:\"name\";s:34:\"install-pmpro-advanced-levels-page\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:67:\"pmpro-advanced-levels-shortcode/pmpro-advanced-levels-shortcode.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:3:\"art\";s:5:\"title\";s:42:\"Enhance Your Membership Levels Page Layout\";s:7:\"content\";s:634:\"

Convert more members by customizing the appearance of your levels page. Display membership options in columns or a pricing table layout using the Advanced Levels Page Shortcode Add On.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:13;O:8:\"stdClass\":11:{s:2:\"id\";i:50102;s:4:\"name\";s:23:\"install-register-helper\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:47:\"pmpro-register-helper/pmpro-register-helper.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:11:\"admin-users\";s:5:\"title\";s:40:\"Collect Additional Member Profile Fields\";s:7:\"content\";s:739:\"

Capture additional user fields at membership checkout or on the member\'s user profile, including text, select, radios and checkboxes, file uploads and more using the Register Helper Add On. Fields can be visible to members, admins only, or both.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:14;O:8:\"stdClass\":11:{s:2:\"id\";i:50103;s:4:\"name\";s:33:\"install-pmpro-subscription-delays\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:55:\"pmpro-subscription-delays/pmpro-subscription-delays.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:5:\"clock\";s:5:\"title\";s:47:\"Offer More Flexible Subscription Period Options\";s:7:\"content\";s:432:\"

Set variable-length trials or delay the subscription start date to have all members renew on a specific schedule. This Add On adds a delay setting to membership levels and discount codes.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:15;O:8:\"stdClass\":11:{s:2:\"id\";i:50104;s:4:\"name\";s:51:\"install-pmpro-add-paypal-express-option-at-checkout\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";i:5;s:7:\"hide_if\";O:8:\"stdClass\":2:{s:14:\"plugins_active\";a:1:{i:0;s:53:\"pmpro-add-paypal-express/pmpro-add-paypal-express.php\";}s:13:\"pmpro_setting\";O:8:\"stdClass\":1:{s:13:\"pmpro_gateway\";a:1:{i:0;s:6:\"paypal\";}}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:9:\"money-alt\";s:5:\"title\";s:59:\"Increase Revenue by Adding More Payment Options at Checkout\";s:7:\"content\";s:412:\"

Appeal to the highest number of potential customers by offering PayPal as a payment option in addition to your onsite credit card payment gateway.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:16;O:8:\"stdClass\":11:{s:2:\"id\";i:50105;s:4:\"name\";s:23:\"install-pmpro-mailchimp\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:35:\"pmpro-mailchimp/pmpro-mailchimp.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:9:\"email-alt\";s:5:\"title\";s:43:\"Integrate User Registrations with Mailchimp\";s:7:\"content\";s:402:\"

PMPro works seamlessly with your Mailchimp account to add members to unique audiences. You can segment members by level or other custom merge fields.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:17;O:8:\"stdClass\":12:{s:2:\"id\";i:50106;s:4:\"name\";s:30:\"install-pmpro-member-directory\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"site_url_match\";a:1:{i:0;s:5:\".club\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:49:\"pmpro-member-directory/pmpro-member-directory.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:6:\"groups\";s:5:\"title\";s:41:\"Member Directories and Profiles for Clubs\";s:7:\"content\";s:445:\"

Explore our Member Directory and Profiles Add On for your members-only club. This Add On enhances your membership site with a public or private searchable directory and customizable member profile pages.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:18;O:8:\"stdClass\":11:{s:2:\"id\";i:50107;s:4:\"name\";s:29:\"recommend-video-content-tools\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"site_url_match\";a:1:{i:0;s:3:\".tv\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:11:\"media-video\";s:5:\"title\";s:47:\"Restrict Premium Video Content For Members Only\";s:7:\"content\";s:1013:\"

There are many ways to offer premium video content in your membership site. Check out our guides on self-hosted video, using Vimeo to protect videos, and even hosting video on YouTube.

View the Video Guides

\";s:11:\"dismissable\";b:1;}i:19;O:8:\"stdClass\":12:{s:2:\"id\";i:50108;s:4:\"name\";s:31:\"install-pmpro-sponsored-members\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"site_url_match\";a:1:{i:0;s:4:\".edu\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:51:\"pmpro-sponsored-members/pmpro-sponsored-members.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:18:\"welcome-learn-more\";s:5:\"title\";s:34:\"Sell Organization Membership Packs\";s:7:\"content\";s:742:\"

Organization and Association members often need to purchase a block of linked accounts. This Add On provides the primary (parent) member with a code to distribute to their team. Organizations can optionally register the child accounts during checkout or allow team members to claim their accounts personally.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:20;O:8:\"stdClass\":12:{s:2:\"id\";i:50109;s:4:\"name\";s:21:\"install-pmpro-payfast\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"site_url_match\";a:1:{i:0;s:6:\".co.za\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:31:\"pmpro-payfast/pmpro-payfast.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:14:\"admin-site-alt\";s:5:\"title\";s:54:\"Integrate the South African Gateway Payfast with PMPro\";s:7:\"content\";s:724:\"

If you are from South Africa and need a local payment gateway, check out our Payfast Payment Gateway Integration. This gateway offers a secure and instant transfer of money between online buyers and sellers. Merchants can accept funds from local and international customers in ZAR.

View the Payfast Gateway Docs

\";s:11:\"dismissable\";b:1;}i:21;O:8:\"stdClass\":12:{s:2:\"id\";i:50110;s:4:\"name\";s:23:\"install-pmpro-donations\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"site_url_match\";a:1:{i:0;s:4:\".org\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:35:\"pmpro-donations/pmpro-donations.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:6:\"smiley\";s:5:\"title\";s:51:\"Collect an Optional Donation at Membership Checkout\";s:7:\"content\";s:441:\"

Give members the option to \'Make a Gift\' at checkout or allow existing members to make donations at any time. Users can enter a custom donation amount or select from a dropdown of recommended values.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}i:22;O:8:\"stdClass\":12:{s:2:\"id\";i:50111;s:4:\"name\";s:30:\"install-pmpro-variable-pricing\";s:6:\"starts\";s:10:\"2020-10-01\";s:4:\"ends\";s:10:\"2030-01-01\";s:8:\"priority\";s:1:\"5\";s:7:\"show_if\";O:8:\"stdClass\":1:{s:14:\"site_url_match\";a:1:{i:0;s:4:\".org\";}}s:7:\"hide_if\";O:8:\"stdClass\":1:{s:14:\"plugins_active\";a:1:{i:0;s:49:\"pmpro-variable-pricing/pmpro-variable-pricing.php\";}}s:4:\"type\";s:7:\"general\";s:8:\"dashicon\";s:6:\"smiley\";s:5:\"title\";s:66:\"Offer \'Pay What You Want\' Memberships With Variable Member Pricing\";s:7:\"content\";s:652:\"

Allow members to set their own price for membership in a custom field or using a dropdown of recommended prices. This Add On is useful for donation-type sites, where you give members the ability to \'pay what they can\'.

View the Add On Docs

\";s:11:\"dismissable\";b:1;}}','no'),(235,'finished_updating_comment_type','1','yes'),(241,'pmpro_license_check','a:2:{s:7:\"license\";b:0;s:7:\"enddate\";i:0;}','no'),(243,'_transient_doing_cron','1627489041.7580220699310302734375','yes'); +/*!40000 ALTER TABLE `wp_options` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_discount_codes` +-- + +DROP TABLE IF EXISTS `wp_pmpro_discount_codes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_discount_codes` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(32) NOT NULL, + `starts` date NOT NULL, + `expires` date NOT NULL, + `uses` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), + KEY `starts` (`starts`), + KEY `expires` (`expires`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_discount_codes` +-- + +LOCK TABLES `wp_pmpro_discount_codes` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_discount_codes` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_discount_codes` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_discount_codes_levels` +-- + +DROP TABLE IF EXISTS `wp_pmpro_discount_codes_levels`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_discount_codes_levels` ( + `code_id` int(11) unsigned NOT NULL, + `level_id` int(11) unsigned NOT NULL, + `initial_payment` decimal(18,8) NOT NULL DEFAULT '0.00000000', + `billing_amount` decimal(18,8) NOT NULL DEFAULT '0.00000000', + `cycle_number` int(11) NOT NULL DEFAULT '0', + `cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month', + `billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?', + `trial_amount` decimal(18,8) NOT NULL DEFAULT '0.00000000', + `trial_limit` int(11) NOT NULL DEFAULT '0', + `expiration_number` int(10) unsigned NOT NULL, + `expiration_period` enum('Day','Week','Month','Year') NOT NULL, + PRIMARY KEY (`code_id`,`level_id`), + KEY `initial_payment` (`initial_payment`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_discount_codes_levels` +-- + +LOCK TABLES `wp_pmpro_discount_codes_levels` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_discount_codes_levels` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_discount_codes_levels` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_discount_codes_uses` +-- + +DROP TABLE IF EXISTS `wp_pmpro_discount_codes_uses`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_discount_codes_uses` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `code_id` int(10) unsigned NOT NULL, + `user_id` int(10) unsigned NOT NULL, + `order_id` int(10) unsigned NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `user_id` (`user_id`), + KEY `timestamp` (`timestamp`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_discount_codes_uses` +-- + +LOCK TABLES `wp_pmpro_discount_codes_uses` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_discount_codes_uses` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_discount_codes_uses` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_membership_levelmeta` +-- + +DROP TABLE IF EXISTS `wp_pmpro_membership_levelmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_membership_levelmeta` ( + `meta_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `pmpro_membership_level_id` int(10) unsigned NOT NULL, + `meta_key` varchar(255) NOT NULL, + `meta_value` longtext, + PRIMARY KEY (`meta_id`), + KEY `pmpro_membership_level_id` (`pmpro_membership_level_id`), + KEY `meta_key` (`meta_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_membership_levelmeta` +-- + +LOCK TABLES `wp_pmpro_membership_levelmeta` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_membership_levelmeta` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_membership_levelmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_membership_levels` +-- + +DROP TABLE IF EXISTS `wp_pmpro_membership_levels`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_membership_levels` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `description` longtext NOT NULL, + `confirmation` longtext NOT NULL, + `initial_payment` decimal(18,8) NOT NULL DEFAULT '0.00000000', + `billing_amount` decimal(18,8) NOT NULL DEFAULT '0.00000000', + `cycle_number` int(11) NOT NULL DEFAULT '0', + `cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month', + `billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?', + `trial_amount` decimal(18,8) NOT NULL DEFAULT '0.00000000', + `trial_limit` int(11) NOT NULL DEFAULT '0', + `allow_signups` tinyint(4) NOT NULL DEFAULT '1', + `expiration_number` int(10) unsigned NOT NULL, + `expiration_period` enum('Day','Week','Month','Year') NOT NULL, + PRIMARY KEY (`id`), + KEY `allow_signups` (`allow_signups`), + KEY `initial_payment` (`initial_payment`), + KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_membership_levels` +-- + +LOCK TABLES `wp_pmpro_membership_levels` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_membership_levels` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_membership_levels` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_membership_ordermeta` +-- + +DROP TABLE IF EXISTS `wp_pmpro_membership_ordermeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_membership_ordermeta` ( + `meta_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `pmpro_membership_order_id` int(10) unsigned NOT NULL, + `meta_key` varchar(255) NOT NULL, + `meta_value` longtext, + PRIMARY KEY (`meta_id`), + KEY `pmpro_membership_order_id` (`pmpro_membership_order_id`), + KEY `meta_key` (`meta_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_membership_ordermeta` +-- + +LOCK TABLES `wp_pmpro_membership_ordermeta` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_membership_ordermeta` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_membership_ordermeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_membership_orders` +-- + +DROP TABLE IF EXISTS `wp_pmpro_membership_orders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_membership_orders` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(32) NOT NULL, + `session_id` varchar(64) NOT NULL DEFAULT '', + `user_id` int(11) unsigned NOT NULL DEFAULT '0', + `membership_id` int(11) unsigned NOT NULL DEFAULT '0', + `paypal_token` varchar(64) NOT NULL DEFAULT '', + `billing_name` varchar(128) NOT NULL DEFAULT '', + `billing_street` varchar(128) NOT NULL DEFAULT '', + `billing_city` varchar(128) NOT NULL DEFAULT '', + `billing_state` varchar(32) NOT NULL DEFAULT '', + `billing_zip` varchar(16) NOT NULL DEFAULT '', + `billing_country` varchar(128) NOT NULL, + `billing_phone` varchar(32) NOT NULL, + `subtotal` varchar(16) NOT NULL DEFAULT '', + `tax` varchar(16) NOT NULL DEFAULT '', + `couponamount` varchar(16) NOT NULL DEFAULT '', + `checkout_id` int(11) NOT NULL DEFAULT '0', + `certificate_id` int(11) NOT NULL DEFAULT '0', + `certificateamount` varchar(16) NOT NULL DEFAULT '', + `total` varchar(16) NOT NULL DEFAULT '', + `payment_type` varchar(64) NOT NULL DEFAULT '', + `cardtype` varchar(32) NOT NULL DEFAULT '', + `accountnumber` varchar(32) NOT NULL DEFAULT '', + `expirationmonth` char(2) NOT NULL DEFAULT '', + `expirationyear` varchar(4) NOT NULL DEFAULT '', + `status` varchar(32) NOT NULL DEFAULT '', + `gateway` varchar(64) NOT NULL, + `gateway_environment` varchar(64) NOT NULL, + `payment_transaction_id` varchar(64) NOT NULL, + `subscription_transaction_id` varchar(32) NOT NULL, + `timestamp` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `affiliate_id` varchar(32) NOT NULL, + `affiliate_subid` varchar(32) NOT NULL, + `notes` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), + KEY `session_id` (`session_id`), + KEY `user_id` (`user_id`), + KEY `membership_id` (`membership_id`), + KEY `status` (`status`), + KEY `timestamp` (`timestamp`), + KEY `gateway` (`gateway`), + KEY `gateway_environment` (`gateway_environment`), + KEY `payment_transaction_id` (`payment_transaction_id`), + KEY `subscription_transaction_id` (`subscription_transaction_id`), + KEY `affiliate_id` (`affiliate_id`), + KEY `affiliate_subid` (`affiliate_subid`), + KEY `checkout_id` (`checkout_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_membership_orders` +-- + +LOCK TABLES `wp_pmpro_membership_orders` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_membership_orders` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_membership_orders` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_memberships_categories` +-- + +DROP TABLE IF EXISTS `wp_pmpro_memberships_categories`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_memberships_categories` ( + `membership_id` int(11) unsigned NOT NULL, + `category_id` int(11) unsigned NOT NULL, + `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + UNIQUE KEY `membership_category` (`membership_id`,`category_id`), + UNIQUE KEY `category_membership` (`category_id`,`membership_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_memberships_categories` +-- + +LOCK TABLES `wp_pmpro_memberships_categories` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_memberships_categories` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_memberships_categories` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_memberships_pages` +-- + +DROP TABLE IF EXISTS `wp_pmpro_memberships_pages`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_memberships_pages` ( + `membership_id` int(11) unsigned NOT NULL, + `page_id` int(11) unsigned NOT NULL, + `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + UNIQUE KEY `category_membership` (`page_id`,`membership_id`), + UNIQUE KEY `membership_page` (`membership_id`,`page_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_memberships_pages` +-- + +LOCK TABLES `wp_pmpro_memberships_pages` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_memberships_pages` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_memberships_pages` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_pmpro_memberships_users` +-- + +DROP TABLE IF EXISTS `wp_pmpro_memberships_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_pmpro_memberships_users` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(11) unsigned NOT NULL, + `membership_id` int(11) unsigned NOT NULL, + `code_id` int(11) unsigned NOT NULL, + `initial_payment` decimal(18,8) NOT NULL, + `billing_amount` decimal(18,8) NOT NULL, + `cycle_number` int(11) NOT NULL, + `cycle_period` enum('Day','Week','Month','Year') NOT NULL DEFAULT 'Month', + `billing_limit` int(11) NOT NULL, + `trial_amount` decimal(18,8) NOT NULL, + `trial_limit` int(11) NOT NULL, + `status` varchar(20) NOT NULL DEFAULT 'active', + `startdate` datetime NOT NULL, + `enddate` datetime DEFAULT NULL, + `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `membership_id` (`membership_id`), + KEY `modified` (`modified`), + KEY `code_id` (`code_id`), + KEY `enddate` (`enddate`), + KEY `user_id` (`user_id`), + KEY `status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_pmpro_memberships_users` +-- + +LOCK TABLES `wp_pmpro_memberships_users` WRITE; +/*!40000 ALTER TABLE `wp_pmpro_memberships_users` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_pmpro_memberships_users` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_podsrel` +-- + +DROP TABLE IF EXISTS `wp_podsrel`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_podsrel` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `pod_id` int(10) unsigned DEFAULT NULL, + `field_id` int(10) unsigned DEFAULT NULL, + `item_id` bigint(20) unsigned DEFAULT NULL, + `related_pod_id` int(10) unsigned DEFAULT NULL, + `related_field_id` int(10) unsigned DEFAULT NULL, + `related_item_id` bigint(20) unsigned DEFAULT NULL, + `weight` smallint(5) unsigned DEFAULT '0', + PRIMARY KEY (`id`), + KEY `field_item_idx` (`field_id`,`item_id`), + KEY `rel_field_rel_item_idx` (`related_field_id`,`related_item_id`), + KEY `field_rel_item_idx` (`field_id`,`related_item_id`), + KEY `rel_field_item_idx` (`related_field_id`,`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_podsrel` +-- + +LOCK TABLES `wp_podsrel` WRITE; +/*!40000 ALTER TABLE `wp_podsrel` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_podsrel` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_postmeta` +-- + +DROP TABLE IF EXISTS `wp_postmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_postmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, + `meta_value` longtext COLLATE utf8mb4_unicode_520_ci, + PRIMARY KEY (`meta_id`), + KEY `post_id` (`post_id`), + KEY `meta_key` (`meta_key`(191)) +) 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 `wp_postmeta` +-- + +LOCK TABLES `wp_postmeta` WRITE; +/*!40000 ALTER TABLE `wp_postmeta` DISABLE KEYS */; +INSERT INTO `wp_postmeta` VALUES (1,2,'_wp_page_template','default'),(2,3,'_wp_page_template','default'); +/*!40000 ALTER TABLE `wp_postmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_posts` +-- + +DROP TABLE IF EXISTS `wp_posts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_posts` ( + `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_author` bigint(20) unsigned NOT NULL DEFAULT '0', + `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_content` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL, + `post_title` text COLLATE utf8mb4_unicode_520_ci NOT NULL, + `post_excerpt` text COLLATE utf8mb4_unicode_520_ci NOT NULL, + `post_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'publish', + `comment_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'open', + `ping_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'open', + `post_password` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `post_name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `to_ping` text COLLATE utf8mb4_unicode_520_ci NOT NULL, + `pinged` text COLLATE utf8mb4_unicode_520_ci NOT NULL, + `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_content_filtered` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL, + `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0', + `guid` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `menu_order` int(11) NOT NULL DEFAULT '0', + `post_type` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'post', + `post_mime_type` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `comment_count` bigint(20) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `post_name` (`post_name`(191)), + KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`), + KEY `post_parent` (`post_parent`), + KEY `post_author` (`post_author`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_posts` +-- + +LOCK TABLES `wp_posts` WRITE; +/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; +INSERT INTO `wp_posts` VALUES (1,1,'2021-07-27 17:04:37','2021-07-27 17:04:37','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','publish','open','open','','hello-world','','','2021-07-27 17:04:37','2021-07-27 17:04:37','',0,'http://wordpress.test/?p=1',0,'post','',1),(2,1,'2021-07-27 17:04:37','2021-07-27 17:04:37','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','publish','closed','open','','sample-page','','','2021-07-27 17:04:37','2021-07-27 17:04:37','',0,'http://wordpress.test/?page_id=2',0,'page','',0),(3,1,'2021-07-27 17:04:37','2021-07-27 17:04:37','

Who we are

Suggested text: Our website address is: http://test.pmpro-phx.local.

Comments

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

Media

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

Cookies

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

Embedded content from other websites

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

Who we share your data with

Suggested text: If you request a password reset, your IP address will be included in the reset email.

How long we retain your data

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

What rights you have over your data

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

Where we send your data

Suggested text: Visitor comments may be checked through an automated spam detection service.

','Privacy Policy','','draft','closed','open','','privacy-policy','','','2021-07-27 17:04:37','2021-07-27 17:04:37','',0,'http://wordpress.test/?page_id=3',0,'page','',0),(4,1,'2021-07-27 18:34:52','0000-00-00 00:00:00','','Auto Draft','','auto-draft','open','open','','','','','2021-07-27 18:34:52','0000-00-00 00:00:00','',0,'http://wordpress.test/?p=4',0,'post','',0); +/*!40000 ALTER TABLE `wp_posts` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_term_relationships` +-- + +DROP TABLE IF EXISTS `wp_term_relationships`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_term_relationships` ( + `object_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `term_taxonomy_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `term_order` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`object_id`,`term_taxonomy_id`), + KEY `term_taxonomy_id` (`term_taxonomy_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_term_relationships` +-- + +LOCK TABLES `wp_term_relationships` WRITE; +/*!40000 ALTER TABLE `wp_term_relationships` DISABLE KEYS */; +INSERT INTO `wp_term_relationships` VALUES (1,1,0); +/*!40000 ALTER TABLE `wp_term_relationships` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_term_taxonomy` +-- + +DROP TABLE IF EXISTS `wp_term_taxonomy`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_term_taxonomy` ( + `term_taxonomy_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `term_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `taxonomy` varchar(32) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `description` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL, + `parent` bigint(20) unsigned NOT NULL DEFAULT '0', + `count` bigint(20) NOT NULL DEFAULT '0', + PRIMARY KEY (`term_taxonomy_id`), + UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`), + KEY `taxonomy` (`taxonomy`) +) 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 `wp_term_taxonomy` +-- + +LOCK TABLES `wp_term_taxonomy` WRITE; +/*!40000 ALTER TABLE `wp_term_taxonomy` DISABLE KEYS */; +INSERT INTO `wp_term_taxonomy` VALUES (1,1,'category','',0,1); +/*!40000 ALTER TABLE `wp_term_taxonomy` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_termmeta` +-- + +DROP TABLE IF EXISTS `wp_termmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_termmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `term_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, + `meta_value` longtext COLLATE utf8mb4_unicode_520_ci, + PRIMARY KEY (`meta_id`), + KEY `term_id` (`term_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 `wp_termmeta` +-- + +LOCK TABLES `wp_termmeta` WRITE; +/*!40000 ALTER TABLE `wp_termmeta` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_termmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_terms` +-- + +DROP TABLE IF EXISTS `wp_terms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_terms` ( + `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `slug` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `term_group` bigint(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`term_id`), + KEY `slug` (`slug`(191)), + KEY `name` (`name`(191)) +) 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 `wp_terms` +-- + +LOCK TABLES `wp_terms` WRITE; +/*!40000 ALTER TABLE `wp_terms` DISABLE KEYS */; +INSERT INTO `wp_terms` VALUES (1,'Uncategorized','uncategorized',0); +/*!40000 ALTER TABLE `wp_terms` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_usermeta` +-- + +DROP TABLE IF EXISTS `wp_usermeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_usermeta` ( + `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, + `meta_value` longtext COLLATE utf8mb4_unicode_520_ci, + PRIMARY KEY (`umeta_id`), + KEY `user_id` (`user_id`), + KEY `meta_key` (`meta_key`(191)) +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_usermeta` +-- + +LOCK TABLES `wp_usermeta` WRITE; +/*!40000 ALTER TABLE `wp_usermeta` DISABLE KEYS */; +INSERT INTO `wp_usermeta` VALUES (1,1,'nickname','admin'),(2,1,'first_name',''),(3,1,'last_name',''),(4,1,'description',''),(5,1,'rich_editing','true'),(6,1,'syntax_highlighting','true'),(7,1,'comment_shortcuts','false'),(8,1,'admin_color','fresh'),(9,1,'use_ssl','0'),(10,1,'show_admin_bar_front','true'),(11,1,'locale',''),(12,1,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'),(13,1,'wp_user_level','10'),(14,1,'dismissed_wp_pointers',''),(15,1,'show_welcome_panel','0'),(16,1,'session_tokens','a:1:{s:64:\"7748e50cd2be2c4f1b5778f467da41be988df088ef87586a81bd92a65f21d6a6\";a:4:{s:10:\"expiration\";i:1627583691;s:2:\"ip\";s:9:\"127.0.0.1\";s:2:\"ua\";s:119:\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15\";s:5:\"login\";i:1627410891;}}'),(17,1,'wp_dashboard_quick_press_last_post_id','4'); +/*!40000 ALTER TABLE `wp_usermeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_users` +-- + +DROP TABLE IF EXISTS `wp_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `wp_users` ( + `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_login` varchar(60) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `user_pass` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `user_nicename` varchar(50) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `user_email` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `user_url` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `user_activation_key` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + `user_status` int(11) NOT NULL DEFAULT '0', + `display_name` varchar(250) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', + PRIMARY KEY (`ID`), + KEY `user_login_key` (`user_login`), + KEY `user_nicename` (`user_nicename`), + KEY `user_email` (`user_email`) +) 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 `wp_users` +-- + +LOCK TABLES `wp_users` WRITE; +/*!40000 ALTER TABLE `wp_users` DISABLE KEYS */; +INSERT INTO `wp_users` VALUES (1,'admin','$P$B5pIkEPhrduMesD7QUR6CJgk6vACMH1','admin','dev-email@flywheel.local','http://test.pmpro-phx.local','2021-07-27 17:04:37','',0,'admin'); +/*!40000 ALTER TABLE `wp_users` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2021-07-28 9:23:29 diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php new file mode 100644 index 0000000000..4c7dcbb6d6 --- /dev/null +++ b/tests/_support/AcceptanceTester.php @@ -0,0 +1,26 @@ +loginAsAdmin(); + * $I->amOnAdminPage('/'); + * $I->see('Dashboard'); + * ``` + * + * @param int $timeout The max time, in seconds, to try to login. + * @param int $maxAttempts The max number of attempts to try to login. + * + * @return void + * + * @throws ModuleException If all the attempts of obtaining the cookie fail. + * @see \Codeception\Module\WPWebDriver::loginAsAdmin() + */ + public function loginAsAdmin($timeout = 10, $maxAttempts = 5) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('loginAsAdmin', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Login as the specified user. + * + * The method will **not** follow redirection, after the login, to any page. + * Depending on the driven browser the login might be "too fast" and the server might have not + * replied with valid cookies yet; in that case the method will re-attempt the login to obtain + * the cookies. + * + * @example + * ```php + * $I->loginAs('user', 'password'); + * $I->amOnAdminPage('/'); + * $I->see('Dashboard'); + * ``` + * + * @param string $username The user login name. + * @param string $password The user password in plain text. + * @param int $timeout The max time, in seconds, to try to login. + * @param int $maxAttempts The max number of attempts to try to login. + * + * @throws ModuleException If all the attempts of obtaining the cookie fail. + * + * @return void + * @see \Codeception\Module\WPWebDriver::loginAs() + */ + public function loginAs($username, $password, $timeout = 10, $maxAttempts = 5) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('loginAs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Returns all the cookies whose name matches a regex pattern. + * + * @example + * ```php + * $I->loginAs('customer','password'); + * $I->amOnPage('/shop'); + * $cartCookies = $I->grabCookiesWithPattern("#^shop_cart\\.*#"); + * ``` + * + * @param string $cookiePattern The regular expression pattern to use for the matching. + * + * @return array|null An array of cookies matching the pattern. + * @see \Codeception\Module\WPWebDriver::grabCookiesWithPattern() + */ + public function grabCookiesWithPattern($cookiePattern) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabCookiesWithPattern', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits for any jQuery triggered AJAX request to be resolved. + * + * @example + * ```php + * $I->amOnPage('/triggering-ajax-requests'); + * $I->waitForJqueryAjax(); + * $I->see('From AJAX'); + * ``` + * + * @param int $time The max time to wait for AJAX requests to complete. + * + * @return void + * @see \Codeception\Module\WPWebDriver::waitForJqueryAjax() + */ + public function waitForJqueryAjax($time = 10) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForJqueryAjax', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs the current page full URL including the query vars. + * + * @example + * ```php + * $today = date('Y-m-d'); + * $I->amOnPage('/concerts?date=' . $today); + * $I->assertRegExp('#\\/concerts$#', $I->grabFullUrl()); + * ``` + * + * @return string The full page URL. + * @see \Codeception\Module\WPWebDriver::grabFullUrl() + */ + public function grabFullUrl() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFullUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * In the plugin administration screen deactivate a plugin clicking the "Deactivate" link. + * + * The method will **not** handle authentication and navigation to the plugins administration page. + * + * @example + * ```php + * // Deactivate one plugin. + * $I->loginAsAdmin(); + * $I->amOnPluginsPage(); + * $I->deactivatePlugin('hello-dolly'); + * // Deactivate a list of plugins. + * $I->loginAsAdmin(); + * $I->amOnPluginsPage(); + * $I->deactivatePlugin(['hello-dolly', 'my-plugin']); + * ``` + * + * @param string|array $pluginSlug The plugin slug, like "hello-dolly", or a list of plugin slugs. + * + * @return void + * @see \Codeception\Module\WPWebDriver::deactivatePlugin() + */ + public function deactivatePlugin($pluginSlug) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('deactivatePlugin', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * In the plugin administration screen activates one or more plugins clicking the "Activate" link. + * + * The method will **not** handle authentication and navigation to the plugins administration page. + * + * @example + * ```php + * // Activate a plugin. + * $I->loginAsAdmin(); + * $I->amOnPluginsPage(); + * $I->activatePlugin('hello-dolly'); + * // Activate a list of plugins. + * $I->loginAsAdmin(); + * $I->amOnPluginsPage(); + * $I->activatePlugin(['hello-dolly','another-plugin']); + * ``` + * + * @param string|array $pluginSlug The plugin slug, like "hello-dolly" or a list of plugin slugs. + * + * @return void + * @see \Codeception\Module\WPWebDriver::activatePlugin() + */ + public function activatePlugin($pluginSlug) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('activatePlugin', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Print out latest Selenium Logs in debug mode + * + * @param \Codeception\TestInterface $test + * @see \Codeception\Module\WebDriver::debugWebDriverLogs() + */ + public function debugWebDriverLogs(?\Codeception\TestInterface $test = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('debugWebDriverLogs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Changes the subdomain for the 'url' configuration parameter. + * Does not open a page; use `amOnPage` for that. + * + * ``` php + * amOnSubdomain('user'); + * $I->amOnPage('/'); + * // moves to http://user.mysite.com/ + * ?> + * ``` + * + * @param $subdomain + * + * @return mixed + * @see \Codeception\Module\WebDriver::amOnSubdomain() + */ + public function amOnSubdomain($subdomain) { + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Takes a screenshot of the current window and saves it to `tests/_output/debug`. + * + * ``` php + * amOnPage('/user/edit'); + * $I->makeScreenshot('edit_page'); + * // saved to: tests/_output/debug/edit_page.png + * $I->makeScreenshot(); + * // saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.png + * ``` + * + * @param $name + * @see \Codeception\Module\WebDriver::makeScreenshot() + */ + public function makeScreenshot($name = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('makeScreenshot', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Takes a screenshot of an element of the current window and saves it to `tests/_output/debug`. + * + * ``` php + * amOnPage('/user/edit'); + * $I->makeElementScreenshot('#dialog', 'edit_page'); + * // saved to: tests/_output/debug/edit_page.png + * $I->makeElementScreenshot('#dialog'); + * // saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.png + * ``` + * + * @param $name + * @see \Codeception\Module\WebDriver::makeElementScreenshot() + */ + public function makeElementScreenshot($selector, $name = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('makeElementScreenshot', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Use this method within an [interactive pause](https://codeception.com/docs/02-GettingStarted#Interactive-Pause) to save the HTML source code of the current page. + * + * ```php + * makeHtmlSnapshot('edit_page'); + * // saved to: tests/_output/debug/edit_page.html + * $I->makeHtmlSnapshot(); + * // saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.html + * ``` + * + * @param null $name + * @see \Codeception\Module\WebDriver::makeHtmlSnapshot() + */ + public function makeHtmlSnapshot($name = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('makeHtmlSnapshot', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Resize the current window. + * + * ``` php + * resizeWindow(800, 600); + * + * ``` + * + * @param int $width + * @param int $height + * @see \Codeception\Module\WebDriver::resizeWindow() + */ + public function resizeWindow($width, $height) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('resizeWindow', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * @see \Codeception\Module\WebDriver::seeCookie() + */ + public function seeCookie($cookie, array $params = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * @see \Codeception\Module\WebDriver::seeCookie() + */ + public function canSeeCookie($cookie, array $params = []) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Module\WebDriver::dontSeeCookie() + */ + public function dontSeeCookie($cookie, array $params = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Module\WebDriver::dontSeeCookie() + */ + public function cantSeeCookie($cookie, array $params = []) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Sets a cookie with the given name and value. + * You can set additional cookie params like `domain`, `path`, `expires`, `secure` in array passed as last argument. + * + * ``` php + * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); + * ?> + * ``` + * + * @param $name + * @param $val + * @param array $params + * + * @return mixed + * @see \Codeception\Module\WebDriver::setCookie() + */ + public function setCookie($cookie, $value, array $params = [], $showDebug = true) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unsets cookie with the given name. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Module\WebDriver::resetCookie() + */ + public function resetCookie($cookie, array $params = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs a cookie value. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * If the cookie is set by an ajax request (XMLHttpRequest), there might be some delay caused by the browser, so try `$I->wait(0.1)`. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Module\WebDriver::grabCookie() + */ + public function grabCookie($cookie, array $params = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs current page source code. + * + * @throws ModuleException if no page was opened. + * + * @return string Current page source code. + * @see \Codeception\Module\WebDriver::grabPageSource() + */ + public function grabPageSource() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabPageSource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Open web page at the given absolute URL and sets its hostname as the base host. + * + * ``` php + * amOnUrl('http://codeception.com'); + * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart + * ?> + * ``` + * @see \Codeception\Module\WebDriver::amOnUrl() + */ + public function amOnUrl($url) { + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opens the page for the given relative URI. + * + * ``` php + * amOnPage('/'); + * // opens /register page + * $I->amOnPage('/register'); + * ``` + * + * @param string $page + * @see \Codeception\Module\WebDriver::amOnPage() + */ + public function amOnPage($page) { + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string (case insensitive). + * + * You can specify a specific HTML element (via CSS or XPath) as the second + * parameter to only search within that element. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page + * $I->see('Sign Up', '//body/h1'); // with XPath + * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator + * ``` + * + * Note that the search is done after stripping all HTML tags from the body, + * so `$I->see('strong')` will return true for strings like: + * + * - `

I am Stronger than thou

` + * - `` + * + * But will *not* be true for strings like: + * + * - `Home` + * - `
Home` + * - `` + * + * For checking the raw source code, use `seeInSource()`. + * + * @param string $text + * @param array|string $selector optional + * @see \Codeception\Module\WebDriver::see() + */ + public function see($text, $selector = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current page contains the given string (case insensitive). + * + * You can specify a specific HTML element (via CSS or XPath) as the second + * parameter to only search within that element. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page + * $I->see('Sign Up', '//body/h1'); // with XPath + * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator + * ``` + * + * Note that the search is done after stripping all HTML tags from the body, + * so `$I->see('strong')` will return true for strings like: + * + * - `

I am Stronger than thou

` + * - `` + * + * But will *not* be true for strings like: + * + * - `Home` + * - `
Home` + * - `` + * + * For checking the raw source code, use `seeInSource()`. + * + * @param string $text + * @param array|string $selector optional + * @see \Codeception\Module\WebDriver::see() + */ + public function canSee($text, $selector = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified (case insensitive). + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator + * ``` + * + * Note that the search is done after stripping all HTML tags from the body, + * so `$I->dontSee('strong')` will fail on strings like: + * + * - `

I am Stronger than thou

` + * - `` + * + * But will ignore strings like: + * + * - `Home` + * - `
Home` + * - `` + * + * For checking the raw source code, use `seeInSource()`. + * + * @param string $text + * @param array|string $selector optional + * @see \Codeception\Module\WebDriver::dontSee() + */ + public function dontSee($text, $selector = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSee', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current page doesn't contain the text specified (case insensitive). + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator + * ``` + * + * Note that the search is done after stripping all HTML tags from the body, + * so `$I->dontSee('strong')` will fail on strings like: + * + * - `

I am Stronger than thou

` + * - `` + * + * But will ignore strings like: + * + * - `Home` + * - `
Home` + * - `` + * + * For checking the raw source code, use `seeInSource()`. + * + * @param string $text + * @param array|string $selector optional + * @see \Codeception\Module\WebDriver::dontSee() + */ + public function cantSee($text, $selector = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string in its + * raw source code. + * + * ``` php + * seeInSource('

Green eggs & ham

'); + * ``` + * + * @param $raw + * @see \Codeception\Module\WebDriver::seeInSource() + */ + public function seeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current page contains the given string in its + * raw source code. + * + * ``` php + * seeInSource('

Green eggs & ham

'); + * ``` + * + * @param $raw + * @see \Codeception\Module\WebDriver::seeInSource() + */ + public function canSeeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string in its + * raw source code. + * + * ```php + * dontSeeInSource('

Green eggs & ham

'); + * ``` + * + * @param $raw + * @see \Codeception\Module\WebDriver::dontSeeInSource() + */ + public function dontSeeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInSource', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current page contains the given string in its + * raw source code. + * + * ```php + * dontSeeInSource('

Green eggs & ham

'); + * ``` + * + * @param $raw + * @see \Codeception\Module\WebDriver::dontSeeInSource() + */ + public function cantSeeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page source contains the given string. + * + * ```php + * seeInPageSource('getScenario()->runStep(new \Codeception\Step\Assertion('seeInPageSource', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the page source contains the given string. + * + * ```php + * seeInPageSource('getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInPageSource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page source doesn't contain the given string. + * + * @param $text + * @see \Codeception\Module\WebDriver::dontSeeInPageSource() + */ + public function dontSeeInPageSource($text) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInPageSource', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the page source doesn't contain the given string. + * + * @param $text + * @see \Codeception\Module\WebDriver::dontSeeInPageSource() + */ + public function cantSeeInPageSource($text) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInPageSource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Perform a click on a link or a button, given by a locator. + * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. + * For buttons, the "value" attribute, "name" attribute, and inner text are searched. + * For links, the link text is searched. + * For images, the "alt" attribute and inner text of any parent links are searched. + * + * The second parameter is a context (CSS or XPath locator) to narrow the search. + * + * Note that if the locator matches a button of type `submit`, the form will be submitted. + * + * ``` php + * click('Logout'); + * // button of form + * $I->click('Submit'); + * // CSS button + * $I->click('#form input[type=submit]'); + * // XPath + * $I->click('//form/*[@type="submit"]'); + * // link in context + * $I->click('Logout', '#nav'); + * // using strict locator + * $I->click(['link' => 'Login']); + * ?> + * ``` + * + * @param $link + * @param $context + * @see \Codeception\Module\WebDriver::click() + */ + public function click($link, $context = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('click', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param string $text + * @param string $url optional + * @see \Codeception\Module\WebDriver::seeLink() + */ + public function seeLink($text, $url = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param string $text + * @param string $url optional + * @see \Codeception\Module\WebDriver::seeLink() + */ + public function canSeeLink($text, $url = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param string $text + * @param string $url optional + * @see \Codeception\Module\WebDriver::dontSeeLink() + */ + public function dontSeeLink($text, $url = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param string $text + * @param string $url optional + * @see \Codeception\Module\WebDriver::dontSeeLink() + */ + public function cantSeeLink($text, $url = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::seeInCurrentUrl() + */ + public function seeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::seeInCurrentUrl() + */ + public function canSeeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::seeCurrentUrlEquals() + */ + public function seeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::seeCurrentUrlEquals() + */ + public function canSeeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~^/users/(\d+)~'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::seeCurrentUrlMatches() + */ + public function seeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~^/users/(\d+)~'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::seeCurrentUrlMatches() + */ + public function canSeeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::dontSeeInCurrentUrl() + */ + public function dontSeeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::dontSeeInCurrentUrl() + */ + public function cantSeeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlEquals() + */ + public function dontSeeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlEquals() + */ + public function cantSeeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~^/users/(\d+)~'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlMatches() + */ + public function dontSeeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~^/users/(\d+)~'); + * ?> + * ``` + * + * @param string $uri + * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlMatches() + */ + public function cantSeeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Executes the given regular expression against the current URI and returns the first capturing group. + * If no parameters are provided, the full URI is returned. + * + * ``` php + * grabFromCurrentUrl('~^/user/(\d+)/~'); + * $uri = $I->grabFromCurrentUrl(); + * ?> + * ``` + * + * @param string $uri optional + * + * @return mixed + * @see \Codeception\Module\WebDriver::grabFromCurrentUrl() + */ + public function grabFromCurrentUrl($uri = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Module\WebDriver::seeCheckboxIsChecked() + */ + public function seeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Module\WebDriver::seeCheckboxIsChecked() + */ + public function canSeeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Module\WebDriver::dontSeeCheckboxIsChecked() + */ + public function dontSeeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Module\WebDriver::dontSeeCheckboxIsChecked() + */ + public function cantSeeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea *equals* (i.e. not just contains) the given value. + * Fields are matched by label text, the "name" attribute, CSS, or XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Module\WebDriver::seeInField() + */ + public function seeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given input field or textarea *equals* (i.e. not just contains) the given value. + * Fields are matched by label text, the "name" attribute, CSS, or XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Module\WebDriver::seeInField() + */ + public function canSeeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Module\WebDriver::dontSeeInField() + */ + public function dontSeeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Module\WebDriver::dontSeeInField() + */ + public function cantSeeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Module\WebDriver::seeInFormFields() + */ + public function seeInFormFields($formSelector, array $params) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Module\WebDriver::seeInFormFields() + */ + public function canSeeInFormFields($formSelector, array $params) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Module\WebDriver::dontSeeInFormFields() + */ + public function dontSeeInFormFields($formSelector, array $params) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Module\WebDriver::dontSeeInFormFields() + */ + public function cantSeeInFormFields($formSelector, array $params) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Selects an option in a select tag or in radio button group. + * + * ``` php + * selectOption('form select[name=account]', 'Premium'); + * $I->selectOption('form input[name=payment]', 'Monthly'); + * $I->selectOption('//form/select[@name=account]', 'Monthly'); + * ?> + * ``` + * + * Provide an array for the second argument to select multiple options: + * + * ``` php + * selectOption('Which OS do you use?', array('Windows','Linux')); + * ?> + * ``` + * + * Or provide an associative array for the second argument to specifically define which selection method should be used: + * + * ``` php + * selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows' + * $I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows' + * ?> + * ``` + * + * @param $select + * @param $option + * @see \Codeception\Module\WebDriver::selectOption() + */ + public function selectOption($select, $option) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unselect an option in the given select box. + * + * @param $select + * @param $option + * @see \Codeception\Module\WebDriver::unselectOption() + */ + public function unselectOption($select, $option) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('unselectOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. + * + * ``` php + * checkOption('#agree'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Module\WebDriver::checkOption() + */ + public function checkOption($option) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unticks a checkbox. + * + * ``` php + * uncheckOption('#notify'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Module\WebDriver::uncheckOption() + */ + public function uncheckOption($option) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fills a text field or textarea with the given string. + * + * ``` php + * fillField("//input[@type='text']", "Hello World!"); + * $I->fillField(['name' => 'email'], 'jon@example.com'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Module\WebDriver::fillField() + */ + public function fillField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('fillField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Clears given field which isn't empty. + * + * ``` php + * clearField('#username'); + * ``` + * + * @param $field + * @see \Codeception\Module\WebDriver::clearField() + */ + public function clearField($field) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('clearField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Type in characters on active element. + * With a second parameter you can specify delay between key presses. + * + * ```php + * click('#input'); + * + * // type text in active element + * $I->type('Hello world'); + * + * // type text with a 1sec delay between chars + * $I->type('Hello World', 1); + * ``` + * + * This might be useful when you an input reacts to typing and you need to slow it down to emulate human behavior. + * For instance, this is how Credit Card fields can be filled in. + * + * @param $text + * @param $delay [sec] + * @see \Codeception\Module\WebDriver::type() + */ + public function type($text, $delay = 0) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('type', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Attaches a file relative to the Codeception `_data` directory to the given file upload field. + * + * ``` php + * attachFile('input[@type="file"]', 'prices.xls'); + * ?> + * ``` + * + * @param $field + * @param $filename + * @see \Codeception\Module\WebDriver::attachFile() + */ + public function attachFile($field, $filename) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Finds and returns the text contents of the given element. + * If a fuzzy locator is used, the element is found using CSS, XPath, + * and by matching the full page source by regular expression. + * + * ``` php + * grabTextFrom('h1'); + * $heading = $I->grabTextFrom('descendant-or-self::h1'); + * $value = $I->grabTextFrom('~ + * ``` + * + * @param $cssOrXPathOrRegex + * + * @return mixed + * @see \Codeception\Module\WebDriver::grabTextFrom() + */ + public function grabTextFrom($cssOrXPathOrRegex) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs the value of the given attribute value from the given element. + * Fails if element is not found. + * + * ``` php + * grabAttributeFrom('#tooltip', 'title'); + * ?> + * ``` + * + * + * @param $cssOrXpath + * @param $attribute + * + * @return mixed + * @see \Codeception\Module\WebDriver::grabAttributeFrom() + */ + public function grabAttributeFrom($cssOrXpath, $attribute) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Finds the value for the given form field. + * If a fuzzy locator is used, the field is found by field name, CSS, and XPath. + * + * ``` php + * grabValueFrom('Name'); + * $name = $I->grabValueFrom('input[name=username]'); + * $name = $I->grabValueFrom('descendant-or-self::form/descendant::input[@name = 'username']'); + * $name = $I->grabValueFrom(['name' => 'username']); + * ?> + * ``` + * + * @param $field + * + * @return mixed + * @see \Codeception\Module\WebDriver::grabValueFrom() + */ + public function grabValueFrom($field) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs either the text content, or attribute values, of nodes + * matched by $cssOrXpath and returns them as an array. + * + * ```html + * First + * Second + * Third + * ``` + * + * ```php + * grabMultiple('a'); + * + * // would return ['#first', '#second', '#third'] + * $aLinks = $I->grabMultiple('a', 'href'); + * ?> + * ``` + * + * @param $cssOrXpath + * @param $attribute + * @return string[] + * @see \Codeception\Module\WebDriver::grabMultiple() + */ + public function grabMultiple($cssOrXpath, $attribute = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabMultiple', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * @see \Codeception\Module\WebDriver::seeElement() + */ + public function seeElement($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * @see \Codeception\Module\WebDriver::seeElement() + */ + public function canSeeElement($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Module\WebDriver::dontSeeElement() + */ + public function dontSeeElement($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Module\WebDriver::dontSeeElement() + */ + public function cantSeeElement($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page, even it is invisible. + * + * ``` php + * seeElementInDOM('//form/input[type=hidden]'); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Module\WebDriver::seeElementInDOM() + */ + public function seeElementInDOM($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElementInDOM', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given element exists on the page, even it is invisible. + * + * ``` php + * seeElementInDOM('//form/input[type=hidden]'); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Module\WebDriver::seeElementInDOM() + */ + public function canSeeElementInDOM($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElementInDOM', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opposite of `seeElementInDOM`. + * + * @param $selector + * @param array $attributes + * @see \Codeception\Module\WebDriver::dontSeeElementInDOM() + */ + public function dontSeeElementInDOM($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeElementInDOM', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Opposite of `seeElementInDOM`. + * + * @param $selector + * @param array $attributes + * @see \Codeception\Module\WebDriver::dontSeeElementInDOM() + */ + public function cantSeeElementInDOM($selector, $attributes = []) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElementInDOM', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected int or int[] + * @see \Codeception\Module\WebDriver::seeNumberOfElements() + */ + public function seeNumberOfElements($selector, $expected) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected int or int[] + * @see \Codeception\Module\WebDriver::seeNumberOfElements() + */ + public function canSeeNumberOfElements($selector, $expected) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\WebDriver::seeNumberOfElementsInDOM() + */ + public function seeNumberOfElementsInDOM($selector, $expected) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElementsInDOM', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * + * @see \Codeception\Module\WebDriver::seeNumberOfElementsInDOM() + */ + public function canSeeNumberOfElementsInDOM($selector, $expected) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElementsInDOM', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Module\WebDriver::seeOptionIsSelected() + */ + public function seeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Module\WebDriver::seeOptionIsSelected() + */ + public function canSeeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Module\WebDriver::dontSeeOptionIsSelected() + */ + public function dontSeeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Module\WebDriver::dontSeeOptionIsSelected() + */ + public function cantSeeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * @see \Codeception\Module\WebDriver::seeInTitle() + */ + public function seeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * @see \Codeception\Module\WebDriver::seeInTitle() + */ + public function canSeeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * @see \Codeception\Module\WebDriver::dontSeeInTitle() + */ + public function dontSeeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * @see \Codeception\Module\WebDriver::dontSeeInTitle() + */ + public function cantSeeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Accepts the active JavaScript native popup window, as created by `window.alert`|`window.confirm`|`window.prompt`. + * Don't confuse popups with modal windows, + * as created by [various libraries](http://jster.net/category/windows-modals-popups). + * @see \Codeception\Module\WebDriver::acceptPopup() + */ + public function acceptPopup() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('acceptPopup', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Dismisses the active JavaScript popup, as created by `window.alert`, `window.confirm`, or `window.prompt`. + * @see \Codeception\Module\WebDriver::cancelPopup() + */ + public function cancelPopup() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('cancelPopup', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the active JavaScript popup, + * as created by `window.alert`|`window.confirm`|`window.prompt`, contains the given string. + * + * @param $text + * + * @throws \Codeception\Exception\ModuleException + * @see \Codeception\Module\WebDriver::seeInPopup() + */ + public function seeInPopup($text) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInPopup', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the active JavaScript popup, + * as created by `window.alert`|`window.confirm`|`window.prompt`, contains the given string. + * + * @param $text + * + * @throws \Codeception\Exception\ModuleException + * @see \Codeception\Module\WebDriver::seeInPopup() + */ + public function canSeeInPopup($text) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInPopup', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the active JavaScript popup, + * as created by `window.alert`|`window.confirm`|`window.prompt`, does NOT contain the given string. + * + * @param $text + * + * @throws \Codeception\Exception\ModuleException + * @see \Codeception\Module\WebDriver::dontSeeInPopup() + */ + public function dontSeeInPopup($text) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInPopup', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the active JavaScript popup, + * as created by `window.alert`|`window.confirm`|`window.prompt`, does NOT contain the given string. + * + * @param $text + * + * @throws \Codeception\Exception\ModuleException + * @see \Codeception\Module\WebDriver::dontSeeInPopup() + */ + public function cantSeeInPopup($text) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInPopup', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Enters text into a native JavaScript prompt popup, as created by `window.prompt`. + * + * @param $keys + * + * @throws \Codeception\Exception\ModuleException + * @see \Codeception\Module\WebDriver::typeInPopup() + */ + public function typeInPopup($keys) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('typeInPopup', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Reloads the current page. + * @see \Codeception\Module\WebDriver::reloadPage() + */ + public function reloadPage() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('reloadPage', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Moves back in history. + * @see \Codeception\Module\WebDriver::moveBack() + */ + public function moveBack() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('moveBack', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Moves forward in history. + * @see \Codeception\Module\WebDriver::moveForward() + */ + public function moveForward() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('moveForward', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Submits the given form on the page, optionally with the given form + * values. Give the form fields values as an array. Note that hidden fields + * can't be accessed. + * + * Skipped fields will be filled by their values from the page. + * You don't need to click the 'Submit' button afterwards. + * This command itself triggers the request to form's action. + * + * You can optionally specify what button's value to include + * in the request with the last parameter as an alternative to + * explicitly setting its value in the second parameter, as + * button values are not otherwise included in the request. + * + * Examples: + * + * ``` php + * submitForm('#login', [ + * 'login' => 'davert', + * 'password' => '123456' + * ]); + * // or + * $I->submitForm('#login', [ + * 'login' => 'davert', + * 'password' => '123456' + * ], 'submitButtonName'); + * + * ``` + * + * For example, given this sample "Sign Up" form: + * + * ``` html + *
+ * Login: + *
+ * Password: + *
+ * Do you agree to our terms? + *
+ * Select pricing plan: + * + * + *
+ * ``` + * + * You could write the following to submit it: + * + * ``` php + * submitForm( + * '#userForm', + * [ + * 'user[login]' => 'Davert', + * 'user[password]' => '123456', + * 'user[agree]' => true + * ], + * 'submitButton' + * ); + * ``` + * Note that "2" will be the submitted value for the "plan" field, as it is + * the selected option. + * + * Also note that this differs from PhpBrowser, in that + * ```'user' => [ 'login' => 'Davert' ]``` is not supported at the moment. + * Named array keys *must* be included in the name as above. + * + * Pair this with seeInFormFields for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * Parameter values must be set to arrays for multiple input fields + * of the same name, or multi-select combo boxes. For checkboxes, + * either the string value can be used, or boolean values which will + * be replaced by the checkbox's value in the DOM. + * + * ``` php + * submitForm('#my-form', [ + * 'field1' => 'value', + * 'checkbox' => [ + * 'value of first checkbox', + * 'value of second checkbox', + * ], + * 'otherCheckboxes' => [ + * true, + * false, + * false, + * ], + * 'multiselect' => [ + * 'first option value', + * 'second option value', + * ] + * ]); + * ?> + * ``` + * + * Mixing string and boolean values for a checkbox's value is not supported + * and may produce unexpected results. + * + * Field names ending in "[]" must be passed without the trailing square + * bracket characters, and must contain an array for its value. This allows + * submitting multiple values with the same name, consider: + * + * ```php + * $I->submitForm('#my-form', [ + * 'field[]' => 'value', + * 'field[]' => 'another value', // 'field[]' is already a defined key + * ]); + * ``` + * + * The solution is to pass an array value: + * + * ```php + * // this way both values are submitted + * $I->submitForm('#my-form', [ + * 'field' => [ + * 'value', + * 'another value', + * ] + * ]); + * ``` + * + * The `$button` parameter can be either a string, an array or an instance + * of Facebook\WebDriver\WebDriverBy. When it is a string, the + * button will be found by its "name" attribute. If $button is an + * array then it will be treated as a strict selector and a WebDriverBy + * will be used verbatim. + * + * For example, given the following HTML: + * + * ``` html + * + * ``` + * + * `$button` could be any one of the following: + * - 'submitButton' + * - ['name' => 'submitButton'] + * - WebDriverBy::name('submitButton') + * + * @param $selector + * @param $params + * @param $button + * @see \Codeception\Module\WebDriver::submitForm() + */ + public function submitForm($selector, array $params, $button = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits up to $timeout seconds for the given element to change. + * Element "change" is determined by a callback function which is called repeatedly + * until the return value evaluates to true. + * + * ``` php + * waitForElementChange('#menu', function(WebDriverElement $el) { + * return $el->isDisplayed(); + * }, 100); + * ?> + * ``` + * + * @param $element + * @param \Closure $callback + * @param int $timeout seconds + * @throws \Codeception\Exception\ElementNotFound + * @see \Codeception\Module\WebDriver::waitForElementChange() + */ + public function waitForElementChange($element, \Closure $callback, $timeout = 30) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementChange', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits up to $timeout seconds for an element to appear on the page. + * If the element doesn't appear, a timeout exception is thrown. + * + * ``` php + * waitForElement('#agree_button', 30); // secs + * $I->click('#agree_button'); + * ?> + * ``` + * + * @param $element + * @param int $timeout seconds + * @throws \Exception + * @see \Codeception\Module\WebDriver::waitForElement() + */ + public function waitForElement($element, $timeout = 10) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits up to $timeout seconds for the given element to be visible on the page. + * If element doesn't appear, a timeout exception is thrown. + * + * ``` php + * waitForElementVisible('#agree_button', 30); // secs + * $I->click('#agree_button'); + * ?> + * ``` + * + * @param $element + * @param int $timeout seconds + * @throws \Exception + * @see \Codeception\Module\WebDriver::waitForElementVisible() + */ + public function waitForElementVisible($element, $timeout = 10) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementVisible', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits up to $timeout seconds for the given element to become invisible. + * If element stays visible, a timeout exception is thrown. + * + * ``` php + * waitForElementNotVisible('#agree_button', 30); // secs + * ?> + * ``` + * + * @param $element + * @param int $timeout seconds + * @throws \Exception + * @see \Codeception\Module\WebDriver::waitForElementNotVisible() + */ + public function waitForElementNotVisible($element, $timeout = 10) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementNotVisible', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits up to $timeout seconds for the given element to be clickable. + * If element doesn't become clickable, a timeout exception is thrown. + * + * ``` php + * waitForElementClickable('#agree_button', 30); // secs + * $I->click('#agree_button'); + * ?> + * ``` + * + * @param $element + * @param int $timeout seconds + * @throws \Exception + * @see \Codeception\Module\WebDriver::waitForElementClickable() + */ + public function waitForElementClickable($element, $timeout = 10) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementClickable', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Waits up to $timeout seconds for the given string to appear on the page. + * + * Can also be passed a selector to search in, be as specific as possible when using selectors. + * waitForText() will only watch the first instance of the matching selector / text provided. + * If the given text doesn't appear, a timeout exception is thrown. + * + * ``` php + * waitForText('foo', 30); // secs + * $I->waitForText('foo', 30, '.title'); // secs + * ?> + * ``` + * + * @param string $text + * @param int $timeout seconds + * @param string $selector optional + * @throws \Exception + * @see \Codeception\Module\WebDriver::waitForText() + */ + public function waitForText($text, $timeout = 10, $selector = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForText', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Wait for $timeout seconds. + * + * @param int|float $timeout secs + * @throws \Codeception\Exception\TestRuntimeException + * @see \Codeception\Module\WebDriver::wait() + */ + public function wait($timeout) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('wait', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Low-level API method. + * If Codeception commands are not enough, this allows you to use Selenium WebDriver methods directly: + * + * ``` php + * $I->executeInSelenium(function(\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) { + * $webdriver->get('http://google.com'); + * }); + * ``` + * + * This runs in the context of the + * [RemoteWebDriver class](https://github.com/php-webdriver/php-webdriver/blob/master/lib/remote/RemoteWebDriver.php). + * Try not to use this command on a regular basis. + * If Codeception lacks a feature you need, please implement it and submit a patch. + * + * @param callable $function + * @see \Codeception\Module\WebDriver::executeInSelenium() + */ + public function executeInSelenium(\Closure $function) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('executeInSelenium', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Switch to another window identified by name. + * + * The window can only be identified by name. If the $name parameter is blank, the parent window will be used. + * + * Example: + * ``` html + * + * ``` + * + * ``` php + * click("Open window"); + * # switch to another window + * $I->switchToWindow("another_window"); + * # switch to parent window + * $I->switchToWindow(); + * ?> + * ``` + * + * If the window has no name, match it by switching to next active tab using `switchToNextTab` method. + * + * Or use native Selenium functions to get access to all opened windows: + * + * ``` php + * executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) { + * $handles=$webdriver->getWindowHandles(); + * $last_window = end($handles); + * $webdriver->switchTo()->window($last_window); + * }); + * ?> + * ``` + * + * @param string|null $name + * @see \Codeception\Module\WebDriver::switchToWindow() + */ + public function switchToWindow($name = NULL) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('switchToWindow', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Switch to another iframe on the page. + * + * Example: + * ``` html + *