Capability Manager Enhanced - Version 1.9.6

Version Description

  • 23 Apr 2020 =
    • Change : Add New Role retains capitalization as entered for role title (otherwise applies proper case)
    • Feature : Rename Role sidebar box on Capabilities screen
    • Fixed : Fatal error on plugin load if Administrator role does not exist
Download this release

Release Info

Developer kevinB
Plugin Icon 128x128 Capability Manager Enhanced
Version 1.9.6
Comparing to
See all releases

Code changes from version 1.9.5 to 1.9.6

Files changed (51) hide show
  1. capsman-enhanced.php +6 -6
  2. includes/admin.php +11 -0
  3. includes/functions-admin.php +3 -2
  4. includes/handler.php +22 -2
  5. includes/manager.php +3 -2
  6. lang/capsman.mo +0 -0
  7. lang/capsman.po +62 -45
  8. readme.txt +6 -1
  9. vendor/composer/installed.json +6 -6
  10. vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php +0 -38
  11. vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php +0 -34
  12. vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php +0 -54
  13. vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php +0 -35
  14. vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php +0 -77
  15. vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php +0 -610
  16. vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php +0 -76
  17. vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php +0 -131
  18. vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php +0 -52
  19. vendor/publishpress/wordpress-version-notices/bin/update-code-for-tests.sh +0 -13
  20. vendor/publishpress/wordpress-version-notices/src/Module/TopNotice/Module.php +44 -20
  21. vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoader.php +1 -2
  22. vendor/publishpress/wordpress-version-notices/tests/_data/.gitkeep +0 -0
  23. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-one/dumb-plugin-one.php +0 -37
  24. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-one/vendor/publishpress/wordpress-version-notices/.gitkeep +0 -0
  25. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-one/version-notice.php +0 -45
  26. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-two/dumb-plugin-two.php +0 -37
  27. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-two/vendor/publishpress/wordpress-version-notices/.gitkeep +0 -0
  28. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-two/version-notice.php +0 -45
  29. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-templates/Dumb/test1.php +0 -1
  30. vendor/publishpress/wordpress-version-notices/tests/_data/dumb-templates/Dumb/test2.php +0 -1
  31. vendor/publishpress/wordpress-version-notices/tests/_data/dump.sql +0 -524
  32. vendor/publishpress/wordpress-version-notices/tests/_output/.gitignore +0 -2
  33. vendor/publishpress/wordpress-version-notices/tests/_support/AcceptanceTester.php +0 -26
  34. vendor/publishpress/wordpress-version-notices/tests/_support/FunctionalTester.php +0 -26
  35. vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Acceptance.php +0 -10
  36. vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Functional.php +0 -10
  37. vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Unit.php +0 -10
  38. vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Wpunit.php +0 -10
  39. vendor/publishpress/wordpress-version-notices/tests/_support/UnitTester.php +0 -26
  40. vendor/publishpress/wordpress-version-notices/tests/_support/WpunitTester.php +0 -26
  41. vendor/publishpress/wordpress-version-notices/tests/_support/_generated/.gitignore +0 -2
  42. vendor/publishpress/wordpress-version-notices/tests/acceptance.suite.yml +0 -36
  43. vendor/publishpress/wordpress-version-notices/tests/acceptance/ActivatePluginsCest.php +0 -17
  44. vendor/publishpress/wordpress-version-notices/tests/acceptance/TopNoticeCest.php +0 -38
  45. vendor/publishpress/wordpress-version-notices/tests/functional.suite.yml +0 -40
  46. vendor/publishpress/wordpress-version-notices/tests/unit.suite.yml +0 -10
  47. vendor/publishpress/wordpress-version-notices/tests/wpunit.suite.yml +0 -25
  48. vendor/publishpress/wordpress-version-notices/tests/wpunit/IncludesTest.php +0 -31
  49. vendor/publishpress/wordpress-version-notices/tests/wpunit/Module/TopNotice/ModuleTest.php +0 -174
  50. vendor/publishpress/wordpress-version-notices/tests/wpunit/ServicesProviderTest.php +0 -55
  51. vendor/publishpress/wordpress-version-notices/tests/wpunit/Template/TemplateLoaderTest.php +0 -98
capsman-enhanced.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: PublishPress Capabilities
4
  * Plugin URI: https://publishpress.com/capability-manager/
5
  * Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
- * Version: 1.9.5
7
  * Author: PublishPress
8
  * Author URI: https://publishpress.com/
9
  * Text Domain: capsman-enhanced
@@ -25,13 +25,13 @@
25
  * @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
26
  * @license GNU General Public License version 3
27
  * @link https://publishpress.com/
28
- * @version 1.9.5
29
  */
30
 
31
  if (!defined('CAPSMAN_VERSION')) {
32
- define('CAPSMAN_VERSION', '1.9.5');
33
- define('CAPSMAN_ENH_VERSION', '1.9.5');
34
- define('PUBLISHPRESS_CAPS_VERSION', '1.9.5');
35
  }
36
 
37
  foreach (get_option('active_plugins') as $plugin_file) {
@@ -141,4 +141,4 @@ add_action( 'init', '_cme_cap_helper', 49 ); // Press Permit Cap Helper, regist
141
  // @todo: do this in PP Core also
142
 
143
  if ( is_multisite() )
144
- require_once ( dirname(__FILE__) . '/includes/network.php' );
3
  * Plugin Name: PublishPress Capabilities
4
  * Plugin URI: https://publishpress.com/capability-manager/
5
  * Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
+ * Version: 1.9.6
7
  * Author: PublishPress
8
  * Author URI: https://publishpress.com/
9
  * Text Domain: capsman-enhanced
25
  * @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
26
  * @license GNU General Public License version 3
27
  * @link https://publishpress.com/
28
+ * @version 1.9.6
29
  */
30
 
31
  if (!defined('CAPSMAN_VERSION')) {
32
+ define('CAPSMAN_VERSION', '1.9.6');
33
+ define('CAPSMAN_ENH_VERSION', '1.9.6');
34
+ define('PUBLISHPRESS_CAPS_VERSION', '1.9.6');
35
  }
36
 
37
  foreach (get_option('active_plugins') as $plugin_file) {
141
  // @todo: do this in PP Core also
142
 
143
  if ( is_multisite() )
144
+ require_once ( dirname(__FILE__) . '/includes/network.php' );
includes/admin.php CHANGED
@@ -1119,6 +1119,17 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1119
  </dd>
1120
  </dl>
1121
 
 
 
 
 
 
 
 
 
 
 
 
1122
  <dl>
1123
  <dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
1124
  <dd style="text-align:center;">
1119
  </dd>
1120
  </dl>
1121
 
1122
+ <dl>
1123
+ <dt><?php _e('Rename Role', 'capsman-enhanced'); ?></dt>
1124
+ <dd style="text-align:center;">
1125
+ <p><input type="text" name="rename-name" class="regular-text" placeholder="<?php _e('New Role Name', 'capsman-enhanced') ?>" />
1126
+
1127
+ <br />
1128
+ <input type="submit" name="RenameRole" value="<?php _e('Rename', 'capsman-enhanced') ?>" class="button" />
1129
+ </p>
1130
+ </dd>
1131
+ </dl>
1132
+
1133
  <dl>
1134
  <dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
1135
  <dd style="text-align:center;">
includes/functions-admin.php CHANGED
@@ -4,8 +4,9 @@
4
  function cme_submenus() {
5
  // First we check if user is administrator and can 'manage_capabilities'.
6
  if (current_user_can('administrator') && ! current_user_can('manage_capabilities')) {
7
- $admin = get_role('administrator');
8
- $admin->add_cap('manage_capabilities');
 
9
  }
10
 
11
  $cap_name = (is_multisite() && is_super_admin()) ? 'read' : 'manage_capabilities';
4
  function cme_submenus() {
5
  // First we check if user is administrator and can 'manage_capabilities'.
6
  if (current_user_can('administrator') && ! current_user_can('manage_capabilities')) {
7
+ if ($admin = get_role('administrator')) {
8
+ $admin->add_cap('manage_capabilities');
9
+ }
10
  }
11
 
12
  $cap_name = (is_multisite() && is_super_admin()) ? 'read' : 'manage_capabilities';
includes/handler.php CHANGED
@@ -24,6 +24,19 @@ class CapsmanHandler
24
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  // Copy current role to a new one.
28
  } elseif ( ! empty($post['CopyRole']) ) {
29
  $current = get_role($post['current']);
@@ -135,14 +148,21 @@ class CapsmanHandler
135
  if ( preg_match($pattern, $name) ) {
136
  $roles = ak_get_roles();
137
 
138
- $name = strtolower($name);
139
  $name = str_replace(' ', '_', $name);
140
  if ( in_array($name, $roles) || array_key_exists($name, $this->cm->capabilities) ) {
141
  return false; // Already a role or capability with this name.
142
  }
143
 
144
  $display = explode('_', $name);
145
- $display = array_map('ucfirst', $display);
 
 
 
 
 
 
 
 
146
  $display = implode(' ', $display);
147
 
148
  return compact('name', 'display');
24
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
25
  }
26
 
27
+ // rename role
28
+ } elseif (!empty($post['RenameRole']) && !empty($post['rename-name'])) {
29
+ $current = get_role($post['current']);
30
+ $new_title = sanitize_text_field($post['rename-name']);
31
+
32
+ if ($current && isset($wp_roles->roles[$current->name]) && $new_title) {
33
+ $old_title = $wp_roles->roles[$current->name]['name'];
34
+ $wp_roles->roles[$current->name]['name'] = $new_title;
35
+ update_option($wp_roles->role_key, $wp_roles->roles);
36
+
37
+ ak_admin_notify(sprintf(__('Role "%s" (id %s) renamed to "%s"', 'capsman-enhanced'), $old_title, strtolower($current->name), $new_title));
38
+ $this->cm->current = $current->name;
39
+ }
40
  // Copy current role to a new one.
41
  } elseif ( ! empty($post['CopyRole']) ) {
42
  $current = get_role($post['current']);
148
  if ( preg_match($pattern, $name) ) {
149
  $roles = ak_get_roles();
150
 
 
151
  $name = str_replace(' ', '_', $name);
152
  if ( in_array($name, $roles) || array_key_exists($name, $this->cm->capabilities) ) {
153
  return false; // Already a role or capability with this name.
154
  }
155
 
156
  $display = explode('_', $name);
157
+ $name = strtolower($name);
158
+
159
+ // Apply ucfirst proper caps unless capitalization already provided
160
+ foreach($display as $i => $word) {
161
+ if ($word === strtolower($word)) {
162
+ $display[$i] = ucfirst($word);
163
+ }
164
+ }
165
+
166
  $display = implode(' ', $display);
167
 
168
  return compact('name', 'display');
includes/manager.php CHANGED
@@ -320,8 +320,9 @@ class CapabilityManager
320
  */
321
  public function setAdminCapability ()
322
  {
323
- $admin = get_role('administrator');
324
- $admin->add_cap('manage_capabilities');
 
325
  }
326
 
327
  /**
320
  */
321
  public function setAdminCapability ()
322
  {
323
+ if ($admin = get_role('administrator')) {
324
+ $admin->add_cap('manage_capabilities');
325
+ }
326
  }
327
 
328
  /**
lang/capsman.mo CHANGED
Binary file
lang/capsman.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Capability Manager Enhanced\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2020-03-17 18:17-0500\n"
6
- "PO-Revision-Date: 2020-03-17 18:17-0500\n"
7
  "Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
8
  "Language-Team: PublishPress <help@publishpress.com>\n"
9
  "MIME-Version: 1.0\n"
@@ -72,7 +72,7 @@ msgid "<strong>Note:</strong> Capability changes <strong>remain in the database<
72
  msgstr ""
73
 
74
  #: F:\snapshot\capability-manager-enhanced/includes/admin.php:133
75
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1144
76
  msgid "PublishPress Permissions"
77
  msgstr ""
78
 
@@ -328,54 +328,66 @@ msgid "Copy"
328
  msgstr ""
329
 
330
  #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1123
 
 
 
 
 
 
 
 
 
 
 
 
331
  msgid "Add Capability"
332
  msgstr ""
333
 
334
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1126
335
  msgid "Add to role"
336
  msgstr ""
337
 
338
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1131
339
  msgid "Backup Tool"
340
  msgstr ""
341
 
342
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1133
343
  msgid "Backup / Restore Roles"
344
  msgstr ""
345
 
346
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1138
347
  msgid "Related Permissions Plugins"
348
  msgstr ""
349
 
350
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1141
351
  msgid "Multiple Authors"
352
  msgstr ""
353
 
354
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1150
355
  msgid "PublishPress"
356
  msgstr ""
357
 
358
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1155
359
  msgid "PublishPress Revisions"
360
  msgstr ""
361
 
362
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1157
363
  msgid "Help / Contact Form"
364
  msgstr ""
365
 
366
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1195
367
  msgid "Create this role definition in new (future) sites"
368
  msgstr ""
369
 
370
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1195
371
  msgid "include in new sites"
372
  msgstr ""
373
 
374
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1198
375
  msgid "Copy / update this role definition to all sites now"
376
  msgstr ""
377
 
378
- #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1198
379
  msgid "sync role to all sites now"
380
  msgstr ""
381
 
@@ -522,122 +534,127 @@ msgstr ""
522
  msgid "Add New"
523
  msgstr ""
524
 
525
- #: F:\snapshot\capability-manager-enhanced/includes/filters.php:275
526
  msgid "Edit Roles"
527
  msgstr ""
528
 
529
- #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:13
530
  msgid "Capabilities"
531
  msgstr ""
532
 
533
- #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:35
534
  msgid "Backup"
535
  msgstr ""
536
 
537
- #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:39
538
- #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:40
539
  msgid "Upgrade to Pro"
540
  msgstr ""
541
 
542
  #: F:\snapshot\capability-manager-enhanced/includes/handler.php:18
543
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:31
544
  msgid "New role created."
545
  msgstr ""
546
 
547
  #: F:\snapshot\capability-manager-enhanced/includes/handler.php:24
548
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:37
549
  msgid "Error: Failed creating the new role."
550
  msgstr ""
551
 
552
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:91
 
 
 
 
 
553
  msgid "Incorrect capability name."
554
  msgstr ""
555
 
556
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:96
557
  msgid "Type / Taxonomy settings saved."
558
  msgstr ""
559
 
560
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:102
561
  msgid "Bad form received."
562
  msgstr ""
563
 
564
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:218
565
  msgid "You cannot remove Manage Capabilities from Administrators"
566
  msgstr ""
567
 
568
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:330
569
  #, php-format
570
  msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
571
  msgstr ""
572
 
573
- #: F:\snapshot\capability-manager-enhanced/includes/handler.php:377
574
  #, php-format
575
  msgid "Role has been deleted. %1$d users moved to default role %2$s."
576
  msgstr ""
577
 
578
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:165
579
  msgid "Explicity negate this capability by storing as disabled"
580
  msgstr ""
581
 
582
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:166
583
  msgid "Explicitly negate these capabilities by storing as disabled"
584
  msgstr ""
585
 
586
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:167
587
  msgid "Post type registration does not define this capability distinctly"
588
  msgstr ""
589
 
590
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:168
591
  msgid "This capability is explicitly negated. Click to add/remove normally."
592
  msgstr ""
593
 
594
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:169
595
  msgid "Add or remove this capability from the WordPress role"
596
  msgstr ""
597
 
598
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:170
599
  msgid "Add or remove capability from the role normally"
600
  msgstr ""
601
 
602
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:405
603
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:446
604
  msgid "You do not have permission to manage capabilities."
605
  msgstr ""
606
 
607
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:460
608
  msgid "New capability added to role."
609
  msgstr ""
610
 
611
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:499
612
  msgid "Bad form Received"
613
  msgstr ""
614
 
615
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:645
616
  #, php-format
617
  msgid "If you like %s, please leave us a %s rating. Thank you!"
618
  msgstr ""
619
 
620
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:656
621
  msgid "About PublishPress Capabilities"
622
  msgstr ""
623
 
624
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:656
625
  msgid "About"
626
  msgstr ""
627
 
628
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:658
629
  msgid "Capabilites Documentation"
630
  msgstr ""
631
 
632
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:658
633
  msgid "Documentation"
634
  msgstr ""
635
 
636
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:660
637
  msgid "Contact the PublishPress team"
638
  msgstr ""
639
 
640
- #: F:\snapshot\capability-manager-enhanced/includes/manager.php:660
641
  msgid "Contact"
642
  msgstr ""
643
 
2
  msgstr ""
3
  "Project-Id-Version: Capability Manager Enhanced\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2020-04-20 16:39-0500\n"
6
+ "PO-Revision-Date: 2020-04-20 16:39-0500\n"
7
  "Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
8
  "Language-Team: PublishPress <help@publishpress.com>\n"
9
  "MIME-Version: 1.0\n"
72
  msgstr ""
73
 
74
  #: F:\snapshot\capability-manager-enhanced/includes/admin.php:133
75
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1155
76
  msgid "PublishPress Permissions"
77
  msgstr ""
78
 
328
  msgstr ""
329
 
330
  #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1123
331
+ msgid "Rename Role"
332
+ msgstr ""
333
+
334
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1125
335
+ msgid "New Role Name"
336
+ msgstr ""
337
+
338
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1128
339
+ msgid "Rename"
340
+ msgstr ""
341
+
342
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1134
343
  msgid "Add Capability"
344
  msgstr ""
345
 
346
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1137
347
  msgid "Add to role"
348
  msgstr ""
349
 
350
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1142
351
  msgid "Backup Tool"
352
  msgstr ""
353
 
354
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1144
355
  msgid "Backup / Restore Roles"
356
  msgstr ""
357
 
358
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1149
359
  msgid "Related Permissions Plugins"
360
  msgstr ""
361
 
362
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1152
363
  msgid "Multiple Authors"
364
  msgstr ""
365
 
366
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1161
367
  msgid "PublishPress"
368
  msgstr ""
369
 
370
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1166
371
  msgid "PublishPress Revisions"
372
  msgstr ""
373
 
374
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1168
375
  msgid "Help / Contact Form"
376
  msgstr ""
377
 
378
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1206
379
  msgid "Create this role definition in new (future) sites"
380
  msgstr ""
381
 
382
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1206
383
  msgid "include in new sites"
384
  msgstr ""
385
 
386
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1209
387
  msgid "Copy / update this role definition to all sites now"
388
  msgstr ""
389
 
390
+ #: F:\snapshot\capability-manager-enhanced/includes/admin.php:1209
391
  msgid "sync role to all sites now"
392
  msgstr ""
393
 
534
  msgid "Add New"
535
  msgstr ""
536
 
537
+ #: F:\snapshot\capability-manager-enhanced/includes/filters.php:276
538
  msgid "Edit Roles"
539
  msgstr ""
540
 
541
+ #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:14
542
  msgid "Capabilities"
543
  msgstr ""
544
 
545
+ #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:36
546
  msgid "Backup"
547
  msgstr ""
548
 
549
+ #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:41
550
+ #: F:\snapshot\capability-manager-enhanced/includes/functions-admin.php:42
551
  msgid "Upgrade to Pro"
552
  msgstr ""
553
 
554
  #: F:\snapshot\capability-manager-enhanced/includes/handler.php:18
555
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:44
556
  msgid "New role created."
557
  msgstr ""
558
 
559
  #: F:\snapshot\capability-manager-enhanced/includes/handler.php:24
560
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:50
561
  msgid "Error: Failed creating the new role."
562
  msgstr ""
563
 
564
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:37
565
+ #, php-format
566
+ msgid "Role \"%s\" (id %s) renamed to \"%s\""
567
+ msgstr ""
568
+
569
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:104
570
  msgid "Incorrect capability name."
571
  msgstr ""
572
 
573
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:109
574
  msgid "Type / Taxonomy settings saved."
575
  msgstr ""
576
 
577
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:115
578
  msgid "Bad form received."
579
  msgstr ""
580
 
581
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:238
582
  msgid "You cannot remove Manage Capabilities from Administrators"
583
  msgstr ""
584
 
585
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:350
586
  #, php-format
587
  msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
588
  msgstr ""
589
 
590
+ #: F:\snapshot\capability-manager-enhanced/includes/handler.php:397
591
  #, php-format
592
  msgid "Role has been deleted. %1$d users moved to default role %2$s."
593
  msgstr ""
594
 
595
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:172
596
  msgid "Explicity negate this capability by storing as disabled"
597
  msgstr ""
598
 
599
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:173
600
  msgid "Explicitly negate these capabilities by storing as disabled"
601
  msgstr ""
602
 
603
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:174
604
  msgid "Post type registration does not define this capability distinctly"
605
  msgstr ""
606
 
607
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:175
608
  msgid "This capability is explicitly negated. Click to add/remove normally."
609
  msgstr ""
610
 
611
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:176
612
  msgid "Add or remove this capability from the WordPress role"
613
  msgstr ""
614
 
615
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:177
616
  msgid "Add or remove capability from the role normally"
617
  msgstr ""
618
 
619
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:415
620
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:456
621
  msgid "You do not have permission to manage capabilities."
622
  msgstr ""
623
 
624
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:470
625
  msgid "New capability added to role."
626
  msgstr ""
627
 
628
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:509
629
  msgid "Bad form Received"
630
  msgstr ""
631
 
632
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:655
633
  #, php-format
634
  msgid "If you like %s, please leave us a %s rating. Thank you!"
635
  msgstr ""
636
 
637
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:666
638
  msgid "About PublishPress Capabilities"
639
  msgstr ""
640
 
641
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:666
642
  msgid "About"
643
  msgstr ""
644
 
645
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:668
646
  msgid "Capabilites Documentation"
647
  msgstr ""
648
 
649
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:668
650
  msgid "Documentation"
651
  msgstr ""
652
 
653
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:670
654
  msgid "Contact the PublishPress team"
655
  msgstr ""
656
 
657
+ #: F:\snapshot\capability-manager-enhanced/includes/manager.php:670
658
  msgid "Contact"
659
  msgstr ""
660
 
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: user roles, capabilities, permissions, authors, editors, post types, taxon
7
  Requires at least: 4.9.7
8
  Tested up to: 5.4
9
  Requires PHP: 5.6.20
10
- Stable tag: 1.9.5
11
  License: GPLv3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
13
 
@@ -114,6 +114,11 @@ Fixed : Non-administrators with user editing capabilities could add new Administ
114
 
115
  == Changelog ==
116
 
 
 
 
 
 
117
  = 1.9.5 - 6 Apr 2020 =
118
  * Fixed : Fatal error loading Capabilities screen on a small percentage of installations
119
  * Compat : PublishPress Permissions - Post Type selections for "Type-Specific Capabilities" were not synchronized with PublishPress Permissions under some conditions
7
  Requires at least: 4.9.7
8
  Tested up to: 5.4
9
  Requires PHP: 5.6.20
10
+ Stable tag: 1.9.6
11
  License: GPLv3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
13
 
114
 
115
  == Changelog ==
116
 
117
+ = 1.9.6 - 23 Apr 2020 =
118
+ * Change : Add New Role retains capitalization as entered for role title (otherwise applies proper case)
119
+ * Feature : Rename Role sidebar box on Capabilities screen
120
+ * Fixed : Fatal error on plugin load if Administrator role does not exist
121
+
122
  = 1.9.5 - 6 Apr 2020 =
123
  * Fixed : Fatal error loading Capabilities screen on a small percentage of installations
124
  * Compat : PublishPress Permissions - Post Type selections for "Type-Specific Capabilities" were not synchronized with PublishPress Permissions under some conditions
vendor/composer/installed.json CHANGED
@@ -104,17 +104,17 @@
104
  },
105
  {
106
  "name": "publishpress/wordpress-version-notices",
107
- "version": "dev-master",
108
- "version_normalized": "9999999-dev",
109
  "source": {
110
  "type": "git",
111
  "url": "https://github.com/publishpress/WordPress-Version-Notices.git",
112
- "reference": "a86b0c364d973cd27d2bf5e73ef5afc131430e86"
113
  },
114
  "dist": {
115
  "type": "zip",
116
- "url": "https://api.github.com/repos/publishpress/WordPress-Version-Notices/zipball/a86b0c364d973cd27d2bf5e73ef5afc131430e86",
117
- "reference": "a86b0c364d973cd27d2bf5e73ef5afc131430e86",
118
  "shasum": ""
119
  },
120
  "require": {
@@ -124,7 +124,7 @@
124
  "require-dev": {
125
  "lucatume/wp-browser": "^2.2"
126
  },
127
- "time": "2020-04-02T16:14:09+00:00",
128
  "type": "library",
129
  "installation-source": "dist",
130
  "autoload": {
104
  },
105
  {
106
  "name": "publishpress/wordpress-version-notices",
107
+ "version": "dev-hotfix/issue-1",
108
+ "version_normalized": "dev-hotfix/issue-1",
109
  "source": {
110
  "type": "git",
111
  "url": "https://github.com/publishpress/WordPress-Version-Notices.git",
112
+ "reference": "6454e094e26b0b70ee9fbd4bdf189f99aa0389e2"
113
  },
114
  "dist": {
115
  "type": "zip",
116
+ "url": "https://api.github.com/repos/publishpress/WordPress-Version-Notices/zipball/6454e094e26b0b70ee9fbd4bdf189f99aa0389e2",
117
+ "reference": "6454e094e26b0b70ee9fbd4bdf189f99aa0389e2",
118
  "shasum": ""
119
  },
120
  "require": {
124
  "require-dev": {
125
  "lucatume/wp-browser": "^2.2"
126
  },
127
+ "time": "2020-04-06T19:14:20+00:00",
128
  "type": "library",
129
  "installation-source": "dist",
130
  "autoload": {
vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests\Fixtures;
28
-
29
- class Invokable
30
- {
31
- public function __invoke($value = null)
32
- {
33
- $service = new Service();
34
- $service->value = $value;
35
-
36
- return $service;
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests\Fixtures;
28
-
29
- class NonInvokable
30
- {
31
- public function __call($a, $b)
32
- {
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests\Fixtures;
28
-
29
- use Pimple\Container;
30
- use Pimple\ServiceProviderInterface;
31
-
32
- class PimpleServiceProvider implements ServiceProviderInterface
33
- {
34
- /**
35
- * Registers services on the given container.
36
- *
37
- * This method should only be used to configure services and parameters.
38
- * It should not get services.
39
- *
40
- * @param Container $pimple An Container instance
41
- */
42
- public function register(Container $pimple)
43
- {
44
- $pimple['param'] = 'value';
45
-
46
- $pimple['service'] = function () {
47
- return new Service();
48
- };
49
-
50
- $pimple['factory'] = $pimple->factory(function () {
51
- return new Service();
52
- });
53
- }
54
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests\Fixtures;
28
-
29
- /**
30
- * @author Igor Wiedler <igor@wiedler.ch>
31
- */
32
- class Service
33
- {
34
- public $value;
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php DELETED
@@ -1,77 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests;
28
-
29
- use PHPUnit\Framework\TestCase;
30
- use Pimple\Container;
31
-
32
- /**
33
- * @author Dominik Zogg <dominik.zogg@gmail.com>
34
- */
35
- class PimpleServiceProviderInterfaceTest extends TestCase
36
- {
37
- public function testProvider()
38
- {
39
- $pimple = new Container();
40
-
41
- $pimpleServiceProvider = new Fixtures\PimpleServiceProvider();
42
- $pimpleServiceProvider->register($pimple);
43
-
44
- $this->assertEquals('value', $pimple['param']);
45
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
46
-
47
- $serviceOne = $pimple['factory'];
48
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
49
-
50
- $serviceTwo = $pimple['factory'];
51
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
52
-
53
- $this->assertNotSame($serviceOne, $serviceTwo);
54
- }
55
-
56
- public function testProviderWithRegisterMethod()
57
- {
58
- $pimple = new Container();
59
-
60
- $pimple->register(new Fixtures\PimpleServiceProvider(), [
61
- 'anotherParameter' => 'anotherValue',
62
- ]);
63
-
64
- $this->assertEquals('value', $pimple['param']);
65
- $this->assertEquals('anotherValue', $pimple['anotherParameter']);
66
-
67
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
68
-
69
- $serviceOne = $pimple['factory'];
70
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
71
-
72
- $serviceTwo = $pimple['factory'];
73
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
74
-
75
- $this->assertNotSame($serviceOne, $serviceTwo);
76
- }
77
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php DELETED
@@ -1,610 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests;
28
-
29
- use PHPUnit\Framework\TestCase;
30
- use Pimple\Container;
31
-
32
- /**
33
- * @author Igor Wiedler <igor@wiedler.ch>
34
- */
35
- class PimpleTest extends TestCase
36
- {
37
- public function testWithString()
38
- {
39
- $pimple = new Container();
40
- $pimple['param'] = 'value';
41
-
42
- $this->assertEquals('value', $pimple['param']);
43
- }
44
-
45
- public function testWithClosure()
46
- {
47
- $pimple = new Container();
48
- $pimple['service'] = function () {
49
- return new Fixtures\Service();
50
- };
51
-
52
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
53
- }
54
-
55
- public function testServicesShouldBeDifferent()
56
- {
57
- $pimple = new Container();
58
- $pimple['service'] = $pimple->factory(function () {
59
- return new Fixtures\Service();
60
- });
61
-
62
- $serviceOne = $pimple['service'];
63
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
64
-
65
- $serviceTwo = $pimple['service'];
66
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
67
-
68
- $this->assertNotSame($serviceOne, $serviceTwo);
69
- }
70
-
71
- public function testShouldPassContainerAsParameter()
72
- {
73
- $pimple = new Container();
74
- $pimple['service'] = function () {
75
- return new Fixtures\Service();
76
- };
77
- $pimple['container'] = function ($container) {
78
- return $container;
79
- };
80
-
81
- $this->assertNotSame($pimple, $pimple['service']);
82
- $this->assertSame($pimple, $pimple['container']);
83
- }
84
-
85
- public function testIsset()
86
- {
87
- $pimple = new Container();
88
- $pimple['param'] = 'value';
89
- $pimple['service'] = function () {
90
- return new Fixtures\Service();
91
- };
92
-
93
- $pimple['null'] = null;
94
-
95
- $this->assertTrue(isset($pimple['param']));
96
- $this->assertTrue(isset($pimple['service']));
97
- $this->assertTrue(isset($pimple['null']));
98
- $this->assertFalse(isset($pimple['non_existent']));
99
- }
100
-
101
- public function testConstructorInjection()
102
- {
103
- $params = ['param' => 'value'];
104
- $pimple = new Container($params);
105
-
106
- $this->assertSame($params['param'], $pimple['param']);
107
- }
108
-
109
- public function testOffsetGetValidatesKeyIsPresent()
110
- {
111
- $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
112
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
113
-
114
- $pimple = new Container();
115
- echo $pimple['foo'];
116
- }
117
-
118
- /**
119
- * @group legacy
120
- */
121
- public function testLegacyOffsetGetValidatesKeyIsPresent()
122
- {
123
- $this->expectException(\InvalidArgumentException::class);
124
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
125
-
126
- $pimple = new Container();
127
- echo $pimple['foo'];
128
- }
129
-
130
- public function testOffsetGetHonorsNullValues()
131
- {
132
- $pimple = new Container();
133
- $pimple['foo'] = null;
134
- $this->assertNull($pimple['foo']);
135
- }
136
-
137
- public function testUnset()
138
- {
139
- $pimple = new Container();
140
- $pimple['param'] = 'value';
141
- $pimple['service'] = function () {
142
- return new Fixtures\Service();
143
- };
144
-
145
- unset($pimple['param'], $pimple['service']);
146
- $this->assertFalse(isset($pimple['param']));
147
- $this->assertFalse(isset($pimple['service']));
148
- }
149
-
150
- /**
151
- * @dataProvider serviceDefinitionProvider
152
- */
153
- public function testShare($service)
154
- {
155
- $pimple = new Container();
156
- $pimple['shared_service'] = $service;
157
-
158
- $serviceOne = $pimple['shared_service'];
159
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
160
-
161
- $serviceTwo = $pimple['shared_service'];
162
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
163
-
164
- $this->assertSame($serviceOne, $serviceTwo);
165
- }
166
-
167
- /**
168
- * @dataProvider serviceDefinitionProvider
169
- */
170
- public function testProtect($service)
171
- {
172
- $pimple = new Container();
173
- $pimple['protected'] = $pimple->protect($service);
174
-
175
- $this->assertSame($service, $pimple['protected']);
176
- }
177
-
178
- public function testGlobalFunctionNameAsParameterValue()
179
- {
180
- $pimple = new Container();
181
- $pimple['global_function'] = 'strlen';
182
- $this->assertSame('strlen', $pimple['global_function']);
183
- }
184
-
185
- public function testRaw()
186
- {
187
- $pimple = new Container();
188
- $pimple['service'] = $definition = $pimple->factory(function () {
189
- return 'foo';
190
- });
191
- $this->assertSame($definition, $pimple->raw('service'));
192
- }
193
-
194
- public function testRawHonorsNullValues()
195
- {
196
- $pimple = new Container();
197
- $pimple['foo'] = null;
198
- $this->assertNull($pimple->raw('foo'));
199
- }
200
-
201
- public function testFluentRegister()
202
- {
203
- $pimple = new Container();
204
- $this->assertSame($pimple, $pimple->register($this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock()));
205
- }
206
-
207
- public function testRawValidatesKeyIsPresent()
208
- {
209
- $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
210
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
211
-
212
- $pimple = new Container();
213
- $pimple->raw('foo');
214
- }
215
-
216
- /**
217
- * @group legacy
218
- */
219
- public function testLegacyRawValidatesKeyIsPresent()
220
- {
221
- $this->expectException(\InvalidArgumentException::class);
222
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
223
-
224
- $pimple = new Container();
225
- $pimple->raw('foo');
226
- }
227
-
228
- /**
229
- * @dataProvider serviceDefinitionProvider
230
- */
231
- public function testExtend($service)
232
- {
233
- $pimple = new Container();
234
- $pimple['shared_service'] = function () {
235
- return new Fixtures\Service();
236
- };
237
- $pimple['factory_service'] = $pimple->factory(function () {
238
- return new Fixtures\Service();
239
- });
240
-
241
- $pimple->extend('shared_service', $service);
242
- $serviceOne = $pimple['shared_service'];
243
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
244
- $serviceTwo = $pimple['shared_service'];
245
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
246
- $this->assertSame($serviceOne, $serviceTwo);
247
- $this->assertSame($serviceOne->value, $serviceTwo->value);
248
-
249
- $pimple->extend('factory_service', $service);
250
- $serviceOne = $pimple['factory_service'];
251
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
252
- $serviceTwo = $pimple['factory_service'];
253
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
254
- $this->assertNotSame($serviceOne, $serviceTwo);
255
- $this->assertNotSame($serviceOne->value, $serviceTwo->value);
256
- }
257
-
258
- public function testExtendDoesNotLeakWithFactories()
259
- {
260
- if (\extension_loaded('pimple')) {
261
- $this->markTestSkipped('Pimple extension does not support this test');
262
- }
263
- $pimple = new Container();
264
-
265
- $pimple['foo'] = $pimple->factory(function () {
266
- return;
267
- });
268
- $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) {
269
- return;
270
- });
271
- unset($pimple['foo']);
272
-
273
- $p = new \ReflectionProperty($pimple, 'values');
274
- $p->setAccessible(true);
275
- $this->assertEmpty($p->getValue($pimple));
276
-
277
- $p = new \ReflectionProperty($pimple, 'factories');
278
- $p->setAccessible(true);
279
- $this->assertCount(0, $p->getValue($pimple));
280
- }
281
-
282
- public function testExtendValidatesKeyIsPresent()
283
- {
284
- $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
285
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
286
-
287
- $pimple = new Container();
288
- $pimple->extend('foo', function () {
289
- });
290
- }
291
-
292
- /**
293
- * @group legacy
294
- */
295
- public function testLegacyExtendValidatesKeyIsPresent()
296
- {
297
- $this->expectException(\InvalidArgumentException::class);
298
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
299
-
300
- $pimple = new Container();
301
- $pimple->extend('foo', function () {
302
- });
303
- }
304
-
305
- public function testKeys()
306
- {
307
- $pimple = new Container();
308
- $pimple['foo'] = 123;
309
- $pimple['bar'] = 123;
310
-
311
- $this->assertEquals(['foo', 'bar'], $pimple->keys());
312
- }
313
-
314
- /** @test */
315
- public function settingAnInvokableObjectShouldTreatItAsFactory()
316
- {
317
- $pimple = new Container();
318
- $pimple['invokable'] = new Fixtures\Invokable();
319
-
320
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['invokable']);
321
- }
322
-
323
- /** @test */
324
- public function settingNonInvokableObjectShouldTreatItAsParameter()
325
- {
326
- $pimple = new Container();
327
- $pimple['non_invokable'] = new Fixtures\NonInvokable();
328
-
329
- $this->assertInstanceOf('Pimple\Tests\Fixtures\NonInvokable', $pimple['non_invokable']);
330
- }
331
-
332
- /**
333
- * @dataProvider badServiceDefinitionProvider
334
- */
335
- public function testFactoryFailsForInvalidServiceDefinitions($service)
336
- {
337
- $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
338
- $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
339
-
340
- $pimple = new Container();
341
- $pimple->factory($service);
342
- }
343
-
344
- /**
345
- * @group legacy
346
- * @dataProvider badServiceDefinitionProvider
347
- */
348
- public function testLegacyFactoryFailsForInvalidServiceDefinitions($service)
349
- {
350
- $this->expectException(\InvalidArgumentException::class);
351
- $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
352
-
353
- $pimple = new Container();
354
- $pimple->factory($service);
355
- }
356
-
357
- /**
358
- * @dataProvider badServiceDefinitionProvider
359
- */
360
- public function testProtectFailsForInvalidServiceDefinitions($service)
361
- {
362
- $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
363
- $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
364
-
365
- $pimple = new Container();
366
- $pimple->protect($service);
367
- }
368
-
369
- /**
370
- * @group legacy
371
- * @dataProvider badServiceDefinitionProvider
372
- */
373
- public function testLegacyProtectFailsForInvalidServiceDefinitions($service)
374
- {
375
- $this->expectException(\InvalidArgumentException::class);
376
- $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
377
-
378
- $pimple = new Container();
379
- $pimple->protect($service);
380
- }
381
-
382
- /**
383
- * @dataProvider badServiceDefinitionProvider
384
- */
385
- public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
386
- {
387
- $this->expectException(\Pimple\Exception\InvalidServiceIdentifierException::class);
388
- $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
389
-
390
- $pimple = new Container();
391
- $pimple['foo'] = $service;
392
- $pimple->extend('foo', function () {
393
- });
394
- }
395
-
396
- /**
397
- * @group legacy
398
- * @dataProvider badServiceDefinitionProvider
399
- */
400
- public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service)
401
- {
402
- $this->expectException(\InvalidArgumentException::class);
403
- $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
404
-
405
- $pimple = new Container();
406
- $pimple['foo'] = $service;
407
- $pimple->extend('foo', function () {
408
- });
409
- }
410
-
411
- /**
412
- * @group legacy
413
- * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected?
414
- */
415
- public function testExtendingProtectedClosureDeprecation()
416
- {
417
- $pimple = new Container();
418
- $pimple['foo'] = $pimple->protect(function () {
419
- return 'bar';
420
- });
421
-
422
- $pimple->extend('foo', function ($value) {
423
- return $value.'-baz';
424
- });
425
-
426
- $this->assertSame('bar-baz', $pimple['foo']);
427
- }
428
-
429
- /**
430
- * @dataProvider badServiceDefinitionProvider
431
- */
432
- public function testExtendFailsForInvalidServiceDefinitions($service)
433
- {
434
- $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
435
- $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
436
-
437
- $pimple = new Container();
438
- $pimple['foo'] = function () {
439
- };
440
- $pimple->extend('foo', $service);
441
- }
442
-
443
- /**
444
- * @group legacy
445
- * @dataProvider badServiceDefinitionProvider
446
- */
447
- public function testLegacyExtendFailsForInvalidServiceDefinitions($service)
448
- {
449
- $this->expectException(\InvalidArgumentException::class);
450
- $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
451
-
452
- $pimple = new Container();
453
- $pimple['foo'] = function () {
454
- };
455
- $pimple->extend('foo', $service);
456
- }
457
-
458
- public function testExtendFailsIfFrozenServiceIsNonInvokable()
459
- {
460
- $this->expectException(\Pimple\Exception\FrozenServiceException::class);
461
- $this->expectExceptionMessage('Cannot override frozen service "foo".');
462
-
463
- $pimple = new Container();
464
- $pimple['foo'] = function () {
465
- return new Fixtures\NonInvokable();
466
- };
467
- $foo = $pimple['foo'];
468
-
469
- $pimple->extend('foo', function () {
470
- });
471
- }
472
-
473
- public function testExtendFailsIfFrozenServiceIsInvokable()
474
- {
475
- $this->expectException(\Pimple\Exception\FrozenServiceException::class);
476
- $this->expectExceptionMessage('Cannot override frozen service "foo".');
477
-
478
- $pimple = new Container();
479
- $pimple['foo'] = function () {
480
- return new Fixtures\Invokable();
481
- };
482
- $foo = $pimple['foo'];
483
-
484
- $pimple->extend('foo', function () {
485
- });
486
- }
487
-
488
- /**
489
- * Provider for invalid service definitions.
490
- */
491
- public function badServiceDefinitionProvider()
492
- {
493
- return [
494
- [123],
495
- [new Fixtures\NonInvokable()],
496
- ];
497
- }
498
-
499
- /**
500
- * Provider for service definitions.
501
- */
502
- public function serviceDefinitionProvider()
503
- {
504
- return [
505
- [function ($value) {
506
- $service = new Fixtures\Service();
507
- $service->value = $value;
508
-
509
- return $service;
510
- }],
511
- [new Fixtures\Invokable()],
512
- ];
513
- }
514
-
515
- public function testDefiningNewServiceAfterFreeze()
516
- {
517
- $pimple = new Container();
518
- $pimple['foo'] = function () {
519
- return 'foo';
520
- };
521
- $foo = $pimple['foo'];
522
-
523
- $pimple['bar'] = function () {
524
- return 'bar';
525
- };
526
- $this->assertSame('bar', $pimple['bar']);
527
- }
528
-
529
- public function testOverridingServiceAfterFreeze()
530
- {
531
- $this->expectException(\Pimple\Exception\FrozenServiceException::class);
532
- $this->expectExceptionMessage('Cannot override frozen service "foo".');
533
-
534
- $pimple = new Container();
535
- $pimple['foo'] = function () {
536
- return 'foo';
537
- };
538
- $foo = $pimple['foo'];
539
-
540
- $pimple['foo'] = function () {
541
- return 'bar';
542
- };
543
- }
544
-
545
- /**
546
- * @group legacy
547
- */
548
- public function testLegacyOverridingServiceAfterFreeze()
549
- {
550
- $this->expectException(\RuntimeException::class);
551
- $this->expectExceptionMessage('Cannot override frozen service "foo".');
552
-
553
- $pimple = new Container();
554
- $pimple['foo'] = function () {
555
- return 'foo';
556
- };
557
- $foo = $pimple['foo'];
558
-
559
- $pimple['foo'] = function () {
560
- return 'bar';
561
- };
562
- }
563
-
564
- public function testRemovingServiceAfterFreeze()
565
- {
566
- $pimple = new Container();
567
- $pimple['foo'] = function () {
568
- return 'foo';
569
- };
570
- $foo = $pimple['foo'];
571
-
572
- unset($pimple['foo']);
573
- $pimple['foo'] = function () {
574
- return 'bar';
575
- };
576
- $this->assertSame('bar', $pimple['foo']);
577
- }
578
-
579
- public function testExtendingService()
580
- {
581
- $pimple = new Container();
582
- $pimple['foo'] = function () {
583
- return 'foo';
584
- };
585
- $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
586
- return "$foo.bar";
587
- });
588
- $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
589
- return "$foo.baz";
590
- });
591
- $this->assertSame('foo.bar.baz', $pimple['foo']);
592
- }
593
-
594
- public function testExtendingServiceAfterOtherServiceFreeze()
595
- {
596
- $pimple = new Container();
597
- $pimple['foo'] = function () {
598
- return 'foo';
599
- };
600
- $pimple['bar'] = function () {
601
- return 'bar';
602
- };
603
- $foo = $pimple['foo'];
604
-
605
- $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) {
606
- return "$bar.baz";
607
- });
608
- $this->assertSame('bar.baz', $pimple['bar']);
609
- }
610
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009-2017 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests\Psr11;
28
-
29
- use PHPUnit\Framework\TestCase;
30
- use Pimple\Container;
31
- use Pimple\Psr11\Container as PsrContainer;
32
- use Pimple\Tests\Fixtures\Service;
33
-
34
- class ContainerTest extends TestCase
35
- {
36
- public function testGetReturnsExistingService()
37
- {
38
- $pimple = new Container();
39
- $pimple['service'] = function () {
40
- return new Service();
41
- };
42
- $psr = new PsrContainer($pimple);
43
-
44
- $this->assertSame($pimple['service'], $psr->get('service'));
45
- }
46
-
47
- public function testGetThrowsExceptionIfServiceIsNotFound()
48
- {
49
- $this->expectException(\Psr\Container\NotFoundExceptionInterface::class);
50
- $this->expectExceptionMessage('Identifier "service" is not defined.');
51
-
52
- $pimple = new Container();
53
- $psr = new PsrContainer($pimple);
54
-
55
- $psr->get('service');
56
- }
57
-
58
- public function testHasReturnsTrueIfServiceExists()
59
- {
60
- $pimple = new Container();
61
- $pimple['service'] = function () {
62
- return new Service();
63
- };
64
- $psr = new PsrContainer($pimple);
65
-
66
- $this->assertTrue($psr->has('service'));
67
- }
68
-
69
- public function testHasReturnsFalseIfServiceDoesNotExist()
70
- {
71
- $pimple = new Container();
72
- $psr = new PsrContainer($pimple);
73
-
74
- $this->assertFalse($psr->has('service'));
75
- }
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php DELETED
@@ -1,131 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests\Psr11;
28
-
29
- use PHPUnit\Framework\TestCase;
30
- use Pimple\Container;
31
- use Pimple\Psr11\ServiceLocator;
32
- use Pimple\Tests\Fixtures;
33
-
34
- /**
35
- * ServiceLocator test case.
36
- *
37
- * @author Pascal Luna <skalpa@zetareticuli.org>
38
- */
39
- class ServiceLocatorTest extends TestCase
40
- {
41
- public function testCanAccessServices()
42
- {
43
- $pimple = new Container();
44
- $pimple['service'] = function () {
45
- return new Fixtures\Service();
46
- };
47
- $locator = new ServiceLocator($pimple, ['service']);
48
-
49
- $this->assertSame($pimple['service'], $locator->get('service'));
50
- }
51
-
52
- public function testCanAccessAliasedServices()
53
- {
54
- $pimple = new Container();
55
- $pimple['service'] = function () {
56
- return new Fixtures\Service();
57
- };
58
- $locator = new ServiceLocator($pimple, ['alias' => 'service']);
59
-
60
- $this->assertSame($pimple['service'], $locator->get('alias'));
61
- }
62
-
63
- public function testCannotAccessAliasedServiceUsingRealIdentifier()
64
- {
65
- $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
66
- $this->expectExceptionMessage('Identifier "service" is not defined.');
67
-
68
- $pimple = new Container();
69
- $pimple['service'] = function () {
70
- return new Fixtures\Service();
71
- };
72
- $locator = new ServiceLocator($pimple, ['alias' => 'service']);
73
-
74
- $service = $locator->get('service');
75
- }
76
-
77
- public function testGetValidatesServiceCanBeLocated()
78
- {
79
- $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
80
- $this->expectExceptionMessage('Identifier "foo" is not defined.');
81
-
82
- $pimple = new Container();
83
- $pimple['service'] = function () {
84
- return new Fixtures\Service();
85
- };
86
- $locator = new ServiceLocator($pimple, ['alias' => 'service']);
87
-
88
- $service = $locator->get('foo');
89
- }
90
-
91
- public function testGetValidatesTargetServiceExists()
92
- {
93
- $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
94
- $this->expectExceptionMessage('Identifier "invalid" is not defined.');
95
-
96
- $pimple = new Container();
97
- $pimple['service'] = function () {
98
- return new Fixtures\Service();
99
- };
100
- $locator = new ServiceLocator($pimple, ['alias' => 'invalid']);
101
-
102
- $service = $locator->get('alias');
103
- }
104
-
105
- public function testHasValidatesServiceCanBeLocated()
106
- {
107
- $pimple = new Container();
108
- $pimple['service1'] = function () {
109
- return new Fixtures\Service();
110
- };
111
- $pimple['service2'] = function () {
112
- return new Fixtures\Service();
113
- };
114
- $locator = new ServiceLocator($pimple, ['service1']);
115
-
116
- $this->assertTrue($locator->has('service1'));
117
- $this->assertFalse($locator->has('service2'));
118
- }
119
-
120
- public function testHasChecksIfTargetServiceExists()
121
- {
122
- $pimple = new Container();
123
- $pimple['service'] = function () {
124
- return new Fixtures\Service();
125
- };
126
- $locator = new ServiceLocator($pimple, ['foo' => 'service', 'bar' => 'invalid']);
127
-
128
- $this->assertTrue($locator->has('foo'));
129
- $this->assertFalse($locator->has('bar'));
130
- }
131
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Pimple.
5
- *
6
- * Copyright (c) 2009 Fabien Potencier
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is furnished
13
- * to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- * THE SOFTWARE.
25
- */
26
-
27
- namespace Pimple\Tests;
28
-
29
- use PHPUnit\Framework\TestCase;
30
- use Pimple\Container;
31
- use Pimple\ServiceIterator;
32
- use Pimple\Tests\Fixtures\Service;
33
-
34
- class ServiceIteratorTest extends TestCase
35
- {
36
- public function testIsIterable()
37
- {
38
- $pimple = new Container();
39
- $pimple['service1'] = function () {
40
- return new Service();
41
- };
42
- $pimple['service2'] = function () {
43
- return new Service();
44
- };
45
- $pimple['service3'] = function () {
46
- return new Service();
47
- };
48
- $iterator = new ServiceIterator($pimple, ['service1', 'service2']);
49
-
50
- $this->assertSame(['service1' => $pimple['service1'], 'service2' => $pimple['service2']], iterator_to_array($iterator));
51
- }
52
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/bin/update-code-for-tests.sh DELETED
@@ -1,13 +0,0 @@
1
- #!/bin/sh
2
-
3
- # Copy the dumb plugin into the test site
4
- echo 'Copying the dumb plugin one'
5
- rsync -a tests/_data/dumb-plugin-one ~/Volumes/wordpress_tests/wp-content/plugins/
6
- echo 'Copying the dumb plugin two'
7
- rsync -a tests/_data/dumb-plugin-two ~/Volumes/wordpress_tests/wp-content/plugins/
8
-
9
- # Copy the library into the dumb plugin
10
- echo 'Copying the library into the dumb plugin one'
11
- rsync -a ./ ~/Volumes/wordpress_tests/wp-content/plugins/dumb-plugin-one/vendor/publishpress/wordpress-version-notices/ --exclude .git
12
- echo 'Copying the library into the dumb plugin two'
13
- rsync -a ./ ~/Volumes/wordpress_tests/wp-content/plugins/dumb-plugin-two/vendor/publishpress/wordpress-version-notices/ --exclude .git
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/src/Module/TopNotice/Module.php CHANGED
@@ -28,6 +28,7 @@ namespace PPVersionNotices\Module\TopNotice;
28
  use PPVersionNotices\Module\AdInterface;
29
  use PPVersionNotices\Template\TemplateLoaderInterface;
30
  use PPVersionNotices\Template\TemplateInvalidArgumentsException;
 
31
 
32
  /**
33
  * Class Module
@@ -45,6 +46,11 @@ class Module implements AdInterface
45
  */
46
  private $templateLoader;
47
 
 
 
 
 
 
48
  /**
49
  * @var array
50
  */
@@ -74,16 +80,24 @@ class Module implements AdInterface
74
  */
75
  public function display($message = '', $linkURL = '')
76
  {
77
- if (empty($message) || empty($linkURL)) {
78
- throw new TemplateInvalidArgumentsException();
79
- }
 
 
 
 
 
 
80
 
81
- $context = [
82
- 'message' => $message,
83
- 'linkURL' => $linkURL
84
- ];
85
 
86
- $this->templateLoader->displayOutput('top-notice', 'notice', $context);
 
 
87
  }
88
 
89
  /**
@@ -93,21 +107,23 @@ class Module implements AdInterface
93
  {
94
  $screen = get_current_screen();
95
 
96
- foreach ($this->settings as $pluginName => $setting) {
97
- foreach ($setting['screens'] as $screenParams) {
98
- if ($screenParams === true) {
99
- return $setting;
100
- }
 
101
 
102
- $validVars = 0;
103
- foreach ($screenParams as $var => $value) {
104
- if (isset($screen->$var) && $screen->$var === $value) {
105
- $validVars++;
 
106
  }
107
- }
108
 
109
- if ($validVars === count($screenParams)) {
110
- return $setting;
 
111
  }
112
  }
113
  }
@@ -133,4 +149,12 @@ class Module implements AdInterface
133
  do_action(self::DISPLAY_ACTION, $settings['message'], $settings['link']);
134
  }
135
  }
 
 
 
 
 
 
 
 
136
  }
28
  use PPVersionNotices\Module\AdInterface;
29
  use PPVersionNotices\Template\TemplateLoaderInterface;
30
  use PPVersionNotices\Template\TemplateInvalidArgumentsException;
31
+ use PPVersionNotices\Template\TemplateNotFoundException;
32
 
33
  /**
34
  * Class Module
46
  */
47
  private $templateLoader;
48
 
49
+ /**
50
+ * @var array
51
+ */
52
+ private $exceptions = [];
53
+
54
  /**
55
  * @var array
56
  */
80
  */
81
  public function display($message = '', $linkURL = '')
82
  {
83
+ try {
84
+ if (empty($message) || empty($linkURL)) {
85
+ throw new TemplateInvalidArgumentsException();
86
+ }
87
+
88
+ $context = [
89
+ 'message' => $message,
90
+ 'linkURL' => $linkURL
91
+ ];
92
 
93
+ $this->templateLoader->displayOutput('top-notice', 'notice', $context);
94
+ } catch (\Exception $e) {
95
+ if (defined('WP_DEBUG') && WP_DEBUG) {
96
+ $this->exceptions[] = $e->getMessage();
97
 
98
+ add_action('admin_notices', [$this, 'showNoticeWithException']);
99
+ }
100
+ }
101
  }
102
 
103
  /**
107
  {
108
  $screen = get_current_screen();
109
 
110
+ if (!empty($screen)) {
111
+ foreach ($this->settings as $pluginName => $setting) {
112
+ foreach ($setting['screens'] as $screenParams) {
113
+ if ($screenParams === true) {
114
+ return $setting;
115
+ }
116
 
117
+ $validVars = 0;
118
+ foreach ($screenParams as $var => $value) {
119
+ if (isset($screen->$var) && $screen->$var === $value) {
120
+ $validVars++;
121
+ }
122
  }
 
123
 
124
+ if ($validVars === count($screenParams)) {
125
+ return $setting;
126
+ }
127
  }
128
  }
129
  }
149
  do_action(self::DISPLAY_ACTION, $settings['message'], $settings['link']);
150
  }
151
  }
152
+
153
+ public function showNoticeWithException()
154
+ {
155
+ $class = 'notice notice-error';
156
+ $message = implode("<br>", $this->exceptions);
157
+
158
+ printf('<div class="%1$s"><p>%2$s</p></div>', esc_attr($class), esc_html($message));
159
+ }
160
  }
vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoader.php CHANGED
@@ -58,8 +58,7 @@ class TemplateLoader implements TemplateLoaderInterface
58
  $templatePath = $this->templatesPath . '/' . $moduleName . '/' . $templateName . '.php';
59
 
60
  if (!file_exists($templatePath)) {
61
- //throw new TemplateNotFoundException('Template file not found');
62
- return false;
63
  }
64
 
65
  if ($return) {
58
  $templatePath = $this->templatesPath . '/' . $moduleName . '/' . $templateName . '.php';
59
 
60
  if (!file_exists($templatePath)) {
61
+ throw new TemplateNotFoundException('Template file not found: ' . $templatePath);
 
62
  }
63
 
64
  if ($return) {
vendor/publishpress/wordpress-version-notices/tests/_data/.gitkeep DELETED
File without changes
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-one/dumb-plugin-one.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- /**
3
- * Plugin Name: Dumb Plugin One
4
- * Plugin URI: https://publishpress.com/
5
- * Description: Dumb plugin for testing the library
6
- * Author: PublishPress
7
- * Author URI: https://publishpress.com
8
- * Version: 0.1.0
9
- *
10
- * Copyright (c) 2020 PublishPress
11
- *
12
- * GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
13
- *
14
- * This program is free software: you can redistribute it and/or modify
15
- * it under the terms of the GNU General Public License as published by
16
- * the Free Software Foundation, either version 3 of the License, or
17
- * (at your option) any later version.
18
- *
19
- * This program is distributed in the hope that it will be useful,
20
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
- * GNU General Public License for more details.
23
- *
24
- * You should have received a copy of the GNU General Public License
25
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
26
- *
27
- * @package PublishPress
28
- * @category Core
29
- * @author PublishPress
30
- * @copyright Copyright (C) 2020 PublishPress. All rights reserved.
31
- */
32
-
33
- if (!defined('DUMB_PLUGIN_ONE_LOADED')) {
34
- require_once 'version-notice.php';
35
-
36
- define('DUMB_PLUGIN_ONE_LOADED', true);
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-one/vendor/publishpress/wordpress-version-notices/.gitkeep DELETED
File without changes
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-one/version-notice.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- /**
3
- * Copyright (c) 2020 PublishPress
4
- *
5
- * GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
6
- *
7
- * This program is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- * GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU General Public License
18
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- *
20
- * @package PublishPress
21
- * @category Core
22
- * @author PublishPress
23
- * @copyright Copyright (C) 2020 PublishPress. All rights reserved.
24
- */
25
-
26
- // @todo: Load only in the admin
27
- if (!defined('PP_VERSION_NOTICES_LOADED')) {
28
- require_once __DIR__ . '/vendor/publishpress/wordpress-version-notices/includes.php';
29
- }
30
-
31
- add_filter(\PPVersionNotices\Module\TopNotice\Module::SETTINGS_FILTER, function ($settings) {
32
- $settings['dumb-plugin-one'] = [
33
- 'message' => 'You\'re using Dumb Plugin One Free. Please, %supgrade to pro%s.',
34
- 'link' => 'http://example.com/upgrade',
35
- 'screens' => [
36
- [
37
- 'base' => 'edit',
38
- 'id' => 'edit-post',
39
- 'post_type' => 'post',
40
- ],
41
- ]
42
- ];
43
-
44
- return $settings;
45
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-two/dumb-plugin-two.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- /**
3
- * Plugin Name: Dumb Plugin Two
4
- * Plugin URI: https://publishpress.com/
5
- * Description: Dumb plugin for testing the library
6
- * Author: PublishPress
7
- * Author URI: https://publishpress.com
8
- * Version: 0.1.0
9
- *
10
- * Copyright (c) 2020 PublishPress
11
- *
12
- * GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
13
- *
14
- * This program is free software: you can redistribute it and/or modify
15
- * it under the terms of the GNU General Public License as published by
16
- * the Free Software Foundation, either version 3 of the License, or
17
- * (at your option) any later version.
18
- *
19
- * This program is distributed in the hope that it will be useful,
20
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
- * GNU General Public License for more details.
23
- *
24
- * You should have received a copy of the GNU General Public License
25
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
26
- *
27
- * @package PublishPress
28
- * @category Core
29
- * @author PublishPress
30
- * @copyright Copyright (C) 2020 PublishPress. All rights reserved.
31
- */
32
-
33
- if (!defined('DUMB_PLUGIN_TWO_LOADED')) {
34
- require_once 'version-notice.php';
35
-
36
- define('DUMB_PLUGIN_TWO_LOADED', true);
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-two/vendor/publishpress/wordpress-version-notices/.gitkeep DELETED
File without changes
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-plugin-two/version-notice.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- /**
3
- * Copyright (c) 2020 PublishPress
4
- *
5
- * GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
6
- *
7
- * This program is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- * GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU General Public License
18
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- *
20
- * @package PublishPress
21
- * @category Core
22
- * @author PublishPress
23
- * @copyright Copyright (C) 2020 PublishPress. All rights reserved.
24
- */
25
-
26
- // @todo: Load only in the admin
27
- if (!defined('PP_VERSION_NOTICES_LOADED')) {
28
- require_once __DIR__ . '/vendor/publishpress/wordpress-version-notices/includes.php';
29
- }
30
-
31
- add_filter(\PPVersionNotices\Module\TopNotice\Module::SETTINGS_FILTER, function ($settings) {
32
- $settings['dumb-plugin-two'] = [
33
- 'message' => 'You\'re using Dumb Plugin Two Free. Please, %supgrade to pro%s.',
34
- 'link' => 'http://example.com/upgrade',
35
- 'screens' => [
36
- [
37
- 'base' => 'edit',
38
- 'id' => 'edit-post',
39
- 'post_type' => 'page',
40
- ],
41
- ]
42
- ];
43
-
44
- return $settings;
45
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-templates/Dumb/test1.php DELETED
@@ -1 +0,0 @@
1
- <h1>Test1</h1>
 
vendor/publishpress/wordpress-version-notices/tests/_data/dumb-templates/Dumb/test2.php DELETED
@@ -1 +0,0 @@
1
- <h1>Test2: <?php echo $foo1; ?>, <?php echo $foo2; ?></h1>
 
vendor/publishpress/wordpress-version-notices/tests/_data/dump.sql DELETED
@@ -1,524 +0,0 @@
1
- # ************************************************************
2
- # Sequel Pro SQL dump
3
- # Version 4541
4
- #
5
- # http://www.sequelpro.com/
6
- # https://github.com/sequelpro/sequelpro
7
- #
8
- # Host: 127.0.0.1 (MySQL 5.7.28)
9
- # Database: wordpress
10
- # Generation Time: 2020-03-03 16:30:50 +0000
11
- # ************************************************************
12
-
13
-
14
- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
15
- /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
16
- /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
17
- /*!40101 SET NAMES utf8 */;
18
- /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
19
- /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
20
- /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
21
-
22
-
23
- # Dump of table wp_commentmeta
24
- # ------------------------------------------------------------
25
-
26
- DROP TABLE IF EXISTS `wp_commentmeta`;
27
-
28
- CREATE TABLE `wp_commentmeta` (
29
- `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
30
- `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
31
- `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
32
- `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
33
- PRIMARY KEY (`meta_id`),
34
- KEY `comment_id` (`comment_id`),
35
- KEY `meta_key` (`meta_key`(191))
36
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
37
-
38
-
39
-
40
- # Dump of table wp_comments
41
- # ------------------------------------------------------------
42
-
43
- DROP TABLE IF EXISTS `wp_comments`;
44
-
45
- CREATE TABLE `wp_comments` (
46
- `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
47
- `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT '0',
48
- `comment_author` tinytext COLLATE utf8mb4_unicode_520_ci NOT NULL,
49
- `comment_author_email` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
50
- `comment_author_url` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
51
- `comment_author_IP` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
52
- `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
53
- `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
54
- `comment_content` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
55
- `comment_karma` int(11) NOT NULL DEFAULT '0',
56
- `comment_approved` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '1',
57
- `comment_agent` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
58
- `comment_type` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
59
- `comment_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
60
- `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
61
- PRIMARY KEY (`comment_ID`),
62
- KEY `comment_post_ID` (`comment_post_ID`),
63
- KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`),
64
- KEY `comment_date_gmt` (`comment_date_gmt`),
65
- KEY `comment_parent` (`comment_parent`),
66
- KEY `comment_author_email` (`comment_author_email`(10))
67
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
68
-
69
- LOCK TABLES `wp_comments` WRITE;
70
- /*!40000 ALTER TABLE `wp_comments` DISABLE KEYS */;
71
-
72
- INSERT INTO `wp_comments` (`comment_ID`, `comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, `comment_author_IP`, `comment_date`, `comment_date_gmt`, `comment_content`, `comment_karma`, `comment_approved`, `comment_agent`, `comment_type`, `comment_parent`, `user_id`)
73
- VALUES
74
- (1,1,'A WordPress Commenter','wapuu@wordpress.example','https://wordpress.org/','','2020-03-03 16:23:13','2020-03-03 16:23:13','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 <a href=\"https://gravatar.com\">Gravatar</a>.',0,'1','','',0,0);
75
-
76
- /*!40000 ALTER TABLE `wp_comments` ENABLE KEYS */;
77
- UNLOCK TABLES;
78
-
79
-
80
- # Dump of table wp_links
81
- # ------------------------------------------------------------
82
-
83
- DROP TABLE IF EXISTS `wp_links`;
84
-
85
- CREATE TABLE `wp_links` (
86
- `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
87
- `link_url` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
88
- `link_name` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
89
- `link_image` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
90
- `link_target` varchar(25) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
91
- `link_description` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
92
- `link_visible` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'Y',
93
- `link_owner` bigint(20) unsigned NOT NULL DEFAULT '1',
94
- `link_rating` int(11) NOT NULL DEFAULT '0',
95
- `link_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
96
- `link_rel` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
97
- `link_notes` mediumtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
98
- `link_rss` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
99
- PRIMARY KEY (`link_id`),
100
- KEY `link_visible` (`link_visible`)
101
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
102
-
103
-
104
-
105
- # Dump of table wp_options
106
- # ------------------------------------------------------------
107
-
108
- DROP TABLE IF EXISTS `wp_options`;
109
-
110
- CREATE TABLE `wp_options` (
111
- `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
112
- `option_name` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
113
- `option_value` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
114
- `autoload` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'yes',
115
- PRIMARY KEY (`option_id`),
116
- UNIQUE KEY `option_name` (`option_name`),
117
- KEY `autoload` (`autoload`)
118
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
119
-
120
- LOCK TABLES `wp_options` WRITE;
121
- /*!40000 ALTER TABLE `wp_options` DISABLE KEYS */;
122
-
123
- INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`)
124
- VALUES
125
- (1,'siteurl','http://localhost:32880','yes'),
126
- (2,'home','http://localhost:32880','yes'),
127
- (3,'blogname','Tests','yes'),
128
- (4,'blogdescription','Just another WordPress site','yes'),
129
- (5,'users_can_register','0','yes'),
130
- (6,'admin_email','anderson@publishpress.com','yes'),
131
- (7,'start_of_week','1','yes'),
132
- (8,'use_balanceTags','0','yes'),
133
- (9,'use_smilies','1','yes'),
134
- (10,'require_name_email','1','yes'),
135
- (11,'comments_notify','1','yes'),
136
- (12,'posts_per_rss','10','yes'),
137
- (13,'rss_use_excerpt','0','yes'),
138
- (14,'mailserver_url','mail.example.com','yes'),
139
- (15,'mailserver_login','login@example.com','yes'),
140
- (16,'mailserver_pass','password','yes'),
141
- (17,'mailserver_port','110','yes'),
142
- (18,'default_category','1','yes'),
143
- (19,'default_comment_status','open','yes'),
144
- (20,'default_ping_status','open','yes'),
145
- (21,'default_pingback_flag','1','yes'),
146
- (22,'posts_per_page','10','yes'),
147
- (23,'date_format','F j, Y','yes'),
148
- (24,'time_format','g:i a','yes'),
149
- (25,'links_updated_date_format','F j, Y g:i a','yes'),
150
- (26,'comment_moderation','0','yes'),
151
- (27,'moderation_notify','1','yes'),
152
- (28,'permalink_structure','','yes'),
153
- (29,'rewrite_rules','','yes'),
154
- (30,'hack_file','0','yes'),
155
- (31,'blog_charset','UTF-8','yes'),
156
- (32,'moderation_keys','','no'),
157
- (33,'active_plugins','a:0:{}','yes'),
158
- (34,'category_base','','yes'),
159
- (35,'ping_sites','http://rpc.pingomatic.com/','yes'),
160
- (36,'comment_max_links','2','yes'),
161
- (37,'gmt_offset','0','yes'),
162
- (38,'default_email_category','1','yes'),
163
- (39,'recently_edited','','no'),
164
- (40,'template','twentytwenty','yes'),
165
- (41,'stylesheet','twentytwenty','yes'),
166
- (42,'comment_whitelist','1','yes'),
167
- (43,'blacklist_keys','','no'),
168
- (44,'comment_registration','0','yes'),
169
- (45,'html_type','text/html','yes'),
170
- (46,'use_trackback','0','yes'),
171
- (47,'default_role','subscriber','yes'),
172
- (48,'db_version','45805','yes'),
173
- (49,'uploads_use_yearmonth_folders','1','yes'),
174
- (50,'upload_path','','yes'),
175
- (51,'blog_public','1','yes'),
176
- (52,'default_link_category','2','yes'),
177
- (53,'show_on_front','posts','yes'),
178
- (54,'tag_base','','yes'),
179
- (55,'show_avatars','1','yes'),
180
- (56,'avatar_rating','G','yes'),
181
- (57,'upload_url_path','','yes'),
182
- (58,'thumbnail_size_w','150','yes'),
183
- (59,'thumbnail_size_h','150','yes'),
184
- (60,'thumbnail_crop','1','yes'),
185
- (61,'medium_size_w','300','yes'),
186
- (62,'medium_size_h','300','yes'),
187
- (63,'avatar_default','mystery','yes'),
188
- (64,'large_size_w','1024','yes'),
189
- (65,'large_size_h','1024','yes'),
190
- (66,'image_default_link_type','none','yes'),
191
- (67,'image_default_size','','yes'),
192
- (68,'image_default_align','','yes'),
193
- (69,'close_comments_for_old_posts','0','yes'),
194
- (70,'close_comments_days_old','14','yes'),
195
- (71,'thread_comments','1','yes'),
196
- (72,'thread_comments_depth','5','yes'),
197
- (73,'page_comments','0','yes'),
198
- (74,'comments_per_page','50','yes'),
199
- (75,'default_comments_page','newest','yes'),
200
- (76,'comment_order','asc','yes'),
201
- (77,'sticky_posts','a:0:{}','yes'),
202
- (78,'widget_categories','a:2:{i:2;a:4:{s:5:\"title\";s:0:\"\";s:5:\"count\";i:0;s:12:\"hierarchical\";i:0;s:8:\"dropdown\";i:0;}s:12:\"_multiwidget\";i:1;}','yes'),
203
- (79,'widget_text','a:0:{}','yes'),
204
- (80,'widget_rss','a:0:{}','yes'),
205
- (81,'uninstall_plugins','a:0:{}','no'),
206
- (82,'timezone_string','','yes'),
207
- (83,'page_for_posts','0','yes'),
208
- (84,'page_on_front','0','yes'),
209
- (85,'default_post_format','0','yes'),
210
- (86,'link_manager_enabled','0','yes'),
211
- (87,'finished_splitting_shared_terms','1','yes'),
212
- (88,'site_icon','0','yes'),
213
- (89,'medium_large_size_w','768','yes'),
214
- (90,'medium_large_size_h','0','yes'),
215
- (91,'wp_page_for_privacy_policy','3','yes'),
216
- (92,'show_comments_cookies_opt_in','1','yes'),
217
- (93,'admin_email_lifespan','1598804593','yes'),
218
- (94,'initial_db_version','45805','yes'),
219
- (95,'wp_user_roles','a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:61:{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: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'),
220
- (96,'fresh_site','1','yes'),
221
- (97,'widget_search','a:2:{i:2;a:1:{s:5:\"title\";s:0:\"\";}s:12:\"_multiwidget\";i:1;}','yes'),
222
- (98,'widget_recent-posts','a:2:{i:2;a:2:{s:5:\"title\";s:0:\"\";s:6:\"number\";i:5;}s:12:\"_multiwidget\";i:1;}','yes'),
223
- (99,'widget_recent-comments','a:2:{i:2;a:2:{s:5:\"title\";s:0:\"\";s:6:\"number\";i:5;}s:12:\"_multiwidget\";i:1;}','yes'),
224
- (100,'widget_archives','a:2:{i:2;a:3:{s:5:\"title\";s:0:\"\";s:5:\"count\";i:0;s:8:\"dropdown\";i:0;}s:12:\"_multiwidget\";i:1;}','yes'),
225
- (101,'widget_meta','a:2:{i:2;a:1:{s:5:\"title\";s:0:\"\";}s:12:\"_multiwidget\";i:1;}','yes'),
226
- (102,'sidebars_widgets','a:4:{s:19:\"wp_inactive_widgets\";a:0:{}s:9:\"sidebar-1\";a:3:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";}s:9:\"sidebar-2\";a:3:{i:0;s:10:\"archives-2\";i:1;s:12:\"categories-2\";i:2;s:6:\"meta-2\";}s:13:\"array_version\";i:3;}','yes'),
227
- (103,'cron','a:4:{i:1583252596;a:5:{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;}}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;}}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:1583252600;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:1583252605;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;}}}s:7:\"version\";i:2;}','yes'),
228
- (104,'widget_pages','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
229
- (105,'widget_calendar','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
230
- (106,'widget_media_audio','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
231
- (107,'widget_media_image','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
232
- (108,'widget_media_gallery','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
233
- (109,'widget_media_video','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
234
- (110,'widget_tag_cloud','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
235
- (111,'widget_nav_menu','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
236
- (112,'widget_custom_html','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),
237
- (113,'_transient_doing_cron','1583252963.2819609642028808593750','yes'),
238
- (114,'_site_transient_update_core','O:8:\"stdClass\":4:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":10:{s:8:\"response\";s:6:\"latest\";s:8:\"download\";s:59:\"https://downloads.wordpress.org/release/wordpress-5.3.2.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":5:{s:4:\"full\";s:59:\"https://downloads.wordpress.org/release/wordpress-5.3.2.zip\";s:10:\"no_content\";s:70:\"https://downloads.wordpress.org/release/wordpress-5.3.2-no-content.zip\";s:11:\"new_bundled\";s:71:\"https://downloads.wordpress.org/release/wordpress-5.3.2-new-bundled.zip\";s:7:\"partial\";b:0;s:8:\"rollback\";b:0;}s:7:\"current\";s:5:\"5.3.2\";s:7:\"version\";s:5:\"5.3.2\";s:11:\"php_version\";s:6:\"5.6.20\";s:13:\"mysql_version\";s:3:\"5.0\";s:11:\"new_bundled\";s:3:\"5.3\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1583252602;s:15:\"version_checked\";s:5:\"5.3.2\";s:12:\"translations\";a:0:{}}','no'),
239
- (115,'_site_transient_update_plugins','O:8:\"stdClass\":4:{s:12:\"last_checked\";i:1583252602;s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:2:{s:19:\"akismet/akismet.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:21:\"w.org/plugins/akismet\";s:4:\"slug\";s:7:\"akismet\";s:6:\"plugin\";s:19:\"akismet/akismet.php\";s:11:\"new_version\";s:5:\"4.1.3\";s:3:\"url\";s:38:\"https://wordpress.org/plugins/akismet/\";s:7:\"package\";s:56:\"https://downloads.wordpress.org/plugin/akismet.4.1.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:59:\"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272\";s:2:\"1x\";s:59:\"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:61:\"https://ps.w.org/akismet/assets/banner-772x250.jpg?rev=479904\";}s:11:\"banners_rtl\";a:0:{}}s:9:\"hello.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}}}}','no'),
240
- (116,'_site_transient_timeout_theme_roots','1583254403','no'),
241
- (117,'_site_transient_theme_roots','a:4:{s:14:\"twentynineteen\";s:7:\"/themes\";s:15:\"twentyseventeen\";s:7:\"/themes\";s:13:\"twentysixteen\";s:7:\"/themes\";s:12:\"twentytwenty\";s:7:\"/themes\";}','no'),
242
- (118,'_site_transient_update_themes','O:8:\"stdClass\":4:{s:12:\"last_checked\";i:1583252603;s:7:\"checked\";a:4:{s:14:\"twentynineteen\";s:3:\"1.4\";s:15:\"twentyseventeen\";s:3:\"2.2\";s:13:\"twentysixteen\";s:3:\"2.0\";s:12:\"twentytwenty\";s:3:\"1.1\";}s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}}','no'),
243
- (119,'_site_transient_timeout_browser_ac05ce2b54bf6619514b7c7c2e5ab81a','1583857404','no'),
244
- (120,'_site_transient_browser_ac05ce2b54bf6619514b7c7c2e5ab81a','a:10:{s:4:\"name\";s:6:\"Chrome\";s:7:\"version\";s:13:\"80.0.3987.122\";s:8:\"platform\";s:9:\"Macintosh\";s:10:\"update_url\";s:29:\"https://www.google.com/chrome\";s:7:\"img_src\";s:43:\"http://s.w.org/images/browsers/chrome.png?1\";s:11:\"img_src_ssl\";s:44:\"https://s.w.org/images/browsers/chrome.png?1\";s:15:\"current_version\";s:2:\"18\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;s:6:\"mobile\";b:0;}','no'),
245
- (121,'_site_transient_timeout_php_check_a0c594a1902efeb727acf2a7ff080644','1583857405','no'),
246
- (122,'_site_transient_php_check_a0c594a1902efeb727acf2a7ff080644','a:5:{s:19:\"recommended_version\";s:3:\"7.3\";s:15:\"minimum_version\";s:6:\"5.6.20\";s:12:\"is_supported\";b:1;s:9:\"is_secure\";b:1;s:13:\"is_acceptable\";b:1;}','no'),
247
- (123,'can_compress_scripts','0','no'),
248
- (124,'_site_transient_timeout_community-events-2eef883554c6a8b141bb80b5a73a1a02','1583295807','no'),
249
- (125,'_site_transient_community-events-2eef883554c6a8b141bb80b5a73a1a02','a:3:{s:9:\"sandboxed\";b:0;s:8:\"location\";a:1:{s:2:\"ip\";s:10:\"172.23.0.0\";}s:6:\"events\";a:0:{}}','no'),
250
- (126,'_transient_timeout_feed_9bbd59226dc36b9b26cd43f15694c5c3','1583295807','no'),
251
- (127,'_transient_feed_9bbd59226dc36b9b26cd43f15694c5c3','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:49:\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:27:\"News – – 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:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 02 Mar 2020 10:27: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:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://wordpress.org/?v=5.4-beta3-47400\";s:7:\"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:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:37:\"The Month in WordPress: February 2020\";s:7:\"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:72:\"https://wordpress.org/news/2020/03/the-month-in-wordpress-february-2020/\";s: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, 02 Mar 2020 09:15: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: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:34:\"https://wordpress.org/news/?p=8393\";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:337:\"February 2020 was a busy month in the WordPress project! Most notably, there was an outpouring of sentiment in response to the unfortunate cancellation of WordCamp Asia. However, the team continues to work hard in the hopes of making WordCamp Asia 2021 happen. In addition, there were a number of releases and some exciting new [&#8230;]\";s: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:\"Hugh Lashbrooke\";s: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:9167:\"\n<p>February 2020 was a busy month in the WordPress project! Most notably, there was an outpouring of sentiment in response to the unfortunate cancellation of WordCamp Asia. However, the team continues to work hard in the hopes of making WordCamp Asia 2021 happen. In addition, there were a number of releases and some exciting new news during the month of February. Read on for more information!</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>WordCamp Asia 2020 Cancelled &amp; Pop-up Livestream</h2>\n\n\n\n<p>There was a ton of excitement around WordCamp Asia, not to mention all the effort from organizers, speakers, sponsors and volunteers. Unfortunately, on February 12th, <a href=\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\">WordCamp Asia was cancelled</a> due to concern and uncertainty around COVID-19. Since then, the organizing team has worked to <a href=\"https://2020.asia.wordcamp.org/2020/02/12/cancellation/\">refund tickets and to support hotel and air refunds</a>. In addition, a <a href=\"https://wordpress.org/news/2020/02/pop-up-livestream-on-february-22/\">pop-up livestream</a> featuring some WordCamp Asia speakers and a Fireside Chat and Q&amp;A with Matt Mullenweg took place on February 22nd.</p>\n\n\n\n<p>For a personal take on the cancellation of WordCamp Asia, read <a href=\"https://naoko.blog/2020/02/13/wordcamp-asia-2020-recap/\">this post from Naoko Takano</a>, the global lead organizer. Many thanks to the volunteers who worked hard to deliver WordCamp Asia. They’ve not only handled logistics associated with cancellation but have also announced that they’ve started <a href=\"https://2020.asia.wordcamp.org/2020/02/18/wordcamp-asia-2021/\">working on WordCamp Asia 2021</a> with some January dates in mind! To get the latest on WordCamp Asia, subscribe to updates <a href=\"https://2021.asia.wordcamp.org/\">here</a>.&nbsp;</p>\n\n\n\n<h2>WordPress 5.4 Beta is Now Available</h2>\n\n\n\n<p><a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">WordPress 5.4 Beta 1</a> was released on February 11 and quickly followed by <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-2/\">Beta 2</a> on February 18 and <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-3/\">Beta 3</a> on February 25. These two releases get us closer to our primary goal for 2020: full-site editing with blocks. WordPress 5.4 will merge ten releases of the Gutenberg plugin and is scheduled to be released on March 31, 2020. It will come with many new features, such as two new blocks for social links and buttons, and easier navigation in the block breadcrumbs. There are also a number of accessibility improvements, such as easier multi-block selection and easier tabbing, one of the editor’s biggest accessibility issues. <a href=\"https://make.wordpress.org/core/tag/5-4/\">5.4 will also include</a> many developer-focused changes, such as improved favicon handling and many new hooks and filters.</p>\n\n\n\n<p>Want to get involved in building WordPress? There are a number of ways to help right now! If you speak a language other than English, <a href=\"https://translate.wordpress.org/projects/wp/dev/\">help us translate WordPress</a>. Found a bug? Post it to the<a href=\"https://wordpress.org/support/forum/alphabeta/\"> Alpha/Beta area</a> in the support forums. You can also help us test the current beta by installing <a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">the WordPress Beta Tester plugin</a>. Just remember that the software is still in development, so we recommend against running it on a production site.&nbsp;</p>\n\n\n\n<h2>WordCamp Centroamérica is Looking for Speakers and Sponsors!</h2>\n\n\n\n<p><a href=\"https://2020.centroamerica.wordcamp.org/\">WordCamp Centroamérica</a> is the first regional WordCamp for Central America and will be held on September 17-19, 2020, in Managua, Nicaragua. The <a href=\"https://2020.centroamerica.wordcamp.org/2020/01/28/llamado-a-ponentes-call-for-speakers/#more-5\">Call for Speakers</a> and <a href=\"https://2020.centroamerica.wordcamp.org/2020/01/16/call-for-sponsors/\">Call for Sponsors</a> are now open, so if you’re interested in speaking at or sponsoring WordCamp Centroamérica, now is your chance! To learn more about the eent, visit and subscribe to updates on their <a href=\"https://2020.centroamerica.wordcamp.org/\">website</a>, or follow their <a href=\"https://www.facebook.com/WordCampCA\">Facebook</a>, <a href=\"https://twitter.com/WordCampCA\">Twitter</a>, and <a href=\"https://instagram.com/wccentroamerica\">Instagram</a> accounts.&nbsp;&nbsp;</p>\n\n\n\n<p>Want to get involved in the Community team and help make more amazing WordCamps happen? <a href=\"https://make.wordpress.org/community/\">Follow the blog</a> and join the #community-events channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>! You can also find out about other <a href=\"https://central.wordcamp.org/\">upcoming WordCamps here</a>.</p>\n\n\n\n<h2>Contribute to WordPress Core via GitHub</h2>\n\n\n\n<p>An experimental feature has been added to Trac to help improve collaboration between Trac and GitHub. This feature allows contributors to link GitHub pull requests opened against the official <a href=\"https://github.com/wordpress/wordpress-develop\">WordPress Develop Git mirror</a> to tickets, which will make GitHub contributions more visible in the related Trac ticket. To learn all the details and to see how it works, read <a href=\"https://make.wordpress.org/core/2020/02/21/working-on-trac-tickets-using-github-pull-requests/\">this post</a>.</p>\n\n\n\n<h2>Gutenberg Development Continues</h2>\n\n\n\n<p>There are many new exciting additions to Gutenberg! On February 5, <a href=\"https://make.wordpress.org/core/2020/02/05/whats-new-in-gutenberg-5-february/\">Gutenberg 7.4 saw two new features added</a>, including background color support to the Columns block and text color support for the Group block. Many enhancements were made, including a number of improvements to the Navigation Block.</p>\n\n\n\n<p>Gutenberg 7.5 was released on February 12, <a href=\"https://make.wordpress.org/core/2020/02/26/whats-new-in-gutenberg-26-february/\">with 7.6 following</a> on February 27. They introduced even more features, including the Social Links block as a stable block and a number of additional blocks for full-site editing, not to mention the many enhancements, new APIs, bug fixes, documentation, and updates.</p>\n\n\n\n<p>Want to get involved in building Gutenberg? Follow <a href=\"https://make.wordpress.org/core/\">the Core team blog</a>, contribute to <a href=\"https://github.com/WordPress/gutenberg/\">Gutenberg on GitHub</a>, and join the #core-editor channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>Further Reading:</h2>\n\n\n\n<ul><li>Aside from WordCamp Asia, two other WordCamps have been postponed due to COVID-19: <a href=\"https://2020-soltau.retreat.wordcamp.org/2020/02/29/verschiebung-des-wordcamp-retreat-postponing-of-wordcamp-retreat/\">WordCamp Retreat Soltau</a> and <a href=\"https://2020.geneve.wordcamp.org/wordcamp-geneve-reporte/\">WordCamp Genève</a>. News about further postponements or cancellations will be posted on <a href=\"https://central.wordcamp.org/news/\">the WordCamp Central blog</a>.</li><li>Automatic updates for themes and plugins <a href=\"https://make.wordpress.org/core/2020/02/26/feature-plugin-wp-auto-updates/\">are being planned</a> for inclusion in WordPress 5.5.</li><li>Version 2.2.1 of the WordPress Coding Standards has been released.</li><li>The Community Team <a href=\"https://make.wordpress.org/community/2020/02/06/community-team-reps-for-2020-2/\">has selected new team representatives</a> for 2020.</li><li>The Core team <a href=\"https://make.wordpress.org/core/2020/02/09/what-does-it-mean-to-be-a-component-maintainer-a-refresher/\">published a useful refresher</a> on what it means to be a component maintainer, along with some tips and best practices.</li><li><a href=\"https://make.wordpress.org/support/2020/02/changes-to-the-support-guidelines-for-linking-to-off-site-resources/\">The Support Team has announced</a> some amendments to their guidelines for linking to external resources when using the support forums.</li><li>The WordPress Foundation <a href=\"https://wordpressfoundation.org/2020/wordpress-foundation-donates-to-black-girls-code-and-internet-archive/\">has published financial information</a> regarding their charitable donations from 2019.</li><li>The Core XML Sitemaps project kicked off with <a href=\"https://make.wordpress.org/core/2020/02/24/xml-sitemaps-meeting-february-25th-2020/\">their first meeting</a> this month.</li><li>The Gutenberg team have created <a href=\"https://make.wordpress.org/core/2020/02/28/new-wordpress-create-block-package-for-block-scaffolding/\">a new @wordpress/create-block package</a> for scaffolding new blocks.</li></ul>\n\n\n\n<p><em>Have a story that we should include in the next “Month in WordPress” post? Please </em><a href=\"https://make.wordpress.org/community/month-in-wordpress-submissions/\"><em>submit it here</em></a><em>.</em></p>\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:4:\"8393\";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: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.4 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/2020/02/wordpress-5-4-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:\"Tue, 25 Feb 2020 22:10: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: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:34:\"https://wordpress.org/news/?p=8384\";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:343:\"WordPress 5.4 Beta 3 is now available! This software is still in development,&#160;so we don’t recommend you run it on a production site. Consider setting up a test site to play with the new version. You can test the WordPress 5.4 beta in two ways: Try the WordPress Beta Tester plugin (choose &#8220;bleeding edge nightlies&#8221; [&#8230;]\";s: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:\"David Baumwald\";s: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:2869:\"\n<p>WordPress 5.4 Beta 3 is now available!</p>\n\n\n\n<p><strong>This software is still in development,</strong>&nbsp;so we don’t recommend you run it on a production site. Consider setting up a test site to play with the new version.</p>\n\n\n\n<p>You can test the WordPress 5.4 beta in two ways:</p>\n\n\n\n<ul><li>Try the <a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a> plugin (choose &#8220;bleeding edge nightlies&#8221; or &#8220;Beta/RC &#8211; Bleeding edge&#8221; option in version 2.2.0 or later of the plugin) * you must already have updated to your site to &#8220;bleeding edge nightlies&#8221; for the &#8220;Beta/RC &#8211; Bleeding edge&#8221; option to be available</li><li>Or <a href=\"https://wordpress.org/wordpress-5.4-beta3.zip\">download the beta here</a> (zip). </li></ul>\n\n\n\n<p>WordPress 5.4 is slated for release on&nbsp;<a href=\"https://make.wordpress.org/core/5-4/\">March 31st, 2020</a>, and we need your help to get there.</p>\n\n\n\n<p>Thanks to the testing and feedback from everyone who tested <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-2/\">beta 2</a> (and <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">beta 1</a>) over <a href=\"https://core.trac.wordpress.org/query?status=closed&amp;changetime=02%2F18%2F2020..02%2F25%2F2020&amp;milestone=5.4&amp;col=id&amp;col=summary&amp;col=status&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=priority\">24 tickets have been closed</a> in the past week. </p>\n\n\n\n<h2>Some highlights </h2>\n\n\n\n<ul><li><a href=\"https://github.com/WordPress/gutenberg/pull/20424\">Round-up of Gutenberg fixes</a></li><li><a href=\"https://core.trac.wordpress.org/ticket/47606\">Display Site Health score on Dashboard</a></li></ul>\n\n\n\n<h2>Developer notes</h2>\n\n\n\n<p>WordPress 5.4 has lots of refinements to polish the developer experience. To keep up, subscribe to the&nbsp;<a href=\"https://make.wordpress.org/core/\">Make WordPress Core blog</a>&nbsp;and pay special attention to the&nbsp;<a href=\"https://make.wordpress.org/core/tag/5-4+dev-notes/\">developer notes</a>&nbsp;tag for updates on those and other changes that could affect your products.</p>\n\n\n\n<h2>How to Help</h2>\n\n\n\n<p>Do you speak a language other than English?&nbsp;<a href=\"https://translate.wordpress.org/projects/wp/dev/\">Help us translate WordPress into more than 100 languages</a>!</p>\n\n\n\n<p>If you think you’ve found a bug, you can post to the&nbsp;<a href=\"https://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area</a>&nbsp;in the support forums. We’d love to hear from you! If you’re comfortable writing a reproducible bug report,&nbsp;<a href=\"https://core.trac.wordpress.org/newticket\">file one on WordPress Trac</a>&nbsp;where you can also find a list of&nbsp;<a href=\"https://core.trac.wordpress.org/tickets/major\">known bugs</a>.</p>\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:4:\"8384\";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: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:\"Pop-Up Livestream on February 22\";s:7:\"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/2020/02/pop-up-livestream-on-february-22/\";s: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, 20 Feb 2020 23:06: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:1:{i:0;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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8377\";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:350:\"As mentioned in this post, Matt will host a livestream on February 22 during Bangkok daylight hours. He opened an invitation to any speaker who was affected by the cancellation, and the livestream will include the following fine people: Imran Sayed, Md Saif Hassan, Muhammad Muhsin, Nirav Mehta, Piccia Neri, Umar Draz, and Francesca Marano [&#8230;]\";s: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:2219:\"\n<p>As mentioned <a href=\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\">in this post</a>, Matt will host a <a href=\"https://livestream.w.org/\">livestream on February 22</a> during Bangkok daylight hours. He opened an invitation to any speaker who was affected by the cancellation, and the livestream will include the following fine people: <a href=\"https://profiles.wordpress.org/gsayed786/\">Imran Sayed</a>, <a href=\"https://profiles.wordpress.org/saiftheboss7/\">Md Saif Hassan</a>, <a href=\"https://profiles.wordpress.org/mmuhsin/\">Muhammad Muhsin</a>, <a href=\"https://profiles.wordpress.org/niravmehta/\">Nirav Mehta</a>, <a href=\"https://profiles.wordpress.org/piccianeri/\">Piccia Neri</a>, <a href=\"https://profiles.wordpress.org/itpixelz/\">Umar Draz</a>, and <a href=\"https://profiles.wordpress.org/francina/\">Francesca Marano</a> as well as a Fireside Chat and Q&amp;A<strong> </strong>with <a href=\"https://profiles.wordpress.org/matt/\">Matt Mullenweg</a> &amp; <a href=\"https://www.linkedin.com/in/monishavaradan/\">Monisha Varadan</a>.</p>\n\n\n\n<div class=\"wp-block-buttons aligncenter\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background has-vivid-cyan-blue-background-color\" href=\"https://livestream.w.org/\" target=\"_blank\" rel=\"https://livestream.w.org/ noopener noreferrer\">Join the stream</a></div>\n</div>\n\n\n\n<p>This should be a great way to get to hear from some speakers who have yet to share their knowledge on a global stage. WordPress is enriched by a multitude of experiences and perspectives, and I hope you are as excited as I am to hear new voices from a part of the world that is frequently underrepresented in the WordPress open source project.&nbsp;</p>\n\n\n\n<p>Also exciting, <a href=\"https://2020.asia.wordcamp.org/2020/02/18/wordcamp-asia-2021/\">the WordCamp Asia team has announced that they’re aiming for January 2021</a>, so please mark your calendars now! This small but mighty team of trailblazing organizers has shown great resilience over the years they’ve spent, building toward this event. I am personally grateful for the hard work they’ve done and have yet to do, and can’t wait to thank them in Bangkok next year.</p>\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:4:\"8377\";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: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.4 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/2020/02/wordpress-5-4-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, 18 Feb 2020 21:50: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: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:34:\"https://wordpress.org/news/?p=8360\";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:372:\"WordPress 5.4 Beta 2 is now available! This software is still in development,&#160;so we don’t recommend running it on a production site. Consider setting up a test site to play with the new version. You can test WordPress 5.4 beta 2 in two ways: Try the&#160;WordPress Beta Tester&#160;plugin (choose the “bleeding edge nightlies” option) Or&#160;download [&#8230;]\";s: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:\"David Baumwald\";s: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:3397:\"\n<p>WordPress 5.4 Beta 2 is now available!</p>\n\n\n\n<p><strong>This software is still in development,</strong>&nbsp;so we don’t recommend running it on a production site. Consider setting up a test site to play with the new version.</p>\n\n\n\n<p>You can test WordPress 5.4 beta 2 in two ways:</p>\n\n\n\n<ul><li>Try the&nbsp;<a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a>&nbsp;plugin (choose the “bleeding edge nightlies” option)</li><li>Or&nbsp;<a href=\"https://wordpress.org/wordpress-5.4-beta2.zip\">download the beta here</a>&nbsp;(zip).</li></ul>\n\n\n\n<p>WordPress 5.4 is slated for release on&nbsp;<a href=\"https://make.wordpress.org/core/5-4/\">March 31, 2020</a>, and <strong>we need your help to get there</strong>!</p>\n\n\n\n<p>Thank you to all of the contributors that tested the <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">beta 1</a> development release and provided feedback. Testing for bugs is an important part of polishing each release and a great way to contribute to WordPress.</p>\n\n\n\n<h2>Some highlights</h2>\n\n\n\n<p>Since <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">beta 1</a>, <a href=\"https://core.trac.wordpress.org/query?status=closed&amp;changetime=02%2F12%2F2020..&amp;milestone=5.4&amp;group=component&amp;col=id&amp;col=summary&amp;col=owner&amp;col=type&amp;col=priority&amp;col=component&amp;col=version&amp;order=priority\">27 bugs</a> have been fixed. Here is a summary of a few changes included in beta 2:</p>\n\n\n\n<ul><li>Block editor: Columns in the Block Library that have unassigned-width will now grow equally.</li><li>Block editor: The custom gradient picker now works in languages other than English.</li><li>Block editor: When choosing colors is not possible, the color formatter no longer shows.</li><li>Privacy: The privacy request form fields have been adjusted to be more consistent on mobile.</li><li>Privacy: The notice offering help when editing the privacy policy page will no longer show at the top of All Pages in the admin area.</li><li>Site Health: The error codes for failed REST API tests now display correctly.</li></ul>\n\n\n\n<h2>Developer notes</h2>\n\n\n\n<p>WordPress 5.4 has lots of refinements to polish the developer experience. To keep up, subscribe to the&nbsp;<a href=\"https://make.wordpress.org/core/\">Make WordPress Core blog</a>&nbsp;and pay special attention to the&nbsp;<a href=\"https://make.wordpress.org/core/tag/5-4+dev-notes/\">developers’ notes</a>&nbsp;for updates on those and other changes that could affect your products.</p>\n\n\n\n<h2>How to Help</h2>\n\n\n\n<p>Do you speak a language other than English?&nbsp;<a href=\"https://translate.wordpress.org/projects/wp/dev/\">Help us translate WordPress into more than 100 languages</a>!</p>\n\n\n\n<p>If you think you’ve found a bug, you can post to the&nbsp;<a href=\"https://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area</a>&nbsp;in the support forums. We’d love to hear from you! </p>\n\n\n\n<p>If you’re comfortable writing a reproducible bug report, <a href=\"https://core.trac.wordpress.org/newticket\">file one on WordPress Trac</a>, where you can also find a list of <a href=\"https://core.trac.wordpress.org/tickets/major\">known bugs</a>.</p>\n\n\n\n<p><em>UPDATE &#8211; 20 Feb, 2020: This post was originally misattributed to Francesca Marano. The proper authorship has been corrected.</em></p>\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:4:\"8360\";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:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"People of WordPress: Kori Ashton\";s:7:\"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/2020/02/people-of-wordpress-kori-ashton/\";s: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, 14 Feb 2020 21:12: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:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s: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:34:\"https://wordpress.org/news/?p=8348\";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:374:\"You’ve probably heard that WordPress is open-source software, and may know that it’s created and run by volunteers. WordPress enthusiasts share many examples of how WordPress changed people’s lives for the better. This monthly series shares some of those lesser-known, amazing stories. The beginning In 1998, Kori created her very first HTML website. Her dad [&#8230;]\";s: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:\"Yvette Sonneveld\";s: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:11825:\"\n<p><em>You’ve probably heard that WordPress is open-source software, and may know that it’s created and run by volunteers. WordPress enthusiasts share many examples of how WordPress changed people’s lives for the better. This monthly series shares some of those lesser-known, amazing stories.</em></p>\n\n\n\n<h2><strong>The beginning</strong></h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton.jpg?w=632&#038;ssl=1\" alt=\"\" class=\"wp-image-8349\" srcset=\"https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton.jpg?w=960&amp;ssl=1 960w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton.jpg?resize=300%2C300&amp;ssl=1 300w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton.jpg?resize=150%2C150&amp;ssl=1 150w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton.jpg?resize=768%2C767&amp;ssl=1 768w\" sizes=\"(max-width: 632px) 100vw, 632px\" data-recalc-dims=\"1\" /><figcaption>Kori Ashton</figcaption></figure>\n\n\n\n<p>In 1998, Kori created her very first HTML website. Her dad was creating websites for a living at the time. She needed a website for her band because she wanted to be a rockstar. Under his training, and with a little bit of self-teaching, she learned how to build a website.</p>\n\n\n\n<p>She had been aware of WordPress since 2005, and, in 2008 a client specifically hired her as a freelancer to develop a WordPress website. Kori went straight to Google and taught herself how to build a WordPress website over a single weekend. She really enjoyed the experience of working with WordPress.</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>My mind was absolutely blown when I saw the drag and drop options inside of menus to create dropdowns and a form builder.&nbsp;</em></p><cite>Kori Ashton</cite></blockquote>\n\n\n\n<p>She suggested to her dad that WordPress could be a solution for their customers who wanted to be able to access their own websites. Previously, they had found this was not as easy for clients unless they had specific software and knew how to code. So, Kori and her dad worked to learn WordPress over the next few years.&nbsp;</p>\n\n\n\n<p>Then in 2012, Kori and her parents launched their new business, WebTegrity, in San Antonio, Texas, US. It started out small: just Kori and her parents. Soon, they started subcontracting design work and quickly continued to grow their team.</p>\n\n\n\n<h2><strong>Going big time</strong></h2>\n\n\n\n<p>Even though the business was in a saturated industry in San Antonio &#8212; over 700 freelancers and agencies were providing similar services &#8212; Kori and her parents were able to sell their company five years later, with a multi-million dollar valuation. There were a few choices they made early on that led to that success.</p>\n\n\n\n<h3><strong>1. They picked a niche: WordPress specialists&nbsp;</strong></h3>\n\n\n\n<p>At the time, there were no WordPress-specific agencies in San Antonio. They emphasized the fact that WordPress was the only CMS their company would use. Prospective clients looking for a different type of CMS solution were not the right fit for their business. They also offered on-site, WordPress training and weekend workshops that were open to anyone (including other agencies) as one of their revenue streams. They soon were established as a city-wide WordPress authority.</p>\n\n\n\n<h3><strong>2. They cultivated a culture</strong></h3>\n\n\n\n<p>Kori wanted a great culture and environment in her company and to make that happen, she needed to hire the right people. She believes you must be careful about who you bring into the culture of your business, but particularly when hiring leaders into that community. You can’t teach passion so you’ve got to find people that are excited about what you do. You also need to look for integrity, creativity, a love for solving problems, and an eagerness to keep getting better.&nbsp;</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>You can teach code all day long, but be sure to find people with the right hearts to join your community and then train them up the right way. This way you will grow your culture in a healthy way.</em></p><cite>Kori Ashton</cite></blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https://i0.wp.com/wordpress.org/news/files/2020/02/kori-ashton-2.png?w=632&#038;ssl=1\" alt=\"\" class=\"wp-image-8350\" srcset=\"https://i0.wp.com/wordpress.org/news/files/2020/02/kori-ashton-2.png?w=711&amp;ssl=1 711w, https://i0.wp.com/wordpress.org/news/files/2020/02/kori-ashton-2.png?resize=287%2C300&amp;ssl=1 287w\" sizes=\"(max-width: 632px) 100vw, 632px\" data-recalc-dims=\"1\" /><figcaption>Kori and her two sons</figcaption></figure>\n\n\n\n<h3><strong>3. They learned how to build sustainable revenue streams</strong></h3>\n\n\n\n<p>Like many other web development agencies, WebTegrity started out with the “one-time fee and you’re done” business model. This business model is known for unpredictable revenue streams. Hearing about recurring revenue business models at WordCamp Austin was a lightbulb moment for Kori. She started drafting a more sustainable business model on the way back home.&nbsp;</p>\n\n\n\n<p>Support packages were key to their new business plan. Clients needed ongoing support. They decided to include at least 12 months of post-launch support into their web development projects. This doubled their revenue in one year and allowed them to even out their revenue streams.</p>\n\n\n\n<h3><strong>4. They knew the importance of reputation</strong></h3>\n\n\n\n<p>Kori believes that every client, whether they have a $5,000 or a $50,000 budget, should get the same type of boutique-style, white glove, concierge relationship.</p>\n\n\n\n<p>Every single project results in the absolute best solution for a client&#8217;s needs. In addition to that, offering training helped boost their reputation. Explaining the lingo of the web development and SEO fields and showing the processes used, added transparency. It helped set and meet expectations and it built trust.&nbsp;</p>\n\n\n\n<h3><strong>5. They proactively gave back to the community</strong></h3>\n\n\n\n<p>Kori heard Matt Mullenweg speak about <a href=\"https://wordpress.org/five-for-the-future/\">Five For The Future</a> at WordCamp US. He encouraged people in the audience who make a living using WordPress, to find ways to give back 5% of their time to building the WordPress software and community. Matt talked about how firms and individuals could give back to the community. He suggested, for instance to:</p>\n\n\n\n<ul><li>start a WordPress Meetup group</li><li>present at a Meetup event&nbsp;</li><li>facilitate a Meetup group where maybe you’re just the organizer and you never have to speak because you’re not a fan of speaking</li><li>help organize a WordCamp</li><li>volunteer at a WordCamp</li><li>write a tutorial and tell people how to do WordPress related things&nbsp;</li><li>run a workshop</li><li>make a video</li></ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?fit=632%2C422&amp;ssl=1\" alt=\"\" class=\"wp-image-8351\" srcset=\"https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?w=1500&amp;ssl=1 1500w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?resize=300%2C200&amp;ssl=1 300w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?resize=1024%2C683&amp;ssl=1 1024w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?resize=768%2C513&amp;ssl=1 768w, https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?w=1264&amp;ssl=1 1264w\" sizes=\"(max-width: 632px) 100vw, 632px\" /><figcaption>If you&#8217;re making an income using WordPress, consider giving 5% of your time back to building the software and/or the community.</figcaption></figure>\n\n\n\n<p>This gave Kori another light bulb moment. She could make videos to give back. So her way to give back to the WordPress community is her <a href=\"https://www.youtube.com/user/webtegrity\">YouTube channel</a>.</p>\n\n\n\n<p>Every Wednesday, she published a video on how to improve your online marketing. This made a huge impact, both inside the WordPress community, but also in her own business.</p>\n\n\n\n<h2><strong>Understanding</strong></h2>\n\n\n\n<p>So, in summary, how did Kori and her family turn their business into a multi-million dollar buyout in just five years?&nbsp;</p>\n\n\n\n<p>Ultimately, it was about understanding that you have to build value. About keeping an exit strategy in mind while building your business. For instance when naming your company. Will it stand alone? Could it turn into a brand that you could sell as an independent entity?</p>\n\n\n\n<ul><li>Think about revenue streams and watch sales margins.</li><li>Be sure to include healthy margins.&nbsp;</li><li>Don’t hire until you have no further option.</li><li>Make sure to structure your offerings in such a way that you’re actually recouping your value.&nbsp;</li><li>Understand entrepreneurship, watch Shark Tank, read more tutorials, watch more videos.</li><li>Get involved in the WordPress community. Get to know its core leaders, the speakers that travel around to all the WordCamps. Start following them on Twitter and try to understand what they’re sharing.&nbsp;</li></ul>\n\n\n\n<p>In the end, the fact that Kori was so active in the San Antonio community helped enable the sale.</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>We just kept hammering on the fact that we were the go-to place here in San Antonio for WordPress. We kept training, we kept doing free opportunities, going out and speaking at different events, and people kept seeing us. We kept showing up, kept giving back and kept establishing ourselves as the authority.</em></p><cite>Kori Ashton</cite></blockquote>\n\n\n\n<h2><strong>Contributors</strong></h2>\n\n\n\n<p>Alison Rothwell (<a href=\"https://profiles.wordpress.org/wpfiddlybits/\">@wpfiddlybits</a>), Yvette Sonneveld (<a href=\"https://profiles.wordpress.org/yvettesonneveld/\">@yvettesonneveld</a>), Abha Thakor (<a href=\"https://profiles.wordpress.org/webcommsat/\">@webcommsat</a>),&nbsp; Josepha Haden (<a href=\"https://profiles.wordpress.org/chanthaboune/\">@chanthaboune</a>), Topher DeRosia (<a href=\"https://profiles.wordpress.org/topher1kenobe/\">@topher1kenobe</a>).</p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large\"><img src=\"https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=632%2C474&#038;ssl=1\" alt=\"\" class=\"wp-image-7025\" srcset=\"https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?w=1024&amp;ssl=1 1024w, https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=300%2C225&amp;ssl=1 300w, https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=768%2C576&amp;ssl=1 768w\" sizes=\"(max-width: 632px) 100vw, 632px\" data-recalc-dims=\"1\" /></figure>\n</div>\n\n\n\n<div class=\"wp-block-column\" style=\"flex-basis:66.66%\">\n<p><em>This post is based on an <a href=\"https://heropress.com/essays/build-company-wordpress/\">article originally published on HeroPress.com</a>, a community initiative created by </em><a href=\"https://profiles.wordpress.org/topher1kenobe/\"><em>Topher DeRosia</em></a><em>. HeroPress highlights people in the WordPress community who have overcome barriers and whose stories would otherwise go unheard.Meet more WordPress community members over at </em><a href=\"https://heropress.com/\"><em>HeroPress.com</em></a><em>!</em></p>\n</div>\n</div>\n</div></div>\n</div></div>\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:4:\"8348\";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:39:\"WordCamp Asia Cancelled Due to COVID-19\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\";s: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, 12 Feb 2020 04:23: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:8:\"category\";a:1:{i:0;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:34:\"https://wordpress.org/news/?p=8344\";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:349:\"I&#8217;ve arrived at the difficult decision to cancel the inaugural WordCamp Asia event, which was planned to take place in Bangkok on February 21st. The excitement and anticipation around this event have been huge, but there are too many unknowns around the health issues unfolding right now in the region to explicitly encourage a large [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:1267:\"\n<p>I&#8217;ve arrived at the difficult decision to cancel the inaugural WordCamp Asia event, which was planned to take place in Bangkok on February 21st. The excitement and anticipation around this event have been huge, but there are too many unknowns around the health issues unfolding right now in the region to explicitly encourage a large public gathering bringing together over 1,300 people from around the world.</p>\n\n\n\n<p>We’re going to explore if speakers — including myself — can do our sessions with the same content and at the same time that was originally planned, just online instead of in-person so we can achieve our goal of bringing the pan-Asian community closer together without putting anyone&#8217;s health at additional risk.</p>\n\n\n\n<p>Regardless, I greatly appreciate the work everyone — from organizers to attendees,&nbsp; speakers to sponsors — put into making this a big success. So many people have come together to create an event to inspire and connect WordPressers, and I am confident that this passion will carry through into the event next year. Our thoughts are with everyone affected by the virus so far, and we sincerely hope that everything is resolved quickly so that this precaution looks unnecessary in hindsight.</p>\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:4:\"8344\";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: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.4 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/2020/02/wordpress-5-4-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:\"Tue, 11 Feb 2020 22:43:44 +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:34:\"https://wordpress.org/news/?p=8322\";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:361:\"WordPress 5.4 Beta 1 is now available for testing! This software is still in development,&#160;so we don’t recommend running it on a production site. Consider setting up a test site to play with the new version. You can test the WordPress 5.4 beta in two ways: Try the&#160;WordPress Beta Tester&#160;plugin (choose the “bleeding edge nightlies” [&#8230;]\";s: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:\"Francesca Marano\";s: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:7546:\"\n<p>WordPress 5.4 Beta 1 is now available for testing!</p>\n\n\n\n<p><strong>This software is still in development,</strong>&nbsp;so we don’t recommend running it on a production site. Consider setting up a test site to play with the new version.</p>\n\n\n\n<p>You can test the WordPress 5.4 beta in two ways:</p>\n\n\n\n<ul><li>Try the&nbsp;<a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a>&nbsp;plugin (choose the “bleeding edge nightlies” option)</li><li>Or&nbsp;<a href=\"https://wordpress.org/wordpress-5.4-beta1.zip\">download the beta here&nbsp;(zip)</a>.</li></ul>\n\n\n\n<p>WordPress 5.4 is slated for release on&nbsp;<a href=\"https://make.wordpress.org/core/5-4/\">March 31, 2020</a>, and <strong>we need your help to get there</strong>!</p>\n\n\n\n<p>While the <strong>primary goal for 2020 is full-site editing with blocks</strong>, contributors to WordPress are working across every area of the project to ensure the software continues moving forward.</p>\n\n\n\n<p>Testing for bugs is an important part of polishing the release during the beta stage and a great way to contribute. Here are some of the big changes and features to pay close attention to while testing.</p>\n\n\n\n<h2>Block Editor: features and improvements</h2>\n\n\n\n<p>WordPress 5.4 Core will merge ten releases of the Gutenberg plugin. This means there’s a long list of exciting new features. Here are just a few:</p>\n\n\n\n<ul><li>Two new blocks: social links and buttons.</li><li>More color options for Button, Cover, Group and Column blocks .</li><li>A <a href=\"https://github.com/WordPress/gutenberg/pull/18041\">Welcome Guide modal</a>.</li><li>Tools for adding featured images in the Latest Posts block.</li><li>Easier navigation in the block breadcrumbs.</li></ul>\n\n\n\n<p>Some additional changes to make note of:</p>\n\n\n\n<ul><li>On mobile, the toolbar stays on top, so you can&#8217;t lose it.</li><li>Easier image sizing in the Gallery block.</li><li>Drag-and-drop images into the featured-image box.</li><li>Several new APIs.</li><li>Friendlier offline error messages on REST API request failures.</li><li>Table block captions.</li><li>You can now color just parts of the text in any RichText block. </li></ul>\n\n\n\n<h3>Accessibility improvements</h3>\n\n\n\n<ul><li>Easier multi-block selection.&nbsp;</li><li>Support for changing an image&#8217;s title attribute within the Image block.</li><li>Easier tabbing. This had been one of the editor&#8217;s biggest accessibility problems, but now tabbing works with the block’s sidebar.</li><li>Visual switch between Edit and Navigation modes and enable screen reader announcements.</li></ul>\n\n\n\n<p>To see all of the features for each release in detail check out the release posts:&nbsp;<a href=\"https://make.wordpress.org/core/2019/10/02/whats-new-in-gutenberg-2-october/\">6.6</a>, <a href=\"https://make.wordpress.org/core/2019/10/16/whats-new-in-gutenberg-16-october/\">6.7</a>, <a href=\"https://make.wordpress.org/core/2019/10/30/whats-new-in-gutenberg-30-october/\">6.8</a>, <a href=\"https://make.wordpress.org/core/2019/11/13/whats-new-in-gutenberg-13-november/\">6.9</a>, <a href=\"https://make.wordpress.org/core/2019/11/27/whats-new-in-gutenberg-27-november/\">7.0</a>, <a href=\"https://make.wordpress.org/core/2019/12/11/whats-new-in-gutenberg-11-december/\">7.1</a>, <a href=\"https://make.wordpress.org/core/2020/01/09/whats-new-in-gutenberg-8-january/\">7.2</a>, <a href=\"https://make.wordpress.org/core/2020/01/22/whats-new-in-gutenberg-22-january/\">7.3</a>, <a href=\"https://make.wordpress.org/core/2020/02/05/whats-new-in-gutenberg-5-february/\">7.4</a> and 7.5.</p>\n\n\n\n<h3>Continuing efforts to improve performance</h3>\n\n\n\n<p>The block editor team has achieved a 14% loading time reduction and 51% time-to-type reduction, for a particularly sizable post (~ 36,000 words, ~1,000 blocks) since WordPress 5.3.</p>\n\n\n\n<h2>Wait! There&#8217;s more</h2>\n\n\n\n<h3>Site Health </h3>\n\n\n\n<p>When a project powers 34% of the world&#8217;s websites, there must be a focus on security. This is why contributors continue working so hard on the Site Health Project.</p>\n\n\n\n<p>WordPress 5.4 adds a widget on the dashboard that warns administrators of potential issues that could affect their site&#8217;s performance or security. A call-to-action button directs them to the Site Health screen for details and suggested fixes.</p>\n\n\n\n<h3>Accessibility improvements</h3>\n\n\n\n<p>WordPress strives to improve accessibility with every release, and this release is no different. Version 5.4 will contain the following accessibility enhancements:</p>\n\n\n\n<ul><li>Better focus management in Menu, Customizer and Site Health screens, to fix some existing keyboard navigation issues.</li><li>Easier keyboard navigation for better semantics in the Media modal.</li><li>An easier-to-read Privacy Policy Guide.</li></ul>\n\n\n\n<h2>For Developers</h2>\n\n\n\n<p>5.4 also contains a bunch of developer focused changes.</p>\n\n\n\n<h3>Calendar Widget </h3>\n\n\n\n<p>The HTML 5.1 specification mandates that a <code>&lt;tfoot&gt;</code> tag must follow&nbsp;<code>&lt;tbody&gt;</code> tag (which was not the case in the calendar widget). WordPress 5.4 moves the navigation links to a <code>&lt;nav&gt;</code> HTML element immediately following the <code>&lt;table&gt;</code> element in order to produce valid HTML.</p>\n\n\n\n<h3>apply_shortcodes() as an alias for do_shortcode()</h3>\n\n\n\n<p>Instead of using <code>do_shortcode()</code>, <code>apply_shortcodes()</code> should be utilized instead. While <code>do_shortcode()</code> is not being deprecated, the new function delivers better semantics.</p>\n\n\n\n<h3>Better favicon handling</h3>\n\n\n\n<p>Now favicon requests can be managed with more flexibility. Administrators can choose a favicon in the Customizer, or upload a <code>/favicon.ico</code> file. The WordPress logo will always load as a fallback.</p>\n\n\n\n<h3>Other changes for developers</h3>\n\n\n\n<ul><li>Clearer information about errors in <code>wp_login_failed</code>.</li><li>Site ID has been added to the <code>newblog_notify_siteadmin</code> filter for multisite installs.</li><li>Support has been added for the required WordPress and PHP version headers in themes.</li><li>Embed support has been added for TikTok.</li></ul>\n\n\n\n<p>Keep your eyes on the&nbsp;<a href=\"https://make.wordpress.org/core/\">Make WordPress Core blog</a>&nbsp;for &nbsp;<a href=\"https://make.wordpress.org/core/tag/5-4+dev-notes/\">5.4-related developer notes</a>&nbsp;in the coming weeks, breaking down these and other changes in greater detail.</p>\n\n\n\n<p>So far, contributors have fixed more than <a href=\"https://core.trac.wordpress.org/query?status=closed&amp;milestone=5.4&amp;group=component&amp;max=500&amp;col=id&amp;col=summary&amp;col=owner&amp;col=type&amp;col=priority&amp;col=component&amp;col=version&amp;order=priority\">255 tickets in WordPress 5.4</a> with more to come.</p>\n\n\n\n<h2>How You Can Help</h2>\n\n\n\n<p>Do you speak a language other than English?&nbsp;<a href=\"https://translate.wordpress.org/projects/wp/dev/\">Help us translate WordPress into more than 100 languages</a>!</p>\n\n\n\n<p>If you think you’ve found a bug, you can post to the&nbsp;<a href=\"https://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area</a>&nbsp;in the support forums. We’d love to hear from you! If you’re comfortable writing a reproducible bug report,&nbsp;<a href=\"https://core.trac.wordpress.org/newticket\">file one on WordPress Trac</a>&nbsp;where you can also find a list of&nbsp;<a href=\"https://core.trac.wordpress.org/tickets/major\">known bugs</a>.</p>\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:4:\"8322\";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: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:36:\"The Month in WordPress: January 2020\";s:7:\"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/2020/02/the-month-in-wordpress-january-2020/\";s: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, 03 Feb 2020 09:54: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: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:34:\"https://wordpress.org/news/?p=8316\";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:\"Following an action-packed December, 2020 is off to a fine start with some new releases and announcements. Read on to find out what happened in the WordPress project in January. Release of Gutenberg 7.2 &#38; 7.3 Gutenberg 7.2, the first Gutenberg release of 2020, was deployed on January 8th and included over 180 pull requests [&#8230;]\";s: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:10:\"Angela Jin\";s: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:5943:\"\n<p>Following an action-packed December, 2020 is off to a fine start with some new releases and announcements. Read on to find out what happened in the WordPress project in January.</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>Release of Gutenberg 7.2 &amp; 7.3</h2>\n\n\n\n<p><a href=\"https://make.wordpress.org/core/2020/01/09/whats-new-in-gutenberg-8-january/\">Gutenberg 7.2</a>, the first Gutenberg release of 2020, was deployed on January 8th and included over 180 pull requests from more than 56 contributors. This was followed soon after by <a href=\"https://make.wordpress.org/core/2020/01/22/whats-new-in-gutenberg-22-january/\">Gutenberg 7.3</a>. New features include a new Buttons block, support in adding links to Media &amp; Text block images, improvements to the Navigation and Gallery blocks, performance improvements, and accessibility enhancements. These releases also included many additional enhancements, fixes, new APIs, documentation, and more.</p>\n\n\n\n<p>Want to get involved in building Gutenberg? Follow <a href=\"https://make.wordpress.org/core/\">the Core team blog</a>, contribute to <a href=\"https://github.com/WordPress/gutenberg/\">Gutenberg on GitHub</a>, and join the #core-editor channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<h2>Proposal for an XML Sitemaps Feature Plugin</h2>\n\n\n\n<p>In June last year, a team of contributors <a href=\"https://make.wordpress.org/core/2019/06/12/xml-sitemaps-feature-project-proposal/\">proposed</a> a feature plugin that would bring standardized XML sitemaps to WordPress Core. Since then, the team has been working to bring this to reality and <a href=\"https://make.wordpress.org/core/2020/01/27/feature-plugin-xml-sitemaps/\">have now published a working plugin</a> to demonstrate this new capability.</p>\n\n\n\n<p>The plugin is still in development, but the included features already provide much-needed functionality from which all WordPress sites can benefit. You can install the plugin from your WordPress dashboard or <a href=\"https://wordpress.org/plugins/core-sitemaps/\">download it here</a>.</p>\n\n\n\n<p>Want to get involved in bringing this feature to Core? Follow <a href=\"https://make.wordpress.org/core/\">the Core team blog</a>, report any issues you find <a href=\"https://github.com/GoogleChromeLabs/wp-sitemaps/issues\">on GitHub</a>, and join the #core channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<h2>A New Block-Based Themes Meeting</h2>\n\n\n\n<p>The Theme Review Team has <a href=\"https://make.wordpress.org/themes/2020/01/29/new-bi-weekly-block-based-themes-meeting/\">announced</a> that they will be holding bi-weekly meetings in the #themereview channel focused on discussing block-based themes. If you are interested in discussing themes within the context of Gutenberg’s full-site editing framework, this will be the place to do so! The first meeting will be held on Wednesday, February 5, at 16:00 UTC.</p>\n\n\n\n<p>Want to get involved with the Theme Review Team or <a href=\"https://make.wordpress.org/themes/handbook/get-involved/become-a-reviewer/\">become a reviewer</a>? Follow <a href=\"https://make.wordpress.org/themes/\">their blog</a>, and join the #themereview channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>Further Reading</h2>\n\n\n\n<ul><li>The Core team has started work on WordPress 5.4 and kicked off their planning with <a href=\"https://make.wordpress.org/core/2020/01/14/wordpress-5-4-planning-roundup/\">a summary post</a>. You can follow all the v5.4 updates by watching <a href=\"https://make.wordpress.org/core/tag/5-4/\">the version tag</a> on the Core team blog.</li><li>The inaugural <a href=\"https://2020.asia.wordcamp.org/\">WordCamp Asia</a> event is taking place in February. This will be the largest WordPress event in the region, bringing together around 1,500 WordPress enthusiasts from around the world.</li><li>Two WordPress community leaders, <a href=\'https://profiles.wordpress.org/chanthaboune/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>chanthaboune</a> and <a href=\'https://profiles.wordpress.org/andreamiddleton/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>andreamiddleton</a>, <a href=\"https://wordpress.org/news/2020/01/wordpress-leaders-nominated-for-cmx-awards/\">were nominated for CMX awards</a> due to their work on the WordPress project, with <a href=\'https://profiles.wordpress.org/andreamiddleton/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>andreamiddleton</a> winning the award for Executive Leader of a Community Team.</li><li><a href=\"https://make.wordpress.org/core/2020/01/29/lazy-loading-images-in-wordpress-core/\">A feature plugin has been proposed</a> that introduces lazy-loading images to WordPress Core, which will be a huge step forward in improving performance all across the web.</li><li>The Core team has put together <a href=\"https://make.wordpress.org/core/handbook/tutorials/faq-for-new-contributors/\">an extensive and informative FAQ</a> to help new contributors get involved in contributing to the project.</li><li>One key priority for Gutenberg is the ability to control the block editor. There are already a number of APIs that control the experience, but there is a lack of consistency and missing APIs. <a href=\"https://make.wordpress.org/core/2020/01/23/controlling-the-block-editor/\">A method to address this</a> has been proposed.</li><li>The Design team <a href=\"https://make.wordpress.org/design/2020/01/24/gutenberg-phase-2-friday-design-update-43/\">published detailed information</a> on the recent design improvements in Gutenberg.</li></ul>\n\n\n\n<p><em>Have a story that we should include in the next “Month in WordPress” post? Please </em><a href=\"https://make.wordpress.org/community/month-in-wordpress-submissions/\"><em>submit it here</em></a><em>.</em></p>\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:4:\"8316\";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:76:\"\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:6:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:36:\"People of WordPress: Robert Cheleuka\";s:7:\"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/2020/01/people-of-wordpress-robert-cheleuka/\";s: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:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"https://wordpress.org/news/2020/01/people-of-wordpress-robert-cheleuka/#comments\";s: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, 25 Jan 2020 15:26: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:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s: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:34:\"https://wordpress.org/news/?p=8300\";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:385:\"You’ve probably heard that WordPress is open-source software, and may know that it’s created and run by volunteers. WordPress enthusiasts share many examples of how WordPress changed people’s lives for the better. This monthly series shares some of those lesser-known, amazing stories. Meet Robert Cheleuka Robert is a self-taught graphic and motion designer turned web [&#8230;]\";s: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:\"Yvette Sonneveld\";s: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:8428:\"\n<p><em>You’ve probably heard that WordPress is open-source software, and may know that it’s created and run by volunteers. WordPress enthusiasts share many examples of how WordPress changed people’s lives for the better. This monthly series shares some of those lesser-known, amazing stories.</em></p>\n\n\n\n<h2><strong>Meet Robert Cheleuka</strong></h2>\n\n\n\n<p>Robert is a self-taught graphic and motion designer turned web designer (and aspiring web developer) from Malawi, Africa. Over the years, he has grown fond of WordPress and has become a loyal user. Still, the journey is rough.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https://i2.wp.com/wordpress.org/news/files/2020/01/DSC08818.jpg?resize=632%2C790&#038;ssl=1\" alt=\"Robert Cheleuka\" class=\"wp-image-8303\" data-recalc-dims=\"1\" /><figcaption>Robert Cheleuka</figcaption></figure>\n\n\n\n<h3><strong>Malawi</strong></h3>\n\n\n\n<p>Malawi is one of the poorest countries in the world. A tiny landlocked country with a population of 17 million, it’s largely rural and still considered a developing country. The average entry-level monthly pay for most skilled jobs is about $110. If you&#8217;re employed full-time in the creative industry and if you’re very lucky, you might be able to earn more than that. Employees earning more than $300 a month are rare to non-existent.</p>\n\n\n\n<p>Robert has been a freelance graphic designer since about 2011. He started by doing gigs from his dorm in college and from home. Earnings from his freelance jobs increased his interest in entrepreneurship and he started to consider starting his own creative agency.</p>\n\n\n\n<h3><strong>How Robert was introduced to WordPress</strong></h3>\n\n\n\n<p>Robert first came into contact with WordPress in 2014 when he and a friend started a local tech blog. Before that, all he knew was basic, outdated HTML from high school and some knowledge of Adobe Dreamweaver. They decided to use WordPress, and their new blog looked like it came from the future. They used a theme from the repo and got such positive feedback from the blog they decided to open a content and media publishing agency.</p>\n\n\n\n<p>While they got a few web redesign jobs thanks to the exposure the blog brought, they lacked the administrative and business skills needed and ended up going their separate ways. Then in his first real job after college Robert finally took it upon himself to learn the ins and outs of WordPress. He learned how to install WordPress on a server and did some research on customizing themes. </p>\n\n\n\n<p>With that knowledge alone he got his first web design clients and started earning nearly as much as he did at his job. Robert soon realized that free WordPress themes would only take him so far, especially with his limited code skills.</p>\n\n\n\n<p>Because in Malawi only people who travel abroad have access to credit cards, paying for premium themes was impossible. Like many WordPress designers in developing countries, Robert turned to using pirated themes instead. He knew that was both unsafe and unethical, and decided to learn how to code. Knowing how to build themes from scratch would surely help him rise above the competition. </p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?fit=632%2C632&amp;ssl=1\" alt=\"\" class=\"wp-image-8304\" srcset=\"https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?w=1080&amp;ssl=1 1080w, https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?resize=300%2C300&amp;ssl=1 300w, https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?resize=1024%2C1024&amp;ssl=1 1024w, https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?resize=150%2C150&amp;ssl=1 150w, https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?resize=768%2C768&amp;ssl=1 768w\" sizes=\"(max-width: 632px) 100vw, 632px\" /></figure>\n\n\n\n<h3><strong>The WordPress community from Robert’s perspective</strong></h3>\n\n\n\n<p>Robert doesn’t have a lot of interaction with the WordPress community. Although he would search for solutions from blogs about WordPress he had never actually talked to or asked anyone from the community for a solution.&nbsp;</p>\n\n\n\n<p>Robert believes that this isolation is the result of a glass ceiling &#8212; the WordPress community is partially online and partially in-person, but there isn’t a local group in Malawi. And because Malawi, like many other developing nations, lacks a way to pay online many can’t access premium support, online learning, or most other types of professional development. No matter how welcoming the people of WordPress might be, it can still feel like it mostly belongs to those with enough privilege to conduct business on the internet.</p>\n\n\n\n<h3><strong>WordPress &amp; inclusion</strong></h3>\n\n\n\n<p>As most freelancers know, it’s really hard to learn while you also still need to earn. Add pitching to clients and shipping graphic design projects… there are only so many hours in a day.</p>\n\n\n\n<p>Robert didn’t have a programming background and had always been more of a creative person. In order to grow as a web designer/developer, he needed to learn PHP. Again, without access to a credit card, that was complicated. Also, free coding training wasn’t as widely available as it is now.</p>\n\n\n\n<p>Robert wishes that more developers would consider alternative ways for users who cannot pay for courses, themes, or plugins (whether that’s because of available infrastructure or otherwise). He wishes that WordPress tutors and developers would open up ways to accommodate aspiring learners in developing countries who cannot access plugins, courses, and themes, to be able to give back and to participate at another level.</p>\n\n\n\n<p>WordPress has allowed him to build an income he would have no other way of earning and it makes a huge difference. He believes sharing stories like his will hopefully make WordPress products and services become more universally available. In addition, he hopes that more aspiring, self-taught developers will find courage in reaching out to connect with others out there.</p>\n\n\n\n<h2><strong>Contributors</strong></h2>\n\n\n\n<p>Alison Rothwell (<a href=\'https://profiles.wordpress.org/wpfiddlybits/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>wpfiddlybits</a>), Yvette Sonneveld (<a href=\'https://profiles.wordpress.org/yvettesonneveld/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>yvettesonneveld</a>), Josepha Haden (<a href=\'https://profiles.wordpress.org/chanthaboune/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>chanthaboune</a>), Siobhan Cunningham (<a href=\'https://profiles.wordpress.org/siobhanseija/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>siobhanseija</a>), Topher DeRosia (<a href=\'https://profiles.wordpress.org/topher1kenobe/\' class=\'mention\'><span class=\'mentions-prefix\'>@</span>topher1kenobe</a>)</p>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large\"><img src=\"https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=632%2C474&#038;ssl=1\" alt=\"\" class=\"wp-image-7025\" srcset=\"https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?w=1024&amp;ssl=1 1024w, https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=300%2C225&amp;ssl=1 300w, https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=768%2C576&amp;ssl=1 768w\" sizes=\"(max-width: 632px) 100vw, 632px\" data-recalc-dims=\"1\" /></figure>\n</div>\n\n\n\n<div class=\"wp-block-column\" style=\"flex-basis:66.66%\">\n<p> <em>This post is based on an article originally published on HeroPress.com, a community initiative created by <a href=\"https://profiles.wordpress.org/topher1kenobe/\">Topher DeRosia</a>. HeroPress highlights people in the WordPress community who have overcome barriers and whose stories would otherwise go unheard.</em> </p>\n</div>\n</div>\n\n\n\n<p> <em>Meet more WordPress community members over at </em><a href=\"https://heropress.com/\"><em>HeroPress.com</em></a><em>!</em> </p>\n\n\n\n<p><br></p>\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:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"https://wordpress.org/news/2020/01/people-of-wordpress-robert-cheleuka/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"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:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"8300\";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: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:42:\"WordPress Leaders Nominated for CMX Awards\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://wordpress.org/news/2020/01/wordpress-leaders-nominated-for-cmx-awards/\";s: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, 15 Jan 2020 21:42: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:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:6:\"Awards\";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:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8288\";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:\"Two members of the WordPress leadership team were nominated for excellent work in their field in the first ever Community Industry Awards. Andrea Middleton is nominated for Executive Leader of a Community Team and Josepha Haden Chomphosy is nominated for Community Professional of the Year. CMX is one of the largest professional organizations dedicated to [&#8230;]\";s: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:\"Francesca Marano\";s: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:4014:\"\n<p>Two members of the WordPress leadership team were nominated for excellent work in their field in the first ever Community Industry Awards. <a href=\"https://profiles.wordpress.org/andreamiddleton/\">Andrea Middleton</a> is nominated for <a href=\"https://cmxhub.com/awards-executive\">Executive Leader of a Community Team</a> and <a href=\"https://profiles.wordpress.org/chanthaboune/\">Josepha Haden Chomphosy</a> is nominated for <a href=\"https://cmxhub.com/awards-professional\">Community Professional of the Year</a>.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?fit=632%2C281&amp;ssl=1\" alt=\"\" class=\"wp-image-8292\" srcset=\"https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?w=2412&amp;ssl=1 2412w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?resize=300%2C133&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?resize=1024%2C455&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?resize=768%2C341&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?resize=1536%2C683&amp;ssl=1 1536w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?resize=2048%2C910&amp;ssl=1 2048w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?w=1264&amp;ssl=1 1264w, https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?w=1896&amp;ssl=1 1896w\" sizes=\"(max-width: 632px) 100vw, 632px\" /></figure>\n\n\n\n<p><a href=\"https://cmxhub.com/\">CMX</a> is one of the largest professional organizations dedicated to community builders. The awards were open to public nomination, and finalists were chosen by panels of their peers in the CMX community.</p>\n\n\n\n<p>Andrea has been a vital community strategist for the WordPress project since 2011. Her work to build and support a vibrant community has played a part in the success around the popular open source CMS. Her work is sponsored by Automattic, where she leads a team that focuses on educational efforts, funding, and in-person community-driven events that serve a global base.</p>\n\n\n\n<p>Josepha has been the Executive Director of the WordPress project since 2019. Her work to coordinate and guide volunteer efforts spans 20 teams and involves thousands of volunteers. Her work is also sponsored by Automattic, where she leads the open source division that focuses on all aspects of open source contribution including design, development, volunteer engagement, and the health of the overall WordPress ecosystem.</p>\n\n\n\n<h2>Votes are Open</h2>\n\n\n\n<p>Final recipients are chosen with open voting — if you feel like either Andrea or Josepha have had an impact on your careers, your trajectory in the WordPress project, or the health of WordPress as a whole, there are three ways you can show your support:</p>\n\n\n\n<ul><li>Stop by and vote for them (Andrea&nbsp;<a href=\"https://href.li/?https://cmxhub.com/awards-executive\">here</a>, Josepha&nbsp;<a href=\"https://href.li/?https://cmxhub.com/awards-professional\">here</a>)!</li><li>Share this post with your own communities!</li><li>Tweet some inspirational thoughts about your time/experience/learnings with WordPress (using&nbsp;#WordPress, naturally)!</li></ul>\n\n\n\n<h2>Thank You Notes</h2>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>A lot of care and passion goes into making the WordPress Project as fantastic as it is. I think these awards are a reflection of how wonderful the community and ecosystem are, and I appreciate everyone&#8217;s continued trust in my stewardship!</p><cite>Josepha Haden Chomphosy</cite></blockquote>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>WordPress community organizers are some of the most generous and creative people in the world — working with them is exciting and interesting every day. I’m humbled by this nomination; thank you!</p><cite>Andrea Middleton</cite></blockquote>\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:4:\"8288\";s: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, 03 Mar 2020 16:23:27 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:\"Mon, 02 Mar 2020 10:27:41 GMT\";s:4:\"link\";s:63:\"<https://wordpress.org/news/wp-json/>; rel=\"https://api.w.org/\"\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:4:\"x-nc\";s:9:\"HIT ord 2\";}}s:5:\"build\";s:14:\"20130911040210\";}','no'),
252
- (128,'_transient_timeout_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1583295808','no'),
253
- (129,'_transient_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1583252608','no'),
254
- (130,'_transient_timeout_feed_d117b5738fbd35bd8c0391cda1f2b5d9','1583295809','no'),
255
- (131,'_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:75:\"WPTavern: The International WordPress Community and WordCamps Amid COVID-19\";s:7:\"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:29:\"https://wptavern.com/?p=97595\";s:7:\"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:195:\"https://wptavern.com/the-international-wordpress-community-and-wordcamps-amid-covid-19?utm_source=rss&utm_medium=rss&utm_campaign=the-international-wordpress-community-and-wordcamps-amid-covid-19\";s: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:6927:\"<p class=\"has-drop-cap\">With the rising numbers of people who have contracted COVID-19, a disease caused by SARS-CoV-2 (severe acute respiratory syndrome coronavirus 2), it is time for the WordPress community to begin evaluating what the remainder of 2020 may look like. It is not a time for panic. However, some serious discussions will need to happen and decisions made on an ongoing basis.</p>\n\n\n\n<p>Last month, WordCamp Asia made the tough decision to <a href=\"https://wptavern.com/wordcamp-asia-2020-canceled-over-covid-19-concerns\">cancel its inaugural event</a> in Bangkok, Thailand. Given the spread of the coronavirus strain in the East Asian region and many unknowns at that point, it was a safe decision to protect our international community.</p>\n\n\n\n<p><a href=\"https://www.wordfence.com/blog/2020/02/wordcamp-asia-cancellation-fee-assistance-package-from-wordfence/\">Wordfence spearheaded the effort</a> to aid people with financial losses due to WordCamp Asia&rsquo;s late cancellation. The company covered $10,000 of lost funds for attendees. Yoast and GoDaddy are equally splitting costs beyond the initial $10,000 through the same WordCamp Asia Cancellation Fund. To date, 117 applications have been verified and approved for a total of $19,860. There are still eight pending applications for an additional $1,409.</p>\n\n\n\n<p>Mark Maunder, CEO of Defiant (the company behind Wordfence), seemed proud of how the community came together to make this happen. He said that people acted with integrity during the process and many often made sure to only ask for smaller amounts of money to cover their lost expenses.</p>\n\n\n\n<p>Yesterday, Maunder authored a detailed post titled <a href=\"https://www.wordfence.com/blog/2020/03/covid-19-and-wordpress-community-engagement-in-2020/\">COVID-19 and WordPress Community Engagement in 2020</a>. In it, he announced that his team would not be traveling globally to WordCamps until COVID-19 has run its course. He also urges organizers to cancel WordCamp Europe this summer, to cancel WordCamps globally for the time being, and for WordCamp US to be put on hold. Instead, the community can focus on doing remote events and providing an example to the world in how we can organize and collaborate online. By taking a proactive approach and dealing with the issue sooner rather than later, it can save organizers headaches down the road and save attendees money by canceling early.</p>\n\n\n\n<p>&ldquo;It is my experience that people react to bad situations too slowly,&rdquo; wrote Maunder. &ldquo;Whether it is a choking victim, a storm or a national emergency, there is the awkward pause that happens as life-as-usual transforms into a realization of reality requiring fast action. Often, that reality only sets in after the event.&rdquo;</p>\n\n\n\n<p>Maunder said he desired to take a data-driven approach to determine whether camps and conferences should cancel. It is not about raising panic or unnecessary alarm. He wants people to make sure they think about how we deal with this as a community and not in terms of our potential health risks as individuals. A healthy 30-year-old is at low risk of mortality, for example. However, that same healthy adult can transfer the virus to the elderly and immune-compromised people who are at higher risks. Bringing together large groups who are traveling internationally may help spread the virus because it de-localizes the problem. This is particularly true for larger WordCamps that have a global list of attendees.</p>\n\n\n\n<h2>Current WordCamp Updates and Cancellations</h2>\n\n\n\n<p class=\"has-drop-cap\">WordCamp Europe organizers announced earlier today that the annual event will continue as planned. The conference will take place on June 4-6 in Porto, Portugal. The team said they were in contact with the national health authority, DGS, in Portugal. They are monitoring the situation. Currently, there is at least one confirmed case of COVID-19 in Portugal, but the government has not shut down its borders. Those planning to attend WordCamp Europe should keep an eye on the camp&rsquo;s <a href=\"https://2020.europe.wordcamp.org/coronavirus-update/\">Coronavirus Updates page</a>. Plans could change.</p>\n\n\n\n<p>Smaller, more regional WordCamps will want to keep a careful eye on what is going on locally. This means following local news sources and staying informed by local government officials.</p>\n\n\n\n<p>WordCamp Geneva organizers have <a href=\"https://2020.geneve.wordcamp.org/wordcamp-geneve-reporte/\">postponed their event</a>, which was set for March 21. At the moment, they are planning to set it back about six months, pending an improvement in the COVID-19 situation. Otherwise, they will make the decision to cancel the event completely for the year. The announcement came after the Swiss government banned large-scale events with over 1,000 people. The organizers worried that such a ban would eventually extend to smaller events.</p>\n\n\n\n<p>The WordCamp Retreat, held annually in Soltau, Germany, <a href=\"https://2020-soltau.retreat.wordcamp.org/2020/02/29/verschiebung-des-wordcamp-retreat-postponing-of-wordcamp-retreat\">has also been canceled for 2020</a>. The event was scheduled to run from April 30 through May 3. The organizers plan to revive the retreat in May 2021. Organizers said because of the unusual format in comparison to a normal WordCamp, the costs of waiting until later before deciding to cancel would have been financially irresponsible. The format of the retreat has higher costs associated with how it is run. February 29 was the last day to make a decision to cancel while breaking even financially.</p>\n\n\n\n<h2>Staying Informed</h2>\n\n\n\n<p class=\"has-drop-cap\">Aside from WordCamps, agencies and other companies with a physical location should prepare for having their employees do their work remotely. This means setting up channels for communication, if they are already not in place, for continuing their work efficiently. While we should all hope for the best outcome, preparedness is key for when things go awry.</p>\n\n\n\n<p>The most important thing for the global WordPress community to do right now is to continue communicating and sharing data from official sources. Organizers, employers, and travelers will sometimes have to make tough calls. Safety is always more important than whether we can network in person. </p>\n\n\n\n<p>The following are links to resources from the World Health Organization. Everyone should also keep track of national, state, and other local resources.</p>\n\n\n\n<ul><li><a href=\"https://www.who.int/emergencies/diseases/novel-coronavirus-2019\">WHO: COVID-19 Updates</a></li><li><a href=\"https://www.who.int/news-room/q-a-detail/q-a-coronaviruses\">WHO: Q&amp;A on Coronaviruses (COVID-19)</a></li><li><a href=\"https://www.who.int/emergencies/diseases/novel-coronavirus-2019/travel-advice\">WHO: Travel Advice</a></li></ul>\";s: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, 02 Mar 2020 21:27:04 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s: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: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:57:\"WordPress.org blog: The Month in WordPress: February 2020\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8393\";s:7:\"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:72:\"https://wordpress.org/news/2020/03/the-month-in-wordpress-february-2020/\";s: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:9165:\"<p>February 2020 was a busy month in the WordPress project! Most notably, there was an outpouring of sentiment in response to the unfortunate cancellation of WordCamp Asia. However, the team continues to work hard in the hopes of making WordCamp Asia 2021 happen. In addition, there were a number of releases and some exciting new news during the month of February. Read on for more information!</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>WordCamp Asia 2020 Cancelled &amp; Pop-up Livestream</h2>\n\n\n\n<p>There was a ton of excitement around WordCamp Asia, not to mention all the effort from organizers, speakers, sponsors and volunteers. Unfortunately, on February 12th, <a href=\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\">WordCamp Asia was cancelled</a> due to concern and uncertainty around COVID-19. Since then, the organizing team has worked to <a href=\"https://2020.asia.wordcamp.org/2020/02/12/cancellation/\">refund tickets and to support hotel and air refunds</a>. In addition, a <a href=\"https://wordpress.org/news/2020/02/pop-up-livestream-on-february-22/\">pop-up livestream</a> featuring some WordCamp Asia speakers and a Fireside Chat and Q&amp;A with Matt Mullenweg took place on February 22nd.</p>\n\n\n\n<p>For a personal take on the cancellation of WordCamp Asia, read <a href=\"https://naoko.blog/2020/02/13/wordcamp-asia-2020-recap/\">this post from Naoko Takano</a>, the global lead organizer. Many thanks to the volunteers who worked hard to deliver WordCamp Asia. They’ve not only handled logistics associated with cancellation but have also announced that they’ve started <a href=\"https://2020.asia.wordcamp.org/2020/02/18/wordcamp-asia-2021/\">working on WordCamp Asia 2021</a> with some January dates in mind! To get the latest on WordCamp Asia, subscribe to updates <a href=\"https://2021.asia.wordcamp.org/\">here</a>.&nbsp;</p>\n\n\n\n<h2>WordPress 5.4 Beta is Now Available</h2>\n\n\n\n<p><a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">WordPress 5.4 Beta 1</a> was released on February 11 and quickly followed by <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-2/\">Beta 2</a> on February 18 and <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-3/\">Beta 3</a> on February 25. These two releases get us closer to our primary goal for 2020: full-site editing with blocks. WordPress 5.4 will merge ten releases of the Gutenberg plugin and is scheduled to be released on March 31, 2020. It will come with many new features, such as two new blocks for social links and buttons, and easier navigation in the block breadcrumbs. There are also a number of accessibility improvements, such as easier multi-block selection and easier tabbing, one of the editor’s biggest accessibility issues. <a href=\"https://make.wordpress.org/core/tag/5-4/\">5.4 will also include</a> many developer-focused changes, such as improved favicon handling and many new hooks and filters.</p>\n\n\n\n<p>Want to get involved in building WordPress? There are a number of ways to help right now! If you speak a language other than English, <a href=\"https://translate.wordpress.org/projects/wp/dev/\">help us translate WordPress</a>. Found a bug? Post it to the<a href=\"https://wordpress.org/support/forum/alphabeta/\"> Alpha/Beta area</a> in the support forums. You can also help us test the current beta by installing <a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">the WordPress Beta Tester plugin</a>. Just remember that the software is still in development, so we recommend against running it on a production site.&nbsp;</p>\n\n\n\n<h2>WordCamp Centroamérica is Looking for Speakers and Sponsors!</h2>\n\n\n\n<p><a href=\"https://2020.centroamerica.wordcamp.org/\">WordCamp Centroamérica</a> is the first regional WordCamp for Central America and will be held on September 17-19, 2020, in Managua, Nicaragua. The <a href=\"https://2020.centroamerica.wordcamp.org/2020/01/28/llamado-a-ponentes-call-for-speakers/#more-5\">Call for Speakers</a> and <a href=\"https://2020.centroamerica.wordcamp.org/2020/01/16/call-for-sponsors/\">Call for Sponsors</a> are now open, so if you’re interested in speaking at or sponsoring WordCamp Centroamérica, now is your chance! To learn more about the eent, visit and subscribe to updates on their <a href=\"https://2020.centroamerica.wordcamp.org/\">website</a>, or follow their <a href=\"https://www.facebook.com/WordCampCA\">Facebook</a>, <a href=\"https://twitter.com/WordCampCA\">Twitter</a>, and <a href=\"https://instagram.com/wccentroamerica\">Instagram</a> accounts.&nbsp;&nbsp;</p>\n\n\n\n<p>Want to get involved in the Community team and help make more amazing WordCamps happen? <a href=\"https://make.wordpress.org/community/\">Follow the blog</a> and join the #community-events channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>! You can also find out about other <a href=\"https://central.wordcamp.org/\">upcoming WordCamps here</a>.</p>\n\n\n\n<h2>Contribute to WordPress Core via GitHub</h2>\n\n\n\n<p>An experimental feature has been added to Trac to help improve collaboration between Trac and GitHub. This feature allows contributors to link GitHub pull requests opened against the official <a href=\"https://github.com/wordpress/wordpress-develop\">WordPress Develop Git mirror</a> to tickets, which will make GitHub contributions more visible in the related Trac ticket. To learn all the details and to see how it works, read <a href=\"https://make.wordpress.org/core/2020/02/21/working-on-trac-tickets-using-github-pull-requests/\">this post</a>.</p>\n\n\n\n<h2>Gutenberg Development Continues</h2>\n\n\n\n<p>There are many new exciting additions to Gutenberg! On February 5, <a href=\"https://make.wordpress.org/core/2020/02/05/whats-new-in-gutenberg-5-february/\">Gutenberg 7.4 saw two new features added</a>, including background color support to the Columns block and text color support for the Group block. Many enhancements were made, including a number of improvements to the Navigation Block.</p>\n\n\n\n<p>Gutenberg 7.5 was released on February 12, <a href=\"https://make.wordpress.org/core/2020/02/26/whats-new-in-gutenberg-26-february/\">with 7.6 following</a> on February 27. They introduced even more features, including the Social Links block as a stable block and a number of additional blocks for full-site editing, not to mention the many enhancements, new APIs, bug fixes, documentation, and updates.</p>\n\n\n\n<p>Want to get involved in building Gutenberg? Follow <a href=\"https://make.wordpress.org/core/\">the Core team blog</a>, contribute to <a href=\"https://github.com/WordPress/gutenberg/\">Gutenberg on GitHub</a>, and join the #core-editor channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>Further Reading:</h2>\n\n\n\n<ul><li>Aside from WordCamp Asia, two other WordCamps have been postponed due to COVID-19: <a href=\"https://2020-soltau.retreat.wordcamp.org/2020/02/29/verschiebung-des-wordcamp-retreat-postponing-of-wordcamp-retreat/\">WordCamp Retreat Soltau</a> and <a href=\"https://2020.geneve.wordcamp.org/wordcamp-geneve-reporte/\">WordCamp Genève</a>. News about further postponements or cancellations will be posted on <a href=\"https://central.wordcamp.org/news/\">the WordCamp Central blog</a>.</li><li>Automatic updates for themes and plugins <a href=\"https://make.wordpress.org/core/2020/02/26/feature-plugin-wp-auto-updates/\">are being planned</a> for inclusion in WordPress 5.5.</li><li>Version 2.2.1 of the WordPress Coding Standards has been released.</li><li>The Community Team <a href=\"https://make.wordpress.org/community/2020/02/06/community-team-reps-for-2020-2/\">has selected new team representatives</a> for 2020.</li><li>The Core team <a href=\"https://make.wordpress.org/core/2020/02/09/what-does-it-mean-to-be-a-component-maintainer-a-refresher/\">published a useful refresher</a> on what it means to be a component maintainer, along with some tips and best practices.</li><li><a href=\"https://make.wordpress.org/support/2020/02/changes-to-the-support-guidelines-for-linking-to-off-site-resources/\">The Support Team has announced</a> some amendments to their guidelines for linking to external resources when using the support forums.</li><li>The WordPress Foundation <a href=\"https://wordpressfoundation.org/2020/wordpress-foundation-donates-to-black-girls-code-and-internet-archive/\">has published financial information</a> regarding their charitable donations from 2019.</li><li>The Core XML Sitemaps project kicked off with <a href=\"https://make.wordpress.org/core/2020/02/24/xml-sitemaps-meeting-february-25th-2020/\">their first meeting</a> this month.</li><li>The Gutenberg team have created <a href=\"https://make.wordpress.org/core/2020/02/28/new-wordpress-create-block-package-for-block-scaffolding/\">a new @wordpress/create-block package</a> for scaffolding new blocks.</li></ul>\n\n\n\n<p><em>Have a story that we should include in the next “Month in WordPress” post? Please </em><a href=\"https://make.wordpress.org/community/month-in-wordpress-submissions/\"><em>submit it here</em></a><em>.</em></p>\";s: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, 02 Mar 2020 09:15: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:\"Hugh Lashbrooke\";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:91:\"WPTavern: Elementor Raises $15 Million, Plans to Invest in the Team, Product, and Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://wptavern.com/?p=97541\";s:7:\"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/elementor-raises-15-million-plans-to-invest-in-the-team-product-and-community?utm_source=rss&utm_medium=rss&utm_campaign=elementor-raises-15-million-plans-to-invest-in-the-team-product-and-community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5203:\"<img />\n\n\n\n<p class=\"has-drop-cap\">Elementor, which has quickly become one of the leading <a href=\"https://wordpress.org/plugins/elementor/\">WordPress page builders</a> and companies, announced Wednesday it <a href=\"https://elementor.com/blog/elementor-funding/\">raised $15 million in its first round of funding</a>, led by <a href=\"https://lsvp.com/\">Lightspeed Venture Partners</a>. The investment round comes on the heels of the plugin surpassing four million active installations.</p>\n\n\n\n<p>Founded in 2016, Yoni Luksenberg and Ariel Klikstein wanted to create a platform for web creators to drag and drop elements on a page to quickly build sites to their specifications. It took two years for the plugin to gather its first million users. Since then, the user base has continued to rapidly grow, adding an extra million users at an average rate of six months. </p>\n\n\n\n<p>In the past 12 months, the plugin has deployed over 300 new features. It is also currently translated into 55 languages, an effort driven by its massive community.</p>\n\n\n\n<p>&ldquo;Elementor&rsquo;s growth is a wonderful example of the power of community and open-source software,&rdquo; said Tal Morgenstern, Partner at Lightspeed. &ldquo;The founders set out to solve their own problems as web professionals and ended up with a global, highly-involved fan base that kept pushing and shaping the product from the very onset. Every single metric we looked at indicated an exceptionally strong market fit and we&rsquo;re extremely happy to partner with this team for the next chapter of their journey.&rdquo;</p>\n\n\n\n<p>The next question is how the Elementor team will utilize this funding to grow their platform.</p>\n\n\n\n<h2>Growing the Elementor Team and Platform</h2>\n\n\n\n<img />\n\n\n\n<p class=\"has-drop-cap\">Elementor currently has 130 employees, called &ldquo;Elementorists,&rdquo; who are spread across 16 countries. The company plans to use some of its funding to grow its team by 50%. It may not be long before they are pushing the 200-employee mark.</p>\n\n\n\n<p>The company will also use the funding to push the expansion of its global community. The team already has 500 meetups planned around the world in 2020.</p>\n\n\n\n<p>&ldquo;We plan to utilize the funding to improve all aspects of the product and community,&rdquo; said Luksenberg. &ldquo;That means further strengthening the infrastructure of our platform, developing more innovative features, investing in more community-enhancing efforts like WordCamp sponsorships and meetups, and building more integrations with WordPress and with other plugins. Basically, this allows us to continue with all the efforts already in progress but at a faster pace and at a larger scale.&rdquo;</p>\n\n\n\n<p>The Elementor team is set to push out new features and products at a much faster pace than before with the funding in place. Luksenberg was tight-lipped on the details. &ldquo;We don&rsquo;t want to ruin the surprise by revealing the features too soon,&rdquo; he said. However, he promises that the company plans to set new web design and marketing standards while reducing &ldquo;friction points&rdquo; for web creators using Elementor.</p>\n\n\n\n<p>One major question is where Elementor stands in terms of the block editor (Gutenberg). In one sense, they are competitors. However, the team also created the <a href=\"https://wordpress.org/plugins/block-builder/\">Elementor Blocks for Gutenberg</a> plugin. While it only has 8,000 active installs, a drop in the bucket in comparison to their primary plugin, Luksenberg said the team has received positive feedback from users.</p>\n\n\n\n<p>&ldquo;We are constantly testing out new integrations with the goal of improving compatibility with Gutenberg,&rdquo; said Luksenberg. &ldquo;We believe in democratizing the editor so different WordPress users and different personas will have their editor of choice. This way, they can pick the editor that best fits their unique needs and preferences. This is the beauty of open source. There are endless ways to build a contact form: Contact Form 7, Gravity Forms, Jetpack Forms. Similarly, there are endless ways to build and design a web page. The users should have the option to choose their preferred method.&rdquo;</p>\n\n\n\n<p>Despite a couple of rumors floating around, the team has no plans to build a platform that is independent of core WordPress. The team&rsquo;s work will be deeply entrenched into WordPress.</p>\n\n\n\n<p>However, they are currently considering offering a SaaS (Software as a Service) solution around the Elementor platform. It is unclear what such a SaaS product will look like if it happens, but it could be a natural evolution of their business growth. It will certainly be interesting to keep an eye on and see where they take it. &ldquo;As a growing company, now with funding, it&rsquo;s important to keep our options open,&rdquo; said Luksenberg.</p>\n\n\n\n<p>Luksenberg hopes to see other companies in the WordPress ecosystem complete similar funding rounds and feels honored for his company to be in a position to lead the way. &ldquo;It&rsquo;s one small step for Elementor, one giant leap for the WordPress community,&rdquo; he said.</p>\";s: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, 28 Feb 2020 19:31: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: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: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:84:\"WPTavern: Gutenberg 7.6 Includes Rotating Tips List and New Full-Site Editing 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:29:\"https://wptavern.com/?p=97195\";s:7:\"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:213:\"https://wptavern.com/gutenberg-7-6-includes-rotating-tips-list-and-new-full-site-editing-blocks?utm_source=rss&utm_medium=rss&utm_campaign=gutenberg-7-6-includes-rotating-tips-list-and-new-full-site-editing-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:4530:\"<p>Yesterday, the Gutenberg team <a href=\"https://make.wordpress.org/core/2020/02/26/whats-new-in-gutenberg-26-february/\">released version 7.6 of the plugin</a>. Most of the work in this update went toward the upcoming full-site editing feature. The team continues to pump out new dynamic, placeholder blocks for post data. The biggest user-facing feature was the addition of a rotating list of tips in the block inserter.</p>\n\n\n\n<p><a href=\"https://make.wordpress.org/core/2020/02/12/whats-new-in-gutenberg-12-february/\">Version 7.5</a>, released two weeks ago, was the last major release of the plugin that will have features to land in WordPress 5.4, which is currently scheduled for release on March 31. However, bug fixes from 7.6 were ported to the most recent WordPress 5.4 beta updates.</p>\n\n\n\n<p>Version 7.6 does not include as many major feature additions as earlier releases. Aside from experimental work on full-site editing, it primarily includes bug fixes.</p>\n\n\n\n<p>The announcement post boasts a considerable speed improvement in loading time and keypress events. In comparison to version 7.5, loading time was reduced to 7.7 seconds from 8.5 seconds and keypress event speed was reduced to 48.59 milliseconds from 55.45 milliseconds. These tests are run against a post of approximately 36,000 words and 1,000 blocks.</p>\n\n\n\n<h2>Rotating Tips In Block Inserter</h2>\n\n\n\n<img />Block inserter tip section now rotates messages.\n\n\n\n<p>In the past, the block inserter had a single tip at the bottom right that read, &ldquo;While writing, you can press <code>/</code> to quickly insert new blocks.&rdquo; It was a useful tip, but it was easy to ignore because it never changed. After seeing the same message a couple dozen times, it had become little better than wasted space.</p>\n\n\n\n<p>Version 7.6 creates a <a href=\"https://github.com/WordPress/gutenberg/pull/20163\">rotating list of tips</a>. Each time a user opens the inserter, a new tip appears. At the moment, the list only contains five messages but more are sure to come in the future.</p>\n\n\n\n<p>There are open tickets to add contextual <a href=\"https://github.com/WordPress/gutenberg/issues/20196\">tips based on block search queries</a> and <a href=\"https://github.com/WordPress/gutenberg/issues/17091\">block-specific tips</a>. Both of those tickets could continue to help users learn the block system and provide a path for block creators to teach users how to use custom blocks.</p>\n\n\n\n<p>Currently, the list of tips is static. However, it may be possible for plugin authors to extend it in the future. I&rsquo;m already contemplating writing a plugin to replace the tips with quotes from Joss Whedon&rsquo;s <em>Firefly</em>.</p>\n\n\n\n<h2>Full Steam Ahead with Full-Site Editing</h2>\n\n\n\n<img />Growing list of post data blocks for full-site editing.\n\n\n\n<p>Gutenberg 7.6 added four new dynamic, placeholder blocks related to post data: featured image, tags, comments count, and comments form. This brings the total to around 12 blocks for full-site editing, which is still a few dozen short of where the platform will need to be before the feature is ready. Most work thus far has gone toward building out blocks that handle post data. Eventually, the team will need to expand to other areas that will need block representation on the front end.</p>\n\n\n\n<p>Theme authors looking to test out full-site editing should make sure to check out the <a href=\"https://github.com/WordPress/theme-experiments\">block-based theme experiments</a> repository, which continues to see regular updates.</p>\n\n\n\n<p>Users can now <a href=\"https://github.com/WordPress/gutenberg/pull/20361\">set the heading level</a> of the site title block. It can also be set to a paragraph. However, it does not include all of the design settings, such as text size or colors, that would come with a regular paragraph block. This is a good first step in recognizing the various ways the site title block will be used, but it will need to evolve into a much more robust block to allow users to do all the things they will eventually want to do with the site title.</p>\n\n\n\n<p>At this point, it is hard to gauge what full-site editing will look like. Everything is experimental. It only covers the most basic use cases. I am still cautious about its potential. On the other hand, I am ready to skip ahead a year and see how it all turns out. Every plugin update brings us a step closer, but it is tough waiting to see what the bigger picture looks like as it comes together.</p>\";s: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 Feb 2020 21:48:35 +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: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:69:\"WPTavern: Automatic Theme and Plugin Updates Slated for WordPress 5.5\";s:7:\"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:29:\"https://wptavern.com/?p=97498\";s:7:\"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:183:\"https://wptavern.com/automatic-theme-and-plugin-updates-slated-for-wordpress-5-5?utm_source=rss&utm_medium=rss&utm_campaign=automatic-theme-and-plugin-updates-slated-for-wordpress-5-5\";s: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:3539:\"<img />Automatic updates column on the plugin management screen.\n\n\n\n<p class=\"has-drop-cap\">Today, Jean-Baptiste Audras <a href=\"https://make.wordpress.org/core/2020/02/26/feature-plugin-wp-auto-updates/\">announced the WordPress Auto-updates</a> feature plugin. The project seeks to bring automatic plugin and theme updates to WordPress version 5.5. It was originally slated as a feature project in 2019, but it was later bumped to the <a href=\"https://wptavern.com/progress-on-wordpress-2019-projects-sets-2020-roadmap\">2020 roadmap</a>.</p>\n\n\n\n<p>The <a href=\"https://wordpress.org/plugins/wp-autoupdates/\">WordPress Auto-updates</a> plugin is available for beta testing in the plugin directory. The plugin is currently marked to work with sites running PHP 7.2 or later, which is odd considering it is a feature plugin for core and will need to be compatible with WordPress&rsquo; minimum of PHP 5.6.</p>\n\n\n\n<p>The feature feels long overdue. We have been asking for it <a href=\"https://wptavern.com/its-time-for-wordpress-to-automatically-update-themes-plugins-and-core-by-default\">since at least 2015</a> here at the Tavern. Hosting companies and plugins like Jetpack have taken up the load over the years, offering automatic updates for millions of users. However, it is time for the core platform to take the reins and make this a feature available directly to all users. This would also provide a standardized path for third-party plugins to extend the feature with more controls for end-users.</p>\n\n\n\n<p>Work toward bringing the feature into core WordPress originally began in the <a href=\"https://core.trac.wordpress.org/ticket/48850\">plugin auto-updates</a> and <a href=\"https://core.trac.wordpress.org/ticket/49199\">theme auto-updates</a> Trac tickets. The code contributed to those tickets are now in the feature plugin. &ldquo;WordPress contributors did a lot of work on the two related tickets during WP 5.4 development cycle, but decided to give it more time for testing as it&rsquo;s an important feature,&rdquo; wrote Audras in the announcement.</p>\n\n\n\n<p>Development is currently taking place on Audras&rsquo;s <a href=\"https://github.com/audrasjb/wp-autoupdates\">GitHub repository</a>, but it may be moved to the official WordPress GitHub account.</p>\n\n\n\n<p>One of the primary goals of the project is to create an admin UI, which would give users the ability to manage how automatic updates work. Users will be able to enable or disable auto-updates on a plugin-by-plugin and theme-by-theme basis. This level of fine-grain control is welcome. While I generally prefer to auto-update everything, I have been burned by specific plugins and themes in the past. For those, I often prefer to update within a test environment first to be on the safe side. Undoubtedly, other users may find themselves in a similar situation. It is nice to see this being taken into account as a goal of the project.</p>\n\n\n\n<p>The project plans to set up email notifications for site administrators that will summarize any auto-updates that happen on the site. There will also be hooks and PHP constants to allow plugin developers to take control of the update settings.</p>\n\n\n\n<p>As usual, most of the completed work on the automatic updates roadmap has gone toward plugins. Just once, it would be nice to see a feature that crosses into both theme and plugin territory be completed for themes first. I only hope that themes do not end up taking a backseat due to time constraints, development hurdles, or anything else.</p>\";s: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 Feb 2020 21:11: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: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:112:\"Post Status: WooCommerce Payments offers a more unified eCommerce experience, better feature parity with Shopify\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://poststatus.com/?p=77183\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"https://poststatus.com/woocommerce-payments/\";s: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:2812:\"<p><a href=\"https://woocommerce.com/payments/\">WooCommerce Payments</a> is now available to select merchants who apply to the program. It\'s a big step for WooCommerce toward establishing stronger SaaS-like feature parity with Shopify.</p>\n\n\n\n<p>Built using <a href=\"https://stripe.com/\">Stripe\'s</a> best-in-class merchant tools, WooCommerce Payments will immediately offer broad payment support for the vast majority of WooCommerce users.</p>\n\n\n\n<p>Deposits, transactions, refunds, and disputes can all be managed directly through the WordPress dashboard. Store owners will not require a Stripe account, but a dedicated WooCommerce Payments account is required. It offers the same general fee structure as Stripe: 2.9% + $0.30 per US-based transaction.</p>\n\n\n\n<p>Automattic\'s General Manager of WooCommerce, Paul Maiorana, told Post Status that the payout schedule for merchants is on a rolling two-day basis.</p>\n\n\n\n<p>Most of the features in WooCommerce Payments will be familiar to existing Stripe users. The big benefit here is for WordPress users who have made the decision to use WooCommerce and are most comfortable managing as much of their business as they can directly through WooCommerce accounts and their WordPress dashboard — thereby eliminating the need to manage yet another account via a merchant processor.</p>\n\n\n\n<p>WooCommerce Payments also offers a nice revenue stream for a percentage of all platform sales to Automattic from all merchants who decide to use it.</p>\n\n\n\n<p>Shopify has had in-house payments for years, and it\'s been wildly successful. This is a no-brainer and a smart move by Automattic to establish better feature parity with the popular SaaS platform.</p>\n\n\n\n<p>We should expect WooCommerce to establish many more methods for connecting stores to services via WooCommerce itself, helping to create a more unified experience for store owners that\'s simpler to set up.</p>\n\n\n\n<p>The big difference between WooCommerce and Shopify will continue to be freedom and choices. With WooCommerce, store owners are always able to use all of the fully self-hosted, self-managed software they need for their business, and independent merchant services (among others) will always be an option too. There is significantly less lock-in when using WooCommerce, which Automattic can and should lean on as a feature for folks seeking greater autonomy for their online business.</p>\n\n\n\n<p>We look forward to offering more information and analysis around Automattic\'s WooCommerce strategy in the coming days for Post Status club members when we interview Paul more formally. Meanwhile, <a href=\"https://poststatus.slack.com/archives/CHNM7Q7T8/p1582725139143200\">he\'s answering some questions in chat for members</a>. <a href=\"https://poststatus.slack.com/archives/CHNM7Q7T8\">Join us</a>!</p>\";s: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 Feb 2020 14:44: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:15:\"Brian Krogsgard\";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:40:\"WordPress.org blog: WordPress 5.4 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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8384\";s:7:\"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/2020/02/wordpress-5-4-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2827:\"<p>WordPress 5.4 Beta 3 is now available!</p>\n\n\n\n<p><strong>This software is still in development,</strong>&nbsp;so we don’t recommend you run it on a production site. Consider setting up a test site to play with the new version.</p>\n\n\n\n<p>You can test the WordPress 5.4 beta in two ways:</p>\n\n\n\n<ul><li>Try the <a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a> plugin (choose &#8220;bleeding edge nightlies&#8221; or &#8220;Beta/RC &#8211; Bleeding edge&#8221; option in version 2.2.0 or later of the plugin) * you must already have updated to your site to &#8220;bleeding edge nightlies&#8221; for the &#8220;Beta/RC &#8211; Bleeding edge&#8221; option to be available</li><li>Or <a href=\"https://wordpress.org/wordpress-5.4-beta3.zip\">download the beta here</a> (zip). </li></ul>\n\n\n\n<p>WordPress 5.4 is slated for release on&nbsp;<a href=\"https://make.wordpress.org/core/5-4/\">March 31st, 2020</a>, and we need your help to get there.</p>\n\n\n\n<p>Thanks to the testing and feedback from everyone who tested <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-2/\">beta 2</a> (and <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">beta 1</a>) over <a href=\"https://core.trac.wordpress.org/query?status=closed&changetime=02%2F18%2F2020..02%2F25%2F2020&milestone=5.4&col=id&col=summary&col=status&col=milestone&col=owner&col=type&col=priority&order=priority\">24 tickets have been closed</a> in the past week. </p>\n\n\n\n<h2>Some highlights </h2>\n\n\n\n<ul><li><a href=\"https://github.com/WordPress/gutenberg/pull/20424\">Round-up of Gutenberg fixes</a></li><li><a href=\"https://core.trac.wordpress.org/ticket/47606\">Display Site Health score on Dashboard</a></li></ul>\n\n\n\n<h2>Developer notes</h2>\n\n\n\n<p>WordPress 5.4 has lots of refinements to polish the developer experience. To keep up, subscribe to the&nbsp;<a href=\"https://make.wordpress.org/core/\">Make WordPress Core blog</a>&nbsp;and pay special attention to the&nbsp;<a href=\"https://make.wordpress.org/core/tag/5-4+dev-notes/\">developer notes</a>&nbsp;tag for updates on those and other changes that could affect your products.</p>\n\n\n\n<h2>How to Help</h2>\n\n\n\n<p>Do you speak a language other than English?&nbsp;<a href=\"https://translate.wordpress.org/projects/wp/dev/\">Help us translate WordPress into more than 100 languages</a>!</p>\n\n\n\n<p>If you think you’ve found a bug, you can post to the&nbsp;<a href=\"https://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area</a>&nbsp;in the support forums. We’d love to hear from you! If you’re comfortable writing a reproducible bug report,&nbsp;<a href=\"https://core.trac.wordpress.org/newticket\">file one on WordPress Trac</a>&nbsp;where you can also find a list of&nbsp;<a href=\"https://core.trac.wordpress.org/tickets/major\">known bugs</a>.</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Feb 2020 22:10: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:\"David Baumwald\";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:57:\"WPTavern: After the Acquisition: Flywheel in the New Year\";s:7:\"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:29:\"https://wptavern.com/?p=97226\";s:7:\"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:157:\"https://wptavern.com/after-the-acquisition-flywheel-in-the-new-year?utm_source=rss&utm_medium=rss&utm_campaign=after-the-acquisition-flywheel-in-the-new-year\";s: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:7580:\"<p>Some WordPress developers and agencies were caught off guard when WP Engine <a href=\"https://wptavern.com/wp-engine-acquires-flywheel\">announced it had acquired Flywheel</a> in June last year. Flywheel had quickly become a trusted web hosting company for many that specifically catered to the needs of developers and agencies. For some, they questioned whether such a buyout would change the company culture and whether the good things about Flywheel&rsquo;s services would be swallowed by WP Engine&rsquo;s offerings.</p>\n\n\n\n<p>The move had also come only a month after Flywheel closed its $15 per month Tiny plan. There was some initial confusion that the two events were linked.</p>\n\n\n\n<p>&ldquo;With any acquisition of this scale, there is going to be an initial wave of confusion, skepticism, and a bit of shock,&rdquo; said Dusty Davidson, CEO and co-founder. &ldquo;People had come to know, love, and trust Flywheel, and when it was announced that two well-known WordPress companies (and former competitors) were joining forces, they weren&rsquo;t sure where we would stand as a company.&rdquo;</p>\n\n\n\n<p>Davidson said the company fielded more questions that were concerned about the future than outright pushback against the move. Most such questions centered on whether Flywheel would continue offering their existing services and tools.</p>\n\n\n\n<p>&ldquo;It&rsquo;s now been six months since one of the largest acquisitions in WordPress history, and we&rsquo;re happy to report that things remain &lsquo;business as usual,\'&rdquo; said Davidson. &ldquo;We&rsquo;ve remained true to our word, and Flywheel is continuing to live out our mission to help creatives do their best work. The community may have been skeptical about how this acquisition was going to pan out, but the fact is that nothing has really changed and our products have only improved!&rdquo;</p>\n\n\n\n<p>How Flywheel would be folded into WP Engine was not clear early on. The two companies approached the change by learning from each other and gathering feedback. &ldquo;We announced that we were acquired back in June, and it took about six months to figure out the logistics of the acquisition and the relationships between both companies,&rdquo; said Davidson.</p>\n\n\n\n<p>After working out the details, it was decided that Flywheel would operate as a separate division within WP Engine with its own services.</p>\n\n\n\n<h2>Bringing the Tiny Plan Back</h2>\n\n\n\n<p>Some users <a href=\"https://wptavern.com/wp-engine-acquires-flywheel#comment-296007\">expressed disppointment</a> with the removal of the Tiny plan last year. It was an affordable tier for small sites at $15 per month.</p>\n\n\n\n<p>The plan change was the first time Flywheel had changed pricing in the company&rsquo;s history. &ldquo;The changes to plans back in May 2019 were made to allow us to continue investing more into the future of our platform, existing and future features, and to offer up more solutions to better fit our customers,&rdquo; said Davidson.</p>\n\n\n\n<p>Based on customer feedback, Flywheel began to see that Tiny was a valuable plan for agencies who needed to offer a managed WordPress hosting solution for smaller clients. &ldquo;When we joined forces with WP Engine, we were able to realign our goals as a business and refocus our efforts on the audience we&rsquo;ve always catered to best: freelancers and small agencies,&rdquo; said Davidson.</p>\n\n\n\n<h2>SOC Type 2 Certification</h2>\n\n\n\n<p>Earlier this month, Flywheel <a href=\"https://getflywheel.com/news/flywheel-managed-wordpress-host-completes-soc-2-compliance-and-certification/\">announced it had completed SOC 2 compliance and certification</a> as part of their long-term plan in building a more robust and trusted company.</p>\n\n\n\n<p>&ldquo;Businesses using cloud service providers use SOC 2 reports to assess and address the risks associated with third-party technology services,&rdquo; said Tommy Vacek, VP of Engineering. &ldquo;When you boil it down though, it essentially means that Flywheel&rsquo;s security practices are the best in the industry, and we&rsquo;re one of the only WordPress hosts that has achieved it.&rdquo;</p>\n\n\n\n<p>&ldquo;It&rsquo;s a sign of maturity on almost all areas of our business, from finance to information technology, and it also allows us to assess risk in our business and make decisions based off of it,&rdquo; he said. &ldquo;It&rsquo;s a stamp of approval to demonstrate Flywheel&rsquo;s intentionality around security.&rdquo;</p>\n\n\n\n<h2>The 2020 Roadmap and Beyond</h2>\n\n\n\n<p>Rick Knudtson, CPO and co-founder, feels like the acquisition will allow the Flywheel team to better cater to creative agencies in the WordPress space. &ldquo;Our product team is working on an exciting update to our offering entirely focused on supporting the growth of agencies, and our marketing team is hard at work creating brand new resources for agencies aspiring to make 2020 a great year,&rdquo; he said. &ldquo;Joining forces with WP Engine has allowed us to accelerate our product initiatives.&rdquo;</p>\n\n\n\n<p>The company is now offering a <a href=\"https://getflywheel.com/selling-wordpress-maintenance/\">free course</a> on selling WordPress maintenance to clients. Themes by StudioPress, <a href=\"https://wptavern.com/wp-engine-acquires-studiopress\">acquired by WP Engine in 2018</a>, are all free for Flywheel customers. Flywheel is also working heavily on tools for WordPress developers.</p>\n\n\n\n<p>&ldquo;Developers drive WordPress forward and WP Engine is committed to supporting the future of WordPress through industry-leading developer tools,&rdquo; said Knudtson. One such tool is <a href=\"https://localwp.com/\">Local</a>, the company&rsquo;s local development environment built for working with WordPress. &ldquo;Since joining the WP Engine family, Local has become the standard local development and deployment tool for our customers across both of our platforms.&rdquo;</p>\n\n\n\n<p>Local is currently used by over 50,000 developers. The team spent the last few months re-architecting the tool from the ground up. Knudtson said it is now five times faster than before. They are expanding the team that is working on Local to help handled more advanced developer workflows.</p>\n\n\n\n<p>&ldquo;In 2020, we&rsquo;ll introduce new ways to use Local so that all developers &mdash; novices or advanced, solo or within a team &mdash; can build their perfect development on top of Local,&rdquo; said Knudtson. &ldquo;Whether you just want to connect to your host and deploy, or you&rsquo;re integrating into your existing CI/CD workflow, Local should be the solution.&rdquo;</p>\n\n\n\n<p>The Local turnkey products, such as <a href=\"https://localwp.com/pro/\">Local Pro</a> and <a href=\"https://localwp.com/teams/\">Local Teams</a>, will be available to developers across both platforms in the future.</p>\n\n\n\n<p>Since the acquisition, Flywheel has included a new technology called <a href=\"https://getflywheel.com/layout/product-updates/smart-refresh/\">Smart Refresh</a> as part of their in-house caching engine. The system watches for updates made to a WordPress install and clears the cache when needed. Knudtson claims the updates to their system has increased backend performance on the platform by 50%.</p>\n\n\n\n<p>The company also recently announced its new <a href=\"https://getflywheel.com/layout/product-updates/keep-your-sites-flying-with-performance-insights/\">Performance Insights</a> feature. The tool provides proprietary performance data for developers to make decisions with sites they control.</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Feb 2020 19:55:17 +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:92:\"Post Status: Elementor has raised a $15 million Series A, led by Lightspeed Venture 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:31:\"https://poststatus.com/?p=77019\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"https://poststatus.com/elementor-has-raised-a-15-million-series-a-led-by-lightspeed-venture-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:2869:\"<p><a href=\"https://elementor.com/\">Elementor</a> has seen explosive growth in their WordPress-based page building application since its release in May 2016, now boasting more than 4 million installs of the <a href=\"https://wordpress.org/plugins/elementor/\">free version of the plugin</a>.</p>\n\n\n\n<p>The paid version of Elementor was introduced in November 2016, with a common freemium upgrade model. The Elementor community has taken off, furthering the product\'s growth and loyalty among freelancers, DIYers, and site wranglers.</p>\n\n\n\n<p>In such a crowded space as WordPress page building plugins, and especially considering core WordPress efforts via Gutenberg, Elementor\'s meteoric rise is an incredible accomplishment.</p>\n\n\n\n<p>Others have taken notice. In their Series A fundraising event, <a href=\"https://lsvp.com/\">Lightspeed Venture Partners</a> is leading a $15 million round. Elementor has been working on raising money since at least the second quarter of 2019, so this news is a long time coming.</p>\n\n\n\n<p><em><strong>Edit</strong>: Envato was rumored to be investing as well. I\'ve confirmed with Envato that while they are working closely with Elementor on some projects, they are not an investor in this round.</em></p>\n\n\n\n<p>Elementor has an opportunity to do a lot of interesting stuff with these funds — inside the WordPress experience, and I suspect independent of WordPress as well.</p>\n\n\n\n<p>I expect to see a fully hosted version of Elementor\'s site building capabilities where WordPress is (at least partially) hidden from the view of the user. They are currently <a href=\"https://careers.elementor.com/explore/co/rd/9C.41B/devops-engineer/all/\">hiring for</a> their &#8220;Cloud team&#8221; which is tasked with &#8220;building, maintaining, and supporting the company &#8216;Cloud Hosting SaaS Solution\'.&#8221;</p>\n\n\n\n<p>What has made Elementor stand out thus far is its relative intuitiveness and the establishment of a very loyal following — mostly lured in with extremely attractive pricing of the &#8220;Pro&#8221; product ($49 per site, or only $199 for unlimited sites), and a very generously featured free tier.</p>\n\n\n\n<p>Not many WordPress-centric companies have raised money. I\'m very interested to see where Elementor chooses to take the product from here. They certainly have both the momentum and the backing to do something big.</p>\n\n\n\n<p>With a team based in Israel, Elementor has more than 100 employees now working on the product and support. This raise will surely enable them to extend their runway while maintaining an attractive price point for the paid product and assist in the development of their next major release.</p>\n\n\n\n<p><em>Post Status was not included in the embargoed list of news sources to report this story. We became aware of the news through our own means and decided to report on it now.</em></p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Feb 2020 14:53: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:15:\"Brian Krogsgard\";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:36:\"WPTavern: On MAGA Caps and WordCamps\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://wptavern.com/?p=97442\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:117:\"https://wptavern.com/on-maga-caps-and-wordcamps?utm_source=rss&utm_medium=rss&utm_campaign=on-maga-caps-and-wordcamps\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7583:\"<p class=\"has-drop-cap\">Within WordPress circles, I don&rsquo;t talk much about politics. I was raised to believe that politics and religion are not polite dinner topics. That belief generally extends to my work-life too. However, sometimes these topics crash into one another at full speed.</p>\n\n\n\n<p>I don&rsquo;t typically provide qualifying statements about my beliefs when writing an article. My words should stand on their own, regardless of my personal views. However, in this toxic political climate in the U.S. that sometimes worms its way into the WordPress community, alternative views are often automatically dismissed if the writer is not considered <em>one of their own</em>. If I wrote a piece that defended conservatism without self-describing myself as a liberal, my words would fall on many deaf ears. Such is the climate that we live in today.</p>\n\n\n\n<p>Therefore, without further ado, I proclaim myself as one of you.</p>\n\n\n\n<h2>WordCamps and Political/Hate Speech</h2>\n\n\n\n<p class=\"has-drop-cap\">In <a href=\"https://daily.jorb.in/2020/02/symbols-of-hate-at-wordcamps/\">Symbols of Hate at WordCamps</a>, Aaron Jorbin makes the argument that red MAGA (Make America Great Again) hats should be banned from WordCamps because they are symbols of racism. While one-sided and starting from the position that such apparel is hate speech regardless of context, it is a thought-provoking piece. It is also the sort of statement that will earn you internet points from what is seemingly a majority, Left-leaning inner WordPress community. But, there are unanswered questions and another side to this story that Jorbin failed to explore in his article.</p>\n\n\n\n<p>Jorbin opened with a large image. The image has a simple word as a <em>faux</em> HTML tag: <code>&lt;/hate&gt;</code>. Before the argument begins, this imagery lets the readers know that there is no discussion. In HTML, the <code>/</code> character is meant to close a statement. The opening salvo is the end of the discussion. The text is merely a formality.</p>\n\n\n\n<p><strong>MAGA caps are hate speech.</strong></p>\n\n\n\n<p>There is no context in which a MAGA cap is acceptable. The reader should know this because the argument was won before it was given.</p>\n\n\n\n<p>&ldquo;I fully cosign,&rdquo; said Adam Soucie, the co-lead organizer for WordCamp 2020, <a href=\"https://twitter.com/AdamSoucie/status/1230923434122764294\">on Twitter</a>. &ldquo;Show up to @WordCampOrlando in one of those red hats and you&rsquo;ll be politely asked to leave. You know exactly what you&rsquo;re doing with that choice. If you have a problem with that, take it up with Central.&rdquo;</p>\n\n\n\n<p>The message is clear that certain people are not welcome. More often than not, that message is squarely aimed at conservatives. This type of groupthink is prevalent within the WordPress community. <em>Your political beliefs are not welcome.</em></p>\n\n\n\n<p>In his article, Jorbin does describe how political speech, the MAGA cap, has been co-opted by various hate groups. The question is whether we allow the actions of the minority of one group to become the deciding factor in how we treat the majority. We must also ask whether we hold other political speech to the same standard.</p>\n\n\n\n<p>Conservatives within our community often feel like they have no voice. The article and the subsequent discussions taking place on social media help drive home that feeling.</p>\n\n\n\n<p>&ldquo;Today is a hard day to be a Republican in the WordPress Community,&rdquo; wrote Bridget Willard <a href=\"https://twitter.com/YouTooCanBeGuru/status/1231122059159162880\">on Twitter</a>. &ldquo;I see the tweets. And the moral superiority. It isn&rsquo;t kind or inclusive.&rdquo;</p>\n\n\n\n<p>She is not alone. Like her, many feel like they will be ostracized if they post a dissenting opinion that does not 100% jive with the Left-leaning vocal majority.</p>\n\n\n\n<p>&ldquo;A MAGA hat makes me angry and uncomfortable, but speech is speech unless there&rsquo;s a direct incitement,&rdquo; responded Steve Stern <a href=\"https://twitter.com/sds52/status/1230916355668529152\">on Twitter</a>. &ldquo;Do we ban all political content from all WP events? Is a T-shirt supporting a leftist cause OK? WordPress needs to support freedom, even when uncomfortable.&rdquo;</p>\n\n\n\n<p>It is a slippery slope from banning a MAGA cap to stifling more mundane conservative speech, particularly when conservative voices are within the minority in our community. If the MAGA cap is hate speech, it cannot be a stretch to label anything about the man who gave rise to some extremist voices as falling under the same guideline.</p>\n\n\n\n<p>Let us say, for the sake of argument, that the red MAGA cap is deemed hate speech, regardless of who is wearing it, their intentions, and context. Outright ban it. Does such a ban extend to a &ldquo;Trump 2020&rdquo; T-shirt? In the mind of many who would ban the MAGA hat, I can guarantee they would like to see the ban extended to any Trump or even conservative-related apparel. Others may not be willing to go that far. However, for many, a ban on such apparel has absolutely nothing to do with hate speech. It has to do with a difference of opinion. Political opinion. Instead of meeting on equal terms and discussing those differences as open-minded adults, it is easier to quash an opponent&rsquo;s freedom of expression by labeling it all as hate.</p>\n\n\n\n<p>If a red MAGA cap is always hate speech, it is not a leap to say that any Trump-supporting apparel is also hate speech. There has to be a line, and the one between a baseball cap and a T-shirt sporting &ldquo;Trump 2020&rdquo; is blurry.</p>\n\n\n\n<p>Perhaps the solution is to ban all political apparel at WordCamps, regardless of whose politics are on showcase. If some cannot stomach a MAGA cap, a life-long hunter should not have to look at a &ldquo;meat is murder&rdquo; T-shirt. We should also ban the countless other slogans that itch some group or another the wrong way.</p>\n\n\n\n<p>Or, we can all put on our big boy and girl pants and step out into the world as adults who might be presented with ideas outside our own from time to time.</p>\n\n\n\n<p>WordPress&rsquo;s mission statement is to <em>democratize publishing</em>. The goal is not to democratize publishing <em>for some</em> or <em>for those who share our political views</em>. The implication is that we are democratizing publishing <strong>for all</strong>. By extension, WordCamps are about bringing people together from all walks of life. We don&rsquo;t all share the same views, but we should respect that others believe differently. The idea is to break bread with those who are different from you and perhaps grow from this interaction.</p>\n\n\n\n<p>Then, imagine yourself in my shoes. I live in rural Alabama. This is Trump Country. If I got angry every time I came across the path of someone wearing a MAGA cap, I would spend most of my days in a fit of rage. Some of my more liberal friends ask how I live <em>among them</em>, jokingly. Truth be told, it is pretty easy once you start looking at people as people. Once you stop making assumptions about them by the clothes they wear or the political views they hold. Once you sit down and listen to their hopes and dreams and fears.</p>\n\n\n\n<p>At WordCamps, the best thing would be for everyone to leave their politics at the door. If we need a rule to formalize it, then so be it. We all have so much more in common that we likely realize. Let&rsquo;s focus on the good that we can do together.</p>\";s: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 Feb 2020 21:14:46 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s: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:42:\"WPTavern: Goodbye Featured Themes, For Now\";s:7:\"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:29:\"https://wptavern.com/?p=97396\";s:7:\"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/goodbye-featured-themes-for-now?utm_source=rss&utm_medium=rss&utm_campaign=goodbye-featured-themes-for-now\";s: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:4943:\"<img />Front page of the theme directory, featuring popular themes.\n\n\n\n<p class=\"has-drop-cap\">Yesterday, the <a href=\"https://meta.trac.wordpress.org/ticket/5044\">featured themes page was quietly removed</a> from the <a href=\"https://wordpress.org/themes\">WordPress theme directory</a>. Previously, it was the primary page users would see when visiting the directory. It has now been replaced with the popular themes list. This change is only reflected on the WordPress.org website and not directly in the WordPress admin for end-users.</p>\n\n\n\n<p>This is the first major change with the featured list since it was switched to a randomized set of themes in 2014. Over the past six years, volunteers have presented numerous ideas on what to do with the page that is, in many ways, the face of WordPress, particularly for new users who are searching for their first theme. No proposal has gone beyond a Trac ticket with a handful of participants or a theme review team meeting. It is almost as if every idea was dead on arrival.</p>\n\n\n\n<p>Removing the featured list altogether is not a simple matter of hiding the page on WordPress.org. There is an API endpoint that serves the list and core WordPress fetches themes directly from WordPress.org. Even if removed from the software, we would still be dealing with years of backward compatibility for older versions of WordPress. At this point, outright removal is not an ideal solution.</p>\n\n\n\n<p>The <a href=\"https://meta.trac.wordpress.org/changeset/9522\">commit note</a> makes a point that hiding the page from the theme directory is only temporary. The idea is to eventually replace it with a properly-curated featured themes list. </p>\n\n\n\n<p>However, such a proposal could languish for years. Given that we have suffered through six years of a randomly-generated list, it is unclear if anyone is motivated enough to push the project forward.</p>\n\n\n\n<h2>What Happened to the Curated Featured Themes List?</h2>\n\n\n\n<p>In October, the WordPress theme review team <a href=\"https://wptavern.com/curated-list-of-featured-themes-coming-to-the-theme-directory\">decided to create a system</a> for a curated feature themes list. <a href=\"https://make.wordpress.org/themes/2019/10/22/meeting-notes-for-tuesday-22nd-october-2019/\">The initial plan</a> was for the team representatives to work out the finer details and create a path forward. However, the idea seemed to fizzle out before it ever broke ground. There was little public mention of it after the excitement of the initial decision.</p>\n\n\n\n<p>&ldquo;It was really hard to come up with requirements that we wanted the themes to follow,&rdquo; said Carolina Nymark, a TRT representative. &ldquo;Like the keyboard navigation and skip link had to be added to the theme, and no upsell. That alone limited the possible themes to a selection that was too small.&rdquo;</p>\n\n\n\n<p>The idea for curated themes was that they would be the best of the best. Seemingly, that meant going above and beyond the standard requirements while being completely free of commercial interests. In hindsight, that level of scrutiny over the list may have been too tough of a sell. Curation does not necessarily have to strive for perfection. Uniqueness may provide more room for flexibility.</p>\n\n\n\n<p>&ldquo;We did not hold any meetings with votes because there were concerns that people would only root for their own theme, their friends&rsquo; themes, or even get paid to suggest themes,&rdquo; said Nymark. &ldquo;It would be too easy to game it for profit.&rdquo; Such backdoor schemes have been trouble with previous programs in the team&rsquo;s past.</p>\n\n\n\n<p>The curated list based on their criteria would be too small to rotate regularly on the featured page. The team attempted to find other solutions. However, they were unsuccessful.</p>\n\n\n\n<p>&ldquo;It was a strain that we could not figure out a good solution where theme authors would be treated fairly,&rdquo; said Nymark. &ldquo;Then we had a video meeting with [Josepha Haden, Executive Director of WordPress] where she said that the TRT team representatives should not have to select the featured themes. And it stopped there.&rdquo;</p>\n\n\n\n<p>Ari Stathopoulos, a TRT representative, mentioned the elephant in the room that the team was not addressing. &ldquo;There would be significant drama if the list was manually curated,&rdquo; he said. &ldquo;If it&rsquo;s done by reps, then those who were not selected would accuse reps of favoring some themes. If it was done by a rotating committee, the same. Authors would rather believe that they are a victim of some conspiracy rather than believe their theme is bad.&rdquo;</p>\n\n\n\n<p>A curated themes list is still a possibility. It is unlikely the theme review team will be handling it directly anytime soon. If it does happen, it will likely be another party who makes the call and gets to be the <em>bad guy</em>.</p>\";s: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, 21 Feb 2020 18:45:39 +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: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:25:\"Matt: Livestream Tomorrow\";s:7:\"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=50924\";s:7:\"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:42:\"https://ma.tt/2020/02/livestream-tomorrow/\";s: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:662:\"<p>About eight of the speakers including myself <a href=\"https://livestream.w.org/\">are going to be doing a livestream tomorrow from 2 to 10 UTC, or what would be 9am to 5pm in Bangkok</a> where the inaugural WordCamp Asia was <a href=\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\">supposed to happen</a> this weekend.</p>\n\n\n\n<p>We&#8217;d all much rather be in person, but I do think there is a silver lining in us learning how to do official WordPress livestream events that can be accessible to everyone all over the world, following in the footsteps awesome virtual events like <a href=\"https://wordsesh.com/\">WordSesh</a>.</p>\";s: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, 21 Feb 2020 01:37: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: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: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:52:\"WordPress.org blog: Pop-Up Livestream on February 22\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8377\";s:7:\"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/2020/02/pop-up-livestream-on-february-22/\";s: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:2217:\"<p>As mentioned <a href=\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\">in this post</a>, Matt will host a <a href=\"https://livestream.w.org/\">livestream on February 22</a> during Bangkok daylight hours. He opened an invitation to any speaker who was affected by the cancellation, and the livestream will include the following fine people: <a href=\"https://profiles.wordpress.org/gsayed786/\">Imran Sayed</a>, <a href=\"https://profiles.wordpress.org/saiftheboss7/\">Md Saif Hassan</a>, <a href=\"https://profiles.wordpress.org/mmuhsin/\">Muhammad Muhsin</a>, <a href=\"https://profiles.wordpress.org/niravmehta/\">Nirav Mehta</a>, <a href=\"https://profiles.wordpress.org/piccianeri/\">Piccia Neri</a>, <a href=\"https://profiles.wordpress.org/itpixelz/\">Umar Draz</a>, and <a href=\"https://profiles.wordpress.org/francina/\">Francesca Marano</a> as well as a Fireside Chat and Q&amp;A<strong> </strong>with <a href=\"https://profiles.wordpress.org/matt/\">Matt Mullenweg</a> &amp; <a href=\"https://www.linkedin.com/in/monishavaradan/\">Monisha Varadan</a>.</p>\n\n\n\n<div class=\"wp-block-buttons aligncenter\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background has-vivid-cyan-blue-background-color\" href=\"https://livestream.w.org/\" target=\"_blank\" rel=\"https://livestream.w.org/ noopener noreferrer\">Join the stream</a></div>\n</div>\n\n\n\n<p>This should be a great way to get to hear from some speakers who have yet to share their knowledge on a global stage. WordPress is enriched by a multitude of experiences and perspectives, and I hope you are as excited as I am to hear new voices from a part of the world that is frequently underrepresented in the WordPress open source project.&nbsp;</p>\n\n\n\n<p>Also exciting, <a href=\"https://2020.asia.wordcamp.org/2020/02/18/wordcamp-asia-2021/\">the WordCamp Asia team has announced that they’re aiming for January 2021</a>, so please mark your calendars now! This small but mighty team of trailblazing organizers has shown great resilience over the years they’ve spent, building toward this event. I am personally grateful for the hard work they’ve done and have yet to do, and can’t wait to thank them in Bangkok next year.</p>\";s: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, 20 Feb 2020 23:06:13 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s: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:\"\";}}}}}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:26:\"WPTavern: Publishing Break\";s:7:\"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:29:\"https://wptavern.com/?p=97350\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"https://wptavern.com/publishing-break?utm_source=rss&utm_medium=rss&utm_campaign=publishing-break\";s: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:1404:\"<p>The Tavern is taking a break for the week as both of its authors are out. We&rsquo;re happy about expanding families, and saying &ldquo;boo&rdquo; to the flu.</p>\n\n\n\n<p>In the meantime, here are some of my favorite WordPress-powered sites that I follow and learn from:</p>\n\n\n\n<ul><li><a href=\"https://tim.blog/\">Tim Ferriss is back to blogging and it&rsquo;s great</a>.</li><li><a href=\"https://seths.blog/\">Seth Godin never stopped blogging and stays great</a>.</li><li><a href=\"https://fs.blog/\">Farnam Street always expands my mind</a>. (Three nice .blog domains in a row!)</li><li><a href=\"https://heropress.com/\">HeroPress gives me energy to work through the hard problems in WordPress</a>.</li><li><a href=\"https://nav.al/\">Naval is thoughtful and provocative</a>.</li><li><a href=\"https://avc.com/\">Fred Wilson is one of the most successful early-stage investors, and still takes the time to blog almost every day</a>.</li><li><a href=\"https://laughingsquid.com/\">Laughing Squid collects the weirdest and most interesting stuff on the internet</a>.</li><li><a href=\"https://onbeing.org/\">Krista Tippett&rsquo;s On Being expands your soul</a>.</li></ul>\n\n\n\n<p>Finally, <a href=\"https://om.co/2020/01/16/podcast-interviewing-matt-mullenweg/\">the podcast I did with Om a few weeks ago covers some fun early internet trivia</a>. We&rsquo;ll be back to regularly scheduled programming next week!</p>\";s: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, 20 Feb 2020 01:28: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:\"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:40:\"WordPress.org blog: WordPress 5.4 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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8360\";s:7:\"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/2020/02/wordpress-5-4-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3351:\"<p>WordPress 5.4 Beta 2 is now available!</p>\n\n\n\n<p><strong>This software is still in development,</strong>&nbsp;so we don’t recommend running it on a production site. Consider setting up a test site to play with the new version.</p>\n\n\n\n<p>You can test WordPress 5.4 beta 2 in two ways:</p>\n\n\n\n<ul><li>Try the&nbsp;<a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a>&nbsp;plugin (choose the “bleeding edge nightlies” option)</li><li>Or&nbsp;<a href=\"https://wordpress.org/wordpress-5.4-beta2.zip\">download the beta here</a>&nbsp;(zip).</li></ul>\n\n\n\n<p>WordPress 5.4 is slated for release on&nbsp;<a href=\"https://make.wordpress.org/core/5-4/\">March 31, 2020</a>, and <strong>we need your help to get there</strong>!</p>\n\n\n\n<p>Thank you to all of the contributors that tested the <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">beta 1</a> development release and provided feedback. Testing for bugs is an important part of polishing each release and a great way to contribute to WordPress.</p>\n\n\n\n<h2>Some highlights</h2>\n\n\n\n<p>Since <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">beta 1</a>, <a href=\"https://core.trac.wordpress.org/query?status=closed&changetime=02%2F12%2F2020..&milestone=5.4&group=component&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority\">27 bugs</a> have been fixed. Here is a summary of a few changes included in beta 2:</p>\n\n\n\n<ul><li>Block editor: Columns in the Block Library that have unassigned-width will now grow equally.</li><li>Block editor: The custom gradient picker now works in languages other than English.</li><li>Block editor: When choosing colors is not possible, the color formatter no longer shows.</li><li>Privacy: The privacy request form fields have been adjusted to be more consistent on mobile.</li><li>Privacy: The notice offering help when editing the privacy policy page will no longer show at the top of All Pages in the admin area.</li><li>Site Health: The error codes for failed REST API tests now display correctly.</li></ul>\n\n\n\n<h2>Developer notes</h2>\n\n\n\n<p>WordPress 5.4 has lots of refinements to polish the developer experience. To keep up, subscribe to the&nbsp;<a href=\"https://make.wordpress.org/core/\">Make WordPress Core blog</a>&nbsp;and pay special attention to the&nbsp;<a href=\"https://make.wordpress.org/core/tag/5-4+dev-notes/\">developers’ notes</a>&nbsp;for updates on those and other changes that could affect your products.</p>\n\n\n\n<h2>How to Help</h2>\n\n\n\n<p>Do you speak a language other than English?&nbsp;<a href=\"https://translate.wordpress.org/projects/wp/dev/\">Help us translate WordPress into more than 100 languages</a>!</p>\n\n\n\n<p>If you think you’ve found a bug, you can post to the&nbsp;<a href=\"https://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area</a>&nbsp;in the support forums. We’d love to hear from you! </p>\n\n\n\n<p>If you’re comfortable writing a reproducible bug report, <a href=\"https://core.trac.wordpress.org/newticket\">file one on WordPress Trac</a>, where you can also find a list of <a href=\"https://core.trac.wordpress.org/tickets/major\">known bugs</a>.</p>\n\n\n\n<p><em>UPDATE &#8211; 20 Feb, 2020: This post was originally misattributed to Francesca Marano. The proper authorship has been corrected.</em></p>\";s: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, 18 Feb 2020 21:50: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:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"David Baumwald\";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:52:\"WordPress.org blog: People of WordPress: Kori Ashton\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8348\";s:7:\"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/2020/02/people-of-wordpress-kori-ashton/\";s: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:9806:\"<p><em>You’ve probably heard that WordPress is open-source software, and may know that it’s created and run by volunteers. WordPress enthusiasts share many examples of how WordPress changed people’s lives for the better. This monthly series shares some of those lesser-known, amazing stories.</em></p>\n\n\n\n<h2><strong>The beginning</strong></h2>\n\n\n\n<img src=\"https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton.jpg?w=632&ssl=1\" alt=\"\" class=\"wp-image-8349\" />Kori Ashton\n\n\n\n<p>In 1998, Kori created her very first HTML website. Her dad was creating websites for a living at the time. She needed a website for her band because she wanted to be a rockstar. Under his training, and with a little bit of self-teaching, she learned how to build a website.</p>\n\n\n\n<p>She had been aware of WordPress since 2005, and, in 2008 a client specifically hired her as a freelancer to develop a WordPress website. Kori went straight to Google and taught herself how to build a WordPress website over a single weekend. She really enjoyed the experience of working with WordPress.</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>My mind was absolutely blown when I saw the drag and drop options inside of menus to create dropdowns and a form builder.&nbsp;</em></p><cite>Kori Ashton</cite></blockquote>\n\n\n\n<p>She suggested to her dad that WordPress could be a solution for their customers who wanted to be able to access their own websites. Previously, they had found this was not as easy for clients unless they had specific software and knew how to code. So, Kori and her dad worked to learn WordPress over the next few years.&nbsp;</p>\n\n\n\n<p>Then in 2012, Kori and her parents launched their new business, WebTegrity, in San Antonio, Texas, US. It started out small: just Kori and her parents. Soon, they started subcontracting design work and quickly continued to grow their team.</p>\n\n\n\n<h2><strong>Going big time</strong></h2>\n\n\n\n<p>Even though the business was in a saturated industry in San Antonio &#8212; over 700 freelancers and agencies were providing similar services &#8212; Kori and her parents were able to sell their company five years later, with a multi-million dollar valuation. There were a few choices they made early on that led to that success.</p>\n\n\n\n<h3><strong>1. They picked a niche: WordPress specialists&nbsp;</strong></h3>\n\n\n\n<p>At the time, there were no WordPress-specific agencies in San Antonio. They emphasized the fact that WordPress was the only CMS their company would use. Prospective clients looking for a different type of CMS solution were not the right fit for their business. They also offered on-site, WordPress training and weekend workshops that were open to anyone (including other agencies) as one of their revenue streams. They soon were established as a city-wide WordPress authority.</p>\n\n\n\n<h3><strong>2. They cultivated a culture</strong></h3>\n\n\n\n<p>Kori wanted a great culture and environment in her company and to make that happen, she needed to hire the right people. She believes you must be careful about who you bring into the culture of your business, but particularly when hiring leaders into that community. You can’t teach passion so you’ve got to find people that are excited about what you do. You also need to look for integrity, creativity, a love for solving problems, and an eagerness to keep getting better.&nbsp;</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>You can teach code all day long, but be sure to find people with the right hearts to join your community and then train them up the right way. This way you will grow your culture in a healthy way.</em></p><cite>Kori Ashton</cite></blockquote>\n\n\n\n<img src=\"https://i0.wp.com/wordpress.org/news/files/2020/02/kori-ashton-2.png?w=632&ssl=1\" alt=\"\" class=\"wp-image-8350\" />Kori and her two sons\n\n\n\n<h3><strong>3. They learned how to build sustainable revenue streams</strong></h3>\n\n\n\n<p>Like many other web development agencies, WebTegrity started out with the “one-time fee and you’re done” business model. This business model is known for unpredictable revenue streams. Hearing about recurring revenue business models at WordCamp Austin was a lightbulb moment for Kori. She started drafting a more sustainable business model on the way back home.&nbsp;</p>\n\n\n\n<p>Support packages were key to their new business plan. Clients needed ongoing support. They decided to include at least 12 months of post-launch support into their web development projects. This doubled their revenue in one year and allowed them to even out their revenue streams.</p>\n\n\n\n<h3><strong>4. They knew the importance of reputation</strong></h3>\n\n\n\n<p>Kori believes that every client, whether they have a $5,000 or a $50,000 budget, should get the same type of boutique-style, white glove, concierge relationship.</p>\n\n\n\n<p>Every single project results in the absolute best solution for a client&#8217;s needs. In addition to that, offering training helped boost their reputation. Explaining the lingo of the web development and SEO fields and showing the processes used, added transparency. It helped set and meet expectations and it built trust.&nbsp;</p>\n\n\n\n<h3><strong>5. They proactively gave back to the community</strong></h3>\n\n\n\n<p>Kori heard Matt Mullenweg speak about <a href=\"https://wordpress.org/five-for-the-future/\">Five For The Future</a> at WordCamp US. He encouraged people in the audience who make a living using WordPress, to find ways to give back 5% of their time to building the WordPress software and community. Matt talked about how firms and individuals could give back to the community. He suggested, for instance to:</p>\n\n\n\n<ul><li>start a WordPress Meetup group</li><li>present at a Meetup event&nbsp;</li><li>facilitate a Meetup group where maybe you’re just the organizer and you never have to speak because you’re not a fan of speaking</li><li>help organize a WordCamp</li><li>volunteer at a WordCamp</li><li>write a tutorial and tell people how to do WordPress related things&nbsp;</li><li>run a workshop</li><li>make a video</li></ul>\n\n\n\n<img src=\"https://i1.wp.com/wordpress.org/news/files/2020/02/kori-ashton-3.jpg?fit=632%2C422&ssl=1\" alt=\"\" class=\"wp-image-8351\" />If you&#8217;re making an income using WordPress, consider giving 5% of your time back to building the software and/or the community.\n\n\n\n<p>This gave Kori another light bulb moment. She could make videos to give back. So her way to give back to the WordPress community is her <a href=\"https://www.youtube.com/user/webtegrity\">YouTube channel</a>.</p>\n\n\n\n<p>Every Wednesday, she published a video on how to improve your online marketing. This made a huge impact, both inside the WordPress community, but also in her own business.</p>\n\n\n\n<h2><strong>Understanding</strong></h2>\n\n\n\n<p>So, in summary, how did Kori and her family turn their business into a multi-million dollar buyout in just five years?&nbsp;</p>\n\n\n\n<p>Ultimately, it was about understanding that you have to build value. About keeping an exit strategy in mind while building your business. For instance when naming your company. Will it stand alone? Could it turn into a brand that you could sell as an independent entity?</p>\n\n\n\n<ul><li>Think about revenue streams and watch sales margins.</li><li>Be sure to include healthy margins.&nbsp;</li><li>Don’t hire until you have no further option.</li><li>Make sure to structure your offerings in such a way that you’re actually recouping your value.&nbsp;</li><li>Understand entrepreneurship, watch Shark Tank, read more tutorials, watch more videos.</li><li>Get involved in the WordPress community. Get to know its core leaders, the speakers that travel around to all the WordCamps. Start following them on Twitter and try to understand what they’re sharing.&nbsp;</li></ul>\n\n\n\n<p>In the end, the fact that Kori was so active in the San Antonio community helped enable the sale.</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>We just kept hammering on the fact that we were the go-to place here in San Antonio for WordPress. We kept training, we kept doing free opportunities, going out and speaking at different events, and people kept seeing us. We kept showing up, kept giving back and kept establishing ourselves as the authority.</em></p><cite>Kori Ashton</cite></blockquote>\n\n\n\n<h2><strong>Contributors</strong></h2>\n\n\n\n<p>Alison Rothwell (<a href=\"https://profiles.wordpress.org/wpfiddlybits/\">@wpfiddlybits</a>), Yvette Sonneveld (<a href=\"https://profiles.wordpress.org/yvettesonneveld/\">@yvettesonneveld</a>), Abha Thakor (<a href=\"https://profiles.wordpress.org/webcommsat/\">@webcommsat</a>),&nbsp; Josepha Haden (<a href=\"https://profiles.wordpress.org/chanthaboune/\">@chanthaboune</a>), Topher DeRosia (<a href=\"https://profiles.wordpress.org/topher1kenobe/\">@topher1kenobe</a>).</p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<img src=\"https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=632%2C474&ssl=1\" alt=\"\" class=\"wp-image-7025\" />\n</div>\n\n\n\n<div class=\"wp-block-column\">\n<p><em>This post is based on an <a href=\"https://heropress.com/essays/build-company-wordpress/\">article originally published on HeroPress.com</a>, a community initiative created by </em><a href=\"https://profiles.wordpress.org/topher1kenobe/\"><em>Topher DeRosia</em></a><em>. HeroPress highlights people in the WordPress community who have overcome barriers and whose stories would otherwise go unheard.Meet more WordPress community members over at </em><a href=\"https://heropress.com/\"><em>HeroPress.com</em></a><em>!</em></p>\n</div>\n</div>\n</div></div>\n</div></div>\";s: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, 14 Feb 2020 21:12: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:16:\"Yvette Sonneveld\";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:79:\"WPTavern: WooCommerce Partners With Square to Expand Services for CBD Merchants\";s:7:\"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:29:\"https://wptavern.com/?p=97197\";s:7:\"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/woocommerce-partners-with-square-to-expand-services-for-cbd-merchants?utm_source=rss&utm_medium=rss&utm_campaign=woocommerce-partners-with-square-to-expand-services-for-cbd-merchants\";s: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:5047:\"<img />\n\n\n\n<p class=\"has-drop-cap\">WooCommerce, the open-source eCommerce platform developed and supported by Automattic, <a href=\"https://woocommerce.com/sell-cbd-online/\">announced a partnership</a> with Square payment solutions yesterday. The partnership expands services for merchants who are selling CBD products online. While it is a small step toward making it easier to sell CBD products, there are still many restrictions and pitfalls that merchants must overcome.</p>\n\n\n\n<p>Cannabidiol, known as CBD, was removed from the U.S. federal list of controlled substances in December 2018. It is one of 100s of identified cannabinoids in cannabis plants and does not have the psychoactive effects of THC. The Farm Bill (<a href=\"https://www.congress.gov/bill/115th-congress/house-bill/2/text\">Agriculture Improvement Act of 2018</a>) removed some restrictions and provided a regulated path for farmers and merchants to sell CBD-based products.</p>\n\n\n\n<p>CBD exists in a legal gray area in some jurisdictions in the U.S. State and local laws may still ban selling CBD and other substances (<em>for example, I live in Alabama where we have some &ldquo;dry&rdquo; counties where selling alcohol is illegal</em>). Therefore, merchants need to be aware that there are legal issues to consider, despite it being legal at the federal level. They should always check their local laws.</p>\n\n\n\n<p>Other hurdles include finding a payment processor, web host, shipping company, and bank that don&rsquo;t have internal policies that forbid CBD products or at least working within any guidelines they do have. WooCommerce&rsquo;s partnership with Square may help U.S. merchants at least tackle the payment processor part of the equation.</p>\n\n\n\n<p>&ldquo;WooCommerce is proud to offer CBD merchants secure, efficient services that enable business owners to focus on improving consumers&rsquo; lives,&rdquo; says Paul Maiorana, General Manager of WooCommerce.</p>\n\n\n\n<p>By using Square, U.S. merchants can also use other Automattic services such as Jetpack for backups and malware scanning, <a href=\"https://woocommerce.com/products/shipping/\">WooCommerce Shipping</a> for printing labels, and <a href=\"https://woocommerce.com/products/tax/\">WooCommerce Tax</a> for automatically calculating sales tax at checkout.</p>\n\n\n\n<p>&ldquo;Because it&rsquo;s still a highly-regulated substance, CBD products sold online require adherence to a special set of rules,&rdquo; wrote Lynn Jatania in a <a href=\"https://woocommerce.com/posts/how-to-sell-cbd-online\">how-to post for WooCommerce merchants</a>. In the post, she describes steps sellers must follow and issues they may encounter.</p>\n\n\n\n<h2>Restrictions on Automattic-Hosted or Connected Stores</h2>\n\n\n\n<p>The version of the WooCommerce software available through WordPress.com or WooCommerce.com forbids the sale of CBD products because it is hosted by Automattic. Merchants must use the WooCommerce plugin from WordPress.org and run their stores on a third-party host that allows selling CBD products.</p>\n\n\n\n<p>The WordPress.com <a href=\"https://en.support.wordpress.com/store-guidelines/\">store guidelines</a> state:</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>For example, you may not sell (or facilitate the sale of) any of the following in (or through) your store:&hellip;Controlled and highly-regulated substances (including alcohol, marijuana, cannabidiol or CBD, and other cannabis-derived products)</p></blockquote>\n\n\n\n<p>Self-hosted WooCommerce stores also have restrictions if they wish to connect their stores to any of Automattic&rsquo;s services. This became a <a href=\"https://wptavern.com/woocommerce-com-clarifies-its-policy-on-selling-cbd-products\">source of confusion in June 2019</a>, when a self-hosted WooCommerce merchant was informed they could not connect to WordPress.com via Jetpack while selling CBD products. The WooCommerce team updated its guidelines to better clarify what is allowed when using Automattic&rsquo;s services.</p>\n\n\n\n<p>The policy is nearly the same today. However, the partnership with Square loosens the rules to a degree. Currently, only U.S. stores are allowed to sell CBD products while connected to WordPress.com. They are also required to use Square for payment processing.</p>\n\n\n\n<p>From the <a href=\"https://docs.woocommerce.com/document/woocommerce-cbd/\">WooCommerce Guidelines for CBD and Other Hemp-Derived Products</a>:</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>Square has a vetting process for stores selling CBD and other hemp-derived products, so we currently require Square as the payment provider if you&rsquo;d like to connect your store to Jetpack, WooCommerce Tax, and WooCommerce Shipping. We may approve additional payment providers in the future.</p></blockquote>\n\n\n\n<p>Using Square is not as simple as signing up. To sell CBD products, merchants must go through an application process to make sure they are selling CBD products with approval. The industry is heavily regulated, so this process may take some time.</p>\";s: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, 14 Feb 2020 19:38: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: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:61:\"WPTavern: WordPress 5.4 Beta 1 Ready for Testing and 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:29:\"https://wptavern.com/?p=97193\";s:7:\"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:167:\"https://wptavern.com/wordpress-5-4-beta-1-ready-for-testing-and-feedback?utm_source=rss&utm_medium=rss&utm_campaign=wordpress-5-4-beta-1-ready-for-testing-and-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:7216:\"<p>Release coordinator Francesca Marano announced the <a href=\"https://wordpress.org/news/2020/02/wordpress-5-4-beta-1/\">release of WordPress 5.4 Beta 1</a> on February 11. Most of the work has centered on the block editor. However, at the moment, contributors have closed another <a href=\"https://core.trac.wordpress.org/query?status=closed&milestone=5.4&group=component&max=500&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority\">258 tickets for the 5.4 milestone</a>.</p>\n\n\n\n<p>A second beta release is scheduled for February 18, according to the <a href=\"https://make.wordpress.org/core/5-4/\">5.4 release schedule</a>, along with follow-up betas and release candidates in the following weeks. The final release of WordPress 5.4 is slated for March 31.</p>\n\n\n\n<p>At this point in the development cycle, WordPress 5.4 is in a feature freeze, which means no new enhancements or feature requests will be considered. Only bug fixes and inline documentation are planned for the remainder of the cycle.</p>\n\n\n\n<p>Developers should follow the <a href=\"https://make.wordpress.org/core/handbook/testing/beta-testing/\">beta testing handbook page</a> to test their plugins and themes. Users who want to try out the upcoming release can do so via the <a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester plugin</a>.</p>\n\n\n\n<h2>Block Editor Changes</h2>\n\n\n\n<img />New welcome modal for the block editor.\n\n\n\n<p>WordPress 5.4 will comprise of 10 major releases of the Gutenberg plugin, which is the development project behind the block editor. The oldest update, version 6.6, was released on October 2. The latest update, version 7.5, landed on February 12.</p>\n\n\n\n<p>For end-users who are still using the classic editor, version 5.4 is an opportunity to see if the block editor has improved enough to use. While it may not be ready for everyone, the user experience continues to get better with each release.</p>\n\n\n\n<p>The block editor will feel much improved to users who have not yet tested the new features within the Gutenberg plugin. There is a welcome modal to introduce end-users to the block editor, which probably should have been added in WordPress 5.0 when the block editor landed. This update will also feature two new blocks: a social links block and a buttons group block.</p>\n\n\n\n<p>The new navigation block will not land in WordPress 5.4. &ldquo;The Navigation block is usable right now,&rdquo; said Mark Uraine in a <a href=\"https://make.wordpress.org/core/2020/02/07/navigation-block-exclusion-from-wp-5-4/\">post explaining the decision</a>. &ldquo;But we don&rsquo;t think it&rsquo;s useful yet &ndash; at least not until it has an intuitive place to live.&rdquo; The goal is for it to be available to users in the context of adding it to the header, footer, or sidebar rather than post content. It will make more sense for it to land in an update that branches the block system outside of the content area.</p>\n\n\n\n<p>Several blocks now have extra text and background color settings, including gradient backgrounds. Users can set the image size for galleries, drag and drop a featured image, and change the title attribute for the image block. Multi-block selection is much improved along with numerous other user experience and accessibility improvements.</p>\n\n\n\n<p>The following is, mostly, our coverage of each major Gutenberg release, dating back to version 6.6, along with a few links to the release announcements for versions we did not cover:</p>\n\n\n\n<ul><li><a href=\"https://make.wordpress.org/core/2019/10/02/whats-new-in-gutenberg-2-october/\">Gutenberg 6.6 on Make Core Blog</a></li><li><a href=\"https://wptavern.com/gutenberg-6-7-introduces-storybook-and-gradient-backgrounds\">Gutenberg 6.7 Introduces Storybook and Gradient Backgrounds</a></li><li><a href=\"https://make.wordpress.org/core/2019/10/30/whats-new-in-gutenberg-30-october/\">Gutenberg 6.8 on Make Core Blog</a></li><li><a href=\"https://wptavern.com/gutenberg-6-9-introduces-image-titles-block-patterns-and-new-theme-features\">Gutenberg 6.9 Introduces Image Titles, Block Patterns, and New Theme Features</a></li><li><a href=\"https://wptavern.com/gutenberg-7-0-launches-stable-navigation-block-post-blocks-and-template-parts\">Gutenberg 7.0 Launches Stable Navigation Block, Post Blocks, and Template Parts</a></li><li><a href=\"https://wptavern.com/gutenberg-7-1-includes-welcome-modal-improves-multi-block-selection-and-adds-drag-and-drop-featured-images\">Gutenberg 7.1 Includes Welcome Modal, Improves Multi-Block Selection, and Adds Drag-and-Drop Featured Images</a></li><li><a href=\"https://wptavern.com/gutenberg-7-2-adds-long-awaited-multi-button-block-and-gallery-image-size-option\">Gutenberg 7.2 Adds Long-Awaited Multi-Button Block and Gallery Image Size Option</a></li><li><a href=\"https://wptavern.com/gutenberg-7-3-brings-navigation-block-colors-block-collections-api-and-dynamic-post-blocks\">Gutenberg 7.3 Brings Navigation Block Colors, Block Collections API, and Dynamic Post Blocks</a></li><li><a href=\"https://wptavern.com/gutenberg-7-4-adds-new-color-controls-link-ui-and-block-scaffolding-for-developers\">Gutenberg 7.4 Adds New Color Controls, Link UI, and Block Scaffolding for Developers</a></li><li><a href=\"https://make.wordpress.org/core/2020/02/12/whats-new-in-gutenberg-12-february/\">Gutenberg 7.5 on Make Core Blog</a></li></ul>\n\n\n\n<h2>Important Developer Changes</h2>\n\n\n\n<p>Developers should begin testing their plugins and themes to make sure there are no breaking changes with the 5.4 beta release. Most changes will be with the block editor. However, there are some noteworthy updates to other areas of WordPress.</p>\n\n\n\n<p>The <code>get_calendar()</code> function and anything that uses it, such as the calendar widget, have a <a href=\"https://make.wordpress.org/core/2020/02/12/changes-related-to-calendar-widget-markup-in-wordpress-5-4/\">breaking HTML change</a>. The previous and next month links have been moved below the <code>&lt;table&gt;</code> element and within a new <code>&lt;nav&gt;</code> element. This may potentially break calendar designs for theme authors.</p>\n\n\n\n<p>A new <code>apply_shortcodes()</code> function was added as an alias for <code>do_shortcode()</code>. The purpose of the function was to distinguish between <code>do_*</code> functions, which imply an action, and <code>apply_*</code> functions, which imply a filter or something that should return a value. It is purely a semantic change. It would be nice to see further cleanup of the function-naming mess that represents much of WordPress&rsquo; core code. With 16 years of technical debt, it could use an overhaul. Perhaps the acceptance of this <a href=\"https://core.trac.wordpress.org/ticket/37422\">four-year-old ticket</a> on a simple shortcode function can start a trend.</p>\n\n\n\n<p>Like plugins, themes can now set <a href=\"https://core.trac.wordpress.org/ticket/44592\">minimum version support</a>. By using the <code>Requires at least</code> and <code>Requires PHP</code> headers in a theme&rsquo;s <code>style.css</code> file, theme authors can set the minimum WordPress version and PHP version, respectively.</p>\";s: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, 13 Feb 2020 17:19:17 +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: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:60:\"WPTavern: WordCamp Asia 2020 Canceled Over COVID-19 Concerns\";s:7:\"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:29:\"https://wptavern.com/?p=97179\";s:7:\"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/wordcamp-asia-2020-canceled-over-covid-19-concerns?utm_source=rss&utm_medium=rss&utm_campaign=wordcamp-asia-2020-canceled-over-covid-19-concerns\";s: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:6893:\"<p>Matt Mullenweg announced this morning that he made the call to <a href=\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\">cancel the first WordCamp Asia</a> amid concerns surrounding <a href=\"https://www.who.int/dg/speeches/detail/who-director-general-s-remarks-at-the-media-briefing-on-2019-ncov-on-11-february-2020\">COVID-19</a>, the recent coronavirus strain with over 42,000 reported cases. The virus has caused over 1,000 deaths to date. WordCamp Asia was scheduled to run from February 21-23 in Bangkok, Thailand.</p>\n\n\n\n<p>&ldquo;I&rsquo;ve arrived at the difficult decision to cancel the inaugural WordCamp Asia event,&rdquo; wrote Mullenweg. &ldquo;The excitement and anticipation around this event have been huge, but there are too many unknowns around the health issues unfolding right now in the region to explicitly encourage a large public gathering bringing together over 1,300 people from around the world.&rdquo;</p>\n\n\n\n<p>Mullenweg expressed a desire to explore an online event, possibly live-streaming some of the sessions. However, WordCamp Asia organizers said they will not be able to organize one. &ldquo;We believe our efforts are now best focused on making the best arrangements necessary to assist all affected participants,&rdquo; said Naoko Takano, the global lead of WordCamp Asia 2020.</p>\n\n\n\n<p>&ldquo;I greatly appreciate the work everyone &mdash; from organizers to attendees, speakers to sponsors &mdash; put into making this a big success,&rdquo; said Mullenweg. &ldquo;So many people have come together to create an event to inspire and connect WordPressers, and I am confident that this passion will carry through into the event next year. Our thoughts are with everyone affected by the virus so far, and we sincerely hope that everything is resolved quickly so that this precaution looks unnecessary in hindsight.&rdquo;</p>\n\n\n\n<p>Some attendees have already made the trip to Bangkok. Others have purchased non-refundable flights. The WordCamp Asia team will refund all event tickets and will provide a free ticket to next year&rsquo;s event. Organizers, speakers, attendees, and sponsors should all <a href=\"https://2020.asia.wordcamp.org/2020/02/12/cancellation/\">read WordCamp Asia&rsquo;s cancellation post</a> for details on any next steps they may need to take.</p>\n\n\n\n<p>&ldquo;While we regret that we will not see you in Bangkok this time, we hope you understand that the organising team is standing by this decision to ensure the safety of all WordCamp attendees,&rdquo; wrote Takano.</p>\n\n\n\n<p>There are no details on when the event will be rescheduled. The team said they hope to hold it in early 2021 and will make an announcement as soon as possible.</p>\n\n\n\n<p>Several people expressed their disappointment with the news in the comments on the WordCamp Asia cancellation post, but it better to err on the side of caution with such a large event. The first priority is the safety of all attendees. It was no doubt a difficult decision for all parties involved.</p>\n\n\n\n<p>Some of the attendees with non-refundable tickets and those already in the region talked about meeting up in the <a href=\"https://2020.asia.wordcamp.org/2020/02/12/cancellation/#comment-938\">announcement&rsquo;s comments</a>. This could be a nice alternative to at least network with others.</p>\n\n\n\n<p><strong>Update:</strong> There is an unofficial <a href=\"https://www.meetup.com/WordCamp-Asia-Meetup/\">WordCamp Asia Meetup</a> currently being set up. Also, follow the <a href=\"https://wordpress.slack.com/archives/CLAFGCLBG\">#wcasia WordPress Slack channel</a> for discussion.</p>\n\n\n\n<h2>WordCamp Europe Sends Open Letter of Unity</h2>\n\n\n\n<p>In a letter from WordCamp Europe, another regional camp, past and present organizers <a href=\"https://2020.europe.wordcamp.org/2020/02/12/sending-love-to-wordcamp-asia/\">reached out to the WordCamp Asia team</a>.</p>\n\n\n\n<p>&ldquo;We woke up this morning to the sad news that WordCamp Asia has been canceled,&rdquo; the team wrote. &ldquo;We can only imagine what a heart-wrenching and difficult decision this must have been, and how much pain it must be causing you to see something you have poured your hearts and souls into just disappear into thin air.&rdquo;</p>\n\n\n\n<p>Putting together a large, regional WordCamp is a tremendous undertaking that takes 100s of volunteer hours. Events such as these can take a full year of planning and organizing.</p>\n\n\n\n<p>&ldquo;We know how hard it can be to come together across cultures and countries, but that in the end it is worth it because you are one team working together,&rdquo; wrote the organizers. &ldquo;You are creating a flagship event and you know that it will bring joy to so many people and that every one of you has been waiting for the day of the event, and for that not to happen despite all of that work and care must be devastating.&rdquo;</p>\n\n\n\n<h2>Wordfence to Aid With Lost Fees</h2>\n\n\n\n<p>Mark Maunder, Wordfence Founder and CEO, announced on the Wordfence blog that his company is <a href=\"https://www.wordfence.com/blog/2020/02/wordcamp-asia-cancellation-fee-assistance-package-from-wordfence/\">creating a $10,000 fund</a> to help attendees with hotel and airline change fees. The company will provide up to $200 in assistance per person, which will be served on a first-come-first-served basis. Maunder stressed that people should try to recoup any losses they can by following the advice on the WordCamp Asia cancellation post first. This will allow them to help as many people as possible.</p>\n\n\n\n<p>&ldquo;Cancelling WC Asia 10 days before it commences is a brutally tough call,&rdquo; he wrote. &ldquo;I&rsquo;ve had the organizers in my thoughts for the past few days knowing, via backchannels, that they&rsquo;re agonizing over this. This is the right call.&rdquo;</p>\n\n\n\n<p>The aid is available to all WordCamp Asia organizers, speakers, and attendees while there are still funds available. Those in need of assistance can find more information on the <a href=\"https://www.wordfence.com/blog/2020/02/wordcamp-asia-cancellation-fee-assistance-package-from-wordfence/\">fund&rsquo;s announcement post</a>.</p>\n\n\n\n<p><strong>Update &ndash; February 12:</strong> Wordfence exceeded their $10,000 fund with 94 applicants. GoDaddy Pro stepped in to add an additional $10,000 to the fund, according to a <a href=\"https://twitter.com/mmaunder/status/1227698625859420163\">tweet by Maunder</a>.</p>\n\n\n\n<p><strong>Update &ndash; February 13:</strong> <a href=\"https://twitter.com/mmaunder/status/1227918513525919777\">Yoast added $10,000</a>, bringing the total to $30,000. At the moment, no additional funding is needed because requests are slowing. If needed, Maunder said he would <a href=\"https://twitter.com/mmaunder/status/1227925429123678209\">reach out to others</a> who have made offers to help.</p>\";s: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, 12 Feb 2020 16:26: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: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: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:59:\"WordPress.org blog: WordCamp Asia Cancelled Due to COVID-19\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8344\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"https://wordpress.org/news/2020/02/wordcamp-asia-cancelled-due-to-covid-19/\";s: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:1265:\"<p>I&#8217;ve arrived at the difficult decision to cancel the inaugural WordCamp Asia event, which was planned to take place in Bangkok on February 21st. The excitement and anticipation around this event have been huge, but there are too many unknowns around the health issues unfolding right now in the region to explicitly encourage a large public gathering bringing together over 1,300 people from around the world.</p>\n\n\n\n<p>We’re going to explore if speakers — including myself — can do our sessions with the same content and at the same time that was originally planned, just online instead of in-person so we can achieve our goal of bringing the pan-Asian community closer together without putting anyone&#8217;s health at additional risk.</p>\n\n\n\n<p>Regardless, I greatly appreciate the work everyone — from organizers to attendees,&nbsp; speakers to sponsors — put into making this a big success. So many people have come together to create an event to inspire and connect WordPressers, and I am confident that this passion will carry through into the event next year. Our thoughts are with everyone affected by the virus so far, and we sincerely hope that everything is resolved quickly so that this precaution looks unnecessary in hindsight.</p>\";s: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, 12 Feb 2020 04:23: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:\"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: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:40:\"WordPress.org blog: WordPress 5.4 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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8322\";s:7:\"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/2020/02/wordpress-5-4-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7500:\"<p>WordPress 5.4 Beta 1 is now available for testing!</p>\n\n\n\n<p><strong>This software is still in development,</strong>&nbsp;so we don’t recommend running it on a production site. Consider setting up a test site to play with the new version.</p>\n\n\n\n<p>You can test the WordPress 5.4 beta in two ways:</p>\n\n\n\n<ul><li>Try the&nbsp;<a href=\"https://wordpress.org/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a>&nbsp;plugin (choose the “bleeding edge nightlies” option)</li><li>Or&nbsp;<a href=\"https://wordpress.org/wordpress-5.4-beta1.zip\">download the beta here&nbsp;(zip)</a>.</li></ul>\n\n\n\n<p>WordPress 5.4 is slated for release on&nbsp;<a href=\"https://make.wordpress.org/core/5-4/\">March 31, 2020</a>, and <strong>we need your help to get there</strong>!</p>\n\n\n\n<p>While the <strong>primary goal for 2020 is full-site editing with blocks</strong>, contributors to WordPress are working across every area of the project to ensure the software continues moving forward.</p>\n\n\n\n<p>Testing for bugs is an important part of polishing the release during the beta stage and a great way to contribute. Here are some of the big changes and features to pay close attention to while testing.</p>\n\n\n\n<h2>Block Editor: features and improvements</h2>\n\n\n\n<p>WordPress 5.4 Core will merge ten releases of the Gutenberg plugin. This means there’s a long list of exciting new features. Here are just a few:</p>\n\n\n\n<ul><li>Two new blocks: social links and buttons.</li><li>More color options for Button, Cover, Group and Column blocks .</li><li>A <a href=\"https://github.com/WordPress/gutenberg/pull/18041\">Welcome Guide modal</a>.</li><li>Tools for adding featured images in the Latest Posts block.</li><li>Easier navigation in the block breadcrumbs.</li></ul>\n\n\n\n<p>Some additional changes to make note of:</p>\n\n\n\n<ul><li>On mobile, the toolbar stays on top, so you can&#8217;t lose it.</li><li>Easier image sizing in the Gallery block.</li><li>Drag-and-drop images into the featured-image box.</li><li>Several new APIs.</li><li>Friendlier offline error messages on REST API request failures.</li><li>Table block captions.</li><li>You can now color just parts of the text in any RichText block. </li></ul>\n\n\n\n<h3>Accessibility improvements</h3>\n\n\n\n<ul><li>Easier multi-block selection.&nbsp;</li><li>Support for changing an image&#8217;s title attribute within the Image block.</li><li>Easier tabbing. This had been one of the editor&#8217;s biggest accessibility problems, but now tabbing works with the block’s sidebar.</li><li>Visual switch between Edit and Navigation modes and enable screen reader announcements.</li></ul>\n\n\n\n<p>To see all of the features for each release in detail check out the release posts:&nbsp;<a href=\"https://make.wordpress.org/core/2019/10/02/whats-new-in-gutenberg-2-october/\">6.6</a>, <a href=\"https://make.wordpress.org/core/2019/10/16/whats-new-in-gutenberg-16-october/\">6.7</a>, <a href=\"https://make.wordpress.org/core/2019/10/30/whats-new-in-gutenberg-30-october/\">6.8</a>, <a href=\"https://make.wordpress.org/core/2019/11/13/whats-new-in-gutenberg-13-november/\">6.9</a>, <a href=\"https://make.wordpress.org/core/2019/11/27/whats-new-in-gutenberg-27-november/\">7.0</a>, <a href=\"https://make.wordpress.org/core/2019/12/11/whats-new-in-gutenberg-11-december/\">7.1</a>, <a href=\"https://make.wordpress.org/core/2020/01/09/whats-new-in-gutenberg-8-january/\">7.2</a>, <a href=\"https://make.wordpress.org/core/2020/01/22/whats-new-in-gutenberg-22-january/\">7.3</a>, <a href=\"https://make.wordpress.org/core/2020/02/05/whats-new-in-gutenberg-5-february/\">7.4</a> and 7.5.</p>\n\n\n\n<h3>Continuing efforts to improve performance</h3>\n\n\n\n<p>The block editor team has achieved a 14% loading time reduction and 51% time-to-type reduction, for a particularly sizable post (~ 36,000 words, ~1,000 blocks) since WordPress 5.3.</p>\n\n\n\n<h2>Wait! There&#8217;s more</h2>\n\n\n\n<h3>Site Health </h3>\n\n\n\n<p>When a project powers 34% of the world&#8217;s websites, there must be a focus on security. This is why contributors continue working so hard on the Site Health Project.</p>\n\n\n\n<p>WordPress 5.4 adds a widget on the dashboard that warns administrators of potential issues that could affect their site&#8217;s performance or security. A call-to-action button directs them to the Site Health screen for details and suggested fixes.</p>\n\n\n\n<h3>Accessibility improvements</h3>\n\n\n\n<p>WordPress strives to improve accessibility with every release, and this release is no different. Version 5.4 will contain the following accessibility enhancements:</p>\n\n\n\n<ul><li>Better focus management in Menu, Customizer and Site Health screens, to fix some existing keyboard navigation issues.</li><li>Easier keyboard navigation for better semantics in the Media modal.</li><li>An easier-to-read Privacy Policy Guide.</li></ul>\n\n\n\n<h2>For Developers</h2>\n\n\n\n<p>5.4 also contains a bunch of developer focused changes.</p>\n\n\n\n<h3>Calendar Widget </h3>\n\n\n\n<p>The HTML 5.1 specification mandates that a <code>&lt;tfoot&gt;</code> tag must follow&nbsp;<code>&lt;tbody&gt;</code> tag (which was not the case in the calendar widget). WordPress 5.4 moves the navigation links to a <code>&lt;nav&gt;</code> HTML element immediately following the <code>&lt;table&gt;</code> element in order to produce valid HTML.</p>\n\n\n\n<h3>apply_shortcodes() as an alias for do_shortcode()</h3>\n\n\n\n<p>Instead of using <code>do_shortcode()</code>, <code>apply_shortcodes()</code> should be utilized instead. While <code>do_shortcode()</code> is not being deprecated, the new function delivers better semantics.</p>\n\n\n\n<h3>Better favicon handling</h3>\n\n\n\n<p>Now favicon requests can be managed with more flexibility. Administrators can choose a favicon in the Customizer, or upload a <code>/favicon.ico</code> file. The WordPress logo will always load as a fallback.</p>\n\n\n\n<h3>Other changes for developers</h3>\n\n\n\n<ul><li>Clearer information about errors in <code>wp_login_failed</code>.</li><li>Site ID has been added to the <code>newblog_notify_siteadmin</code> filter for multisite installs.</li><li>Support has been added for the required WordPress and PHP version headers in themes.</li><li>Embed support has been added for TikTok.</li></ul>\n\n\n\n<p>Keep your eyes on the&nbsp;<a href=\"https://make.wordpress.org/core/\">Make WordPress Core blog</a>&nbsp;for &nbsp;<a href=\"https://make.wordpress.org/core/tag/5-4+dev-notes/\">5.4-related developer notes</a>&nbsp;in the coming weeks, breaking down these and other changes in greater detail.</p>\n\n\n\n<p>So far, contributors have fixed more than <a href=\"https://core.trac.wordpress.org/query?status=closed&milestone=5.4&group=component&max=500&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority\">255 tickets in WordPress 5.4</a> with more to come.</p>\n\n\n\n<h2>How You Can Help</h2>\n\n\n\n<p>Do you speak a language other than English?&nbsp;<a href=\"https://translate.wordpress.org/projects/wp/dev/\">Help us translate WordPress into more than 100 languages</a>!</p>\n\n\n\n<p>If you think you’ve found a bug, you can post to the&nbsp;<a href=\"https://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area</a>&nbsp;in the support forums. We’d love to hear from you! If you’re comfortable writing a reproducible bug report,&nbsp;<a href=\"https://core.trac.wordpress.org/newticket\">file one on WordPress Trac</a>&nbsp;where you can also find a list of&nbsp;<a href=\"https://core.trac.wordpress.org/tickets/major\">known bugs</a>.</p>\";s: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, 11 Feb 2020 22:43:44 +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:\"Francesca Marano\";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:65:\"WPTavern: EditorsKit Tackles Typography With First Premium Add-On\";s:7:\"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:29:\"https://wptavern.com/?p=97154\";s:7:\"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/editorskit-tackles-typography-with-first-premium-add-on?utm_source=rss&utm_medium=rss&utm_campaign=editorskit-tackles-typography-with-first-premium-add-on\";s: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:5031:\"<p>Jeffrey Carandang released the <a href=\"https://editorskit.com/wordpress-gutenberg-editor-typography-and-google-fonts-add-on/\">EditorsKit Typography Add-On</a> today, the first commercial extension to his <a href=\"https://wordpress.org/plugins/block-options/\">EditorsKit WordPress plugin</a>. The plugin provides page and block-level typography options. It works with Google Fonts, includes preset font combinations, and allows users to create custom typography rules.</p>\n\n\n\n<p>Unlike many other block editor plugins that offer a library of blocks, EditorsKit does not add custom blocks. Instead, it focuses on creating a better block editor experience. It enhances the editor interface, adds extra options to the editor toolbar, and extends options for existing blocks. It is a toolkit that is almost experimental, handling user-requested features long before they land in core WordPress or even the Gutenberg plugin.</p>\n\n\n\n<p>Until now, EditorsKit has remained a free plugin with no commercial components. However, it was almost inevitable that such a plugin would need some financial backing, particularly with the pace that Carandang is adding new features.</p>\n\n\n\n<p>&ldquo;The plan was actually for Gutenberg and EditorsKit to mature enough, then create premium add-ons or services,&rdquo; said Carandang. &ldquo;But, the circumstances changed when I created ShareABlock. There are so many things that I want to achieve when creating a layout that core blocks cannot do yet.&rdquo;</p>\n\n\n\n<p><a href=\"https://wptavern.com/creator-of-editorskit-launches-community-block-sharing-site\">ShareABlock</a> is Carandang&rsquo;s community website for sharing blocks and templates. Site visitors can download block files directly from the site and import them into the block editor. Members can also share their custom block and template designs with others. Everything on the site is free to the community.</p>\n\n\n\n<p>&ldquo;For this specific add-on, I was trying to solve the issue when it comes to typography in the Gutenberg Editor that I&rsquo;ve experienced when creating templates and block patterns for ShareABlock,&rdquo; said Carandang. &ldquo;I always find myself doing custom functions to use specific Google Fonts when creating a template. I figured there might be others that are having the same problem.&rdquo;</p>\n\n\n\n<p>The typography add-on for EditorsKit is a value-add on top of the normal free version of the plugin. For users who decide to purchase, they can choose between three plans that range from $29 and $99 per year, depending on the number of sites they need updates and support on.</p>\n\n\n\n<p>&ldquo;My main focus is still on the free version,&rdquo; said Carandang. &ldquo;There will just be a few add-ons that will be built along the way whenever the circumstances need it.&rdquo;</p>\n\n\n\n<p>This add-on is just the first step into a larger goal to add some other commercial add-ons and integration into EditorsKit. &ldquo;I have a couple of other ideas,&rdquo; said Carandang. &ldquo;I plan to turn this into a bundle to make it easier for users to manage them inside the settings page.&rdquo;</p>\n\n\n\n<h2>How the Plugin Works</h2>\n\n\n\n<p>Yesterday, Carandang launched version 1.2.5 of the primary EditorsKit plugin. Along with a handful of new features and bug fixes, he added a new &ldquo;Extensions&rdquo; tab to the plugin&rsquo;s settings screen. End-users can grab the typography add-on from that new page. Once installed and activated, users can view and set a default font combination from that same area in the plugin.</p>\n\n\n\n<img />Typography Settings on the EditorsKit settings screen.\n\n\n\n<p>The plugin adds typography options on the post-editing screen. It provides a custom sidebar that allows end-users to select a font combination for the entire post. </p>\n\n\n\n<p>End-users can also create custom typography rules from this same sidebar. Any custom rules created are stored for use on other posts and pages too. There is also an option to apply the rules to the <code>&lt;body&gt;</code> element on the front end and override the theme&rsquo;s typography.</p>\n\n\n\n<img />Post/Page-level typography options in the block editor.\n\n\n\n<p>On the block level, each block allows users to select a font family and weight. This is handled through a custom &ldquo;Typography Settings&rdquo; panel. Currently, there are over 60 choices from Google Fonts and a few system fonts. The add-on also automatically updates the font-weight options on a per-font basis (not all fonts are built for all weights).</p>\n\n\n\n<img />Per-block typography settings.\n\n\n\n<p>The one potential downside to this add-on is how easy it is to go overboard when adding external fonts. When using too many on a page, it will slow down the page-loading speed. As a general rule of thumb, users should not select more than two or three fonts to keep speed in check. It would be handy if the plugin added a warning message somewhere in the UI to let users know of the dangers of using too many fonts.</p>\";s: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, 11 Feb 2020 20:25: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: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: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:64:\"WPTavern: Awesome Motive Acquires the All in One SEO Pack 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:29:\"https://wptavern.com/?p=97109\";s:7:\"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/awesome-motive-acquires-the-all-in-one-seo-pack-plugin?utm_source=rss&utm_medium=rss&utm_campaign=awesome-motive-acquires-the-all-in-one-seo-pack-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:7061:\"<img />\n\n\n\n<p class=\"has-drop-cap mt-2\">Last Thursday, Awesome Motive CEO Syed Balkhi <a href=\"https://semperplugins.com/all-in-one-seo-is-now-part-of-the-awesome-motive-family/\">announced his company acquired the All in One SEO Pack</a> (AIOSEO) plugin. Michael Torbert, the plugin creator, first released <a href=\"https://wordpress.org/plugins/all-in-one-seo-pack/\">AIOSEO</a> in 2007. Since then, the plugin has been downloaded over 65 million times. It is currently active on over 2 million WordPress sites.</p>\n\n\n\n<p>Balkhi said his company acquired the project for two primary reasons. &ldquo;First, because our users continuously asked us to build an SEO plugin that&rsquo;s easier to use and is more affordable,&rdquo; he said. &ldquo;They specifically wanted an SEO plugin that was reliable and results-focused like some SaaS software is.&rdquo; The second reason was that he did not want the plugin to end up in the wrong hands. &ldquo;All in One SEO has played an important role in the history of WordPress, in the history of WPBeginner (since this was the first SEO plugin I used), and there are a lot of users who rely on All in One SEO Pack to optimize their WordPress site for SEO.&rdquo;</p>\n\n\n\n<p>&ldquo;I&rsquo;m confident in handing over the reins to such a great organization in Awesome Motive and excited to see what the next chapter brings for AIOSEOP under your leadership,&rdquo; said Torbert in response to Balkhi&rsquo;s announcement.</p>\n\n\n\n<p>For many years, AIOSEO enjoyed the spotlight. It was the go-to SEO plugin for a large segment of the WordPress user base. However, in recent years, Yoast SEO has captured a larger share of the market. It is currently installed on over 5 million websites. Other plugins such as The SEO Framework have also eaten into the market. Plus, newcomer Rank Math SEO has been making waves and picking up users at a steady clip. Needless to say, there is much fiercer competition among SEO plugins than in AIOSEO&rsquo;s heyday.</p>\n\n\n\n<p>&ldquo;The SEO plugin market is definitely a competitive one, but I feel it&rsquo;s only competitive by quantity,&rdquo; said Balkhi. &ldquo;WordPress as a platform is flourishing, and one of the reasons for that is the choices/freedoms that WordPress offers to users, including the choice of which SEO plugin to use.&rdquo;</p>\n\n\n\n<p>Balkhi has a knack for growing products, and the WordPress ecosystem is steadily growing. Currently, over 14 million websites use his software. He launched <a href=\"https://www.wpbeginner.com/\">WP Beginner</a>, a free WordPress resource site, in 2009. Since then, he&rsquo;s launched successful products like <a href=\"https://optinmonster.com/\">OptinMonster</a>, a conversion optimization toolkit; <a href=\"https://wpforms.com/\">WPForms</a>, a drag-and-drop form builder; <a href=\"https://www.monsterinsights.com/\">MonsterInsights</a>, a Google Analytics plugin; and more. In 2019, his company launched <a href=\"https://rafflepress.com/\">RafflePress</a>, a contest and giveaway plugin.</p>\n\n\n\n<p>Balkhi noted that he does not manage all of these properties on his own. &ldquo;The truth is that I&rsquo;m blessed to work alongside with some of the most talented people in the ecosystem that are my partners in various ventures, such as Thomas Griffin, Jared Atchison, Chris Christoff, John Turner, Blair Williams, Steve and Stephanie Wells, Josh Kohlbach, and now Benjamin Rojas,&rdquo; he said. &ldquo;Without my partners and the rest of our amazing Awesome Motive team, none of what we do would be possible.&rdquo;</p>\n\n\n\n<p>The question is now whether his company can grow AIOSEO&rsquo;s audience from its current 2 million users while turning a profit.</p>\n\n\n\n<p>&ldquo;Our growth plan for the next year and beyond is to make an SEO plugin that&rsquo;s geared towards beginners and non-techy business owners,&rdquo; said Balkhi. &ldquo;An SEO plugin that&rsquo;s always reliable, comes with exceptional customer support, and most importantly is results-focused. I believe when we meet these three criteria, we will have done more than enough to set ourselves apart from the competition.&rdquo;</p>\n\n\n\n<p>Except for Torbert, the entire AIOSEO team is joining Awesome Motive and will continue working on the plugin. &ldquo;Some of the team members were previously part-time contractors, but now they will be working full-time on AIOSEO, so you can say that the product team has actually grown,&rdquo; said Balkhi.</p>\n\n\n\n<p>Benjamin Rojas will be taking the lead role in managing the plugin. He was previously one of the senior members from Awesome Motive&rsquo;s OptinMonster team. Alongside this change, the company is planning to add two new hires in the coming weeks. Balkhi expressed a desire to &ldquo;hit the ground running at full speed.&rdquo;</p>\n\n\n\n<h2>The Future of the Plugin</h2>\n\n\n\n<img />Primary settings screen for the AIOSEO plugin.\n\n\n\n<p>The current version of AIOSEO (v.3.3.5) feels a bit dated. It lacks integration directly with the block editor, relying on the older meta box system. The settings screens do not fit completely into the WordPress admin UI. Cleaning up these areas could offer some quick and instant wins in the short term.</p>\n\n\n\n<p>AIOSEO and other SEO plugins, in general, need to make the complex simple.</p>\n\n\n\n<p>SEO plugins can be painfully complex to configure. At times, the user experience can be overwhelming. The average user should not need to be an SEO expert or spend half an hour configuring a post&rsquo;s SEO options. It should not feel like work before sharing content with the world.</p>\n\n\n\n<p>&ldquo;Aside from SEO experts and consultants, just about everyone else finds SEO to be confusing,&rdquo; said Balkhi. &ldquo;How do you know whether the SEO settings that you have are driving results? Is the green light enough or is it lying? Is the green light even relevant?&rdquo; These are the types of questions Balkhi said his company receives from users. &ldquo;Unfortunately there isn&rsquo;t a single solution in the market that solves these problems,&rdquo; he said.</p>\n\n\n\n<p>Based on what is currently available, there&rsquo;s a gap between the set-it-and-forget-it type of SEO plugins and highly-advanced plugins. There&rsquo;s an unclaimed middle ground that guides users without complicating things.</p>\n\n\n\n<p>Balkhi is not yet prepared to provide specific details from the roadmap, playing it a little close to the vest. &ldquo;I want to build a WordPress SEO plugin that&rsquo;s both reliable and results-focused,&rdquo; he said. He will be working closely with the team as they work to revamp the plugin.</p>\n\n\n\n<p>&ldquo;I have a lot of plans to improve the product, and I&rsquo;m really excited to be bringing several of our internal SEO tools into a single plugin suite to share with the larger community,&rdquo; said Balkhi. &ldquo;My goal is that after our series of updates and new features, All in One SEO will give WordPress sites an even bigger SEO advantage over other third-party CMS platforms.&rdquo;</p>\";s: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, 10 Feb 2020 20:56: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: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: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:80:\"WPTavern: Convert Classic Content to Blocks With the Bulk Block Converter 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:29:\"https://wptavern.com/?p=97056\";s:7:\"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:205:\"https://wptavern.com/convert-classic-content-to-blocks-with-the-bulk-block-converter-plugin?utm_source=rss&utm_medium=rss&utm_campaign=convert-classic-content-to-blocks-with-the-bulk-block-converter-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:3462:\"<p>Organic Themes released the <a href=\"https://wordpress.org/plugins/bulk-block-converter/\">Bulk Block Converter </a>WordPress plugin last month and updated it in the past week. The plugin allows users to convert classic content, written in the old editor, to the new block format.</p>\n\n\n\n<p>Unless end-users have the Classic Editor plugin installed, their old content is placed into the classic block in the newer block editor. WordPress provides an option for transforming this content into individual blocks from the block-editor interface. However, this must be done on a per-post basis.</p>\n\n\n\n<p>&ldquo;Going back and converting each post and page with a classic block to individual blocks can be a very long and tedious process,&rdquo; said David Morgan, co-founder of Organic Themes. &ldquo;The Bulk Block Converter plugin quickly scans all your posts and pages for classic blocks, and allows you to quickly convert them all to individual blocks within one interface.&rdquo;</p>\n\n\n\n<p>Originally, Organic Themes built the plugin for internal use at their company. &ldquo;We developed the plugin to help us convert the content of our theme demos to blocks more efficiently,&rdquo; said Morgan. The company had to convert over 40 theme-demo sites with an average of 50 posts and pages per site. They built this plugin to avoid a long and painstaking process. Then decided to share it. &ldquo;We thought the tool could be very useful for other users migrating to Gutenberg.&rdquo;</p>\n\n\n\n<p>For users with a lot of old content, Bulk Block Converter could be the key to moving it all to the new block editor system. Based on the conversions I ran on a couple of test installations, it worked flawlessly.</p>\n\n\n\n<h2>How the Plugin Works</h2>\n\n\n\n<img /> Block Conversion plugin screen in the admin.\" class=\"wp-image-97059\" srcset=\"https://wptavern.com/wp-content/uploads/2020/02/bulk-block-converter-tool.png 896w, https://wptavern.com/wp-content/uploads/2020/02/bulk-block-converter-tool-300x175.png 300w, https://wptavern.com/wp-content/uploads/2020/02/bulk-block-converter-tool-768x449.png 768w, https://wptavern.com/wp-content/uploads/2020/02/bulk-block-converter-tool-500x292.png 500w\" sizes=\"(max-width: 896px) 100vw, 896px\" />Bulk Block Converter admin screen for converting content.\n\n\n\n<p>The Bulk Block Converter plugin adds a new &ldquo;Block Conversion&rdquo; sub-menu item to the WordPress &ldquo;Tools&rdquo; menu in the admin. Once on that screen, it provides a &ldquo;Scan Content&rdquo; button. When clicked, it checks all of your posts, pages, and other custom post types for classic content. It then builds a list table of all the content.</p>\n\n\n\n<p>From that point, you can choose between converting each post individually or running a bulk conversion of all posts. I always recommend being cautious with such plugins by converting and checking a couple of individual posts before trying bulk conversions.</p>\n\n\n\n<p>The process for converting posts was snappy during my tests. In just a few moments, I converted all of my old content over without issue.</p>\n\n\n\n<p class=\"has-text-color has-background has-white-color has-blue-700-background-color is-style-highlight shadow-md text-white bg-blue-700\">Like any plugin that modifies content in this way, it is prudent to store a backup of your site before converting the posts. This is also a one-way conversion process. Once a post is transformed, there is no going back.</p>\";s: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, 07 Feb 2020 20:49: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: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: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:94:\"WPTavern: Gutenberg 7.4 Adds New Color Controls, Link UI, and Block Scaffolding for Developers\";s:7:\"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:29:\"https://wptavern.com/?p=97032\";s:7:\"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-7-4-adds-new-color-controls-link-ui-and-block-scaffolding-for-developers?utm_source=rss&utm_medium=rss&utm_campaign=gutenberg-7-4-adds-new-color-controls-link-ui-and-block-scaffolding-for-developers\";s: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:4443:\"<p class=\"has-drop-cap\">The Gutenberg development team <a href=\"https://make.wordpress.org/core/2020/02/05/whats-new-in-gutenberg-5-february/\">launched version 7.4 of the plugin</a> yesterday. The update includes a few user-facing features: a text color control for the group block, background-color control for the columns block, and a new link UI for rich text components. For developers, the team introduced a script for launching a block plugin from the command line.</p>\n\n\n\n<p>After a dramatic increase in speed in the <a href=\"https://wptavern.com/gutenberg-7-3-brings-navigation-block-colors-block-collections-api-and-dynamic-post-blocks\">last update</a>, version 7.4 continues down the same path. When tested against a post with approximately 36,000 words and 1,000 blocks, page load speeds dropped from 5.461s to 5.037s and keypress events from 34.63ms to 34.54ms. This is not a significant reduction, but every improvement helps.</p>\n\n\n\n<p>The update includes over two dozen bug fixes and several enhancements. Work toward the navigation block continues. The experience is slowly getting better, but it still doesn&rsquo;t feel ready for production.</p>\n\n\n\n<p>The team also launched an early, experimental <a href=\"https://github.com/WordPress/gutenberg/pull/19883\">mechanism for handling global styles</a>, a feature that may be complete this year. <a href=\"https://wptavern.com/key-takeaways-from-the-first-future-of-themes-meeting\">Global styles</a> would allow themes to set default colors, typographical settings, and potentially more. Theme authors should keep an eye on the development of this feature and offer feedback.</p>\n\n\n\n<h2>Group Block Gets Text Color Control</h2>\n\n\n\n<img />Changing the text color for an entire group.\n\n\n\n<p>The Gutenberg team once again cleans up one of my biggest gripes. When using the group block in the past, end-users could not apply a text color to every sub-element of the group block. Instead, they had to add a text color to any blocks within the group. It was a painstaking process at times, particularly with groups of many blocks.</p>\n\n\n\n<p>With this change in version 7.4, users can apply a <a href=\"https://github.com/WordPress/gutenberg/pull/19181\">text color to the entire group</a> at once, and that color should trickle down to sub-blocks. Of course, users can still change the color of inner blocks if necessary.</p>\n\n\n\n<h2>Columns Block Gets Background Color Control</h2>\n\n\n\n<img />Customizing the background color on a columns block.\n\n\n\n<p>Gutenberg 7.4 adds the <a href=\"https://github.com/WordPress/gutenberg/pull/17813\">background color control to the columns block</a>. This makes it work similarly to the group block by adding a background color to the entire containing block. Unfortunately, it did not receive the same text color control in this release.</p>\n\n\n\n<p>Currently, there is still no way to add background and text colors to an individual column. End-users can only add a color on the sub-blocks within a column. The feature is a step in the right direction, but it&rsquo;s still missing some essential color options.</p>\n\n\n\n<h2>Link UI Updated</h2>\n\n\n\n<img />Inserting a link into a paragraph with the new UI.\n\n\n\n<p>This is a minor change but welcome. The link UI for rich text, a component used for blocks such as paragraphs, <a href=\"https://github.com/WordPress/gutenberg/pull/19686\">now has the same UI</a> as the navigation and button blocks. The consistency is nice, but I am a fan of the improvement overall. </p>\n\n\n\n<p>The UI change is subtle, but it already feels slightly more comfortable after a day of use.</p>\n\n\n\n<h2>Block Scaffolding for Developers</h2>\n\n\n\n<img />Initial JavaScript file for an auto-created block plugin.\n\n\n\n<p>For developers who want to jump-start a new block plugin, the Gutenberg team <a href=\"https://www.npmjs.com/package/create-wordpress-block\">released an official script</a> for getting started. By running the <code>npm init @wordpress/block</code> command, the script will install and run you through setting up a custom block. The script creates an entire plugin folder, including the necessary PHP, CSS, and JavaScript files.</p>\n\n\n\n<p>This script is ideal for building single-block plugins, which will eventually be exposed via the official WordPress block directory. Because it creates an entire plugin, it is probably not the best route for creating new blocks within an existing plugin.</p>\";s: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, 06 Feb 2020 21:06:59 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s: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:76:\"Post Status: Syed Balkhi on Awesome Motive’s acquisition of All In One SEO\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://poststatus.com/?p=76000\";s:7:\"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:84:\"https://poststatus.com/syed-balkhi-on-awesome-motives-acquisition-of-all-in-one-seo/\";s: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:31030:\"<p>Syed Balkhi joins me to discuss the acquisition of AIO SEO.</p>\n\n\n\n<p>All in One SEO is one of the most widely used plugins in the WordPress ecosystem, with more than two million installs.</p>\n\n\n\n<p>In the <a href=\"https://semperplugins.com/all-in-one-seo-is-now-part-of-the-awesome-motive-family/\">announcement post</a>, Syed says the entire All in One SEO team is joining Awesome Motive, aside from founder Michael Torbert:</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>Aside from new ownership change, it’s business as usual. You can continue to use the plugin that you love without any interruptions.</p><p>With the exception of Michael, the entire All in One SEO team joined Awesome Motive. This means that you are still being supported by the same talented people.</p><p>On top of that, we have added more team members from Awesome Motive who will be working on the All in One SEO project, including me.</p><p>In a near future release, you will see a small plugin design refresh in the WordPress admin area.</p><p>With our experience and a dedicated team, we will be adding several new features and improvements to the All in One SEO WordPress plugin in the near future.</p></blockquote>\n\n\n\n\n\n\n\n<p><strong>Some of the questions he answers:</strong></p>\n\n\n\n<ul><li>So who is your target customer with All in One SEO?</li><li>How is the model structured? You’re directing strategy… is there a partner you\'re working with?</li><li>How does your vision for AIO SEO compare to what you see in Yoast SEO?</li><li>How do you envision the free/premium divide?</li><li>What are the first three things you plan to do?</li><li>How did the conversation with Michael start? Did you approach him? Did he approach you? Tell me a story.</li><li>How far do you think you can scale this business model?</li><li>What do you think about the consolidation we’re seeing in the plugin ecosystem — the consolidation you’re a major player in?</li></ul>\n\n\n\n<p><strong>Links:</strong></p>\n\n\n\n<ul><li><a href=\"https://awesomemotive.com/\">Awesome Motive</a></li><li><a href=\"https://wordpress.org/plugins/all-in-one-seo-pack/\">AIO SEO on WP.org</a></li><li><a href=\"https://semperplugins.com/all-in-one-seo-is-now-part-of-the-awesome-motive-family/\">Acquisition announcement</a></li></ul>\n\n\n\n<h3>Full Transcript</h3>\n\n\n\n<div class=\"transcript\">\n<p>Transcribed by https://otter.ai</p>\n\n\n\n<p><strong>Brian Krogsgard 0:02 </strong><br />This episode of the Draft podcast is brought to you by Jilt. Jilt is email marketing built for eCommerce stores. Go to jilt.com to try it today. I know that Jilt is an awesome product because I work on it every single week. And I get to see it up close and personal. Jilt has amazing integrations for WooCommerce, Shopify, and ads so no matter what platform you\'re building your eCommerce site on, it will work for you. It\'s built specifically for eCommerce with extremely powerful segmentation options for you to set up automations to work for you while you sleep. And you can do your manual email marketing through our broadcasts feature in Jilt. It\'s a great tool. I know you\'ll love it. Try it today. Go to Jilt.com. And thanks to Jilt for being a Post Status partner. Hello and welcome to the Draft podcast. My name is Brian Krogsgard. I\'m with Syed Balkhi. Hey Syed. </p>\n\n\n\n<p><strong>Syed Balkhi 0:55</strong><br />Hey man, how are you? </p>\n\n\n\n<p><strong>Brian Krogsgard 0:56</strong><br />I\'m doing great. So you know like you Guys have news coming out all the time. And you\'ve got another plugin that you\'ve put under the automotive umbrella. And it\'s all in one SEO. So first off just congrats on the acquisition of a really long-running popular plugin.</p>\n\n\n\n<p><strong>Syed Balkhi 1:18 </strong><br /> Thank you. Thank you.</p>\n\n\n\n<p><strong>Brian Krogsgard 1:20 </strong><br /> So let\'s start with what attracted you to all in one SEO as the type of plugin that you were interested in.</p>\n\n\n\n<p><strong>Syed Balkhi 1:29 </strong><br /> So when I started a web beginner I was I started with all in one SEO, I\'ve had a lot of respect for the plugin in industry. I believe it you know, it is one of the tools that are essential for a website owner. And it is something that our users have continued to, to build. If you haven\'t checked out the WP begin to engage Facebook group, this question comes up a lot I did a, I did a video about it and people were asking, like, you know, when are you going to build a SEO plugin that is beginner-friendly. And, you know, it\'s just keeps coming up over and over every year if you\'ve been able to build one product, what would it be? And SEO keeps coming upset. We tried to make a deal happen. And you know, I approached several authors and this was the one that we ended up going with.</p>\n\n\n\n<p><strong>Brian Krogsgard 2:25 </strong><br /> So you say, you know, people from the dopey beginner groups were the ones that initiated this conversation. So who is your target customer with a plugin like this?</p>\n\n\n\n<p><strong>Syed Balkhi 2:38 </strong><br /> Small business owners like you know, DIY website owners, I would say is there is a target market you know, we try to stay away from the super-advanced super Dev audience, we want to help small business owners so our goal at awesome motive is to you know, help small businesses go and compete with the big guys. And that is something that we continue with all of our products.</p>\n\n\n\n<p><strong>Brian Krogsgard 3:00 </strong><br /> So obviously the I guess I would say the market leader in this genre has been Yoast SEO for years. If I remember the correlation of how the usage worked out all in one, SEO was the most popular plugin for a really long time in the SEO market, and then Yost took over that spot. What\'s the comparison that you see in Yost? I mean, I think you and Yost divock are friendly and the team at Yost, how does how to your efforts here? You know, like, how does it differ from Yoast? Is Yost an advanced plugin? Like what makes you most advanced versus like the beginner features that you envision? All in one Seo? That\'s the stuff that I don\'t quite know how to nail down in my mind.</p>\n\n\n\n<p><strong>Syed Balkhi 3:45 </strong><br /> For sure, for sure. Yeah. So I mean, I\'m friends of yours. Of course, I told. I told Yost about, about the field before he went public. So it doesn\'t affect our friendship. I think you know, in any market you have multiple players, right? They have their own unique sets of features and divisions that they carry forward. And I know Yost has a vision that he is moving forward with. My, my goal is to really focused on two things, one, reliability, and the second is to be results-focused. And that the second one is definitely a primary thing I want a plugin, that is results focus on, you know, almost every SEO plugin, when you look at it in the market, and there\'s some newcomers that are that have entered the market as well. They kind of just help you set up and let you optimize some pages. And that\'s kind of it like there hasn\'t been any innovation, if you may, from a bigger picture point of view in the SEO plugin market in a while.</p>\n\n\n\n<p>And I want to change that.</p>\n\n\n\n<p><strong>Brian Krogsgard 4:56 </strong><br /> So talk to me about that. Because I know I know. I know Sayed Balkhi well enough to know he\'s got a plan. As soon as he has control, you\'ve got some things that you want to do. I have to admit, I haven\'t installed all in one SEO and I don\'t even know how long I don\'t know what it looks like, once you get working on it on the interior. What\'s it like today? And I guess, what are your big three things that you want to do? I know you got those mapped out?</p>\n\n\n\n<p><strong>Syed Balkhi 5:24 </strong><br /> Yeah, I mean, we have a very clear 12-month plan the three-year picture, I would say, you know, install it, just so you can see, you can have a before and after comparison, I think that you know that you can see the impact that we\'re, we\'re about to happen on this plugin. So, you know, over the years, like, I\'ve built a lot of internal tools that we just use, and like when you asked like, you know, what is the target market release me and I\'m like, I try to dog food pretty much all of our own products and I think that\'s, that\'s one of our secret sauces on how we make the best product. So I want to bring in a lot of the internal tools that we have, that we already have into a central plugin that we can control manage, and also, you know, share it with the WordPress community and in the small business community as well. I am also you know when you think about like a lot of my friends who are influencers somewhere, you know, meeting SEO experts as well they all have, you know, their own internal SEO tools that they\'ve built, we kind of shared that knowledge, we sometimes shared those scripts with each other. So we can kind of have an advantage and I want to bring that level the playing field. So we\'re going to be bringing a lot of those other tools in it so when it when you know when you think about the name all in one SEO, I think this is going to really become that. Without divulging too much of the you know, fine details, I think, think about it from that way it finally is true SEO suite for WordPress.</p>\n\n\n\n<p><strong>Brian Krogsgard 6:59 </strong><br />You mentioned how the way that people typically look at SEO and WordPress right now is you go to a single singular URL. So let\'s say it\'s a, you know, it\'s a page of, you know, the best WordPress host or whatever. And you optimize that page. So is what you\'re talking about more of how to figure out a site wide plan or overview, is that right?</p>\n\n\n\n<p><strong>Syed Balkhi 7:22 </strong><br />Exactly. So when you think about that, you know, a small business owner they come in and install the plugin then what what happens do they do the chase a light, a specific color, but what is that in regards to anyways? I want to I want to really help people discover new growth opportunities. So like SEO is not just some acronym. That doesn\'t mean anything new. Most people will be they everybody kind of has a vision, but everybody\'s lost. really making that easy, making people making easy to identifying opportunities, measure those opportunities and you know, doing a little bit More than just setting up an optimizing. Okay. Yeah.</p>\n\n\n\n<p><strong>Brian Krogsgard 8:03 </strong><br /> So, you know, when I think of small businesses, and when I talk to the friends that are, you know, they run small businesses like a dentist or something I usually start thinking about SEO in terms of local stuff or so what\'s the free and premium divide for you?</p>\n\n\n\n<p><strong>Syed Balkhi 8:20 </strong><br /> Yeah, there\'s gonna be a lot of premium features that we\'re going to add, of course, over the years, we\'re going to continue improving the tree offering, which is, you know, core of this plugin anyways. That\'s, that\'s, that\'s, that\'s where I think I\'ll pretty much stop at you know, there\'s gonna be a lot of cool tools that are going to come in that we\'re going to add in the premium version. There\'s also going to be a lot of really cool thing that we\'re going to add in the free version that we just haven\'t seen. Is this going to happen over the course of the next three months? No regular we\'re going to do some like small refreshes the three in the three month period, but the bigger picture and the big things are going to be rolled out over the, you know, 12 month period because we have to take our internal tools and then, you know, turn it into so it can be used by tuning people.</p>\n\n\n\n<p><strong>Brian Krogsgard 9:12 </strong><br /> <em>I\'m pretty biased towards Jilt. And it\'s with good reason. When I was considering to take on some part-time work to complement what I was doing with Post Status, I went straight to Skyverge and said, I think that Skyverge seems like a fantastic company to work for. And Jilt seems like a really exciting product to work on. Jilt is really the tool that you need to complement your eCommerce store. It\'s email marketing, but it\'s built specifically for eCommerce stores. So what\'s that mean in practice? Well, you can do your marketing outreach through a manual newsletter built into Jillson, some people don\'t even know that. That\'s done via the broadcast feature. But then there are the automation tools. jilt started out as an abandoned cart automation tool, but it\'s a lot more than that. Now, you can segment based on anything that\'s part of your historical store data. So if you will Want to email people just who purchased a product in a certain category, then you can do it. If you have an update for a product and you want to send an email to people who have purchased that historically, you can do it. If you want to send an email because people have spent a certain amount of money in their lifetime, and your store, you can do it. You can do so much with guilts Automation features, the segmentation data is extremely thorough, whether you\'re running a WooCommerce store, or a Shopify store or an ed d store, and you\'re not using jilt, then, quite frankly, you\'re giving up potential revenue. Try jilt today, go to jilt.com. I know you\'ll love it. </em><br /><br />How did the conversation with Michael start then? Did you approach him? Did he approach you? Tell me a story around the process of acquiring a plugin especially one was such a huge user base. And I guess there\'s a lot of implications when someone new takes over one of the most popular plugins in the plugin repo.</p>\n\n\n\n<p><strong>Syed Balkhi 10:59 </strong><br /> Absolutely. So, you know, I think I mentioned to you, you this came back from the WP beginner communities after I did the web kind of census survey, which happened at the beginning of the year, I start getting all sorts of data from the audience and from survey responses and start analyzing. And I reached out to, to Michael, as I started the conversation, you know, it started from discussing of what does this look like, you know, does this look like us partnering together and running that does it look like us taking a full hundred percent stake into the business then, you know, Michael walks from Italy, you know, there was, like, a lot of conversation that, you know, started with things like maybe March, so we didn\'t close the deal until January 3. So it takes you know, it\'s like think about it when this is something that you have been doing for 10 plus years this is your baby. It\'s an emotional process. It\'s a yes, it\'s a very emotional process. It\'s not an easy decision to make, and I\'m not you know that. I think the things that made it easy or easier to make things you know a little bit smoother was that I\'ve known Michael for a long time, right. Michael has been in the WordPress ecosystem. This was the original WordPress SEO plugin. I\'ve had numerous occasions where I hang out with Michael, at the WordPress community summit, the first-ever &#8230; network in Raleigh several times. I actually flew out to Raleigh to hang out with Michael to kind of share our vision because you know, for both of us, the most important part is users and the community. And, you know, we were in you know, we were lying there. So that\'s like that\'s, that\'s really a nutshell what happened in the nine-month period, right? Of course legal comes in Ba ba ba ba ba that\'s normal of any deal, boring stuff.</p>\n\n\n\n<p><strong>Brian Krogsgard 13:02 </strong><br />You can have it all settled, I guess and still have several months left on Enter before it actually, you know, get signed and is ready to go.</p>\n\n\n\n<p><strong>Syed Balkhi 13:12 </strong><br /> Right. And especially with my travel schedule, it kind of made things a little difficult, right? Because we\'re growing and then I you know, I have certain like level commitments already like that that are planned six months plus in advance always. So it becomes a little tricky. So we wanted to do face to deal in December, but it kind of went in by the January.</p>\n\n\n\n<p><strong>Brian Krogsgard 13:35 </strong><br /> Yeah. So the, you know, I\'ve seen you do this a couple times now where you acquire another business and obviously you don\'t acquire something unless you see potential growth in it. So you see growth in this product. However, I would say this product may be different than some of the others whereas where, you know, it was at the top of the game for a while and then it had a you know, maybe it grew WordPress a little bit, but it wasn\'t the market leader there were there was growth and other plugins in the sector, significantly higher than all in one, SEO is growth. Whereas some tools that you started, you were the growth plugin, like WP forms was a fresh plugin, you know, brand new, or you acquire one that is on a high growth trajectory. So this one\'s a little bit different than that. So how do you view the business model? And then how do you think that you can continue to scale this business model that there\'s so many products under the automotive umbrella these days?</p>\n\n\n\n<p><strong>Syed Balkhi 14:33 </strong><br /> You know, I think the important part is that you that you highlighted is almost every plugin grows with WordPress. You know, when I started using WordPress in 2006, I don\'t recall the exact number of how big WordPress was, but it wasn\'t 35% of the web.</p>\n\n\n\n<p><strong>Brian Krogsgard 14:52 </strong><br /> Right? If I did a post on this, I think it was in 2010. And we weren\'t 8% of the web yet, so 20,006 it was probably like 1% Maybe 2% of the web, right?</p>\n\n\n\n<p><strong>Syed Balkhi 15:02 </strong><br /> So, So when you think about this right I\'m very bullish on WordPress. I really believe in WordPress, I even posted a story about like my cab driver using WordPress and learn from the &#8230; Uber driver and I was like, wow, this is crazy like you could get picked up from the Atlanta airport. So the, you know, the business model really is, you know, anytime you build an ecosystem, you rely on the ecosystem. I think the WordPress ecosystem has a lot of growth happening right now. And users are always looking for so you know, whether it be just because we have WP forms and needed it is the best hands down. WordPress form plugin doesn\'t mean people don\'t use others. Right. So I don\'t look for Oh, is this is this plugin necessarily growing or not? I think this is a plugin with a very loyal user base. Good, you know framework I haven\'t had a lot of sentimental values, you know, tied to all them on SEO because this was a plugin I started using, you know, and when I launched WP beginner, I think for a long time I was the de facto maybe an official doc for this because I would share my configuration and people would just come and copy and paste that into the chat back and forth. Michael and Steve, you know, who\'s been with all the one for 10 years, he actually joined us a motive. That\'s pretty, pretty awesome. But we also had a lot of sentimental values for this. And I\'ve learned a ton from Michael who\'s been very generous mean in the early days of the WordPress ecosystem. So I think there\'s a lot we can do in terms of the growth side of the plugin for sure.</p>\n\n\n\n<p><strong>Brian Krogsgard 16:49 </strong><br /> As an aside, you mentioned in the announcement posts that Michael is not joining awesome motive, it sounds like he\'s gonna go find out what he wants to do next, but the rest of the Anyone that was working on all in one SEO is actually going to become an automotive employee.</p>\n\n\n\n<p><strong>Syed Balkhi 17:05 </strong><br /> Absolutely. that\'s already been done yet our goal whenever we make an acquisition, are you in a position or you know, one of the automotive core values people first and we always take care of that first.</p>\n\n\n\n<p><strong>Brian Krogsgard 17:15 </strong><br /> So you\'ve got WP forms monster inside see prod webmail, SMTP raffle press. And you know, now we\'re putting all in one SEO as kind of primary product things. You\'ve got some other stuff too. If people go to automotive com, they can see everything that your team is working on. But what about this scale side of this? So we talked actually last week I don\'t know if you probably didn\'t listen to it. We talked last week about back when you showed me your schedule blocking and you know, we\'re talking about trying to manage multiple projects and you\'re the kind of the key to this to me, in our space, because there\'s so many things that you\'re paying personal attention to, but you\'ve created ways to where, you know, you don\'t have to be there. You\'re your vessel You add but like, Is there a ceiling for how you can scale like is it 10 products? Is it 15 or 20? what\'s this business model for you?</p>\n\n\n\n<p><strong>Syed Balkhi 18:11 </strong><br /> I wish I knew what the number was, I\'ve tentatively put it at 30? I think it is one of the things that you know that like I never do anything alone, right? There\'s like I\'ve worked like my secret against it\'s not such a big secret is I work with really really awesome partners, really talented people. You know, Thomas Griffin, who leads OptinMonster and TrustPulse, you know, products. Jared Atchison who leads WP Forms and SMTP. These guys are phenomenal leaders right. Chris Christoff leading Monster Insights, phenomenal leader and they all have their own strengths. Right and we what makes us work really well together is how we compliment each other. So you know with John Turner in SeedProd and RafflePress, right, that he brings a whole new set of values to Awesome Motive and what we\'re looking to do over the next 10 years. So, you know, when when we decided to acquire all in one SEO we looked for, you know, who would that personally because Michael was not going to be coming on board. And, of course, like, this is it. This is something I\'m really passionate about. And I know a lot about this industry. I wanted to make sure that there\'s somebody else who\'s really, really talented who can lead and Benjamin Rojas, I don\'t know, I don\'t know if you know him or not in the WordPress ecosystem. He\'s a phenomenal developer had had several other products in the EBD ecosystem that he sold to Pippin when you know, they did the market consolidation, their position. He\'s been working in the OptinMonster team for I believe, like four years, three, four years, and so He\'s actually going to be leading this division and department call and Seo? Of course, I\'m going to be I\'m very involved that, you know, I\'m not involved in OptinMonster day today, but you know, I\'ve been for two years. Same thing with WP Forms, that division is run by Jared, Christoff, you know, my stream says pretty much online, so I\'m going to be very involved in it. So like, while we have a lot going on, I\'m not liking every single thing all the time. It\'s not it\'s not humanly possible. You see my time blocks, right? So these things move around around every quarter.</p>\n\n\n\n<p><strong>Brian Krogsgard 20:34 </strong><br /> Okay, so you are bringing in Benjamin he\'s going to be the Christoff or the Acheson version of your partner? Your — almost like an implementation partner — whereas you\'re the strategic partner?</p>\n\n\n\n<p><strong>Syed Balkhi 20:49 </strong><br /> Yeah, absolutely. I— you know, we could call it the integrator role that you know, GM &#8230;</p>\n\n\n\n<p>So yeah, Ben, Ben is awesome. And I\'ve had a pleasure working with him for last years. And he just continues to impress me, is literally like two and a half, three people into one. And you get to that pretty much about like, you know, Christoff, you\'ve seen the energy that he brings in Jared and Thomas, John,&#8230;</p>\n\n\n\n<p><strong>Brian Krogsgard 21:23 </strong><br /> It seems like everybody, do you think this is a pattern of just the WordPress ecosystem? or part of the way you\'ve made these partnership decisions? Everybody that has played that role internally for you as a developer? Do you think is that strategic or just circumstance?</p>\n\n\n\n<p><strong>Syed Balkhi 21:40 </strong><br /> I think it\'s a circumstantial, more so than not, I don\'t believe that, you know, this role has to go to a developer. I think this role has to go to somebody who understands product and building products. So you know my extent of development, I —</p>\n\n\n\n<p><strong>Brian Krogsgard 22:02 </strong><br /> It\'s more than you let on but no, you —</p>\n\n\n\n<p>Syed Balkhi 22:08 <br /> I don\'t think you have to be a developer you have to be — you have to understand the products and more importantly understand the problem you\'re solving and being able to improvise at, you know, at a, at a fast scale and being able to solve problems faster than other people. I think that\'s — that\'s what I look for, more so than anything.</p>\n\n\n\n<p><strong>Brian Krogsgard 22:29 </strong><br /> All right, I want to finish up.</p>\n\n\n\n<p>I want to get your take on the consolidation that we\'re seeing in the\n plugin ecosystem is something I\'ve been talking about. I think since \n2017. We\'ve seen that playing out in hosting business, we\'ve seen it of \ncourse, that\'s kind of par for the course in the landscape of broader \nhosting. We\'re really seeing it ramp up in terms of plugins in the \nWordPress space. You You\'re one of the big players in that consolidation\n process, but there are others too. There\'s some people Whether they\'re \npublic yet or not, that are you know bundling up plugins and they\'re \ncoming at it with a strategy to take advantage of this market. So what \nare your What are your thoughts about consolidation and where we are \nkind of in I guess the market cycle of WordPress plugin businesses</p>\n\n\n\n<p><strong>Syed Balkhi 23:18 </strong><br /> think they in an important thing to look at is not just the consolidation part of WordPress but scale that new plugins are coming and being introduced. Right. So it\'s not it\'s it would be not fair to look at the market just from one angle because there\'s so much growth happening with a new plugins being added and when the market is growing at that scale consolidation becomes natural. And this just shows that WordPress is not in its infancy. anymore right when you because they are players. Better. That is certain sides enough to be able to have this kind of conversation. This was, you know, the consolidation doesn\'t always happen for monetary reasons, sometimes, you know, you\'ve been doing this for you have a plugin that you\'ve been building for like, seven, eight years, maybe you just want to move on. Right? So I don\'t necessarily, you know, that\'s just natural now that WordPress has been around for so long, then that\'s just a natural transition of people\'s lives. That\'s happening from an ecosystem point of view. Just the growth is phenomenal. When you look at the new plugins being added all the Gutenberg bought collection plugins that are being added, you know, and all of them are getting installs. There\'s not like, you know, there\'s one or two or three that just kind of own the market, every single one of them is getting itself. You know, you there\'s like, just because like we launched web form doesn\'t mean there hasn\'t been new contact or plugins. I mean, it says, I think that\'s just a natural phase of any ecosystem. And it means great things for the user, like the users of WordPress are going to benefit the most out of it. Because it shows that there\'s truly legitimate resources being put into building products and it\'s not just, you know, one person, you know, doing this as a side hustle. And there\'s nothing wrong with that there\'s a lot of great plugins come out of solid there are some really good ones that are still you know, somebody\'s side hustling and just crushing it right in the market. So I think it just it\'s just good It shows that businesses can use you know, WordPress plugin, and reliably knowing that they\'re this is not going to be disappeared is not just going to be discontinued. So, I think that I\'m very bullish on the WordPress market, and I have been for the last 10 years of running WP Beginner.</p>\n\n\n\n<p><strong>Brian Krogsgard 25:48 </strong><br />Awesome. And you think this consolidation will probably continue on as a natural part of our ecosystem?</p>\n\n\n\n<p><strong>Syed Balkhi 25:55 </strong><br /> Yeah, I mean, absolutely.</p>\n\n\n\n<p>That\'s just natural for any system whether you\'re in WordPress, or you\'re in landscaping, or pool cleaning,</p>\n\n\n\n<p><strong>Brian Krogsgard 26:06 </strong><br /> Maybe the difference from here on out will be that we\'ll start to see larger ones. And maybe I don\'t know if you have an opinion on that. But I think that\'s my gut feeling. You mentioned something like you get to a stage and, you know, some people are looking to exit and some people now have the resources to be able to make those acquisitions. So as time goes on that discrepancy between the big, you know, the people that are big enough now to where, let\'s say, I don\'t know, a million-dollar acquisition is in their wheelhouse, whereas five years ago, that was totally impossible for them to even consider as that becomes more and more the type of thing that is possible for a company to do will naturally see more of it. Would you agree with that?</p>\n\n\n\n<p><strong>Syed Balkhi 26:49 </strong><br /> I think they you know, what I would like to see is, you know, more of this happening, right because this just further validates the industry in itself. I think it is happening, right, you know, have it happening, whether it\'s public or not public, right. I know several players that are that are in the market. And in terms of big, I think that\'s just reality, right? You lay outside looking in big is not always what you see. Yeah, we\'re all small and big and not what you think. I think that it\'s just relative. Right. So to the individual perspective.</p>\n\n\n\n<p><strong>Brian Krogsgard 27:27 </strong><br /> All right. So that\'s all I really have for you. I just wanted to chat with you about this acquisition and get your take on it. Is there anything that you want to either leaf people, whether they\'re an all in one SEO user, or if it\'s somebody in the post s audience question for me, the floor is yours.</p>\n\n\n\n<p><strong>Syed Balkhi 27:45 </strong><br /> No, you know, I always appreciate the work that you\'re doing and really excited to see Cory on board with post status. I just wanna say thank you, you know, to the community for the continued support of automotive our suite of products. We, we always strive to do better and serve our users. And I just hope to continue to earn everybody\'s trust for years to come.</p>\n\n\n\n<p><strong>Brian Krogsgard 28:08 </strong><br /> Awesome. I appreciate it. Thanks for joining us and we will talk to everybody soon. Bye.</p>\n\n\n\n<p>Transcribed by https://otter.ai<br />\n</p>\n\n</div>\";s: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, 06 Feb 2020 19:14: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:15:\"Brian Krogsgard\";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:69:\"WPTavern: Key Takeaways From the First ‘Future of Themes’ Meeting\";s:7:\"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:29:\"https://wptavern.com/?p=96997\";s:7:\"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:171:\"https://wptavern.com/key-takeaways-from-the-first-future-of-themes-meeting?utm_source=rss&utm_medium=rss&utm_campaign=key-takeaways-from-the-first-future-of-themes-meeting\";s: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:10639:\"<p>There are few clear answers.</p>\n\n\n\n<p>As members of the <a href=\"https://wptavern.com/join-the-future-of-wordpress-themes-conversation-theme-review-team-to-hold-biweekly-discussions\">core design, editor, and theme review teams joined</a> for the <a href=\"https://make.wordpress.org/themes/2020/02/03/block-based-themes-meeting-agenda-for-february-5/\">inaugural biweekly meeting</a> that may decide the fate, at least in part, of WordPress themes, it became clear that there is no structured game plan. There are many ideas. There are several moving pieces. There are components and teams and ideas that must all coalesce and build something that has never been done before in WordPress.</p>\n\n\n\n<p>There is room for both excitement and concern.</p>\n\n\n\n<p>It is not necessarily a bad thing to be in an early experimental stage. However, WordPress is a mature product. It <em>feels</em> like there should be something more concrete about the future of one of its most integral parts &mdash; themes.</p>\n\n\n\n<p>That is what these meetings are for. They are about building bridges between various teams and making some decisions. One of the problems going forward will be cutting through the noise.</p>\n\n\n\n<p><strong>Takeaway #1:</strong> there are still more questions than there are answers.</p>\n\n\n\n<h2>Moving Forward With Block-Based Themes</h2>\n\n\n\n<p>If there is one thing that almost feels like a foregone conclusion it is that we are transitioning into a future where themes will be built entirely of blocks. Even the meeting was dubbed the &ldquo;Block-Based Themes Meeting,&rdquo; despite <a href=\"https://make.wordpress.org/themes/2020/01/29/new-bi-weekly-block-based-themes-meeting/#comment-43993\">some pushback</a> that such a meeting name was biased.</p>\n\n\n\n<p>This is no surprise. Block-based themes are where we are going. The real question is how that will work and what level of control theme authors will ultimately have over their creations.</p>\n\n\n\n<p>Kjell Reigstad, a design director for Automattic, kicked off the meeting with an introduction of block-based themes and what the meeting would cover. &ldquo;As most of you probably know, Gutenberg is in the process of <a href=\"https://make.wordpress.org/core/2019/09/05/defining-content-block-areas/\">expanding beyond the editor</a>,&rdquo; he said. &ldquo;As we&rsquo;ve already seen, Gutenberg allows for a great deal of user-customization inside of post and page content. It allows any user to create custom layouts all by themselves, and style adjustments too. These will all usually be retained even after a user switches themes.&rdquo;</p>\n\n\n\n<p>Full-site editing seeks to bring blocks to the entire site, which is traditionally the domain of themes. &ldquo;By turning elements like the header and footer into block areas, users will have the flexibility to place any sort of content wherever they want,&rdquo; said Reigstad. &ldquo;It allows for a lot of creativity! They&rsquo;ll theoretically be able to click and edit their header in place, or change their sites entire color scheme without needing to jump into an entirely separate interface.&rdquo;</p>\n\n\n\n<p><strong>Takeaway #2:</strong> block-based themes are happening.</p>\n\n\n\n<h2>The Definition of Block-Based Themes</h2>\n\n\n\n<div class=\"wp-block-embed__wrapper\">\n\n</div>Live Demo Q&amp;A from <a href=\"https://gutenbergtimes.com/theme-templates-full-site-editing-experience-enrique-piqueras/\">The Gutenberg Times</a>.\n\n\n\n<p>After a quick introduction of how the meeting would work, Jeff Ong, designer at Automattic, filled in the details of how block-based themes work. Currently, such themes are experimental and must be activated by ticking the full-site editing (FSE) checkbox via the Gutenberg plugin&rsquo;s Experiments settings screen.</p>\n\n\n\n<p>&ldquo;Once you&rsquo;ve activated this FSE experiment option, a few major changes will occur in how WordPress behaves,&rdquo; said Ong. &ldquo;WordPress will look for HTML templates inside of a block-templates directory of your theme, instead of using the PHP templates, to determine how your site will appear.&rdquo;</p>\n\n\n\n<p>This was not a new concept to the people present. Most have explored the <a href=\"https://wptavern.com/initial-documentation-for-block-based-wordpress-themes-proposed\">initial documentation for block-based themes</a> over the past two months.</p>\n\n\n\n<p>This part of the meeting was more about providing information. The following are key links for further exploration of full-site editing and block-based themes:</p>\n\n\n\n<ul><li><a href=\"https://github.com/WordPress/gutenberg/projects/35\">Full-Site Editing Project</a></li><li><a href=\"https://github.com/WordPress/gutenberg/issues?utf8=%E2%9C%93&q=label%3A%22New+Block%22+label%3A%22%5BFeature%5D+Full+Site+Editing%22+\">Full-Site Editing Tickets</a></li><li><a href=\"https://github.com/WordPress/theme-experiments\">Theme Experiments Repository</a></li><li><a href=\"https://developer.wordpress.org/block-editor/developers/themes/block-based-themes/\">Block-Based Themes Documentation</a></li></ul>\n\n\n\n<h2>Global Styles Are a Part of the Process</h2>\n\n\n\n<img />Example mockup from the primary <a href=\"https://github.com/WordPress/gutenberg/issues/19255\">global styles ticket</a>.\n\n\n\n<p>Tammy Lister, experience designer at Automattic, introduced <a href=\"https://github.com/WordPress/gutenberg/projects/40\">global styles</a>, a feature coming to the Gutenberg plugin and eventually core WordPress. She described global styles as being at the &ldquo;what goes into the cake&rdquo; stage, meaning the team is still deciding what the feature will entail.</p>\n\n\n\n<p>&ldquo;So what are global styles?&rdquo; Lister began. &ldquo;In short, it&rsquo;s style you can apply across your site right there in the browser. Pretty neat! Think of it as a kit full of component tools you can activate and take advantage of. Tried, tested and ready to go. It&rsquo;s your decorating kit to get your site space just the way you want it.&rdquo;</p>\n\n\n\n<p>At the moment, the baseline for the &ldquo;kit&rdquo; includes text, background, and primary colors in which themes can set the defaults. The baseline would also include typographical settings for changing the font size, scale, and alignment.</p>\n\n\n\n<p>&ldquo;However, is that enough?&rdquo; asked Lister. &ldquo;This is currently a big question. There needs to be exploration on what are common things needed and what needs to be available.&rdquo;</p>\n\n\n\n<p>Another argument for the biggest question award would be whether global styles are a necessary feature for core WordPress at all. With the possibility that users can directly manipulate templates in the WordPress admin, adding styles to the mix may make some theme authors feel like they will be permanently sitting in the back seat.</p>\n\n\n\n<p>Lister made it clear that global styles should not go too far. &ldquo;These are tools available in the editor, so addressing what is needed or not is key, over allowing everything and creating a complicated experience,&rdquo; she said. &ldquo;A personal point I&rsquo;m thinking about here is how when I had a crowded art box I could never find that &lsquo;one pencil&rsquo; I wanted, we want to avoid that.&rdquo;</p>\n\n\n\n<p><strong>Takeaway #3:</strong> End-users will likely be able to set global styles from the WordPress admin. For many, this level of power will be a good thing. For theme authors who build hyper-detailed designs, they may be cringing at the thought.</p>\n\n\n\n<h2>Open-Ended Questions Going Forward</h2>\n\n\n\n<p><em>When will block templates and global styles land?</em> The rough timeline for block-based themes is for it to remain experimental through mid-year and have something basic in place as we close 2020. Global styles are likely to land this year, but there is no definite date yet.</p>\n\n\n\n<p>Global styles could easily land in the next several months. It has a tighter scope than themes made of HTML block templates. Given the point that block-based themes are currently at and the unanswered questions about how the system will work, its time frame may be optimistic. The scope touches almost everything in WordPress to some degree, at least anything that ends up on the front end of the site.</p>\n\n\n\n<p>Everything about themes will change. How theme authors approach design will likely move toward styling on the component/block level. Blocks will go into sidebars as widgets are slowly replaced. Even theme options may be a thing of the past. &ldquo;Personally, I don&rsquo;t think the customizer will disappear immediately, but I do think it&rsquo;s clear that many of its current duties won&rsquo;t be necessary in this Gutenbergy future,&rdquo; said Reigstad.</p>\n\n\n\n<p>One question on many theme authors&rsquo; minds is what sort of quality control they will have over their theme if users are handed so much power to change things. </p>\n\n\n\n<p>One proposal in the meeting was to allow theme authors to lock down certain templates so that users could not mess up the design by moving parts (e.g., a meticulously-crafted header and nav menu template that works across browsers and screen sizes). There is not yet an open ticket for this possibility, but some theme authors will need to have a level of control over this for certain designs to work.</p>\n\n\n\n<p>Ending the meeting on a high note, Ari Stathopoulos, a representative from the theme review team, gave his final thoughts. &ldquo;Themes are not going away,&rdquo; he said. &ldquo;They may change, completely transform in many ways. The tools we&rsquo;re currently using and the way we&rsquo;re currently building themes is not the way themes will be built next year. But they will still exist, and the new way is neither better nor worse. It&rsquo;s just different. If we embrace that and open up our imagination, there&rsquo;s lots of amazing things we &mdash; as theme authors &mdash; can build.&rdquo;</p>\n\n\n\n<p>I am cautiously optimistic that things will work out in the end. I&rsquo;m excited about the idea of end-users being given tools to build out the websites of their dreams. I&rsquo;m concerned, along with many theme authors I have chatted with, about what the role of theme designer will be in a year.</p>\n\n\n\n<p>At the moment, I imagine a major split in types of themes: block-based vs. traditional with perhaps some block elements. Only time will tell whether this becomes an insurmountable rift or whether there is a place for both concepts.</p>\n\n\n\n<p><strong>Takeaway #4:</strong> it&rsquo;s still far too early to come to any solid conclusions about what the future holds.</p>\";s: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, 05 Feb 2020 21:08:59 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s: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:92:\"WPTavern: Guteblock Joins the Block Collection Plugin Arena With an Initial 12 Custom 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:29:\"https://wptavern.com/?p=96944\";s:7:\"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/guteblock-joins-the-block-collection-plugin-arena-with-an-initial-12-custom-blocks?utm_source=rss&utm_medium=rss&utm_campaign=guteblock-joins-the-block-collection-plugin-arena-with-an-initial-12-custom-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:6780:\"<p>Last week, London-based digital marketing agency Sweans Technologies released <a href=\"https://wordpress.org/plugins/guteblock/\">Guteblock</a>, its new block collection plugin. Currently, the plugin boasts 12 custom blocks. The company plans to add more and has big plans for the plugin&rsquo;s future.</p>\n\n\n\n<p>While the team earns no points for originality in plugin naming, they are nevertheless throwing their hat into the ring of ever-growing block collection plugins alongside the likes of <a href=\"https://wptavern.com/array-launches-free-gutenberg-ready-atomic-blocks-theme-on-wordpress-org\">Atomic Blocks</a>, <a href=\"https://wptavern.com/coblocks-1-9-5-merges-block-gallery-plugin-into-collection-adds-new-form-block\">CoBlocks</a>, and <a href=\"https://wptavern.com/kioken-blocks-the-new-street-fighter-inspired-block-collection-that-is-taking-aim-at-page-builders\">Kioken Blocks</a>. There is already steep competition in this arena, but there is also a lot of space for growth.</p>\n\n\n\n<p>&ldquo;WordPress bets high on Gutenberg editor and the block styles,&rdquo; said Ajay Thomas, CEO of Sweans. &ldquo;With the introduction of blocks, WordPress allows greater user control over the page-designing process beyond what the theme can handle. For the upcoming block directory, we believe that blocks will be the third integral part of WordPress after plugins and themes.&rdquo;</p>\n\n\n\n<p>The plugin&rsquo;s team has put together the following video to show installation and usage examples:</p>\n\n\n\n<div class=\"wp-block-embed__wrapper\">\n\n</div>\n\n\n\n<h2>Plugin Blocks</h2>\n\n\n\n<p>Guteblock is still a little rough around the edges in comparison to more mature block library plugins. Some things were confusing, such as some block color options not using the theme-defined colors. The drop cap block felt like it could have simply been added as extra settings to WordPress&rsquo; paragraph block.</p>\n\n\n\n<p>The container block currently does nothing but group elements. At the moment, it is a step down from WordPress&rsquo; existing group block. Thomas explained that the team wanted to develop other blocks before fleshing it out. &ldquo;The main features we will add to the container block are custom background settings, which include color, customizable gradient, an image with parallax effect, video, customizable SVG and other features including shadow, border-radius, etc.,&rdquo; he said.</p>\n\n\n\n<p>Of its library of 12 blocks, it has some interesting blocks that will come in handy, such as the number box block, which allows users to add columns of numbered boxes. The notification block is also useful for adding a bold warning, note, or similar message.</p>\n\n\n\n<img />Number Box block from the Guteblock plugin.\n\n\n\n<p>The post grid block is one of the nicest blocks in the collection. It lets users create a grid of posts, showcasing the featured image, post title, and optional excerpt. It has settings to control the post count, number of columns, and font sizes.</p>\n\n\n\n<img />Post Grid block from the Guteblock plugin.\n\n\n\n<p>The biggest downside to the post grid block at the moment is that it relies on the <code>post-thumbnail</code> size for featured images, which may make them look stretched and distorted on the front end. In the future, it would help if the user could select their preferred featured image size.</p>\n\n\n\n<p>The plugin includes a social sharing block. Currently, it adds sharing links for Facebook, Twitter, LinkedIn, Pinterest, and Reddit. Each social network can be enabled or disabled individually. The plugin also includes round, square, and modern block styles.</p>\n\n\n\n<img />Social Sharing block from the Guteblock plugin.\n\n\n\n<p>A social sharing block will likely be more useful when WordPress moves toward <a href=\"https://wptavern.com/initial-documentation-for-block-based-wordpress-themes-proposed\">block-based themes</a>. Controlling this at the post level instead of globally is unnecessary work except in some edge cases where a user wants social sharing only on a limited number of posts or pages.</p>\n\n\n\n<p>Thomas believes the team members and author profiles blocks are the most useful blocks. &ldquo;One of the extremely important features of team members block is that users can highlight one block separately by changing the background color, font color, etc. and drag and drop members to reorganize, he said. &ldquo;Regarding the author profile block, our block will fetch the author&rsquo;s name, bio, and image and display there. Users can modify the same if needed.&rdquo;</p>\n\n\n\n<h2>Upcoming Blocks and a Premium Version</h2>\n\n\n\n<p>At the moment, Guteblock is a free plugin. However, Sweans plans to launch a commercial version in the future. The company did not provide an exact date of launch but said it will happen shortly. It is also unclear what the pricing model will look like.</p>\n\n\n\n<p>&ldquo;This will be mainly a more customizable plugin with some other blocks such as Amazon link builder, events and shows, a premium slider, etc.,&rdquo; said Thomas. He stressed that the free version will have at least 34 blocks down the road.</p>\n\n\n\n<p>The plugin&rsquo;s development team is currently working on two primary blocks to include in the premium edition. &ldquo;The first block will help Amazon affiliates search for their products in the Amazon catalog, access real-time price and availability information, and effortlessly create links in your posts to products on Amazon.com using the Amazon Product Advertising API,&rdquo; said Thomas. &ldquo;The second block is for adding event details in a post or page. You can show the time, date, venue, and the details of the event, and this can be directly added to your desktop/mobile calendar with one click.&rdquo;</p>\n\n\n\n<p>Along with work toward their commercial version, the development team is preparing to add 16 extra blocks to their free version. This update will include blocks for Google Maps, video, grids, advanced columns, newsletters, pricing tables, and more. They will also provide alternative versions of some core blocks, such as blockquotes and buttons.</p>\n\n\n\n<p>The company plans to dip its toes into the <a href=\"https://wptavern.com/version-1-prototype-of-the-wordpress-admin-block-directory-announced\">upcoming block directory</a> too. &ldquo;We are planning to release some very useful and unique blocks into the block directory and will maintain its excellence and effectiveness,&rdquo; said Thomas. &ldquo;But, at the same time, we will improve our plugin&rsquo;s collection to make them stand out from the rest as we are updating them regularly to give the finest user experience.&rdquo; It will be interesting to see if the block collection plugin or the individual blocks perform better.</p>\";s: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, 04 Feb 2020 19:53:44 +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: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:66:\"Post Status: Working on multiple things, and working with 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:31:\"https://poststatus.com/?p=75833\";s:7:\"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:54:\"https://poststatus.com/working-with-business-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:47497:\"<p>A lot of folks in the WordPress economy, whether employed with a side hustle or self-employed, manage multiple things. Also, many of us work with partners, or are interested in partnerships.</p>\n\n\n\n<p>Cory has long worked with partners, and we\'re now running Post Status as partners. Also, we are both working on several projects.</p>\n\n\n\n<p>In this episode of Draft, we talk about how to balance multiple things, how we try and structure our weeks, and some things to consider when working with partners.</p>\n\n\n\n\n\n\n\n<h3>Show links</h3>\n\n\n\n<ul><li><a href=\"https://kolbe.com\">Kolbe</a></li><li><a href=\"https://www.gallup.com/cliftonstrengths/en/strengthsfinder.aspx\">Strengthsfinder</a></li><li><a href=\"https://waitbutwhy.com/2013/11/how-to-beat-procrastination.html\">Wait But Why</a></li></ul>\n\n\n\n<h3>Sponsor: Pagely</h3>\n\n\n\n<p><a href=\"https://pagely.com/\">Pagely</a>&nbsp;offers best-in-class managed WordPress hosting, powered by Amazon\'s Cloud, the Internet’s most reliable infrastructure.&nbsp;Pagely&nbsp;helps big brands scale WordPress. Their new platform&nbsp;<a href=\"https://northstack.com/\">NorthStack</a>&nbsp;is a completely serverless solution for managed application hosting. Thank you to&nbsp;<a href=\"https://pagely.com/\">Pagely</a>&nbsp;for being a Post Status partner!</p>\n\n\n\n<h3>Full Transcript</h3>\n\n\n\n<div class=\"transcript\">\n\n<p>Transcribed by https://otter.ai</p>\n\n<p><strong>Brian Krogsgard 0:05 </strong><br /> This episode of Post Status Draft is brought to you by Pagely\'s best in class WordPress managed hosting. They help big brands scale. And it\'s really the place you want to be. If your website is a mission-critical site, they have an extremely flexible tech stack to help you accomplish your goals with your website. And they have the three things that they really like to focus on: Number one, flexibility. Number two, scalability. And number three, reliability. What I think occasionally in the years that I\'ve hosted my main website PostStatus.com on Pagely, that\'s what I keep in mind myself — I know I can do the things I want to do. It\'s not overly opinionated. It\'s highly scalable, and it\'s reliable. I never worry about my WordPress going down because it\'s on Pagely. Go to pagely.com to check it out. Thanks so much to Pagely for being a Post Status partner, and welcome to Post Status Draft. My name is Brian Krogsgard. I\'m here with my partner for Post Status, Cory Miller. Hey, Cory.</p>\n\n\n\n<p><strong>Cory Miller 1:07 </strong><br /> Hey, Brian.</p>\n\n\n\n<p><strong>Brian Krogsgard 1:09 </strong><br /> Alright, official podcast.</p>\n\n\n\n<p>It\'s our second podcast. Every, every trend starts with two, right? Yep. So we have a couple of topics that are highly relevant to us that we want to discuss today. And number one is juggling multiple things. We\'re both doing so so we\'re going to talk about the process of it and some of the things we\'ve tried to instill in our own habits and otherwise. And then the second thing is the process of working with a partner because when juggling several things, often the choice would be to have a partner in crime as you do. So obviously, this is highly relative to our, our own situations, with post status and then each of us are, you know, Post Status as our common plate but we each have other plates that were spinning So that\'s what we want to discuss and iron out today. You know, I\'m thinking of who\'s our listener who\'s, who\'s listening to this and thinking, I\'m interested. And you know, one type of person sticks out to me in particular, which is a, like a plugin or product developer, someone that\'s got a WordPress product and maybe it\'s not their full-time gig yet or maybe they\'re balancing the product side with doing some freelance work. Why don\'t we jump back to the first time you had to start balancing something and go from there so like, what have you learned since you you know since you started doing full-time WordPress back in 2008 or so? Was I themes paying the bills right out of the gate, or how did that work?</p>\n\n\n\n<p><strong>Cory Miller 2:49 </strong><br /> Yeah, I think it was paying the bills right out the gate, but I\'ve kind of notorious mine. People that have worked with me to be a plate spinner anyway, I kind of relish In the place multiple things keep me engaged. And so, but I woke up you know, couple weeks ago post that this is one of five projects I\'ve got going right now and back into being a plate spinner again but and iThemes Yeah, I spend a lot of plates in the first year, of course, we had full time, you know, I had money to be able to kind of get started and then we try to get revenue in the first month as best we could and be self-sustainable. But uh, for that year, I tried to only spend one plate and that was just I themes, but on the project plate for products, it was just trying to iterate on themes and stuff, but the year, a year or two prior, I was doing the same thing we\'re doing now which is balancing a full-time gig with stuff on the side, in my freelance business just happened to be, you know, it worked out but I was also I don\'t know, 13-14 years younger and I can power through until midnight or one now it\'s like I\'m going to bed at night.</p>\n\n\n\n<p><strong>Brian Krogsgard 4:07 </strong><br /> Yeah, definitely makes a difference I\'ve said on this podcast and elsewhere many times that my I used to call it my tended to time. So 10 pm to 2 am was my window where typically my wife was in bed before I had kids. And I was a night owl, so I would get stuff done. And that was how I maintained my side hustles while I had full-time jobs, and I can\'t do that anymore, like just physically, my I can\'t do that now. And, you know, if I have to get some stuff done late at night, I might be able to put in an hour or so. But I run out of steam like if I\'m going to do something else. It has to be something replenishing or balancing my work efforts, like reading a book or something that\'s not by, you know, fingers to keyboard type of activity.</p>\n\n\n\n<p><strong>Cory Miller 4:59 </strong><br /> I know a lot I know most probably of our community can relate to all this as burning the midnight oil, so to speak. And then now as I\'ve gotten older it\'s like, it\'s just not going to work. And you and I both have young kids. So when I get home, it\'s hard to like, I can\'t pull up my computer one, I\'ve got a kid sitting in my lap. And, you know, wanting to know what I\'m dead. I\'m like, I\'m trying to get something done.</p>\n\n\n\n<p><strong>Brian Krogsgard 5:25 </strong><br /> If I\'m, if my two-year-old is here, he will literally just make every effort to just slam the spacebar. He\'s like, that\'s the biggest thing that\'s on that board that you, you know, put your fingers on and he\'s just like, I gotta get on that, you know. I can\'t, I can\'t really work with them awake. What that means for us is that we\'re juggling things and we\'re not like inventing new hours in the day where we\'re figuring out how do we juggle within our standard, our standard day. So how do you physically process this and terms of playing And execution?</p>\n\n\n\n<p><strong>Cory Miller 6:03 </strong><br /> Gosh, you know, I put the five projects like in December, I thought I have four, this is all one and then something happened and I was like, okay, there\'s a fifth can\'t turn down. And I realized real quickly like, okay, I don\'t want to get into old bad ruts. I knew I had to get organized new posters is a priority for me, for us, for our family, too. And I\'ve got a lot of other projects kind of spinning, but I had to get really organized and go, okay, you know, I\'m going to need help at some point. So I actually hired a virtual assistant. A couple of weeks ago, I don\'t even know if I told you that run. But yeah, you mentioned to me Yeah. How to virtual assistant because I had a longtime executive assistant at it. Named Patty color, Painkiller, excuse kill. And I was like, I\'ve got to find figure that out. So I hired a virtual assistant and starting to delegate trying to delegate things to her to help me chase down some things but there\'s so much like, she can\'t go to the bank and sign, you know, a bank account for me. So I\'m trying to be strategic about it. And then now you know you and I both said we\'re in a different stage now. So we got young kids, work, work-life balance, if that\'s even a thing work-life alignment is a thing for me. But I don\'t know if I want to be working. After six o\'clock, I need to devote that time to my kiddos, and I know you do too. So I\'ve got to really prioritize I think Jason freed said it best is in one of his books or podcasts or something a long time ago that constraints particularly time constraints are such a good thing. I\'m like, Yes, absolutely. You know, when I saw those names and people, you know, have their opinions about where they think my financial future is. But honestly, when everything is an option, everything sucks. And I think constraints. I can\'t believe I\'m saying this, but constraints are good. In certain situations, everything is an option. And I\'ve kind of taken the mindset from Jason freed that, you know, having kids is good because it gives me some boundaries, or at least that need to be setting boundaries to not repeat bad habits that I did over 10 years. And I think,</p>\n\n\n\n<p><strong>Brian Krogsgard 8:19 </strong><br /> yeah, so you\'re saying constraints in terms of what you choose to work on. And that\'s interesting. For me, I kind of know what I\'m working on now. Like, I made those decisions. And, you know, I\'m contracting a significant chunk of my week with sky verge, working the majority of the rest of that with post status, and then I have this one thing, and this is where I really had to make my biggest decision, which is on the like, crypto side of things where I had huge community following and stuff. I had to say, I\'m going to establish scope on what\'s achievable within that project, and really limit myself self to, to what I know I can do well and efficiently. So for that, it really meant narrowing it all the way down to just like a podcast. So I do a podcast in that space. And now I know like, I\'m not going to spend more than, you know, x hours in the week on that because I\'ve established scope for that project. And then it\'s deciding, okay, well, where, where\'s the differentiator between, you know, being productive with my time and relying on teammates, like in our scenario, that was one of the big things selling half a post at us. It\'s not just Oh, great. There\'s a little bit of money now that I get to bring in which I\'m obviously thankful for. But it\'s also to say, Okay, if I treat this as part-time and you treat this as part-time, we have two part-time contractors, will you put all four of us together we\'re combining multiple people\'s skills, and the end result is better than me as a full time or upon myself could have ever done in the first place. So I feel like That\'s a really effective use of part-time efforts and allows me to juggle multiple things and in my opinion, put out a better product on the thing that I was trying to do alone. So that was a big part of it for me is defining the scope and identifying how can I make something better while spending less time on it?</p>\n\n\n\n<p><strong>Cory Miller 10:22 </strong><br /> Yeah, I think what has been for me is prioritization of like, I can\'t, I can\'t goof off. I\'ve been here in my little office from, you know, 830 to five roughly and it\'s straight through and it\'s good. It\'s engaging senior wanted to level off at some point. But there is a focusing power, like I\'ve got to be very good about prioritizing what my time is, particularly with juggling some projects like you do. I\'m thankful that our partnership we\'re in the same time zone and roughly on the same hours, work hours. So that\'s really good. My partner, Rebecca Gill, another project. She\'s in Eastern Time Zone. I always have to kind of convert a little bit on that. So,</p>\n\n\n\n<p><strong>Brian Krogsgard 11:04 </strong><br /> and then really hard for our friends who have partners or whatnot that are six hours or 10 hours apart, that the offset that you create in your communication cycle forces your projects to go slower.</p>\n\n\n\n<p><strong>Cory Miller 11:16 </strong><br /> We were very deliberate about when we took on our Portugal team and iThemes and because they were six hours ahead of us, and knowing there\'s going to be a lag and man that just slows things down when you\'re trying to ship product. So it\'s, it\'s, you know, I\'m definitely thankful we\'re in the same time zone and even Rebecca and I are just an hour apart, but still, it\'s like she\'s already started her day, you know, I might get an email at 630 in the morning, and I\'m just kind of getting around and it\'s like, oh, man, her days getting going now.</p>\n\n\n\n<p><strong>Brian Krogsgard 11:47 </strong><br /> Yeah, she\'s full force. I\'m ready.</p>\n\n\n\n<p><strong>Cory Miller 11:48 </strong><br /> Yeah. So but again, I think it is the constraint is the prioritization. Like today I just thought, Okay, well, you know, one thing I\'ve done is have specific For the first time, probably in my career in about 12 years, I am blocking time out of my, my calendar for recurring meetings to that never done before, but I have to do it and I have to get better at time prioritization to and so even getting the newsletter out today, for instance, I was like, Okay, I got to think about this better because I need to block it out a time, reverse engineer, whatever, we\'re going to get the newsletter out, and then block out time when you guys aren\'t waiting on me for something. So we make sure you get out a good product.</p>\n\n\n\n<p>Brian Krogsgard 12:31 <br /> Yeah. Discipline it. Yeah, it certainly is. And the first person that I saw doing this really effectively They showed me their calendar, they talked to me about how they balance was actually cited baki and, you know, a lot of our listeners will know through awesome motive. He\'s got his hands in five different products at any given time, and incredible amounts of other businesses as well like he does it to an extremely He\'s a robot. He\'s a yes. But he is a time blocking master like I, he showed me his calendar and it\'s colour-coordinated, it\'s day by day. And it\'s broken into, you know, a two hour or four-hour block, 30-minute block. And he\'s got every day of every week assigned to a thing. And it\'s like, here\'s a half-day that goes towards working with Jared on WP forums or a half-day working towards OptinMonster. You know, it may change depending on week by week but he knows before he starts this week, essentially where he\'s spending the every like work hour of that week, he\'s designed his workouts and he\'s designed his, you know, it\'s like, if there\'s family time or travel during the normal workweek like it\'s built-in there too. And I was inspired by that I could not mimic it like I tried it for a little bit and it was too structured for my discipline like his discipline level is just beyond mine. Yeah. But it did give me a framework for saying, Okay, well I have my focus, like Mondays we have a lot of meetings with sky verge. And that\'s like, basically a sky verge only day aside, aside from, if something that really needs urgency from post status comes along. And then it just allows me to structure my days and say, This is my big thing today. It\'s my big thing this other day, this is where I want the majority of my time in my hour spent and I\'ve actually started tracking my hours. And I\'ve been evolving that I\'ve always hated time tracking any job where they like, you know, focused on that. I was always like, Look, I don\'t want to this, you know, like, negotiated my way out of it. And now, I\'m embracing it, but it\'s more for my personal accountability than anything else because I want to know, like, Okay, well, it was I actually spending these hours of these days. On the things that I planned, of course, it helps me like for, you know, for a contract job that helps if you\'re paid hourly. But even for something like what we\'re doing, I had a partnership line item on my time tracker. And I was tracking generally, like, if we got sidetracked, you know, or like, we had a meeting, I would track it. And then if we had, you know, something, especially where it was in a zone that was supposed to be geared towards something else, I wanted to know, like, how far off of my routine Am I getting? And it\'s this intro week, accountability process. So you kind of have an idea of like, oh, man, I\'ve spent more hours over here and I need to be over there. And it\'s been really good accountability for me to better audit my time so that I can then more effectively move forward and be knowledgeable about the way I\'m approaching it. And I\'m not succeeding, like if I say, Okay, well, I want to spend 25 hours over here. 15 over here and two over there like it doesn\'t always work that way. But it allows me to have a target and audit my effectiveness against that target and you really learn a lot when you start doing that.</p>\n\n\n\n<p><strong>Cory Miller 16:15 </strong><br /> Yeah, I go back to the side comment and I\'m joking when I say robot kit but his worth it work ethic i is unparalleled and never seen anything like it maybe my dad who\'s now should be retired for the second time and working 60 hours a week-long gas industry but said is a maniac. But he\'s also I think it the thought about that was like it\'s how we\'re all kind of wired, like, I\'ve had so many people over the years they know I juggle things, spin plates and go Why would you do that? Like tell them wired I mean, and I used to go Why do you only have one project that sounds boring. And so we had this telephone realize to each his own like wired in different ways and have a lot to do that, having said that, you said the word discipline, it\'s some it\'s a word I\'ve been trying to kind of reintroduce into my life. Consistency is another big word. So I\'ve gotten more organized and, and want to line things up where I\'m not dropping balls for sure. And I\'m mixing metaphors here. But, you know, I play doesn\'t drop. But they\'re all important to me. They\'re engaging and I think that makes me me, you know, if we were all carbon copy of each other, it\'d be a bland world and, and all that. So I think to each his own for sure. But I think you\'re talking about something we\'re talking about something that a lot of people go through, they want to strike out on the entrepreneurial adventure, and but they\'re balancing a day job and then I can potentially family. I have a couple of business friends here in Oklahoma City that their entrepreneur story started with. I started my business when my child was six months old. Like, I can\'t imagine that you know, I kind of say, I think it was in kindergarten when we had our first kids had our kids so like, it was to the point where that one that little baby had kind of graduated and was under adult supervision. And then I could kind of turn my time. Now on this season to toe, it\'s just very drastically different. And so, man, I just admire the stories of people that juggle so much, particularly with family while starting this crazy job. This crazy gig we have come entrepreneurship. I, you know, if entrepreneurship was easy, by the way, everybody would do it. Because think about the freedom, the lifestyle you\'re having to live as an entrepreneur, but it comes with a heavy cost. Just talking to a dear friend of mine that I\'ve known for a long time entrepreneur and comparing stories and him saying he\'s had a rough couple of years and going in my part was to say to encourage to go I\'m going to be in your seat at some point. Mukherjee that like this thing, this thing we do called entrepreneurship is just not meant for everybody. And it\'s just a tough thing, but it\'s really thrilling for me to come would say, join you in something that\'s already started, by the way. So that makes this project. They\'re all exciting to me. But this is different in that I can help take something really, really good and make it even better. Where starting new projects. Oh, that\'s that\'s a ton of work, man.</p>\n\n\n\n<p>There\'s a different kind of grind. And they\'re like, what did two years of post as before the club, you know? Yeah, well, that grind of getting the thing off the ground like business takes time.</p>\n\n\n\n<p><strong>Brian Krogsgard 19:45 </strong><br /> One of the things that I think plays into this idea of structure and being able to juggle different things, a lot of it does come down to personality. And for me, you know, I\'ve always achieved a lot So it\'s not it\'s there\'s a difference to me between what I\'m about to describe and like if it\'s laziness or something for me, it\'s not laziness. I have no threat of saying, Oh, I work from home or I don\'t have a, you know, nine to five job. So I\'m going to sit on the couch at my house. That\'s never my personality. But I do procrastinate in my own way, and wait, but why.com is a great website that it\'s called, has a long series from 2013 called how procrastinators procrastinate, and it\'s like the brain of a procrastinator. And what he really breaks it down to is this intimidation of long tasks that makes a procrastinator put that off, and how you can kind of beat that and how to beat procrastination or the way he describes it is he says effective planning turns a daunting item, say like writing a book or launching a website or something big and turning it into a series of small clear, manageable tasks. When you do that, you\'re making something that sounds big he calls he says a remarkable glorious achievement is just what a long series of unremarkable and glorious tasks looks like from far away. So if you break things down, if you have this type of mentality where you can see the short, short term finish line, and turn it into a to-do list or you know a task, then that\'s no big deal. It\'s like, okay, boom, knock out that test, boom, knocked down that task. And then all of a sudden, you\'ve done lots of things that add up to be this really big, more glorious thing of accomplishing your goal. And I\'ve found that I have got to structure my day to day that way. And I\'ve really embraced note-taking but it\'s kind of a hybrid between notetaking and to-do list stuff, where I take notes of like, okay, what\'s my, what\'s my main jam, like what I have to capture today? Sometimes it\'s an idea and some times it\'s deliverable, and then turning it into these to-do lists that I accomplish inside that week. And then you add that in weekend and week out and hitting those to-do items. That\'s when the real changes and effects start to take place for me.</p>\n\n\n\n<p><strong>Cory Miller 22:14 </strong><br /> Yeah, well, no, I completed my master\'s degree. When I was in my late 20s. I went back to school, and the staff there at that college in the adult program said, How do you eat an elephant? One bite at a time. And, you know, I\'ve used that a lot with teams, helping coach teams that I\'ve led, and others is this big task that you have breaking it up into small parts. And then I think there\'s something to be said of, I think it\'s James clear. The author, prolific blogger that talks about, you know, consistency, like if you\'re going to write a best selling book, it\'s, you know, break it down if it\'s 50,000 words is 500 words a day. For X amount of months kind of thing. Now, I don\'t know what to believe I have that discipline in me to show up every day and just write 500 words a day. And but I believe that if you do that you will show up, you know, an X amount of months with something. And this is the harder pill for me to swallow sometimes, just again, how I\'m wired. I\'m not trying to make excuses, but just saying it\'s, it\'s not an easy task. Some people make it look easy, but the reality is, you\'re probably wired in a different way.</p>\n\n\n\n<p><strong>Brian Krogsgard 23:30 </strong><br /> One of the things I learned from Pagely was that the price of hosting or the expensive hosting is really a relative thing. What Pagely might be able to do for $1,000 might end up costing three to 5000. At hosts that don\'t do these large setups all the time. I called our chatted rather with the CEO of Pagely, Joshua Strebel, several years ago and said, Hey, we\'re comparing options between Pagely and some of the other options in the market for really high scale websites. And what I realized was that on an apples-to-apples comparison, I was getting more with Pagely for less money. Now granted, we\'re talking about hosting for $1,000 a month, but so it\'s expensive for a website. But when a website was being quoted from other providers for $3,000 Plus, I was really getting excellent service from Pagely, for the price. If you have websites where you really rely on your website provider, being reliable, have excellent human support. I can\'t remember the last time it took longer than I don\'t know an hour for like a real answer to a support question, not an auto-answer, but someone that was, you know, taking a technical look at my issue. And getting back to me for about some question. I have almost always a question of my own fault. Not to do with my actual hosting plan, but where I just needed help. Pagely has plans for everybody. Whether it\'s that thousand dollar type of VPS or $200 for five sites, that\'s what their small VPS instance sets up for you. It\'s all built on AWS, they\'ve really fine-tuned it really, really well over the years. It\'s an excellent service go to Pagely.com to try Pagely today, let a little post that essentially. And they\'ve been a longtime partner, good friends of the show, and Post Status, and I can\'t recommend them enough. I trust my own websites to Pagely, go to Pagely.com. Thanks to Pagely for being a Post Status partner.</p>\n\n\n<p>One of the things you had me do when we were just trying to figure out would we make good partners was an assessment through Colby, calm kayo LP calm, and that was stuck with me. You had me do a couple of them which I thought was fun across the board. And just the fact that you wanted me to do that told me a lot about the type of partner you could be you know, like the way your mind works first. is mine. The Colby one I thought was interesting because it gave me an understanding of how I work. You have an understanding of how you work based on your assessment profile. And then it tells you Okay, well because you have this and you have this, you YouTube may have conflict in this way. Or you may have a really nice jelling in this way, and why you talk about how that kind of fits into this. So if I\'m talking about my, I need these, you know, big pictures fine. But then if you just say, take the big picture, go write a book, I\'m in trouble. But if you say take the big picture and go write some like thousand-word articles on like, okay, I can accomplish this. So, take this assessment, how you blend that and turn it into an effective partnership.</p>\n\n\n\n<p><strong>Cory Miller 26:46 </strong><br /> So my belief is whether it\'s a team or a partner is to leverage your their unique strengths and experiences that I probably don\'t have or if we overlap, there\'s unique this in there and so it\'s Specifically with our partnership, and we did these discovery tools, and I think was two years strengthsfinder from Gallup was the one, we can put these in the show notes. It gives you your top five strengths. And then so let me unpack that. So Strengths Finder is one that I had to do because I kind of wanted to see verify probably what I already thought about what your unique strengths were and what you believe that they are. And real quickly with that, I can go there\'s overlap, but there are differences. And that\'s why I like one of yours, I think is analytical. And that shines brightly, everything post at us. Like I told you years ago, what I always found value was your insight and analysis of everything that was breaking. Like I wanted. I might not agree with you every single time but I was like, No, I want a different perspective. And that\'s something I knew ahead of time, but it helped me just kind of really identify that. So the street corner does that with teams with partnerships, whatever. And by the way, that joke was I thought you\'re gonna say this But when my wife and I first met I had to do these two and she was like what the heck you\'re you have to take a test today you to see if I\'m, you know, married. Now she\'s a big fan. But Colby is really interesting because it\'s how you instinctively take action. And we started with Strengths Finder and then we evolved into Colby because I wanted to see how you instinctively took action. So this four modes factfinder, which is, you know, a high fat fighter which you happen to be is very I mean, it lends to everything you\'ve done, which is analytical research, I mean, dive deep into an area of a middle road factor under which is I want the essential truth. And the three other areas are quickstart. Most entrepreneurs, many entrepreneurs, I should say are quickstarts Hi, quickstarts. I\'m a high quickstart The other one is the blue one, which is follow through and it\'s not like you can\'t ever fall through but it\'s step by step. mode of action. If you have a problem, I\'m going to figure out step one, step two, step three, step four, the yellow is implementation. People behind that are the ones like mad Danner who are amazing with their hands and like woodworking and different things or whatever, like very high implementers, are. And then we also want to focus found from you is that we had, we had compatible things where I knew we could work really well together, but I knew there was also willing sounds like you\'re a medium quickstart which you and I could ideate all day and not get anything done. So that was the thing we talked about, you already recognized it. factfinder is great because we\'re kind of in that mode, where we\'re not in what Colby calls conflict, but we\'re low in the blue, which is step-by-step plan. We\'re kind of find the shortcuts, bandaid it together, put it together and do that. So we talked about that actively. You already recognize that but I helped us talk through, okay, our similarities can also be our weaknesses. We need someone to kind of help us. And I know David and Dan really help us with some of those things that we might go, man, let us we\'ll do it at the last minute.</p>\n\n\n\n<p><strong>Brian Krogsgard 30:10 </strong><br /> And just being cognizant of that, as we go about our day to day in partnership, you know, it allows me to say, Okay, I need to think I need to be sure and know, like, here\'s our plan, we came up with our plan, we\'ve got these ideas and the follow-through component or the, you know, the take it to execution side of things. It\'s like, I have to make sure that we both understand what to do, where to go and bring people along to help us accomplish that. And so far, I think that\'s been effective. And sometimes that\'s tooling you know like it\'s one thing if we have our all our conversations and slack and we have these pages of notes, in our note keeping apps and we, you know, collect our thoughts, but then it\'s another to say, Okay, well, let\'s put it on a schedule and let\'s set a date for When we\'re going to launch this thing, and let\'s have our plan of action for, you know, who\'s responsible for what, and put deadlines on that across the way. And to me that tooling side of things, which could be as simple as base camp or whatever, is my way of introducing accountability to an area where we both identified kind of on the same side of the spectrum, which is, in that in that particular instance, it\'s kind of the kind where it\'s like, ours has its own benefits, like the way we sit. But you really need that person that\'s like, the big long spreadsheet, project manager, very type a type of person to help rein us in, when we could end up down a whole bunch of different rabbit holes. You know, Id aiding the next two years of what post status is going to be and it\'s like, well, someone\'s got to do what we\'re going to do in the next two weeks or the next two months and yeah, so that gives us that accountability there.</p>\n\n\n\n<p><strong>Cory Miller 31:57 </strong><br /> Well, we\'re supposed to record this podcast six hours. ago, I think. And we had, you know, part of that was we had thought we still were so new in our partnership and trying to get some things done at post that is that we need to have the time. But we had deliberately two weeks ago, set this date to record and then now we\'re six hours later recording it. But I know we\'ll get to those types of things. But it\'s that, you know, we could wear that. I think you and I are kind of wired to be the squirrel. You know, movie idea. Okay, let\'s face it. We\'ve talked about that. And we both have, I think helped each other rein it in on that, like, hold on. This is first that second, this third, right? Yep, yep. Yep. Let\'s go back to that because it\'s really fun to dream. It\'s really fun to ideate and think about cool stuff, especially as quickstarts and the Colby kind of mantra. So, but there needs to be somebody that also says, Okay, let\'s stop dreaming now. Let\'s go do</p>\n\n\n\n<p><strong>Brian Krogsgard 32:58 </strong><br /> Yeah, and I think been proud of how we\'ve so far been able to do that. And we realize it\'s important. And I think maybe one of the things that has allowed us to do it is, when we first started the partnership, we, and you really helped me outline this. And it\'s like, what are our goals? For the business for the partnership, where we want to be a year, two years and three years? And therefore we say, Okay, if this thing is effective in January next January, what have we accomplished? And we said, okay, we want you know, certain things, it\'s a number of subscribers or it\'s a number of page views or a number of members or a degree of like member satisfaction, like things that you want to strike and then it\'s how do you plan to accomplish that and keep that as your goal, how many dollars you need to make a day if your dollar goal for the year is this? And that was really helpful for me to put all that in context.</p>\n\n\n\n<p><strong>Cory Miller 34:00 </strong><br /> So one other thing I did, I think I told you this either as I\'ve had a coach for a year and a half now a personal coach. Fantastic. name is Kelly. We came into this and she was like, Okay, got five projects, what do you need for me? And I was like, here\'s what I think I need me to go weekly. And what I don\'t want to do, my virtual assistant helps me take certain tasks that I need to just create my time, you know, to do other things. My coach is okay, here\'s the deal. I\'m highly invested in my time, my money, my energy and all these projects, and they\'ve got to make progress. I\'ve got to move the needle. That is the most impactful things. So what we do now is each week we do a 30-minute laser call. And I talked to the big issues, I think through the projects, and I go, can we post those this week? We need this. And what and she helps me get clarity on that before by the way. I have my partner calls like with you. We knew our calls on Friday to do my call with Rebecca on Wednesday. My partner Jeff on Monday. So I\'m like, man, there\'s too much stuff going on, I\'ve got to have that kind of clarity. And she\'s helped me rehearse and get ready for because like, for instance, I try hard not to ping you. Because I know there\'s a bucket of time, there\'s a bucket of energy that probably is owned mostly by Erica and your two kiddos. And I want to be really careful what I withdraw from that. So. So she\'s helped me go in, I looked over the last 30 days. So every week is a 30-minute call to kind of get ready and make sure I\'m on task for all the projects. The last meeting, which I just had this week, is a one hour kind of look back over the last 30 days, and then they look forward to next Thursday. So make sure I\'m keeping progress with all the critical projects going on. And that\'s just another level of optimizing for. There\'s a lot on the line for me. There\'s a lot of love for you and my other partners and so I want to make sure we\'re focused and making the most progress, we can For all of these so that we can say, high five and go, this is this, these were the best times. What resonated with me for you, Brian is you said for years, you know, Kevin did it by yourself, I Exodus ran into your burnout that post like it was the first sentence burned out. And I was like me and I can resonate with that. And one of the compelling things that he said to me as I said, I don\'t want to do this alone. Again, I could, I could sell this, I could do this and just leave. But I just really don\'t want to do it alone. And that I told you then resonates with a lot of social entrepreneurs. It\'s tough doing it by yourself. I had aside amazing psychic command, enter and I think to help me not do it alone. And then a group of us were friends, WordPress, none of WordPress helped me over the years. But man, that\'s something that you can mention too, is how a partner or a team or somebody that can come alongside you is so powerful.</p>\n\n\n\n<p><strong>Brian Krogsgard 36:55 </strong><br /> Yeah, there\'s two things there applies to both of these. I guess. A lot of people, you know, they dream when they\'re in a normal nine to five job. They\'re like, Okay, well, I have so much more upside potential or so much more opportunity for freedom and all these things if I go out on my, on my own, and work on this thing and turn my hobby into my business or turn my side gig into a full-time gig, and I think it takes several years potentially, of doing that before you oftentimes for and maybe it\'s for certain personality types that then they say, Okay, this has some real benefits, but there are some real drawdowns to that I need to consider and for me, okay, I love the freedom. I love the upside potential. But at the same time, I liked working with people and I liked bouncing things off teammates, and that was an important thing for me to figure out how can I recapture and I think a lot of people that might be listening to this talking about juggling multiple things, working with a partner, maybe they\'ve all kind of landed on that. So now, there\'s this kind of fundamental balance there, where when you\'re juggling multiple things, none of them is necessarily such a security blanket or a safety that is the same as a full-time job. So this balance is how do you spend time in the places where you can make money, yet none of them are probably sufficient relative to what you could make it a full-time job. Like, say, if you were making $100,000 and a full-time job while your main side hustle, it, maybe it\'s making $50,000 and your other side hustles making, you know, another $50,000? Well, you\'re making $100,000 total, but it requires this balance between the two of them. In our situation, you have partners so like my needs from the business, do they align well with your needs from the business from a revenue standpoint, there\'s so much balance and inertia. So you have to balance like, okay, I want to work with people. I want to have this freedom. But there\'s all this balance. that\'s required there and I would be curious if you have any kind of final tips to find the sweet spot while you\'re doing that.</p>\n\n\n\n<p><strong>Cory Miller 39:09 </strong><br /> Yeah, so you know for years I said it\'s a sidekick it\'s it\'s the Matt Danner, it\'s someone that just is doesn\'t have as has compatible strings to you. And but you\'re not strong in the same area where you can kind of divide and conquer. And so I\'ve honestly thought about it as a work spouse, you know, to Bandy that. That phrase around a little bit, but I mean, there\'s an element to that work spouse, like having someone you can confide in. And I bet you there are entrepreneurs and founders solopreneurs listening to this today. That is like, in the spot you were and by the way, when I struck out, it\'s been a year ago this week, I\'m back on my own. I didn\'t want to do it alone. I wanted to do with other people, and I found some great people. One of them being you and Do it together and collaborate. So, but I think, you know, somebody goes, why don\'t we give away equity I get that then finally struggle psychic, a workout spouse that feels ownership that you could give some rewards if they need it. But find that person that is the end to your Yang. We missed that. And then secondarily, I\'ll tell you, I know the work psychic work spouse type thing is hard. And the partnership conversation is hard. But I\'ll tell you and this is something you\'re not been talking about. Small groups of like-minded people on the same path with the same values have been life-saving and changing for me. So I\'ve been in one group for nine years now. 10 years almost. I\'ve helped start to more. We\'re talking about trying to get that kind of group. people in the room to rub elbows that get it they understand the story. So I always get the joke. Most of us don\'t know. Your parents don\'t know what they we do. Living Dead still thinks I just upgrade the computer somehow. But you know, having a group of people that just get you, know you, not talk you\'ve got some dear friends you lean on, you meet with weekly even as the same can be those kinds of compatriots that like, you can let your guard down and, and share like today sucks. And I\'ve tried to be that for people and also clean to those that are like vulnerable and genuine and authentic and are willing to let the guard down the shields down, take the mask off all that kind of stuff and go Hey, not everything is rosy. So, you know the two things is one is finding someone in the business that can work with it, that just gets it. That\'s a hard one I know. Second is to find a group of people that are on the same path as you then share life and go deep and it doesn\'t always have to be personal or a business. It can be personal, some of the most endearing moments I\'ve had with my friends. That I count as brothers and sisters. I mean, like they are family to me. If something were to happen to me, they\'d be the first people at my house scene if Lindsay and the kids were okay. But finding that group of people and you and I\'ve been talking about this, how do we do that through post tennis community to pull in our amazing community of founders, entrepreneurs, and give that type of like, being in the room together and sharing that stuff that it\'s the high fives, and it\'s the hugs that you need when things are just bad. So that\'d be my two takeaways.</p>\n\n\n\n<p><strong>Brian Krogsgard 42:35 </strong><br /> How about yourself? That\'s really good on and I think that\'s, I\'ll leave it there from a partner perspective. I\'ll jump back to the juggling things and just get my final. My final comparison maybe so I\'m thinking, Okay, well for you know, somebody that\'s somewhat technical or works in the web industry at minimum. All right. So if I gave you the challenge to say, hey, this website\'s slow, we need to speed it up. Well, if the first thing you would want to know is, where is it slow? Why\'s that slow and cut audit that process. And I think that that was the biggest thing that I had to come to the terms with, which was if I\'m going to juggle multiple things I need to know, where\'s my time going? I don\'t know how many times I had these weeks where the week goes by much less the day and it\'s like, okay, I had stuff I wanted to accomplish. I know I didn\'t accomplish everything on my list. But when I look back, I felt busy. But the results weren\'t there. What happened? And that is dangerous. Because you\'re not auditing. You\'re not knowing where your energy actually went. So that you can iterate and improve. It doesn\'t mean you have to be perfect. It doesn\'t mean you have to have like every hour tracked. But I think if you\'re going to make your website faster and more efficient, the first thing to do is to identify what are the processes that are slowing it down right now what is like what are the pivot points The what are the bottlenecks? Where\'s my time being consumed? And where, when I look at that, if I say I\'m spending 10 hours a week on phone calls, or if I\'m spending 10 hours a week, you know, in support, okay, what\'s the value of the time that I\'m spending there? And the best thing to do in juggling those multiple things is to try to find the difference makers in that time and spend more time on the difference makers and find out how to bring someone else in a contract or the or offload it to your partner if they\'re really good at it, and getting them to do those things. You\'ve told me I don\'t even know how many times since, you know, we started talking about talks about you know, managing support, which is pretty light with post status, but you were like, I don\'t want you in support, like get out of there. And I\'m like, okay, that\'s okay, that makes sense. But we still need to take care of support, but it starts by identifying how much time am I spending in that type of communication and Therefore, how can I effectively bring someone else on to take that task or put it in a certain bucket like I\'m going to do support every Monday and every Thursday or something like that. And that way, it\'s not kind of floating along with me the whole time. And that\'s what I found most effective in terms of auditing, and improving my personal processes to be able to juggle multiple things, which is an ongoing battle and ongoing struggle, but one that I\'ve certainly seen progress on, especially since I started self-auditing where I was spending my time</p>\n\n\n\n<p><strong>Cory Miller 45:38 </strong><br /> Yeah, that\'s really good. In my calendar if it\'s on my calendar, so I can get done. I don\'t do the time blocking like said this, but for mostly, but man I live by that calendar and I\'ve had to start trying to bracket time for certain things. But I think the audit is so good. Always be optimizing. You know, because again, We, you know, in this project have very limited time and energy. And so we put our best into it, but I want to prioritize that time and then optimize for bugs like, Okay, are we spend too much time here too. We, you know, and I think that kind of review helps us make good decisions to and going, Okay, this is the new here. This is the morning side, like the dashboard says, overheat or something, you know, we can go in and go Okay, well, how do we collaboratively figure this out?</p>\n\n\n\n<p><strong>Brian Krogsgard 46:31 </strong><br /> Yeah. Well, let\'s optimize this podcast a bit and leave it there. Thanks, everybody, for joining us. Thanks, Corey, for chatting with me. This was obviously relevant for us and these are always self-reflective, we\'ll be able to think back on what we said here and how we can do better from here. I hope that it helps you as well. I hope everybody has a great week and we go to post that comm slash club and sign up if you haven\'t already. Corey and I spent the majority of our time figuring out how to make the club better and more appealing to people that are already members and would consider being members. So if you\'re not opposed to as club member, you\'re going to miss out. So go to PostStatus.com/Club and sign up and we\'ll talk to you soon. Bye-bye.</p>\n\n<p>Transcribed by https://otter.ai</p>\n\n</div>\";s: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, 04 Feb 2020 01:13: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:15:\"Brian Krogsgard\";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:86:\"WPTavern: Ahmad Awais Launches Script to Automatically Deploy WordPress Plugin 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:29:\"https://wptavern.com/?p=96942\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:217:\"https://wptavern.com/ahmad-awais-launches-script-to-automatically-deploy-wordpress-plugin-updates?utm_source=rss&utm_medium=rss&utm_campaign=ahmad-awais-launches-script-to-automatically-deploy-wordpress-plugin-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:6426:\"<p>Today, Ahmad Awais <a href=\"https://github.com/ahmadawais/wp-continuous-deployment\">launched WP Continuous Deployment</a>, a continuous deployment pipeline for updating plugins hosted on WordPress.org via GitHub actions. It is a Node.js-based CLI script that simplifies the process of keeping plugins updated. Developers only need to type out a single line in their terminal or command prompt. Other than setting up a couple of secret keys on GitHub, the script handles everything in just a few moments.</p>\n\n\n\n<p>&ldquo;We live in the age of agile workflows,&rdquo; wrote Awais in the <a href=\"https://ahmadawais.com/wp-continuous-deployment/\">project announcement</a>. &ldquo;Developers only want to <code>git commit &amp;&amp; git push</code> and expect their products to be deployed globally&hellip;It&rsquo;s been a minute since I worked on a WordPress project, but for the last year or so, I&rsquo;ve been fantasizing about a git-based plugin deployments workflow that will allow me to get away from those old SVN repositories finally.&rdquo;</p>\n\n\n\n<p>On November 14, GitHub <a href=\"https://github.blog/2019-11-14-powering-community-led-innovation-with-github-actions/\">announced it was rolling out GitHub Actions</a>. Actions are a way for developers to automate workflows from their Git repositories. Developers can share, fork, and reuse them across projects. A few days later, <a href=\"https://wptavern.com/10up-releases-github-actions-for-simplifying-wordpress-plugin-deployment\">10up launched two GitHub actions</a> for WordPress plugin developers. These Actions are the basis for WP Continuous Deployment.</p>\n\n\n\n<p>10up&rsquo;s <a href=\"https://github.com/marketplace/actions/wordpress-plugin-deploy\">WordPress Plugin Deploy</a> Action handles deploying plugin updates directly to the WordPress plugin directory. The <a href=\"https://github.com/marketplace/actions/wordpress-plugin-readme-assets-update\">WordPress.org Plugin Readme/Assets Update</a> Action handles committing changes to a plugin&rsquo;s readme or assets. The WP Continuous Deployment script automatically adds both and sets up appropriate GitHub workflow files for each.</p>\n\n\n\n<p>&ldquo;What I hope to accomplish with WP Continuous Deployment is make it easy for any developer to use the GitHub Actions built by 10up and others and help migrate to this new workflow with a pinch of automation,&rdquo; said Awais. &ldquo;Without WP Continuous Deployment, migrating to GitHub Actions for deploying WordPress plugins is a task that requires knowledge of how GitHub Actions work, what files you have to create, what secrets are, and where to put them. We lose a great number of developers that are unable to figure out this step &mdash; due to a bulky and dry operational experience.&rdquo;</p>\n\n\n\n<p>The workflow for many WordPress developers today runs directly through Git, primarily with repositories hosted on GitHub. Often, developers expect any committed code to automatically deploy to the places it should go, such as production websites. </p>\n\n\n\n<p>The WordPress plugin directory system, which relies on SVN instead of Git, can sometimes be a bottleneck in team workflows. Some teams even have developers who have never used SVN in their careers. It makes sense for teams to use a single system. Doing so leads to fewer bugs and requires fewer resources to train people on a dying version control system.</p>\n\n\n\n<p>&ldquo;We&rsquo;re not doing anyone a favor by keeping SVN around,&rdquo; said Awais. &ldquo;Projects are hiring hundreds of open source developers to make it easy for the developers&rsquo; community to interact with their projects. Whereas WordPress &mdash; that once held that edge &mdash; has started to lag behind by making it hard and impractical to get started with WordPress development. Go pick 100 random students for universities all over the world and ask them to start an open-source project. You&rsquo;ll be amazed by the majority of them choosing to start with Git and MIT license. And, here in the WordPress community, we ask people to use SVN. That&rsquo;s impractical and inaccessible for a majority of developers today.&rdquo;</p>\n\n\n\n<p>Awais said that GitHub Actions have allowed his team to shed a lot of dead weight. He originally did not make his GitHub Actions open source because they were specific to his use cases. After trimming the code down, he realized they were not any different from the Actions that 10up had already released.</p>\n\n\n\n<p>&ldquo;I see dealing with SVN as a DevOps task,&rdquo; he said. &ldquo;Something web developers should not be concerned with in 2020. Web developers want to build websites. They want to use Git to do that. With JAMstack, everyone has become accustomed to the idea of pushing a git commit and getting the new build/release. That&rsquo;s why I built WP Continuous Deployment.&rdquo;</p>\n\n\n\n<h2>Set up in 1, 2&hellip;</h2>\n\n\n\n<img />Running the setup process for WP Continuous Deployment\n\n\n\n<p>When I originally tested 10up&rsquo;s GitHub Actions last year, there was a small learning curve. I had to figure out what those new workflow files were for and whether I needed to change things. It was not an overly complicated process, but there was a moment of confusion or two.</p>\n\n\n\n<p>What Awais&rsquo; script does is take those two GitHub Actions one step further and automate nearly all of the setup.</p>\n\n\n\n<p>Developers must have Node.js installed on their computer to run the script, which is fairly common today. With a single command of <code>npx wp-continuous-deployment</code>, the script is installed. It then prompts you to enter your WordPress.org plugin slug to set everything up. Once done, you merely need to create a couple of secret keys on your GitHub repository.</p>\n\n\n\n<p>Awais wanted to automate the entire process. However, GitHub does not yet have an API for creating secret keys. Until that happens, it is the only manual step required.</p>\n\n\n\n<p>Within two minutes of choosing which repository I wanted to test the script on, I had everything in place and ready to go. Now, I just need to find some time to actually write code for some of my numerous plugins so I can truly put this script to the test. Thus far, things are looking good.</p>\n\n\n\n<p>It may finally be possible for me to purge everything related to SVN from my life. That would be a welcome change. <code>#lifegoals</code></p>\";s: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, 03 Feb 2020 21:23:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s: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: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:56:\"WordPress.org blog: The Month in WordPress: January 2020\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8316\";s:7:\"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/2020/02/the-month-in-wordpress-january-2020/\";s: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:5941:\"<p>Following an action-packed December, 2020 is off to a fine start with some new releases and announcements. Read on to find out what happened in the WordPress project in January.</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>Release of Gutenberg 7.2 &amp; 7.3</h2>\n\n\n\n<p><a href=\"https://make.wordpress.org/core/2020/01/09/whats-new-in-gutenberg-8-january/\">Gutenberg 7.2</a>, the first Gutenberg release of 2020, was deployed on January 8th and included over 180 pull requests from more than 56 contributors. This was followed soon after by <a href=\"https://make.wordpress.org/core/2020/01/22/whats-new-in-gutenberg-22-january/\">Gutenberg 7.3</a>. New features include a new Buttons block, support in adding links to Media &amp; Text block images, improvements to the Navigation and Gallery blocks, performance improvements, and accessibility enhancements. These releases also included many additional enhancements, fixes, new APIs, documentation, and more.</p>\n\n\n\n<p>Want to get involved in building Gutenberg? Follow <a href=\"https://make.wordpress.org/core/\">the Core team blog</a>, contribute to <a href=\"https://github.com/WordPress/gutenberg/\">Gutenberg on GitHub</a>, and join the #core-editor channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<h2>Proposal for an XML Sitemaps Feature Plugin</h2>\n\n\n\n<p>In June last year, a team of contributors <a href=\"https://make.wordpress.org/core/2019/06/12/xml-sitemaps-feature-project-proposal/\">proposed</a> a feature plugin that would bring standardized XML sitemaps to WordPress Core. Since then, the team has been working to bring this to reality and <a href=\"https://make.wordpress.org/core/2020/01/27/feature-plugin-xml-sitemaps/\">have now published a working plugin</a> to demonstrate this new capability.</p>\n\n\n\n<p>The plugin is still in development, but the included features already provide much-needed functionality from which all WordPress sites can benefit. You can install the plugin from your WordPress dashboard or <a href=\"https://wordpress.org/plugins/core-sitemaps/\">download it here</a>.</p>\n\n\n\n<p>Want to get involved in bringing this feature to Core? Follow <a href=\"https://make.wordpress.org/core/\">the Core team blog</a>, report any issues you find <a href=\"https://github.com/GoogleChromeLabs/wp-sitemaps/issues\">on GitHub</a>, and join the #core channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<h2>A New Block-Based Themes Meeting</h2>\n\n\n\n<p>The Theme Review Team has <a href=\"https://make.wordpress.org/themes/2020/01/29/new-bi-weekly-block-based-themes-meeting/\">announced</a> that they will be holding bi-weekly meetings in the #themereview channel focused on discussing block-based themes. If you are interested in discussing themes within the context of Gutenberg’s full-site editing framework, this will be the place to do so! The first meeting will be held on Wednesday, February 5, at 16:00 UTC.</p>\n\n\n\n<p>Want to get involved with the Theme Review Team or <a href=\"https://make.wordpress.org/themes/handbook/get-involved/become-a-reviewer/\">become a reviewer</a>? Follow <a href=\"https://make.wordpress.org/themes/\">their blog</a>, and join the #themereview channel in <a href=\"https://make.wordpress.org/chat/\">the Making WordPress Slack group</a>.</p>\n\n\n\n<hr class=\"wp-block-separator\" />\n\n\n\n<h2>Further Reading</h2>\n\n\n\n<ul><li>The Core team has started work on WordPress 5.4 and kicked off their planning with <a href=\"https://make.wordpress.org/core/2020/01/14/wordpress-5-4-planning-roundup/\">a summary post</a>. You can follow all the v5.4 updates by watching <a href=\"https://make.wordpress.org/core/tag/5-4/\">the version tag</a> on the Core team blog.</li><li>The inaugural <a href=\"https://2020.asia.wordcamp.org/\">WordCamp Asia</a> event is taking place in February. This will be the largest WordPress event in the region, bringing together around 1,500 WordPress enthusiasts from around the world.</li><li>Two WordPress community leaders, <a href=\"https://profiles.wordpress.org/chanthaboune/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>chanthaboune</a> and <a href=\"https://profiles.wordpress.org/andreamiddleton/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>andreamiddleton</a>, <a href=\"https://wordpress.org/news/2020/01/wordpress-leaders-nominated-for-cmx-awards/\">were nominated for CMX awards</a> due to their work on the WordPress project, with <a href=\"https://profiles.wordpress.org/andreamiddleton/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>andreamiddleton</a> winning the award for Executive Leader of a Community Team.</li><li><a href=\"https://make.wordpress.org/core/2020/01/29/lazy-loading-images-in-wordpress-core/\">A feature plugin has been proposed</a> that introduces lazy-loading images to WordPress Core, which will be a huge step forward in improving performance all across the web.</li><li>The Core team has put together <a href=\"https://make.wordpress.org/core/handbook/tutorials/faq-for-new-contributors/\">an extensive and informative FAQ</a> to help new contributors get involved in contributing to the project.</li><li>One key priority for Gutenberg is the ability to control the block editor. There are already a number of APIs that control the experience, but there is a lack of consistency and missing APIs. <a href=\"https://make.wordpress.org/core/2020/01/23/controlling-the-block-editor/\">A method to address this</a> has been proposed.</li><li>The Design team <a href=\"https://make.wordpress.org/design/2020/01/24/gutenberg-phase-2-friday-design-update-43/\">published detailed information</a> on the recent design improvements in Gutenberg.</li></ul>\n\n\n\n<p><em>Have a story that we should include in the next “Month in WordPress” post? Please </em><a href=\"https://make.wordpress.org/community/month-in-wordpress-submissions/\"><em>submit it here</em></a><em>.</em></p>\";s: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, 03 Feb 2020 09:54: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:10:\"Angela Jin\";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:106:\"WPTavern: Join the Future of WordPress Themes Conversation: Theme Review Team to Hold Biweekly Discussions\";s:7:\"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:29:\"https://wptavern.com/?p=96885\";s:7:\"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:255:\"https://wptavern.com/join-the-future-of-wordpress-themes-conversation-theme-review-team-to-hold-biweekly-discussions?utm_source=rss&utm_medium=rss&utm_campaign=join-the-future-of-wordpress-themes-conversation-theme-review-team-to-hold-biweekly-discussions\";s: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:4418:\"<p class=\"has-drop-cap\">In collaboration with the core design and editor teams, the WordPress theme review team will begin <a href=\"https://make.wordpress.org/themes/2020/01/29/new-bi-weekly-block-based-themes-meeting/\">hosting biweekly (fortnightly) meetings</a> on the future of themes. The meetings will be held every other Wednesday on the <a href=\"https://wordpress.slack.com/messages/themereview/\">#themereview WordPress Slack channel</a> at 16:00 UTC. The first meeting is on February 5.</p>\n\n\n\n<p>Phase 2 of the Gutenberg project is about tackling site customization. This covers everything from turning sidebars into block containers to redefining how themes will work in a block-based system in the coming years. The latter is a huge unanswered question. There are several ideas on how themes should be handled.</p>\n\n\n\n<p>Kjell Reigstad, a design director for Automattic, proposed the meeting as a step toward answering the future-of-themes question. &ldquo;The main thing I&rsquo;d like to accomplish is to build up regular cross-team communication around the theme plus full-site editing work,&rdquo; he said. &ldquo;There are so many potential changes on the horizon, and we really need perspective from both the Gutenberg folks and theme authors. I know it&rsquo;s difficult to keep up with all the development happening, and I thought this dedicated meeting would be a great place to stay up to date and share ideas on a regular basis.&rdquo;</p>\n\n\n\n<p>Currently, the agenda for the first meeting is still open but should be posted next week. Anyone who wants to participate or make sure an idea sees discussion, should let the team know in the <a href=\"https://make.wordpress.org/themes/2020/01/29/new-bi-weekly-block-based-themes-meeting/\">announcement post&rsquo;s</a> comments.</p>\n\n\n\n<p>&ldquo;I&rsquo;d initially like to try and get everyone on the same page in terms of what&rsquo;s happening already on the Gutenberg front,&rdquo; said Reigstad. &ldquo;So for instance, the experimental block-based themes implementation and the global styles work. We&rsquo;ll likely go over those a little bit, share links and updates, and then pivot into some discussion questions.&rdquo;</p>\n\n\n\n<p>Bringing in the theme review team is imperative for a smooth transition into whatever themes eventually become. &ldquo;There&rsquo;s already a lot of full-site editing work going on, and there are already experimental reference documents for block-based themes,&rdquo; said Reigstad earlier this week in the team&rsquo;s regular meeting. &ldquo;It&rsquo;s important for the TRT and the theme community to keep up to date on this work, and to develop a clear communication loop with the Gutenberg teams.&rdquo;</p>\n\n\n\n<p>There is some concern that the concept of full, block-based themes will simply be railroaded into core WordPress, regardless of feedback. Not all members of the theme review team or theme authors are supportive of the idea.</p>\n\n\n\n<p>Theme reviewer Joy Reynolds pointed out in the announcement&rsquo;s comments that using the phrase &ldquo;block-based themes&rdquo; in the meeting title shows bias in favor of themes made of blocks. &ldquo;Why is the current Full Site Editing code outside the scope of the Customizer?&rdquo; she asked. &ldquo;What is the goal? Is it even something that makes sense for themes? Don&rsquo;t we need a merge proposal? Or even a consensus on design before forcing these changes into core and having meetings about using experimental code as if it&rsquo;s the only choice?&rdquo;</p>\n\n\n\n<p>These are questions that will certainly come up in the meeting.</p>\n\n\n\n<p>Block-based themes already feel like a foregone conclusion. The initial code is currently in the Gutenberg plugin, albeit as an experimental feature. There is already <a href=\"https://wptavern.com/initial-documentation-for-block-based-wordpress-themes-proposed\">documentation for building such themes</a>. There is a core <a href=\"https://wptavern.com/get-involved-with-block-based-wordpress-theme-experiments\">theme experiments repository</a> Everything seems to be moving full-steam ahead in that direction.</p>\n\n\n\n<p>Whatever direction themes end up going, the meeting will at least offer an opportunity for the community to add their input. For success, the editor, design, and theme review team members will need to find some common ground to begin their discussions.</p>\";s: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, 31 Jan 2020 20:49: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: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:57:\"WPTavern: Native Lazy Loading Support Coming to 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:29:\"https://wptavern.com/?p=96875\";s:7:\"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:159:\"https://wptavern.com/native-lazy-loading-support-coming-to-wordpress?utm_source=rss&utm_medium=rss&utm_campaign=native-lazy-loading-support-coming-to-wordpress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4789:\"<p class=\"has-drop-cap\">It seems to be the week for dropping news of WordPress feature plugins. Felix Arntz, WordPress core committer and developer programs engineer at Google, announced a <a href=\"https://make.wordpress.org/core/2020/01/29/lazy-loading-images-in-wordpress-core/\">plan to push a lazy loading feature</a> to the platform. If testing goes well, this feature could land in WordPress 5.4 in March.</p>\n\n\n\n<p>The concept of lazy loading allows a webpage to render without loading certain resources until they are needed. This leads to faster page loads and saves data on the visitor&rsquo;s end. Lazy loading is particularly useful when rendering images on the web. </p>\n\n\n\n<p>The opposite of lazy loading is called <em>eager</em> loading, which loads everything in bulk. By default, this is how all images are loaded on the web. This often leads to poor performance on image-heavy webpages where many of the images are not in the site visitor&rsquo;s viewport when first viewing the page.</p>\n\n\n\n<p>For many years, various JavaScript libraries have handled this feature but not always to success. A native solution is slowly making its way into browsers. Native lazy loading works by adding a <code>loading</code> attribute to an <code>&lt;img&gt;</code> or <code>&lt;iframe&gt;</code> element. Browsers can then decide how to load a resource based on the value of the attribute. Currently, <a href=\"https://caniuse.com/#feat=loading-lazy-attr\">Chrome, Edge, and Opera</a> all handle the loading attribute. Once the attribute officially makes it into the <a href=\"https://github.com/whatwg/html/pull/3752\">HTML specification</a>, the feature should be a standard that all browsers support.</p>\n\n\n\n<blockquote><p> Adopting the new loading attribute is a great chance for WordPress to lead the way for a faster web overall. </p><cite> Felix Arntz</cite></blockquote>\n\n\n\n<p>The new <a href=\"https://wordpress.org/plugins/wp-lazy-loading/\">Lazy Loading feature plugin</a> is now available in the WordPress plugin directory. The plugin relies only on native browser support and does not add extra JavaScript. The implementation adds a loading attribute to images in post content, excerpts, comments, text widgets, avatars, and instances of using core WordPress image functions. By default, the plugin sets all images to load lazily rather than eagerly.</p>\n\n\n\n<p>It is refreshing to see the continued work by core contributors on more robust image solutions. Along with WordPress 5.3&rsquo;s <a href=\"https://wptavern.com/wordpress-5-3-improves-large-image-handling\">large image size handling</a>, both features will lead to a generally faster web. With more users loading high-quality images via mobile phones over the past few years, it has only exacerbated the problem of a slow web. That is why it imperative that WordPress continually push for image optimization.</p>\n\n\n\n<p>&ldquo;With WordPress enabling native lazy-loading by default, it would significantly impact performance and user experience for millions of sites, without requiring any technical knowledge or even awareness of lazy-loading as a concept,&rdquo; wrote Arntz in the announcement post. &ldquo;Adopting the new loading attribute is a great chance for WordPress to lead the way for a faster web overall.&rdquo;</p>\n\n\n\n<p>Arntz and a team of engineers originally <a href=\"https://wptavern.com/google-releases-native-lazyload-plugin-for-wordpress\">released a native lazy loading plugin</a> in September 2019. This was shortly after <a href=\"https://wptavern.com/chrome-76-adds-native-lazy-loading-wordpress-contributors-continue-discussion-regarding-core-support\">Google brought the &ldquo;loading&rdquo; attribute</a> feature to version 76 of its Chrome browser. The Native Lazyload plugin currently has over 7,000 installations.</p>\n\n\n\n<h2>How This Affects Existing Plugins</h2>\n\n\n\n<p>Because not all web browsers support the loading attribute, users may not want to automatically drop their current plugins when the feature lands in WordPress. Users may choose to support browsers without native lazy loading for a while</p>\n\n\n\n<p>The proposed code within the Lazy Loading plugin attempts to detect whether the <code>loading</code> attribute exists on an image before applying it. This means the code should play nicely with existing plugins and avoid conflicts in most cases.</p>\n\n\n\n<p>Developers of plugins that handle lazy loading need to start testing their plugins and updating them for WordPress 5.4. Follow the <a href=\"https://core.trac.wordpress.org/ticket/44427\">Lazy Loading API ticket</a> on core Trac to stay updated on when the feature lands and the <a href=\"https://github.com/WordPress/wp-lazy-loading\">GitHub repository</a> for contributing to its development.</p>\";s: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, 30 Jan 2020 20:22: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: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: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:67:\"WPTavern: XML Sitemaps Feature Plugin Open for Testing and 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:29:\"https://wptavern.com/?p=96800\";s:7:\"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/xml-sitemaps-feature-plugin-open-for-testing-and-feedback?utm_source=rss&utm_medium=rss&utm_campaign=xml-sitemaps-feature-plugin-open-for-testing-and-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:6492:\"<p>Thierry Muller, a Developer Relations Program Manager at Google, and several contributors posted an <a href=\"https://make.wordpress.org/core/2020/01/27/feature-plugin-xml-sitemaps/\">update on the XML sitemaps feature</a> that may land in WordPress this year. After seven months of development, the team has made the <a href=\"https://github.com/GoogleChromeLabs/wp-sitemaps\">XML Sitemaps feature plugin</a> available on GitHub. It is currently open for testing and feedback. The plugin should also be available in the WordPress plugin directory by next week.</p>\n\n\n\n<p class=\"has-background has-gray-100-background-color is-style-default bg-gray-100\"><strong>Update (January 31, 2020):</strong> The <a href=\"https://wordpress.org/plugins/core-sitemaps/\">Core Sitemaps feature plugin</a> is now available in the WordPress plugin repository.</p>\n\n\n\n<p>The project aims to ship a basic version of an XML sitemaps feature to all WordPress installations. It will also offer an API for plugin developers to manipulate. Therefore, sitemap plugins would not automatically disappear. Instead, plugins would offer users various options on how their sitemaps work.</p>\n\n\n\n<p>A team created by Google, Yoast, and other contributors <a href=\"https://wptavern.com/developers-at-yoast-and-google-collaborate-on-proposal-to-add-xml-sitemaps-to-wordpress-core\">originally proposed XML sitemaps as a core WordPress feature</a> in June 2019. Traditionally, WordPress has left this feature to plugins to implement, and many have filled this role over the years. However, several other major content management systems ship with sitemaps as part of their core codebase.</p>\n\n\n\n<p>Many praised the initiative, such as WordPress project lead Matt Mullenweg. &ldquo;This makes a lot of sense, looking forward to seeing the v1 of this in core and for it to evolve in future releases and cement WordPress&rsquo; well-deserved reputation of being the best CMS for SEO,&rdquo; he said.</p>\n\n\n\n<p>However, several people questioned whether WordPress should ship with XML sitemaps. Some were worried about performance and others felt like the feature should remain in plugins.</p>\n\n\n\n<p>&ldquo;At a high level, expanding the number of WordPress sites with Sitemaps ultimately speeds up content discoverability by search engines and re-crawl fresher content flagged by the lastmod date faster than a scheduled bot would,&rdquo; Muller said of the primary reasons the feature belongs in core.</p>\n\n\n\n<p>WordPress users may see this feature arrive in major update this year. &ldquo;Ambitiously [version] 5.4,&rdquo; said Muller of the release goal. &ldquo;Realistically 5.5.&rdquo;</p>\n\n\n\n<p>The feature plugin currently indexes the following URLs for a site:</p>\n\n\n\n<ul><li>Homepage</li><li>Blog posts page (if not the homepage)</li><li>Posts and pages</li><li>Categories and tags</li><li>Custom post types</li><li>Custom taxonomies</li><li>Users/Authors</li></ul>\n\n\n\n<p>Custom post types and taxonomies are registered only if they are public. There is also a filter hook available to change which post types, taxonomies, and users are indexed. Ideally, WordPress would provide a registration flag for post types and taxonomies.</p>\n\n\n\n<h2>Solving the Performance Issues</h2>\n\n\n\n<p>One of the primary concerns with the initial proposal is how well a core sitemaps feature would perform and scale, particularly on larger sites. Without a full caching solution built into core, it presented some hurdles for the team.</p>\n\n\n\n<p>&ldquo;Solving the performance issue is not trivial, and we have looked into various solutions,&rdquo; said Muller. &ldquo;We believe that we landed on a solution that doesn&rsquo;t need full caching and will still be scalable.&rdquo;</p>\n\n\n\n<p>For performance, there are two primary challenges:</p>\n\n\n\n<ul><li>The number of URLs per page.</li><li>The <code>lastmod</code> date in the <code>index.xml</code> file.</li></ul>\n\n\n\n<p>&ldquo;Addressing the number of URLs per page is fairly trivial,&rdquo; said Muller. &ldquo;While sitemaps can have up to 50,000 URLs per sitemap, we found that capping it at 2,000 is acceptable from a performance perspective and totally acceptable from a search engine perspective.&rdquo; The team decided to stick with a default of 2,000 URLs per sitemap and to provide a filter hook for plugins to alter if necessary.</p>\n\n\n\n<p>Finding a solution for the <code>lastmod</code> date was not as easy. &ldquo;We believe we found a good balance, which will be scalable and doesn&rsquo;t open the can of worms that full caching exposes us to,&rdquo; said Muller.</p>\n\n\n\n<p>The solution the team implemented involved scheduling a cron task that runs twice daily (the frequency can be filtered by plugins). The cron job fetches the <code>lastmod</code> dates of each sitemap and stores them in the options table, which essentially works as a light caching solution.</p>\n\n\n\n<p>&ldquo;Relying on cron should be stable enough for small to medium websites,&rdquo; said Muller. &ldquo;Enterprise websites usually have server cron set up to more regularly ping WP Cron instead of relying on website visitors to trigger it. In fact, most managed hosting providers have that for all plans.&rdquo;</p>\n\n\n\n<p>If the team&rsquo;s initial implementation is not well-rounded enough, they have been researching an alternative implementation that uses custom post types to store and update sitemap data. Two open GitHub tickets further explore performance that developers may want to check out: <a href=\"https://github.com/GoogleChromeLabs/wp-sitemaps/issues/1\">Issue #1</a> and <a href=\"https://github.com/GoogleChromeLabs/wp-sitemaps/issues/39\">Issue #39</a>.</p>\n\n\n\n<h2>What Happens to Sites With Existing Sitemaps?</h2>\n\n\n\n<p>One question that remains unanswered is what happens when a user updates to WordPress 5.4/5.5 and already has a sitemap. There are likely millions of WordPress sites that are running a plugin or have some sort of sitemap solution in place. </p>\n\n\n\n<p>&ldquo;This is a question which we haven&rsquo;t quite solved,&rdquo; said Muller. &ldquo;It is important to work with plugin authors, and in an ideal world, all plugins providing advanced sitemaps solutions would extend the core API. We would love to get feedback from the community on that one.&rdquo;</p>\n\n\n\n<p>WordPress must take care to avoid any major conflicts or indexing errors, or at least alleviate issues for the users who may be unaware of this upcoming feature.</p>\";s: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, 29 Jan 2020 20:37:36 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s: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: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:71:\"WPTavern: Emoji Conbini and the Case for a Block Enhancements 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:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://wptavern.com/?p=96802\";s:7:\"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/emoji-conbini-and-the-case-for-a-block-enhancements-directory?utm_source=rss&utm_medium=rss&utm_campaign=emoji-conbini-and-the-case-for-a-block-enhancements-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8193:\"<p>In December of 2019, Nick Hamze, the owner of <a href=\"https://sortabrilliant.com/\">Sorta Brilliant</a>, quietly launched <a href=\"https://block.garden/\">Block Garden</a> with a proposal for plugin authors to build block-based plugins off concepts, called <em><a href=\"https://block.garden/seeds/\">seeds</a></em>, from his site. He has since written extensively on the block editor and has shared a multitude of ideas, many of which are <em>sorta brilliant</em>.</p>\n\n\n\n<p>It is easy to be drawn in by Hamze&rsquo;s unabashed love for blocks. In a post titled &ldquo;<a href=\"https://block.garden/not-busy/\">You aren&rsquo;t busy, you&rsquo;re just not excited</a>,&rdquo; Hamze challenges developers to build something, anything and not worry about it being perfect or becoming an earth-shattering product. &ldquo;The purpose of Block Garden is to get you excited about blocks,&rdquo; he wrote in the post. &ldquo;To make you so excited about blocks that you&rsquo;ll make the time to bring them to life. The community needs you more than you realize. I honestly believe that every person has at least one block in them. If I can get you to create that first block, I know you&rsquo;ll be hooked for life.&rdquo;</p>\n\n\n\n<p>He has created a space for those who genuinely love the block editor. Block Garden is reminiscent of some of the early WordPress blogs where normal, everyday end-users shared their love of the platform. It is refreshingly optimistic. It is block geekdom at its finest. <em>And, I kind of love it.</em></p>\n\n\n\n<p>Hamze put out a <a href=\"https://block.garden/block-builder/\">job posting for block developers</a> earlier this month. Several developers answered the call. &ldquo;I can&rsquo;t code but I have ideas and cash that I&rsquo;m investing into blocks, mostly to keep the boredom at bay that is slowly killing me,&rdquo; he said. &ldquo;We are making some really fun blocks together. This is just the tip of the iceberg.&rdquo;</p>\n\n\n\n<p>In a few short weeks, Hamze and his co-authors have released multiple block-related plugins through his Sorta Brilliant brand that are now available on the WordPress plugin directory:</p>\n\n\n\n<ul><li><a href=\"https://wordpress.org/plugins/post-script/\">P.S.</a> &ndash; A container block for grouping blocks into a popover.</li><li><a href=\"https://wordpress.org/plugins/streamshare/\">StreamShare for Twitch</a> &ndash; Embed Twitch content into the block editor.</li><li><a href=\"https://wordpress.org/plugins/ghstwrtr/\">Ghostwriter</a> &ndash; Adds a heading block style that types out the text on the front end, <em>Ghostwriter</em> style (for you fans of the &rsquo;90s TV series).</li><li><a href=\"https://wordpress.org/plugins/ubiquitous-blocks/\">Ubiquitous Blocks</a> &ndash; Exposes the Reusable Blocks admin screen and allows users to automatically add them to posts.</li></ul>\n\n\n\n<h2>Emoji Conbini</h2>\n\n\n\n<img />Inserting an emoji with the Emoji Conbini plugin.\n\n\n\n<p>In collaboration with George Mamadashvili, Hamze&rsquo;s latest release is the <a href=\"https://wordpress.org/plugins/emoji-conbini/\">Emoji Conbini</a> plugin. It adds an emoji inserter to the block editor toolbar.</p>\n\n\n\n<p>Emoji Conbini utilizes the <a href=\"https://github.com/missive/emoji-mart\">Emoji Mart</a> library, which offers a Slack-like emoji picker. When the picker is open, the user merely needs to choose their preferred emoji. Users can also search for a specific emoji.</p>\n\n\n\n<p>Hamze was aware of the <a href=\"https://wordpress.org/plugins/emoji-autocomplete-gutenberg/\">Emoji Autocomplete Gutenberg</a> plugin before commissioning his emoji plugin for the block editor. &ldquo;I loved how easy it made adding emoji but I didn&rsquo;t like the UI,&rdquo; he said. &ldquo;It seemed like you had to know what emoji you wanted to add and relied on keyboard shortcuts, which I don&rsquo;t think everyone is comfortable with.&rdquo;</p>\n\n\n\n<p>The problem with both emoji plugins is that they insert the WordPress-based emoji image directly into the editor instead of the emoji character. By default, WordPress will automatically convert emoji characters to images on the front end. For the average user, this is likely a non-issue. However, some users prefer to use the browser-based emoji and disable the images that core outputs. Both emoji plugins remove this possibility. They also remove the possibility of using a different emoji image library.</p>\n\n\n\n<p>&ldquo;To be honest, I&rsquo;m not really a fan of the browser versions, but I&rsquo;m willing to consider anything if there is a demand for it,&rdquo; said Hamze of the possibility of simply inserting the emoji character. &ldquo;To me, getting version 1 out there is the most important, and if anything needs to be changed, people will let me know.&rdquo;</p>\n\n\n\n<p>The term &ldquo;conbini&rdquo; initially drew me to the plugin, which is the name given to Japanese convenient stores &#127978;. If you have never been to one, they are like stepping into another world (<em>almost everything in Japan seems otherworldly to this smalltown guy from the southern U.S.</em>).</p>\n\n\n\n<p>&ldquo;I love everything from Japan,&rdquo; said Hamze. &ldquo;The music, anime, the tech. I bid on items on Yahoo Japan daily as I love surrounding myself with cool stuff from Japan. I&rsquo;ve only been to Japan once, but it was magical. I especially loved going to conbini. My favorite thing to get there was rice balls from Lawsons.&rdquo;</p>\n\n\n\n<p>The plugin name also plays into Hamze&rsquo;s goals with Sorta Brilliant and Block Garden. While many other plugins are offering full packages for blocks, he is dropping smaller, <em>convenient</em> extensions to the block editor. Emoji Conbini shows that there is perhaps a market for add-ons that are block-related but not necessarily blocks, or at least some people are thinking about it.</p>\n\n\n\n<h2>Discovering Block Extensions</h2>\n\n\n\n<p>In his post &ldquo;<a href=\"https://block.garden/more-than-just-blocks/\">The block directory needs more than just blocks</a>,&rdquo; Hamze argues that one of the largest hurdles for block-related plugins is discoverability. He further argues the block directory is too tightly focused on individual blocks, proposing a &ldquo;block enhancements&rdquo; category as a solution.</p>\n\n\n\n<p>For Emoji Conbini, 10up&rsquo;s <a href=\"https://wptavern.com/inserting-special-characters-into-the-block-editor\">Insert Special Characters</a>, ThemeIsle&rsquo;s <a href=\"https://wordpress.org/plugins/blocks-css/\">Blocks CSS</a>, and other plugins that extend the block editor, there is no way for users to discover these plugins without specifically searching for them. These are useful plugins that could help sell the block editor to users who are on the fence.</p>\n\n\n\n<p>There is an unknown number of possibilities for enhancements to the block editor. This sub-category of block-editor plugins does not seem to get the attention that is going toward blocks. However, in some cases, they can be far more useful for everyday writing than the numerous blocks in development.</p>\n\n\n\n<p>Hamze&rsquo;s initial idea proposes an enhancements category for the <a href=\"https://wptavern.com/version-1-prototype-of-the-wordpress-admin-block-directory-announced\">upcoming block directory</a>, but that has problems. For one, the block directory will be directly tied to the block inserter in a future version of WordPress. Plus, these types of plugins are not actual blocks. However, the concept of making block enhancements more visible to users is a necessary part of the puzzle. For the block editor&rsquo;s continued success, WordPress needs to expose its users to a wider world of possibilities than simply installing another block.</p>\n\n\n\n<p>Now is the time to start thinking about exposure for plugins that enhance the block editor. Eventually, these types of plugins may need to be further grouped into editor toolbar (e.g., character inserters), block options (e.g., extra settings for existing blocks), and other categories. I suspect that we are only now glimpsing a future where users will be asking how to find not just blocks but block editor extensions.</p>\";s: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, 28 Jan 2020 20:54:15 +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:75:\"WPTavern: Swift Control Replaces WordPress Toolbar With Custom Access Panel\";s:7:\"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:29:\"https://wptavern.com/?p=96787\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"https://wptavern.com/swift-control-replaces-wordpress-toolbar-with-custom-access-panel\";s: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:5397:\"<img />Swift Control expanded panel on the site front end.\n\n\n\n<p>David Vongries, creator of the <a href=\"https://wordpress.org/themes/page-builder-framework\">Page Builder Framework</a> theme, launched the <a href=\"https://wordpress.org/plugins/swift-control/\">Swift Control plugin</a> last week. The plugin is billed as a replacement for the core WordPress toolbar (admin bar). It allows site owners to customize the front-end control panel&rsquo;s appearance and what links are displayed.</p>\n\n\n\n<p>Swift Control adds a new button on the front end of any site the plugin is active on. When clicked, the button expands to open the full array of button-like links to various admin screens. By default, the links point to the dashboard, edit screen for the current post, and the customizer.</p>\n\n\n\n<p>On the whole, the default functionality is not much different from the normal toolbar. The selling point for this plugin is its customizability. For users who want more control over admin access links from the front end, the plugin is a nice option.</p>\n\n\n\n<p>Vongries said the plugin made it easier for his customers to work with than the WordPress toolbar. He had wanted to release it as a standalone plugin for others to use over the years. However, he lacked the time and resources to put the release together.</p>\n\n\n\n<p>&ldquo;We built this for our multisite network around 3 years ago to make it easier for our customers to navigate and access the key areas of their website,&rdquo; said Vongries. &ldquo;We actually ended up using this &mdash; what was back then just a couple pieces of custom code &mdash; on all of our client websites. I got so used to it, I&rsquo;m using it on my own sites as well.&rdquo;</p>\n\n\n\n<p>The plugin is simple to use and does its job well. For the moment, the largest downside is that the front-end controls are always positioned in the middle of the left side of the screen. This means it is not a one-size-fits-all solution. &ldquo;We&rsquo;ve actually planned to provide some position options so you can align the panel to the left, right, top-left, top-right and so on,&rdquo; said Vongries. &ldquo;That&rsquo;s on the roadmap as well as some different styling options for the panel.&rdquo; Both the positioning and styling options are planned for the free version of the plugin.</p>\n\n\n\n<p>It would also be nice to see some mobile-specific options for the control panel. An option to move it to a different location on smaller screens would be helpful so that the buttons do not inadvertently cover content. Adding an option to disable it completely on mobile may also be worth considering.</p>\n\n\n\n<p>The positioning is the only <em>potential</em> downside of an otherwise well-made plugin. Because it is being actively worked on, it may be a non-issue in future versions (<em>I&rsquo;m currently running version 1.2.1</em>).</p>\n\n\n\n<h2>Customize the Swift Control Panel</h2>\n\n\n\n<img />Swift Control plugin settings screen.\n\n\n\n<p>The beauty of Swift Control is in its options for customizing what buttons appear in the front-end panel. By default, the free version of the plugin contains seven &ldquo;widgets&rdquo; (what the plugin calls its buttons/links):</p>\n\n\n\n<ul><li>Dashboard</li><li>Edit {Post Type}</li><li>Customize</li><li>New Post</li><li>New Page</li><li>Themes</li><li>Plugins</li></ul>\n\n\n\n<p>Users can drag and drop these widgets wherever they prefer in the control panel. Each widget has its own options. By clicking the edit button, users can change both the icon and title for the widget. Users can also decide whether links should open in a new browser tab.</p>\n\n\n\n<p><a href=\"https://wpswiftcontrol.com/\">Swift Control Pro</a>, the commercial version of the plugin, kicks customization up a notch. Besides the widgets available in the free version, it adds widgets for custom post types, launches the editor for page builders (Elementor, Brizy, Divi or Beaver Builder), supports WooCommerce, and adds a logout widget. Users can also create custom buttons.</p>\n\n\n\n<p>Both the free and pro versions offer additional settings. Users can customize each of the colors used in the control panel so that it matches their site. Other settings are switches to enable or disable features, such as turning off the WordPress toolbar.</p>\n\n\n\n<p>The following video shows how Swift Control Pro works (the free version is essentially the same but does not have the pro widgets):</p>\n\n\n\n<div class=\"wp-block-embed__wrapper\">\n\n</div>\n\n\n\n<h2>Future Plugin Plans</h2>\n\n\n\n<p>Besides new positioning options, Vongries said they are working on an import and export feature. Ideally, this would allow users to keep their settings from test environments or when copying to new sites. It could also be interesting in use on multisite.</p>\n\n\n\n<p>&ldquo;One of the other features we&rsquo;re going to work on next is the ability to show controls based on user roles,&rdquo; said Vongries. &ldquo;This will require us to change the UI of the widgets though, and we haven&rsquo;t yet decided on what they should look like.&rdquo; Currently, the team is exploring various ideas with the UI for such a feature, such as creating an expanding section for access to advanced widget settings.</p>\n\n\n\n<p>The first order of business is bringing in more users and getting feedback, which should help steer the future direction of the plugin.</p>\";s: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, 27 Jan 2020 19:46: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: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: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:56:\"WordPress.org blog: People of WordPress: Robert Cheleuka\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8300\";s:7:\"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/2020/01/people-of-wordpress-robert-cheleuka/\";s: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:7036:\"<p><em>You’ve probably heard that WordPress is open-source software, and may know that it’s created and run by volunteers. WordPress enthusiasts share many examples of how WordPress changed people’s lives for the better. This monthly series shares some of those lesser-known, amazing stories.</em></p>\n\n\n\n<h2><strong>Meet Robert Cheleuka</strong></h2>\n\n\n\n<p>Robert is a self-taught graphic and motion designer turned web designer (and aspiring web developer) from Malawi, Africa. Over the years, he has grown fond of WordPress and has become a loyal user. Still, the journey is rough.</p>\n\n\n\n<img src=\"https://i2.wp.com/wordpress.org/news/files/2020/01/DSC08818.jpg?resize=632%2C790&ssl=1\" alt=\"Robert Cheleuka\" class=\"wp-image-8303\" />Robert Cheleuka\n\n\n\n<h3><strong>Malawi</strong></h3>\n\n\n\n<p>Malawi is one of the poorest countries in the world. A tiny landlocked country with a population of 17 million, it’s largely rural and still considered a developing country. The average entry-level monthly pay for most skilled jobs is about $110. If you&#8217;re employed full-time in the creative industry and if you’re very lucky, you might be able to earn more than that. Employees earning more than $300 a month are rare to non-existent.</p>\n\n\n\n<p>Robert has been a freelance graphic designer since about 2011. He started by doing gigs from his dorm in college and from home. Earnings from his freelance jobs increased his interest in entrepreneurship and he started to consider starting his own creative agency.</p>\n\n\n\n<h3><strong>How Robert was introduced to WordPress</strong></h3>\n\n\n\n<p>Robert first came into contact with WordPress in 2014 when he and a friend started a local tech blog. Before that, all he knew was basic, outdated HTML from high school and some knowledge of Adobe Dreamweaver. They decided to use WordPress, and their new blog looked like it came from the future. They used a theme from the repo and got such positive feedback from the blog they decided to open a content and media publishing agency.</p>\n\n\n\n<p>While they got a few web redesign jobs thanks to the exposure the blog brought, they lacked the administrative and business skills needed and ended up going their separate ways. Then in his first real job after college Robert finally took it upon himself to learn the ins and outs of WordPress. He learned how to install WordPress on a server and did some research on customizing themes. </p>\n\n\n\n<p>With that knowledge alone he got his first web design clients and started earning nearly as much as he did at his job. Robert soon realized that free WordPress themes would only take him so far, especially with his limited code skills.</p>\n\n\n\n<p>Because in Malawi only people who travel abroad have access to credit cards, paying for premium themes was impossible. Like many WordPress designers in developing countries, Robert turned to using pirated themes instead. He knew that was both unsafe and unethical, and decided to learn how to code. Knowing how to build themes from scratch would surely help him rise above the competition. </p>\n\n\n\n<img src=\"https://i1.wp.com/wordpress.org/news/files/2020/01/20180905_1971270886435744_8835917058488139776_n.jpg?fit=632%2C632&ssl=1\" alt=\"\" class=\"wp-image-8304\" />\n\n\n\n<h3><strong>The WordPress community from Robert’s perspective</strong></h3>\n\n\n\n<p>Robert doesn’t have a lot of interaction with the WordPress community. Although he would search for solutions from blogs about WordPress he had never actually talked to or asked anyone from the community for a solution.&nbsp;</p>\n\n\n\n<p>Robert believes that this isolation is the result of a glass ceiling &#8212; the WordPress community is partially online and partially in-person, but there isn’t a local group in Malawi. And because Malawi, like many other developing nations, lacks a way to pay online many can’t access premium support, online learning, or most other types of professional development. No matter how welcoming the people of WordPress might be, it can still feel like it mostly belongs to those with enough privilege to conduct business on the internet.</p>\n\n\n\n<h3><strong>WordPress &amp; inclusion</strong></h3>\n\n\n\n<p>As most freelancers know, it’s really hard to learn while you also still need to earn. Add pitching to clients and shipping graphic design projects… there are only so many hours in a day.</p>\n\n\n\n<p>Robert didn’t have a programming background and had always been more of a creative person. In order to grow as a web designer/developer, he needed to learn PHP. Again, without access to a credit card, that was complicated. Also, free coding training wasn’t as widely available as it is now.</p>\n\n\n\n<p>Robert wishes that more developers would consider alternative ways for users who cannot pay for courses, themes, or plugins (whether that’s because of available infrastructure or otherwise). He wishes that WordPress tutors and developers would open up ways to accommodate aspiring learners in developing countries who cannot access plugins, courses, and themes, to be able to give back and to participate at another level.</p>\n\n\n\n<p>WordPress has allowed him to build an income he would have no other way of earning and it makes a huge difference. He believes sharing stories like his will hopefully make WordPress products and services become more universally available. In addition, he hopes that more aspiring, self-taught developers will find courage in reaching out to connect with others out there.</p>\n\n\n\n<h2><strong>Contributors</strong></h2>\n\n\n\n<p>Alison Rothwell (<a href=\"https://profiles.wordpress.org/wpfiddlybits/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>wpfiddlybits</a>), Yvette Sonneveld (<a href=\"https://profiles.wordpress.org/yvettesonneveld/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>yvettesonneveld</a>), Josepha Haden (<a href=\"https://profiles.wordpress.org/chanthaboune/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>chanthaboune</a>), Siobhan Cunningham (<a href=\"https://profiles.wordpress.org/siobhanseija/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>siobhanseija</a>), Topher DeRosia (<a href=\"https://profiles.wordpress.org/topher1kenobe/\" class=\"mention\"><span class=\"mentions-prefix\">@</span>topher1kenobe</a>)</p>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<img src=\"https://i1.wp.com/wordpress.org/news/files/2019/07/heropress_large_white_logo.jpg?resize=632%2C474&ssl=1\" alt=\"\" class=\"wp-image-7025\" />\n</div>\n\n\n\n<div class=\"wp-block-column\">\n<p> <em>This post is based on an article originally published on HeroPress.com, a community initiative created by <a href=\"https://profiles.wordpress.org/topher1kenobe/\">Topher DeRosia</a>. HeroPress highlights people in the WordPress community who have overcome barriers and whose stories would otherwise go unheard.</em> </p>\n</div>\n</div>\n\n\n\n<p> <em>Meet more WordPress community members over at </em><a href=\"https://heropress.com/\"><em>HeroPress.com</em></a><em>!</em> </p>\n\n\n\n<p><br /></p>\";s: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, 25 Jan 2020 15:26: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:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"Yvette Sonneveld\";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:62:\"WPTavern: 10up Releases Autoshare for Twitter 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:29:\"https://wptavern.com/?p=96737\";s:7:\"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://wptavern.com/10up-releases-autoshare-for-twitter-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:3951:\"<p>On Tuesday, 10up <a href=\"https://10up.com/blog/2020/autoshare-for-twitter-wordpress-plugin/\">released its Autoshare for Twitter plugin</a>. The plugin is designed to automatically tweet blog posts as they are published. By default, it will send the post title, featured image, and link to Twitter. Users can also add a custom message. The <a href=\"https://wordpress.org/plugins/autoshare-for-twitter/\">plugin is available</a> in the WordPress plugin directory.</p>\n\n\n\n<p>If you threw a rock into a crowd of WordPress plugins, you would likely smack a social-networking extension. The WordPress plugin market is crowded with similar plugins, so it would make sense if this one flew under the radar. Plus, powerhouse plugins like Jetpack provide similar functionality, such as the <a href=\"https://jetpack.com/support/publicize/\">Jetpack Publicize feature</a>. Yet, with the prevalence of similar plugins, Autoshare for Twitter is worth checking out.</p>\n\n\n\n<p>Many similar plugins work with multiple social networks, but 10up&rsquo;s plugin is designed specifically for sharing via Twitter. For users who only need a solution for that specific social network, it is a solid solution for version 1.0.</p>\n\n\n\n<p>10up originally built the plugin to provide the company&rsquo;s clients more control and customization than they found in existing solutions. &ldquo;Recognizing its widespread potential, we decided to follow our own best practices for managing open-source software by releasing it as a free plugin on the official WordPress plugin repository,&rdquo; wrote Jeff Paul, Associate Director of Open Source Initiatives at 10up.</p>\n\n\n\n<p>The plugin works with both the block and classic editors. When in use with the block editor, it is added as part of the pre-publish check system as shown in the following screenshot:</p>\n\n\n\n<img />Pre-publish check for tweeting a post.\n\n\n\n<p>The custom message box tracks the number of characters so that users do not go over Twitter&rsquo;s character count. The plugin also displays a message in the Status &amp; Visibility panel to let users know if a post was shared on Twitter. </p>\n\n\n\n<p>Overall, the plugin does its job well (<em>sorry to folks who were bombarded with some test tweets earlier</em>). It would be nice to see similar one-off solutions that are specific to other social networks. I often find myself in need of such plugins without dealing with a full array of social networking options.</p>\n\n\n\n<p>The plugin is also <a href=\"https://github.com/10up/autoshare-for-twitter\">available on GitHub</a> for others to contribute. Currently, there are several open issues that would improve how the plugin works.</p>\n\n\n\n<h2>Setup Is Not User-Friendly</h2>\n\n\n\n<img />Settings page for Twitter credentials.\n\n\n\n<p>The biggest downside to the plugin is there are no links, no admin help tab, and no instructions on how to set up the Twitter Credentials on the plugin&rsquo;s setting screen. The page simply has some text fields for things like an API Key, API Secret, and so on. These are not user-friendly terms, and will likely be confusing for many. Not to mention, similar plugins can connect users at the click of a button. For a plugin that does nearly everything else right, this is a missing piece of what would be a near-perfect release.</p>\n\n\n\n<p>The plugin is ideal for power users or developers who want to set up Twitter sharing for a client. In the current version of the plugin, users need to set up a <a href=\"https://developer.twitter.com/\">Twitter Developer account</a> and create a Twitter App. This generates the API keys and necessary tokens for using the plugin.</p>\n\n\n\n<p>The plugin does have an <a href=\"https://github.com/10up/autoshare-for-twitter/issues/57\">open ticket on GitHub</a> for a better onboarding process, which could solve this issue. Therefore, the team is aware of and actively working on making this smoother in a future version.</p>\";s: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, 24 Jan 2020 21:00:15 +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: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:102:\"WPTavern: Gutenberg 7.3 Brings Navigation Block Colors, Block Collections API, and Dynamic Post 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:29:\"https://wptavern.com/?p=96706\";s:7:\"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:111:\"https://wptavern.com/gutenberg-7-3-brings-navigation-block-colors-block-collections-api-and-dynamic-post-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:5495:\"<p>The Gutenberg team <a href=\"https://make.wordpress.org/core/2020/01/22/whats-new-in-gutenberg-22-january/\">announced version 7.3</a> of the plugin yesterday. This was the second release of the year, which included 159 contributions from 56 people. The major changes to the plugin include settings for changing the navigation block&rsquo;s text and background colors, a new Block Collections API for developers, and placeholder blocks for post elements.</p>\n\n\n\n<p>One of the most significant changes with this release is the speed improvement for page load times and input events. Speed tests are done against posts with ~36,000 words and ~1,000 blocks. The team reduced total load time from 6.431 seconds in version 7.2 to 4.55 seconds in version 7.3. Input events saw larger improvements. Events in 7.3 take 33.8 milliseconds in comparison to 64.7 milliseconds in 7.2.</p>\n\n\n\n<p>Changes in Gutenberg 7.3 covered a wide range of areas in the plugin. The team added an <a href=\"https://github.com/WordPress/gutenberg/pull/18132\">experimental label function</a> for improving block accessibility. They corrected over a dozen bugs with editor navigation. They also introduced some new developer APIs such as a <a href=\"https://github.com/WordPress/gutenberg/pull/19317\">warning utility</a>, <a href=\"https://github.com/WordPress/gutenberg/pull/18495\">text component</a>, and <a href=\"https://github.com/WordPress/gutenberg/pull/17148\">image size control component</a>.</p>\n\n\n\n<p>Work toward full-site editing continued in this release. It is now possible to <a href=\"https://github.com/WordPress/gutenberg/pull/19203\">edit existing template part files</a>. The site editor can also <a href=\"https://github.com/WordPress/gutenberg/pull/19081\">load the front page block template</a>.</p>\n\n\n\n<h2>Navigation Block Colors</h2>\n\n\n\n<img />Selecting custom colors for the navigation block.\n\n\n\n<p>The existing Navigation block continues to improve with each release. Version 7.3 <a href=\"https://github.com/WordPress/gutenberg/pull/19108\">added new options</a> for setting the text color for all navigation items and background color for the entire navigation block.</p>\n\n\n\n<p>It is nice to see some work done toward providing users control over navigation colors. However, it is a far cry from what a good theme designer can do with the flexibility of plain ol&rsquo; CSS. Handling navigation colors is tricky because there is so much that is missing. Link colors also need hover and focus state changes. Some designs may need borders for links and border color changes for the various link states or even background color changes.</p>\n\n\n\n<p>Suffice it to say, I am still skeptical about how good the navigation block will be when it is time to move onto full-site editing, especially in comparison to the fine-tuned control that a theme author would normally have.</p>\n\n\n\n<h2>Dynamic Post Element Blocks</h2>\n\n\n\n<img />Post element placeholder blocks.\n\n\n\n<p>In previous releases, the Gutenberg team dropped post title and post content blocks. These are placeholder blocks that will dynamically output the title and content for posts. The long-term goal is for these blocks to be used along with full-site editing, which will allow users to manipulate how everything on their sites is output, including posts.</p>\n\n\n\n<p>Gutenberg 7.3 introduced three new placeholder blocks for post elements:</p>\n\n\n\n<ul><li><a href=\"https://github.com/WordPress/gutenberg/pull/19576\">Post author block</a></li><li><a href=\"https://github.com/WordPress/gutenberg/pull/19578\">Post date block</a></li><li><a href=\"https://github.com/WordPress/gutenberg/pull/19579\">Post excerpt block</a></li></ul>\n\n\n\n<p>This still represents early work toward full-site editing. Eventually, Gutenberg will need to turn nearly every important template tag into a block to get full coverage of what is currently possible with PHP.</p>\n\n\n\n<p>To test these features, you must enable &ldquo;Full Site Editing&rdquo; via the Gutenberg &gt; Experiments screen in the WordPress admin.</p>\n\n\n\n<h2>Block Collections API for Developers</h2>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>registerBlockCollection( \'super-duper\', {\n title: \'Super Duper\',\n icon: ( &lt;SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"&gt;&lt;Path d=\"M11 5v7H9.5C7.6 12 6 10.4 6 8.5S7.6 5 9.5 5H11m8-2H9.5C6.5 3 4 5.5 4 8.5S6.5 14 9.5 14H11v7h2V5h2v16h2V5h2V3z\" /&gt;&lt;/SVG&gt; ),\n} );</code></pre>\n\n\n\n<p>A new Block Collections API was added to version 7.3 for plugin developers. Instead of registering a block category and adding blocks to specific categories, plugin developers can register a collection based on the namespace for their blocks.</p>\n\n\n\n<p>For instance, suppose you develop a plugin with a collection of blocks. Each block is under the namespace <code>super-duper</code>. When you register a block collection with the <code>super-duper</code> namespace, all of the blocks would be automatically registered to your custom block collection. This seems to be a smarter way to handle groups of blocks than the existing category system. </p>\n\n\n\n<p>Right now, collections work the same way as categories within the UI. However, it does open collections to other possibilities in the future.</p>\n\n\n\n<p>Blocks can still be registered to a specific category that makes the most sense for the individual block. However, by registering collections, an avenue exists for finding all blocks coming from a single source.</p>\";s: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, 23 Jan 2020 21:17:44 +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: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:45:\"HeroPress: Thinking Outside the WordPress Box\";s:7:\"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=3054\";s:7:\"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:142:\"https://heropress.com/essays/thinking-outside-the-wordpress-box/#utm_source=rss&utm_medium=rss&utm_campaign=thinking-outside-the-wordpress-box\";s: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:7186:\"<img width=\"960\" height=\"480\" src=\"https://s20094.pcdn.co/wp-content/uploads/2021/01/012320-min.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"Pull Quote: I feel that we’ve only scratched the surface of what WordPress can be.\" /><p>Most people, when they discover WordPress, start on the challenging and rewarding path of developing themes, plugins and similar products. I decided to think outside the box.</p>\n<p>My name is Alexander, and my WordPress journey began in 2009. I’m from Chisinau, Republic of Moldova. I originally discovered WordPress while looking for a content management system for one of my projects. Intrigued by how it worked, I started like many others do &#8212; learning how WordPress works through developing WordPress websites.</p>\n<p>I started using what I knew to provide development services on freelance platforms. For the next decade, I mostly concentrated on the lesser known, yet still critically important parts of WordPress: particularly security and search engine optimization.</p>\n<p>For many people building up a freelance business in the WordPress world, these are the parts that are important to do, but are often thought of as secondary to deeper development. Theme and plugin authors in particular, get the lion’s share of the spotlight when it comes to WordPress development.</p>\n<h3>Speed and Sophistication</h3>\n<p>I soon learned that after a decade of polishing my skills, that what the world needed wasn’t more WordPress theme developers or plugin authors. What it needed were people who could take care of the kinds of tasks that seemed simple on the surface (like protecting a WordPress site from hackers or optimizing it for search engines), yet were very involved and continued to get more complex over time.</p>\n<p>Contrary to popular belief, you can’t just install a plugin or two and think your site is secure or well-optimized for Google and other sites. Sure, there are plugins which can help the process, but when disaster strikes and your site gets hacked, or you find that your site is loading sluggishly compared to your competition, or worse, your site disappears from the search rankings &#8212; you know you need help, and FAST.</p>\n<h3>A Dandy Idea!</h3>\n<p>In 2019 I decided to turn my love for WordPress into full-time work through <a href=\"https://wpdandy.com\">WPDandy</a>. Rather than marketing myself strictly as a WordPress developer or theme designer (although I also do development and design work from time to time), I decided to think outside the box and offer the kinds of services I knew that people needed, but didn’t know how much they needed them, until it was too late!</p>\n<p>Through WPDandy, I focused on WordPress maintenance, management and support services. These include but are not limited to: <b>WordPress speed improvements</b>, <b>security</b>,<b> search engine optimization</b>, <b>backups, etc.</b></p>\n<h3>How WPDandy Has Changed My Life</h3>\n<p>WPDandy has changed my life in many ways. It has enabled me to enjoy the freedom and flexibility of working for myself, doing something that I love. Today, I lead a team of highly professional and passionate WordPress developers from around the world.</p>\n<p>Through my online work, I’m able to help clients reach their business and personal goals, and grow their WordPress sites without worrying about keeping everything up to date (which can be a full-time job in itself, especially if there are multiple sites to run!). My company allows me to help others, and that brings me immense satisfaction!</p>\n<h3>Contributing to the Future of WordPress</h3>\n<p>Although I’m immensely proud of what I’ve built with WPDandy as well as thankful to all of the clients who helped me to discover and master the art and science of WordPress, I felt like I also owed something to the WordPress community itself.</p>\n<p>That’s why I’ve also signed on to be a WordPress contributor. I routinely offer suggestions, advice and share code that can help make managing and maintaining WordPress easier, as well as keep it more secure and less vulnerable to hacking and suspicious attacks.</p>\n<p>Beyond that, I’m overjoyed to be a WordCamp speaker as well. I love sharing knowledge with others and collaborating with like minds on powerful new ideas that can help shape WordPress and make it even better than before.</p>\n<h3>Shaping the Future of Content Management</h3>\n<p>It continues to amaze me how what once started as a small, ordinary blogging platform has blossomed into an absolute content management powerhouse. WordPress can become so many things: an e-commerce storefront, a message board, a membership site, and of course a blog. But I feel that, by and large, we’ve only scratched the surface of what WordPress can be.</p>\n<p>I look forward to continuing to be able to provide outstanding WordPress development, maintenance and management services for all of the many iterations of WordPress that exist and will be created in the future. It’s going to be an exciting ride, and I can’t wait to see what’s next.</p>\n<div class=\"rtsocial-container rtsocial-container-align-right rtsocial-horizontal\"><div class=\"rtsocial-twitter-horizontal\"><div class=\"rtsocial-twitter-horizontal-button\"><a title=\"Tweet: Thinking Outside the WordPress Box\" class=\"rtsocial-twitter-button\" href=\"https://twitter.com/share?text=Thinking%20Outside%20the%20WordPress%20Box&via=heropress&url=https%3A%2F%2Fheropress.com%2Fessays%2Fthinking-outside-the-wordpress-box%2F\" rel=\"nofollow\" target=\"_blank\"></a></div></div><div class=\"rtsocial-fb-horizontal fb-light\"><div class=\"rtsocial-fb-horizontal-button\"><a title=\"Like: Thinking Outside the WordPress Box\" class=\"rtsocial-fb-button rtsocial-fb-like-light\" href=\"https://www.facebook.com/sharer.php?u=https%3A%2F%2Fheropress.com%2Fessays%2Fthinking-outside-the-wordpress-box%2F\" rel=\"nofollow\" target=\"_blank\"></a></div></div><div class=\"rtsocial-linkedin-horizontal\"><div class=\"rtsocial-linkedin-horizontal-button\"><a class=\"rtsocial-linkedin-button\" href=\"https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fheropress.com%2Fessays%2Fthinking-outside-the-wordpress-box%2F&title=Thinking+Outside+the+WordPress+Box\" rel=\"nofollow\" target=\"_blank\" title=\"Share: Thinking Outside the WordPress Box\"></a></div></div><div class=\"rtsocial-pinterest-horizontal\"><div class=\"rtsocial-pinterest-horizontal-button\"><a class=\"rtsocial-pinterest-button\" href=\"https://pinterest.com/pin/create/button/?url=https://heropress.com/essays/thinking-outside-the-wordpress-box/&media=https://heropress.com/wp-content/uploads/2021/01/012320-min-150x150.jpg&description=Thinking Outside the WordPress Box\" rel=\"nofollow\" target=\"_blank\" title=\"Pin: Thinking Outside the WordPress Box\"></a></div></div><a rel=\"nofollow\" class=\"perma-link\" href=\"https://heropress.com/essays/thinking-outside-the-wordpress-box/\" title=\"Thinking Outside the WordPress Box\"></a></div><p>The post <a rel=\"nofollow\" href=\"https://heropress.com/essays/thinking-outside-the-wordpress-box/\">Thinking Outside the WordPress Box</a> appeared first on <a rel=\"nofollow\" href=\"https://heropress.com\">HeroPress</a>.</p>\";s: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, 23 Jan 2020 18: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:16:\"Alexander Covtun\";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:75:\"WPTavern: GiveWP Plugin Users Raised Over $100 Million in Donations in 2019\";s:7:\"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:29:\"https://wptavern.com/?p=96639\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://wptavern.com/givewp-plugin-users-raised-over-100-million-in-donations-in-2019\";s: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:5667:\"<img />\n\n\n\n<p><a href=\"https://wordpress.org/plugins/give/\">GiveWP plugin</a> users raised $106 million in donations in 2019. This is the first time donation amounts have crossed the $100 million threshold in a year. Matt Cromwell, GiveWP&rsquo;s COO, made the <a href=\"https://www.facebook.com/photo.php?fbid=10219125809314580\">announcement on Facebook</a> last week. This is a jump from the $88 million and $41 million raised in 2018 and 2017, respectively.</p>\n\n\n\n<p>&ldquo;I&rsquo;m constantly amazed at what we&rsquo;ve been able to accomplish at GiveWP,&rdquo; said Cromwell. &ldquo;The team continues to excel as experts in their fields, the platform itself continues to improve and become even more top-notch. But this number we observed recently really puts the rubber to the road.&rdquo;</p>\n\n\n\n<p>The $106 million is not an exact total in donations users have gained in their fundraising campaigns. It only represents the numbers by users who are using PayPal or Stripe. &ldquo;Both PayPal and Stripe provide partner programs where platforms like GiveWP get a small percentage of each processing fee,&rdquo; said Cromwell. &ldquo;This isn&rsquo;t an additional amount, it&rsquo;s money the processor will take either way, but shares with us because we help them generate more business.&rdquo; The partners programs rely on transparency in reporting, which is how GiveWP can see the total donations made through those payment processors. &ldquo;In order for us to know that they are paying us appropriately, they need to provide us with numbers to see how much revenue was processed through our platform.&rdquo;</p>\n\n\n\n<p>Both PayPal Standard and Stripe are supported in the free version of the GiveWP plugin, which makes them the go-to choices of payment gateways for end-users. &ldquo;Authorize.net is the next largest,&rdquo; said Cromwell. &ldquo;But Authorize is maybe a tenth of the number of users as either PayPal or Stripe (rough estimate).&rdquo; Without data from the other processors, it&rsquo;s impossible to know the total donation numbers, which would be higher than the amount the team is aware of.</p>\n\n\n\n<p>GiveWP currently has over 70,000 active installations, many of which power the donation system on small sites. The plugin is also used for large non-profit organizations such as <a href=\"https://lifewater.org/\">Lifewater</a>, a Christian-based organization that brings clean water to families living in poverty around the world; <a href=\"https://liberomagazine.com/\">Libero Magazine</a>, a Vancouver-based mental health magazine and community; and <a href=\"https://www.lovebutton.org/\">Love Button</a>, an organization that promotes a culture of love and aims to inspire humans to act with kindness.</p>\n\n\n\n<h2>From the Past to the Future</h2>\n\n\n\n<p>Impress, the company behind the plugin, <a href=\"https://wptavern.com/give-a-new-free-donations-plugin-for-wordpress\">launched GiveWP</a> in 2015 to &ldquo;Democratize Generosity.&rdquo; The goal was to provide non-profits and other causes the ability to launch campaigns without going through the middle-man of crowd-funding sites, which can sometimes carry a hefty fee. Handling all of this within WordPress provided a more robust and customizable solution that put site owners in control of how they ran their fundraising efforts.</p>\n\n\n\n<p>It was a bold move to build to launch in a crowded market of existing donation plugins and add-ons for major eCommerce plugins. Thus far, the venture has turned out well. However, the GiveWP team is not looking to slow down.</p>\n\n\n\n<p>&ldquo;Honestly, from a plugin/development perspective it feels like we&rsquo;ve learned everything new all over again,&rdquo; said Cromwell of the journey thus far. &ldquo;The things that we felt were the biggest strengths of the platform still are strong, but also now are technical debt that we&rsquo;re working to revamp to continue to carry GiveWP strong into the future. Our form builder leveled up a lot when we built our own settings API (for example), but now in a post-Gutenberg era, it feels like it needs a more visual refresh. Doing that well with backward compatibility is a serious challenge.&rdquo;</p>\n\n\n\n<p>The team feels like much of their early success was by targeting the WordPress community. &ldquo;That&rsquo;s playing &lsquo;inside baseball,\'&rdquo; he said. &ldquo;Getting into the broader WP community and then additionally into the NPO community is where our challenge is now. So we&rsquo;re flexing new muscles in marketing.&rdquo;</p>\n\n\n\n<p>The original partners had to pick up new skills over the past four years. They had to learn how to switch gears from simply being owners and workers to managing individual teams. &ldquo;We&rsquo;re so proud of our team that it&rsquo;s become one of our biggest strengths as a company,&rdquo; said Cromwell. &ldquo;Now getting from 20 employees (where we&rsquo;re at now) to 50 will be an even bigger challenge.&rdquo;</p>\n\n\n\n<p>The GiveWP team does not plan to focus solely on the WordPress ecosystem. They want to branch out and see where new avenues for growth will take them.</p>\n\n\n\n<p>&ldquo;While WordPress having 35% internet market share is a big deal, there&rsquo;s still more market outside WordPress than inside,&rdquo; said Cromwell. &ldquo;So for the growth and strength of our company we are now building out a new fundraising SaaS which we&rsquo;re excited to launch this calendar year.&rdquo;</p>\n\n\n\n<p>If the team manages to launch a successful SaaS product on the GiveWP platform, this year&rsquo;s $106 million in fundraising could pale in comparison to 2020&rsquo;s numbers and beyond.</p>\";s: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, 22 Jan 2020 21:19: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: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:101:\"WPTavern: GoDaddy’s ‘Go’ WordPress Theme Offers a Page-Building Experience via the Block Editor\";s:7:\"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:29:\"https://wptavern.com/?p=96641\";s:7:\"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://wptavern.com/godaddys-go-wordpress-theme-offers-a-page-building-experience-via-the-block-editor\";s: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:8640:\"<img />\n\n\n\n<p>GoDaddy launched its <a href=\"https://wordpress.org/themes/go/\">Go WordPress theme</a> last week. It has been publicly available through its <a href=\"https://github.com/godaddy-wordpress/go\">GitHub repository</a> for several months, but the theme review team finally approved and set it live in the theme directory. Thus far, the theme has garnered 7,000 active installs and is likely to hit the popular list, given GoDaddy&rsquo;s history of releasing popular themes. It also provides translations in 27 languages out of the box.</p>\n\n\n\n<p>Go is simple. After working with the theme through GoDaddy&rsquo;s <a href=\"https://wptavern.com/inside-look-at-godaddys-onboarding-process-for-managed-wordpress-hosting\">managed hosting onboarding process</a> in October last year, I was admittedly a little disappointed this time around. The onboarding process made things almost too easy. I had a predesigned site without thinking about it. After installing and activating Go in my test environment, I couldn&rsquo;t help but feel like it would take 100 times more work to recreate the magic I once basked in. I knew the power of the theme because I had been presented an ideal set of options that were preconfigured for me in the past. Without the configuration, the theme seemed a little less impressive.</p>\n\n\n\n<p>That&rsquo;s the beauty of great marketing and onboarding. GoDaddy had already reeled me in.</p>\n\n\n\n<p>While the Go theme is simple, it is also powerful. A lot of that power is in its block styles. Instead of focusing on theme-specific features, the team behind the project poured their work into creating an experience that allows theme users to piece their sites together with the block editor. The theme is ideal for users who want to utilize the block editor as a page builder.</p>\n\n\n\n<p>The theme has a handful of customizer options that provide additional flexibility, but the main selling point is that it gets out of the way and lets the user do the designing. I suspect we will see many similar themes in the next year as theme authors come to grips with building themes in a block world. A large part of the market will want themes that are essentially open canvases for site owners to manipulate the output of their site via blocks.</p>\n\n\n\n<p>Go is also designed to work with WooCommerce, which is a large part of the company&rsquo;s <a href=\"https://wptavern.com/godaddy-launches-ecommerce-hosting-plan-in-partnership-with-woocommerce\">eCommerce hosting service</a>. This integration should make it a nice option for small business owners.</p>\n\n\n\n<h2>CoBlocks Companion Recommended</h2>\n\n\n\n<img />Features block from the CoBlocks plugin.\n\n\n\n<p>The magic of Go is not in the theme itself. It&rsquo;s in GoDaddy&rsquo;s companion plugin <a href=\"https://wordpress.org/plugins/coblocks/\">CoBlocks</a>, which the company <a href=\"https://wptavern.com/godaddy-acquires-themebeans-coblocks-block-gallery-and-block-unit-tests\">acquired last year</a> in a deal with ThemeBeans. The plugin has soared from a mere 3,000 active installs to over 100,000 since.</p>\n\n\n\n<p>CoBlocks offers everything from accordions to maps, from logos to pricing tables, and a lot more in between. It covers a lot of ground that the core WordPress editor blocks do not cover.</p>\n\n\n\n<p>The Go theme is designed to go hand-in-hand with CoBlocks (<em>can we get GoDaddy to just go ahead and rename the plugin to <strong>Go</strong>Blocks?</em>). The theme is meant to offer a page-building experience. Because GoDaddy owns both products, it makes sense they would offer one of the nicer integrations between the plugin and a theme.</p>\n\n\n\n<h2>Not Ideal for Blogging</h2>\n\n\n\n<img />A lot of whitespace between text and other blocks in posts.\n\n\n\n<p>The theme makes generous use of whitespace, but its overuse can often break the reading flow for blog posts. The flow from paragraph to paragraph is fine. However, the moment you drop an image, gallery, pull-quote, or one of many other blocks into the content, the theme adds an extra 140 pixels of whitespace above and below the block. It completely throws off the vertical rhythm of the post.</p>\n\n\n\n<p>Go also displays the full posts on the blog posts page instead of excerpts. There are few things I dislike more when it comes to blogs. Providing an option for users to choose between a full and summary view would be ideal.</p>\n\n\n\n<p>The theme does not claim to be well-suited to blogging. None of the demos for the theme show off a blog. If you&rsquo;re looking for a theme to handle blogging with media mixed in the content, you will find better offerings elsewhere, such as the <a href=\"https://wptavern.com/blocksy-wordpress-theme-provides-a-solid-block-editor-experience\">Blocksy theme</a></p>\n\n\n\n<h2>Limited Yet Useful Theme Options</h2>\n\n\n\n<img />Design style and color scheme options in the customizer.\n\n\n\n<p>The theme adds five sections to the customizer:</p>\n\n\n\n<ul><li>Site Design</li><li>Header</li><li>Footer</li><li>Social</li><li>Site Settings</li></ul>\n\n\n\n<p>Within each section, Go provides a few basic options, most of which are related to colors and layout. The most useful options reside under the &ldquo;Site Design&rdquo; section. The theme presents a design style option that changes the theme&rsquo;s fonts and colors. Currently, there are five design styles: traditional, modern, trendy, welcoming, and playful. Once a design style is selected, users can choose from four color schemes for that style. The design of this system is brilliant. It gives users choices without forcing them to become designers and handpick the perfect hex code for each color.</p>\n\n\n\n<p>Users who prefer to manage individual colors are not left out. The theme also provides options for overriding any of the colors from the chosen color scheme.</p>\n\n\n\n<p>I was disappointed that Go opted for creating individual options for various social networks instead of using a navigation menu. Using WordPress&rsquo; built-in nav menu system for social links has become the <em>de facto</em> standard in the last several years, which allows users to carry their social links from one theme to the next. Unfortunately, users are required to retype all of their links with this theme.</p>\n\n\n\n<p>The theme keeps does not go overboard with options but provides enough customizability to make the theme unique to the user.</p>\n\n\n\n<h2>How Does the Code Stack Up?</h2>\n\n\n\n<p>The theme offers a solid and well-documented codebase. There is not much PHP or JavaScript code, so there are few areas where it can go wrong. The theme&rsquo;s strength is in its CSS.</p>\n\n\n\n<p>The theme templates were primarily HTML with PHP sprinkled in. For DIY users who like to hack away at theme templates, you should not find any surprises.</p>\n\n\n\n<h2>Final Thoughts</h2>\n\n\n\n<p>Users who want to customize every page of their site will likely enjoy this theme. It is well-suited for small business owners and others with small sites. It could work well for artists and others with portfolios as well.</p>\n\n\n\n<p>It does not fit with my personal taste because it does not cater to my blogging style, which is my primary interest in themes. However, I would not hesitate to recommend it to anyone who wants a ton of control over their site&rsquo;s inner page design.</p>\n\n\n\n<p>The following is a list of the available demos. There is a lot that can be done in combination with the CoBlocks plugin, which you will want to use in combination with Go.</p>\n\n\n\n<p><strong>Demos with the CoBlocks plugin:</strong></p>\n\n\n\n<ul><li><a href=\"https://wpnux.godaddy.com/v2/?template=alder\">Alder</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=ashby\">Ashby</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=barista\">Barista</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=bento\">Bento</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=everett\">Everett</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=figure\">Figure</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=keynote\">Keynote</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=salt\">Salt</a></li></ul>\n\n\n\n<p><strong>Demos with the CoBlocks and WooCommerce plugins:</strong></p>\n\n\n\n<ul><li><a href=\"https://wpnux.godaddy.com/v2/?template=avenue\">Avenue</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=chai\">Chai</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=jane\">Jane</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=philo\">Philo</a></li><li><a href=\"https://wpnux.godaddy.com/v2/?template=wares\">Wares</a></li></ul>\";s: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, 21 Jan 2020 21:52: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: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:73:\"WPTavern: Gutenberg Can Tackle the Problems the Fields API Tried to Solve\";s:7:\"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:29:\"https://wptavern.com/?p=96617\";s:7:\"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:84:\"https://wptavern.com/gutenberg-can-tackle-the-problems-the-fields-api-tried-to-solve\";s: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:6098:\"<p><strong>The Fields API.</strong></p>\n\n\n\n<p><em>Never heard of it?</em> That&rsquo;s OK. Outside of the inner development community, it is not widely known. The average WordPress user does not need to know about it. Before understanding how the Fields API fits into Gutenberg&rsquo;s future, you must first understand what it is and the problems it was meant to fix.</p>\n\n\n\n<p>The Fields API was a proposed solution to one of WordPress&rsquo; biggest problems: to build form fields in the admin and save data from those fields, developers need to know multiple APIs, depending on the specific admin screen. </p>\n\n\n\n<p><em>Want to build a plugin settings screen?</em> Use the Settings API.</p>\n\n\n\n<p><em>Need some theme options?</em> Build them with the Customize API. </p>\n\n\n\n<p><em>Have some fields to output on the user screen?</em> Here are two hooks and a mess of HTML table markup; sorry, no official API.</p>\n\n\n\n<p>Those are just a few examples, but the truth of it comes down to this: to show something as basic as a text field to end-users, WordPress developers need to know how to do this in a variety of ways based on competing or even missing APIs.</p>\n\n\n\n<p>There are historical reasons for this. New features were bolted on top of WordPress over time. In the mad rush to continue shipping features with each major update, few people stepped back and asked the fundamental question about the technical debt that would pile up over the past 16 years. Shipping end-user features helped the platform grow, but developers had to learn all-new functions and methods each time.</p>\n\n\n\n<p>Adding to the technical burden, when the Gutenberg project launched, it introduced a new system in a different programming language.</p>\n\n\n\n<p>The Fields API would have created a standardized system for outputting form fields and saving field data. It would work with all the existing admin screens and any new features added in the future. Developers could learn a single system and be able to build plugins that worked with practically any area of WordPress.</p>\n\n\n\n<p>In 2014, Scott Kingsley Clark took over the <a href=\"https://make.wordpress.org/core/2014/02/25/metadata-project-update/\">Metadata UI Project</a>. The initial idea was to create an API for adding custom fields (meta box fields) on the post-editing screen. Eventually, Clark and those working on the project realized the problem that needed solving was larger than meta boxes. WordPress needed an API that worked across the board. After a year, the project was <a href=\"https://make.wordpress.org/core/2015/05/27/metadata-api-project-reborn-the-new-fields-api-project/\">relaunched as the Fields API</a>.</p>\n\n\n\n<p>After years of working on the code behind the project, Clark became burned out. He <a href=\"https://wptavern.com/wordpress-core-fields-api-project-is-seeking-new-leadership\">stepped down as the project&rsquo;s lead</a> in 2018. With no buy-in from the decision-makers for the WordPress project, there was little hope of it making it into core. At that point, the <a href=\"https://wptavern.com/wpweekly-episode-326-long-live-the-fields-api-project\">project was all but dead</a>.</p>\n\n\n\n<p>Gutenberg&rsquo;s development was in full swing. Developers were gearing up for relearning how to add the same basic text fields and other form elements in whole new ways.</p>\n\n\n\n<p>The Fields API, had it made it into WordPress before the block editor, could have alleviated the need for developers to learn a new system. However, that&rsquo;s not where we&rsquo;re at today. The Fields API never made it past the gatekeepers, and developers have one more thing to stay knowledgeable on.</p>\n\n\n\n<p>The question is: how do we address this going forward?</p>\n\n\n\n<h2>How the Gutenberg Project Can Solve the Fields API Problem</h2>\n\n\n\n<p>What many don&rsquo;t understand is that the Gutenberg project is larger than the content editor. The first iteration, Phase 1, of the project was to create a new editing experience. Phase 2 will create new admin screens for site editing using the same components for the editor. Custom text fields, select dropdowns, color options, or one of many other field types all run through the same reusable, component-based system.</p>\n\n\n\n<p>That sounds remarkably similar to the Fields API. At the end of the day, the Fields API is simply a standardized method of reusing components to output form fields and save data, regardless of the screen in WordPress.</p>\n\n\n\n<p>WordPress needs to be rebuilt from the ground up. Gutenberg provides us the opportunity to rewrite every admin page in WordPress using a standardized system for handling form fields.</p>\n\n\n\n<p>From a technical standpoint, Gutenberg has <a href=\"https://github.com/WordPress/gutenberg/tree/master/packages/components/src\">dozens of components</a>. These include a text control, button, checkbox, and much more. It covers the majority of use cases plugin and theme authors need for form fields. These things are not tied directly to the block system. They are simply components that can be used anywhere.</p>\n\n\n\n<p>The next step would be setting the foundational layer for other admin screens. It will not be easy. There will be backward-compatibility mountains that the Fields API could have climbed for us years ago.</p>\n\n\n\n<p>Given WordPress&rsquo; history, developers will likely continue using competing APIs for fields on various admin pages. And, if we&rsquo;re still at that point in five years, the Gutenberg project will have failed for not going as far as it could have.</p>\n\n\n\n<p>For success, the Gutenberg project needs to have a wider vision and a longer-term roadmap that addresses the issues of fields on every screen. Otherwise, projects with easier-to-learn APIs will be more enticing to developers.</p>\n\n\n\n<p>The idea of <em>Gutenberg-ifying</em> the entirety of the WordPress admin will be off-putting to many, but WordPress has to solve its form fields issue at some point. It might as well reuse the components that will be seeing active development for years to come.</p>\";s: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, 20 Jan 2020 21:29:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s: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: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:74:\"WPTavern: Blocksy WordPress Theme Provides a Solid Block-Editor 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:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://wptavern.com/?p=96555\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://wptavern.com/blocksy-wordpress-theme-provides-a-solid-block-editor-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:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7060:\"<img />Screenshot of the Blocksy theme blog posts page.\n\n\n\n<p>Creative Themes dropped version 1.6.8 of its <a href=\"https://wordpress.org/themes/blocksy/\">Blocksy WordPress theme</a> yesterday. It was an update to a theme that is quickly becoming popular, having garnered 58 five-star reviews and one thousand active installs since it first went live in the WordPress theme directory. The theme is specifically built to work with the block editor and is a nice example of what is currently possible with blocks.</p>\n\n\n\n<p>Blocksy is billed as a general-purpose theme and also works with other popular page builders like Elementor, Beaver Builder, and Visual Composer. The truth-test is whether it handles the block editor, especially given its primary audience (it is named <em>Blocksy</em>, after all). Aside from a few trivial quirks, the theme handled nearly every bit of test content I threw at it.</p>\n\n\n\n<p>Blocksy is one of the better-designed free themes for the block editor that I have seen.</p>\n\n\n\n<p>I want to use this theme for a project. Unfortunately, I have no site to use it on at the moment. I do not say this about many free, repository-hosted WordPress themes. The quality of work is on par with themes from the majority of commercial theme shops I have tested or used over the years.</p>\n\n\n\n<p>The theme is not without a few issues, which we&rsquo;ll get to, but it is a solid offering.</p>\n\n\n\n<h2>Block Design</h2>\n\n\n\n<img />A few block design examples from the theme.\n\n\n\n<p>With a name like <em>Blocksy</em>, I went into this review with a mindset that the theme better handle every test block I dropped into the block editor with grace. I wanted to make sure it lived up to its name.</p>\n\n\n\n<p>I am happy to report that it handles block design as good as or better than most themes designed for showcasing the block system. It adds just enough stylistic flair, such as a unique pull-quote design, without getting in the way of the content.</p>\n\n\n\n<p>One problem area is the font in the editor does not match the font on the front end completely. This is a minor issue that should be easily fixed in an update.</p>\n\n\n\n<p>You can find some good examples of block design on the theme&rsquo;s <a href=\"https://demo.creativethemes.com/blocksy/main/gutenberg/\">Gutenberg demo page</a>.</p>\n\n\n\n<h2>Block Editor Sidebar</h2>\n\n\n\n<img />Custom block editor sidebar for post meta.\n\n\n\n<p>The latest update of the theme includes additional integration with the block editor. The team moved its old meta box, which sat below the post content editor, to a new sidebar panel. This change is refreshing.</p>\n\n\n\n<p>I did not know the meta box existed until the theme developers pointed out this change in feature (I first started testing the previous version of the theme). At this point, I never look at the bottom of the block editor for meta boxes. I expect any additional settings to be placed firmly in the right sidebar area. I applaud this move. It could confuse old theme users when updating, but it feels more natural in its new home.</p>\n\n\n\n<p>The team has done a nice job with this custom sidebar for the most part. The biggest issue is with the button for switching to it. By using both an icon and the &ldquo;Page Settings&rdquo; text, it uses more room than necessary. To fit in line with the existing UI, it should simply display an icon. The button text is also hard to read when selected, which is a minor CSS issue that can be corrected in an update.</p>\n\n\n\n<h2>Customizer Options</h2>\n\n\n\n<img />Custom-designed customizer control panel.\n\n\n\n<p>For users who like to have full control over the site&rsquo;s display, this theme won&rsquo;t disappoint. For users who dislike by many options, the number of design settings will likely feel overwhelming. </p>\n\n\n\n<p>Blocksy has more design options than most people will ever need. Some options, such as letter-spacing and line-height controls for fonts may be going overboard. Ideally, those things would be automatically adjusted based on the chosen font family.</p>\n\n\n\n<p>The theme also uses a custom design for the customizer control panel. In general, the custom design looks nice. However, is not good practice for themes to customize a shared WordPress UI element. Plugins with options in the customizer could break. It is best to stick with the default design.</p>\n\n\n\n<h2>Blocksy Companion Plugin</h2>\n\n\n\n<p>The theme promotes an additional plugin named Blocksy Companion. The add-on plugin provides users with additional widgets, a cookies-consent feature for the front end, and integrations with Mailchimp, Instagram, and WooCommerce. It also provides an avenue for importing custom-made demo content.</p>\n\n\n\n<p>Most of the companion plugin&rsquo;s features are fairly routine compared to similar themes in the WordPress theme repository. The cookies-consent feature is something I haven&rsquo;t seen before as part of a theme add-on plugin.</p>\n\n\n\n<p>My biggest complaint with the plugin is that it makes the &ldquo;Blocksy&rdquo; admin menu item a top-level item. It is a waste of valuable real estate in an already-cluttered admin menu. Plus, there is no good reason for a single theme/plugin screen to take a top-level spot when it has no sub-menus.</p>\n\n\n\n<h2>How Does the Code Look?</h2>\n\n\n\n<p>If I were describing the code in one phrase: <em>average but gets the job done</em>.</p>\n\n\n\n<p>The theme has a lot of PHP code. Most of it is dropped into a single <code>/inc</code> folder and not organized nearly as well as it could be. It feels like a giant mish-mash of functions with almost non-existent inline documentation for most of them. It&rsquo;s not something a developer who is not intimately familiar with the theme would want to dive into.</p>\n\n\n\n<p>This is not an argument that the theme&rsquo;s code is bad. It passed the official WordPress.org review process and made it into the theme directory, so it is at least doing the minimum necessary. It&rsquo;s simply unimpressive, which is par for the course when it comes to most WordPress themes. Code architecture seems like an afterthought, which could make it tougher to maintain over the long haul. With a theme that has as much code as this one, this is more important than it is for simpler themes. It can also easily be remedied with a week or so of dev time strictly devoted to architecture.</p>\n\n\n\n<h2>Final Thoughts</h2>\n\n\n\n<p>Blocksy is a well-designed theme that does the job it sets out to do. It is ideal for users who are working with the block editor or a third-party page builder. The theme is packed with far more options than I could cover in this review. If customizability is your thing, you will likely enjoy it.</p>\n\n\n\n<p>The team shared some of their future ideas. They have plans to add conditional headers, footers, and sidebars; a sticky header; AMP support; and more. They seem excited about the future of the theme.</p>\n\n\n\n<p>Overall, I would recommend this theme for users who want a clean, relatively fast, block-ready WordPress theme.</p>\";s: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, 17 Jan 2020 21:34:37 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s: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:51:\"WPTavern: WordCamp Houston Returning After 10 Years\";s:7:\"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:29:\"https://wptavern.com/?p=96499\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"https://wptavern.com/wordcamp-houston-returning-after-10-years\";s: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:4308:\"<img />\n\n\n\n<p>After a 10-year hiatus, <a href=\"https://2020.houston.wordcamp.org/\">WordCamp Houston</a> will return in 2020. The event will run from May 9-10 at the Hilton Houston NASA Clear Lake and expects 250-300 attendees. The team behind the Texas-based WordCamp is still in the process of putting the event together and is looking for volunteers, speakers, and sponsors.</p>\n\n\n\n<p>With 10 years between events, local organizers had to rebuild their WordPress community. &ldquo;After <a href=\"https://wptavern.com/it-took-houston-four-years\">WordCamp 2010</a>, the community seemed to have dismantled,&rdquo; said Christina Hawkins, lead organizer for WordCamp Houston. &ldquo;I can only guess that because it takes an active community and dedicated volunteers, that if any piece starts to have trouble, it becomes challenging to continue,&rdquo; she speculated as to why the original event never continued.</p>\n\n\n\n<p>Hawkins began the Sugar Land meetup, located south of Houston but a greater part of the Houston area. The overall area has several regular WordPress meetups. &ldquo;John Peterson and a few others were instrumental in building the community again,&rdquo; she said. &ldquo;They were dedicated and made sure we had regular monthly meetings with quality speakers.&rdquo; Currently, they have 12 wranglers who are working to make sure this year&rsquo;s WordCamp runs smoothly.</p>\n\n\n\n<p>Considering that Houston is the hometown of Matt Mullenweg, the co-creator of WordPress, it would seem like the city would be the ideal location for an annual WordPress event. He is not involved in the event or currently on the speaker roster, which is still open. Hawkins hopes that he can at least attend the event in an unofficial capacity. &ldquo;I want to iron out any wrinkles first and present a flawless WordCamp for him,&rdquo; she said. &ldquo;We expect 2020 to be a WordCamp that knocks it out of the park, but I want to make sure we represent WordPress in the best light and formally invite him as a keynote next year.&rdquo;</p>\n\n\n\n<p>WordCamp Houston is currently <a href=\"https://2020.houston.wordcamp.org/call-for-speakers/\">accepting speaker applications</a>. The process will remain open until February 29. Those who want to speak should submit a topic and plan for a session that lasts 30-40 minutes.</p>\n\n\n\n<p>&ldquo;Heather Baker is our Speaker Wrangler,&rdquo; said Hawkins. &ldquo;Since this is the first one in years, she has been actively training future speakers. We had an in-person workshop last fall and we are preparing a webinar series soon that will be broken up in chunks.&rdquo;</p>\n\n\n\n<p>Thus far, the event organizers have received 29 applications and are expecting more. They will evaluate applications from the first of March and let speakers know if their session is approved on March 15.</p>\n\n\n\n<p>The team is still on the hunt for sponsors. &ldquo;We have the national sponsors, which is very helpful, but we are in the process of getting the word out locally,&rdquo; said Hawkins. &ldquo;Most of Houston has never heard of WordCamp so it&rsquo;s up to us to start knocking on doors. We have a long list of people and companies that we are reaching out to.&rdquo;</p>\n\n\n\n<p>Individuals or businesses who wish to sponsor the event can sign up via the <a href=\"https://2020.houston.wordcamp.org/become-a-sponsor/\">sponsorship page</a>. There are four tiers, ranging from $150 to $3,000, with various perks for each level.</p>\n\n\n\n<p>The team chose the Hilton Houston NASA Clear Lake venue for this year&rsquo;s event. The location was ideal because it had a good room setup, which could allow them to expand in case they had an increase in attendance. They can also add an extra room if they need to add another speaker track.</p>\n\n\n\n<p>&ldquo;It&rsquo;s also close to NASA which fits our overall theme of &lsquo;Taking Off!\'&rdquo; said Hawkins.</p>\n\n\n\n<p>The team initially had some trouble finding a venue that met their needs, budget, and location. &ldquo;Houston is a vast city, and it is not very easy to manage so many people that live all over,&rdquo; said Hawkins. &ldquo;I am sure other cities like Atlanta, LA, and Chicago have the same problem with having a vast city that can extend to an hour drive in each direction.&rdquo;</p>\";s: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, 16 Jan 2020 19:59: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: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: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:79:\"Post Status: Introducing a new chapter, with Cory Miller as Post Status partner\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://poststatus.com/?p=73897\";s:7:\"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:\"https://poststatus.com/cory/\";s: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:4335:\"<p>I <a href=\"https://poststatus.com/launched/\">created</a> Post Status in January 2013 and <a href=\"https://poststatus.com/lets-grow/\">started</a> the Club in January 2015. January 2020 marks another huge milestone for this community and business.</p>\n\n\n\n<p>I’m very excited to share that <a href=\"https://corymiller.com/\">Cory Miller</a> is now an equal partner of Post Status. Cory purchased half the business and will be working with me in the day-to-day management, writing, community engagement, and everything else we do with Post Status.</p>\n\n\n\n<p>Many should know Cory from his ten years running <a href=\"https://ithemes.com/\">iThemes</a>. After they sold the business to Liquid Web and he spent some time there, he decided to step away and continue his entrepreneurial journey. He’s working on a few projects, and Post Status is a significant part of where he’s dedicating his time and energy.</p>\n\n\n\n<p>Cory is a long-time friend, and iThemes has been a Post Status sponsorship partner since 2015. Cory understands the community, the role Post Status plays in the space, and he brings so much to the table, from established community relationships to product and business experience.</p>\n\n\n\n<p>We’ve known one another going back to 2010 or so. I got to watch as he navigated the WordPress space as the CEO of a theme company turned plugin company, from inception to exit.</p>\n\n\n\n<p>Cory has so many qualities I admire. Most of all, I admire his honesty, his compassion, his passion for people, and his vision for what’s possible. I look forward to working with a true partner on Post Status after so many years of managing the primary responsibilities with much help from many friends and contractors along the way.</p>\n\n\n\n<p>In addition to Cory and myself, David Bisset and Dan Knauss continue to be integral parts of the Post Status effort. Cory and I are thankful for their energy, consistency, and talents.</p>\n\n\n\n<p>We are working together in Oklahoma City this week to finalize our plans for the 2020 year. We already have a lot planned and are looking to get these new initiatives and processes off to a rocking start.</p>\n\n\n\n<h3>Potential in the WordPress community</h3>\n\n\n\n<p>There is so much potential in the WordPress community, and Post Status plays an important role through news, community, and professional development. We are going to continue to do that, and we are also going to make changes that we think will benefit the community as a whole and Post Status Club Members in particular.</p>\n\n\n\n<p>If you’ve ever thought about joining the <a href=\"https://poststatus.com/club\">Post Status Club</a>, it’s a great time to do so. At a minimum, anyone in the WordPress community should subscribe to the <a href=\"https://poststatus.com/newsletter\">newsletter</a>. If you’ve been a member before, we thank you, and we hope we are able to continue to serve you for years to come — better than ever, better together.</p>\n\n\n\n<h3>Cory\'s thoughts</h3>\n\n\n\n<p>I asked Cory to share a couple of his own thoughts on why he’s investing in Post Status, both with his money and energy.</p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>I’ve been a fan and supporter of Post Status since the beginning. At iThemes we were one of Brian’s first sponsors. Over the years I leaned on Brian’s insights and counsel — personally as well as through Post Status — to inform and grow iThemes.</p><p>When Brian approached me about becoming a partner my first reaction was, “Heck yes!” Over our weeks and months of conversations, my excitement grew and grew as our goals and aspirations for Post Status were revealed to be so well aligned.</p><p>I truly believe in what Brian has built. And I only want to be a value add and look forward to coming alongside Brian, the Post Status team and this great community.</p></blockquote>\n\n\n\n<p>We\'re so excited to finally be able to make this official. We look forward to continuing to serve you our readers, our Club members, our partners, and the broader community.</p>\n\n\n\n<p>Onward!</p>\n\n\n\n<h3>Audio & Video Q&A; with Cory and Brian</h3>\n\n\n\n<p>We’ll be announcing more specific plans over the coming weeks, and below is our conversation post-announcement by audio and video:</p>\n\n\n\n\n\n\n\n<div class=\"wp-block-embed__wrapper\">\n<div class=\"embed-vimeo\"></div>\n</div>\";s: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, 16 Jan 2020 13:55: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:15:\"Brian Krogsgard\";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:16:\"Matt: Thirty Six\";s:7:\"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=50760\";s:7:\"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:33:\"https://ma.tt/2020/01/thirty-six/\";s: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:3332:\"<p>I am now solidly entering my late thirties, and fortunately I am in good health, good cheer, and doing one of my favorite things — exploring a part of the world and culture I haven’t experienced before (Maldives and Sri Lanka).</p>\n\n\n\n<p>The past year has included a number of professional milestones including <a href=\"https://ma.tt/2019/09/series-d/\">a significant amount of fundraising</a> and related activity, bringing in <a href=\"https://ma.tt/2019/08/tumblr-the-day-after/\">a major new product to the Automattic family</a>, the <a href=\"https://ma.tt/2019/11/state-of-the-word-2019/\">maturation of Gutenberg in the WordPress ecosystem</a>, launching the <a href=\"https://distributed.blog\">Distributed blog and podcast</a>, and a growth in the breadth and depth of the Automattic team.</p>\n\n\n\n<p>Partially because of the schedule those milestones required, this ended up being my year with the most travel ever since I started tracking: I flew over 515k miles, to 124 cities in 24 countries. I was able to incorporate a <a href=\"https://photomatt.tumblr.com/post/186959053572/some-beautiful-trails-near-aspen-ran-the-heavy\">good amount of running</a> in my routine, started picking up musical instruments again, and learning more about sound and its impact on our lives. I found <a href=\"https://streaksapp.com/\">small daily habits</a>, like a little bit of exercise or stretching first thing in the morning, to be sustainable and high-impact.</p>\n\n\n\n<p>What suffered in 2019 was my <a href=\"https://ma.tt/2020/01/29-books-in-2019/\">book reading time</a> and making a dent on the <a href=\"https://www.theworlds50best.com\">top 50 list</a>. I still check <a href=\"https://www.techmeme.com\">tech news every day</a>, but I had to unplug from daily non-tech news because it was just too hectic — I’ve found a lot of value in <a href=\"https://www.economist.com\">weekly publications like the Economist</a> to make sense of what’s going on in the world with the benefit of a little distance and time.</p>\n\n\n\n<p>Personally my main goals this year are for the health and wellness of my family, incorporating more playing music and photography into my life, and strengthening <a href=\"https://www.calm.com\">my meditation practice</a>. If you’re reading this, I hope to run into you online or in person and this year let’s do our best together to leave the world a little better than we found it.</p>\n\n\n\n<p>All birthdays: <a href=\"https://ma.tt/2003/01/bday/\">19</a>, <a href=\"https://ma.tt/2004/01/so-im-20/\">20</a>, <a href=\"https://ma.tt/2005/01/hot-barely-legal-matt/\">21</a>, <a href=\"https://ma.tt/2006/01/matt-22/\">22</a>, <a href=\"https://ma.tt/2007/01/twenty-three/\">23</a>, <a href=\"https://ma.tt/2008/01/twenty-four/\">24</a>, <a href=\"https://ma.tt/2009/01/twenty-five/\">25</a>, <a href=\"https://ma.tt/2010/01/twenty-six/\">26</a>, <a href=\"https://ma.tt/2011/01/twenty-seven/\">27</a>, <a href=\"https://ma.tt/2012/01/twenty-eight/\">28</a>, <a href=\"https://ma.tt/2013/01/twenty-nine/\">29</a>, <a href=\"https://ma.tt/2014/01/matt-3-0/\">30</a>, <a href=\"https://ma.tt/2015/01/thirty-one/\">31</a>, <a href=\"https://ma.tt/2016/01/thirty-two/\">32</a>, <a href=\"https://ma.tt/2017/01/thirty-three/\">33</a>, <a href=\"https://ma.tt/2018/01/thirty-four/\">34</a>, <a href=\"https://ma.tt/2019/01/thirty-five/\">35</a>.</p>\";s: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, 16 Jan 2020 09:15: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: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: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:62:\"WordPress.org blog: WordPress Leaders Nominated for CMX Awards\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://wordpress.org/news/?p=8288\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://wordpress.org/news/2020/01/wordpress-leaders-nominated-for-cmx-awards/\";s: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:3074:\"<p>Two members of the WordPress leadership team were nominated for excellent work in their field in the first ever Community Industry Awards. <a href=\"https://profiles.wordpress.org/andreamiddleton/\">Andrea Middleton</a> is nominated for <a href=\"https://cmxhub.com/awards-executive\">Executive Leader of a Community Team</a> and <a href=\"https://profiles.wordpress.org/chanthaboune/\">Josepha Haden Chomphosy</a> is nominated for <a href=\"https://cmxhub.com/awards-professional\">Community Professional of the Year</a>.</p>\n\n\n\n<img src=\"https://i0.wp.com/wordpress.org/news/files/2020/01/josepha_and_andrea.jpg?fit=632%2C281&ssl=1\" alt=\"\" class=\"wp-image-8292\" />\n\n\n\n<p><a href=\"https://cmxhub.com/\">CMX</a> is one of the largest professional organizations dedicated to community builders. The awards were open to public nomination, and finalists were chosen by panels of their peers in the CMX community.</p>\n\n\n\n<p>Andrea has been a vital community strategist for the WordPress project since 2011. Her work to build and support a vibrant community has played a part in the success around the popular open source CMS. Her work is sponsored by Automattic, where she leads a team that focuses on educational efforts, funding, and in-person community-driven events that serve a global base.</p>\n\n\n\n<p>Josepha has been the Executive Director of the WordPress project since 2019. Her work to coordinate and guide volunteer efforts spans 20 teams and involves thousands of volunteers. Her work is also sponsored by Automattic, where she leads the open source division that focuses on all aspects of open source contribution including design, development, volunteer engagement, and the health of the overall WordPress ecosystem.</p>\n\n\n\n<h2>Votes are Open</h2>\n\n\n\n<p>Final recipients are chosen with open voting — if you feel like either Andrea or Josepha have had an impact on your careers, your trajectory in the WordPress project, or the health of WordPress as a whole, there are three ways you can show your support:</p>\n\n\n\n<ul><li>Stop by and vote for them (Andrea&nbsp;<a href=\"https://href.li/?https://cmxhub.com/awards-executive\">here</a>, Josepha&nbsp;<a href=\"https://href.li/?https://cmxhub.com/awards-professional\">here</a>)!</li><li>Share this post with your own communities!</li><li>Tweet some inspirational thoughts about your time/experience/learnings with WordPress (using&nbsp;#WordPress, naturally)!</li></ul>\n\n\n\n<h2>Thank You Notes</h2>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>A lot of care and passion goes into making the WordPress Project as fantastic as it is. I think these awards are a reflection of how wonderful the community and ecosystem are, and I appreciate everyone&#8217;s continued trust in my stewardship!</p><cite>Josepha Haden Chomphosy</cite></blockquote>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>WordPress community organizers are some of the most generous and creative people in the world — working with them is exciting and interesting every day. I’m humbled by this nomination; thank you!</p><cite>Andrea Middleton</cite></blockquote>\";s: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, 15 Jan 2020 21:42: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:16:\"Francesca Marano\";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:67:\"WPTavern: Get Involved With Block-Based WordPress Theme 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:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://wptavern.com/?p=96502\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://wptavern.com/get-involved-with-block-based-wordpress-theme-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:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4426:\"<p>As the WordPress theme review team wound down their team meeting yesterday, they were finalizing what their focus area for 2020 would be. The general agreement among members was that block-based themes should be at the top of the list. There was some pushback from a minority that did not want to see block-based themes at all. The reality is that themes will be changing in the next year or two.</p>\n\n\n\n<p>As a team, this is the group of people who will ultimately need to set guidelines based on something WordPress has never done before. They will also need to work diligently to bring theme authors up to speed on how themes of the future will be built.</p>\n\n\n\n<p>At this point, there are many unknowns, but work on <a href=\"https://github.com/WordPress/gutenberg/labels/%5BFeature%5D%20Full%20Site%20Editing\">tickets for full-site editing</a> is happening at a quick pace.</p>\n\n\n\n<p>Allan Cole, Theme Imagineer at Automattic, later invited team members to get involved with the <a href=\"https://github.com/WordPress/theme-experiments\">Theme Experiments project</a> on GitHub. It is a way for developers in the WordPress community to help steer the theme-development ship. Currently, the repository is fairly bare-bones and represents only the early work toward creating themes from blocks. Each sub-directory in the repository will be an individual experiment that explores creating themes using blocks or block templates.</p>\n\n\n\n<p>The <a href=\"https://wptavern.com/initial-documentation-for-block-based-wordpress-themes-proposed\">initial documentation</a> for block-based themes was introduced in early December 2019. Since then, a handful of contributors have put together some working theme examples to get the ball rolling.</p>\n\n\n\n<p>The repository is <a href=\"https://github.com/WordPress/theme-experiments/blob/master/CONTRIBUTING.md\">open to contributions</a> from anyone. This would be a good moment for members of the larger theme development community to start sending in pull requests to share their experiments.</p>\n\n\n\n<p>To test any of the experiments in this repository, you need to be running the latest version of the Gutenberg plugin. You must also enable the &ldquo;Full Site Editing&rdquo; and &ldquo;Full Site Editing Demo Templates&rdquo; options from within the plugin&rsquo;s &ldquo;Experiments&rdquo; screen.</p>\n\n\n\n<h2>Parisienne Theme</h2>\n\n\n\n<img />Screenshot of the Parisienne theme.\n\n\n\n<p>Currently, the only approved theme experiment is the Parisienne theme. It&rsquo;s a test of how block templates and template parts work. A <a href=\"https://parisiennetheme.mystagingwebsite.com/\">live demo</a> of the theme is available.</p>\n\n\n\n<p>Don&rsquo;t expect to be blown away. There are many missing pieces in the Gutenberg plugin, such as blocks for displaying posts and similar items. The idea is to explore how templating will work and provide feedback to the Gutenberg development team.</p>\n\n\n\n<p>One major concern I have at this point is the flat nature of the two sub-directories for housing templates and template parts. With the seven template part files in this theme, I worry that we are not learning from the mistakes of the past. The sub-folders could become unruly, particularly <code>/template-parts</code>, and house dozens upon dozens of files in a real-world scenario. This is no different from how themes currently work other than the location of the template files. Now would be a good time to reimagine the folder structure and optimize the organization of theme templates. For example, group sidebar templates under a <code>/template-parts/sidebar</code> folder instead of dumping everything into one location.</p>\n\n\n\n<h2>Twenty Nineteen and Twenty Twenty</h2>\n\n\n\n<img />Early look at a block-based Twenty Nineteen theme.\n\n\n\n<p>The repository has two open pull requests for experimenting with blocked-based versions of the <a href=\"https://github.com/WordPress/theme-experiments/pull/4\">Twenty Nineteen</a> and <a href=\"https://github.com/WordPress/theme-experiments/pull/5\">Twenty Twenty</a> default themes. Of the two, the Twenty Nineteen Blocks theme seemed the least broken, despite the original not being designed specifically for the block editor.</p>\n\n\n\n<p>Porting the most recent default WordPress themes is important because it provides theme authors a way to compare how old methods of handling features will work in the new block system.</p>\";s: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, 15 Jan 2020 21:39: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: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:116:\"HeroPress: How WordPress Enabled Me To Work Remotely – Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\";s:7:\"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=3037\";s:7:\"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:118:\"https://heropress.com/essays/starting-early-in-tech/#utm_source=rss&utm_medium=rss&utm_campaign=starting-early-in-tech\";s: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:34324:\"<img width=\"960\" height=\"480\" src=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/011320-min-1024x512.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"Pull Quote: WordPress people tend to be generous, trusting, and helpful.\" /><p><a href=\"https://heropress.com/feed/#indonesian\">Esai ini juga tersedia dalam bahasa Indonesia.</a></p>\n<p>Growing up, I’ve always been surrounded by technology.</p>\n<p>My dad is a programmer, he created my Gmail account and my first blog on Blogger (Blogspot) when I was 10 years old (it’s around 2006?). I filled up my blog with posts resembling diary entries. The content became too private eventually, so I decided to set it on private.</p>\n<p>Besides that first blog, I had about 5 other blogs on Blogger. One was for posts I believed not too private and could be consumed by the public, one was for my class’ blog in middle school, and one for me to learn how to write in English. I don’t remember what the other blogs are for, since I just kept creating and deleting them. I got satisfaction and happiness from pouring my thoughts in writing and publishing them in my blog. Many times, writing my thoughts and feelings helped me process them, even until now.</p>\n<p>Fast forward to high school graduation. Since I love languages (English is one of my favorite subjects!), I actually wanted to major in English in a top public university in my country, but I didn’t get in, so my second option was Information Systems in a private university. There, I learned a lot about IT and business, I learned Java, HTML, CSS, Javascript, and Android programming. I even took some Coursera and Codecademy courses to learn Bootstrap and Ruby on Rails. I was a good student, I love learning the algorithms and I did more than okay, but I didn’t love programming. I’m not that people who can stay calm finding errors in their codes, and then finding out that it’s only missing a character.</p>\n<h3>Meeting WordPress for the first time</h3>\n<p>At that time, my parents built some websites to sell backlinks (don’t hate me). I helped them with the sites, mainly proofreading and formatting the articles, and they would pay me. That’s when I first encountered WordPress. I saw WordPress as something more advanced than Blogger, with more themes and plugins to choose from. The default WordPress websites already looked more professional than Blogger does.</p>\n<p>I also like to earn extra money (who doesn’t?), so I helped a teacher in my neighborhood teaching high school students from my old high school. I don’t know how to explain this, but in Indonesia, it’s common to take extra courses (outside the school) to learn what you’re already taught at school and prepare for tests. So it’s another 2-hour study time after school.</p>\n<p>During another semester, I taught English at a Kumon center (it’s a Japanese franchise for math and English). I also taught about 10 of my peers for 2 semesters and got a pretty good discount for my tuition as a reward. At home, I tried every legal and safe method available to make money online. Some worked, like translating texts from English to Indonesian on Gengo and writing articles in English on Zerys. Some, like online surveys, didn’t. I also created an Upwork account and applied to some jobs there, but I never got one.</p>\n<p>In my last year at university, I had to do a year-long full-time internship. I got mine at a big general insurance company as their IT QC Staff. I learned a lot and met many amazing people there, but when I was offered to continue working there as a Business Analyst, I said no. I wanted to apply for a scholarship for a masters’ degree. And I don’t really like the fact that I have to wake up at 6 and be back home at 7 in the evening and do it all over again the next day.</p>\n<a href=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/image2.jpg\"><img /></a>With my colleagues, I’m the one with the white blouse.\n<p>But one thing I realized just now when I’m writing this is, the whole remote work wouldn’t have happened without the internship. My daily 1.5-hour commute to work made me read Medium everyday. And reading people’s stories on Medium made me want to write and share my stories, so I started writing and sharing my stories there. You’ll see in the next 2 paragraphs the significance of this Medium profile in my career.</p>\n<h3>Start working remotely</h3>\n<p>So after the internship, while I prepared for the scholarship application, I went back to my Upwork profile, revised it, and applied to some jobs as a virtual assistant. Starting from a very low pay, I did everything, like formatting WordPress posts (surprise!), designing social media posts, and processing orders for online shops. I work with people from Singapore, Australia, Europe, and America. After a few happy clients, I increased my hourly rate, slowly but surely. I got familiar with common tools used in a remote work setting, like Slack, Asana, Trello, and Google Suites. I also started writing in English a lot more, on my personal blog on WordPress.com and my Medium.</p>\n<p>One day, around 3 months after I started, a job opening on Upwork caught my attention. They’re a WordPress plugin company called Caldera Labs/Caldera Forms, and they’re looking for someone who could deliver consistency on their blog. They want to publish one blog post per week. I sent my proposal along with my Medium profile URL. <a href=\"http://christiechirinos.com\">Christie Chirinos</a> then replied to my proposal. I remembered she mentioned checking my writings on Medium and that I have a ‘great writing tone’. She wanted to ‘meet’ me in video, so she sent me a Calendly link. I notified her that I would be available at 5 a.m. my time. That was my first time seeing Calendly.. (Calendly is awesome!).</p>\n<p>That was also my first time having to be interviewed via video call. I was ecstatic, but panicked. On the day, I woke up at 4, got dressed, and opened my laptop. Weirdly, my wi-fi died that morning. So I went to the nearest McDonalds to get the interview done, and it went great!</p>\n<p>Long story short, I continued to work with my other clients and started working with Caldera Forms for 15 hours a week. Besides Christie, I also met <a href=\"https://twitter.com/Josh412\">Josh Pollock</a>, Ariella, Anchaal, Rosa, Nico, and Swapnil. At first, I was only tasked with formatting blog posts on WordPress following their style guide. Then I was involved in their overall content strategy, like crafting onboarding emails and coordinating with guest writers. But I’ve always felt welcomed since day one at Caldera Forms. We’re a team of only 5-6 people, we had monthly all-hands video meetings, we talked about our day in Slack. It wasn’t like with any of my clients.</p>\n<p>Christie and Josh are also very active in the WordPress community, they had introduced me to the ‘right’ people to connect with. In order to do that, I had to make an account on WordPress’ Slack. I got to know the amazing community behind WordPress. How people voluntarily contribute their time, energy, and skills to the community, from development, marketing, to translating. It was really inspiring. During my time with Caldera Forms, I also went to my first WordCamp, WordCamp Jakarta 2018, sponsored by Caldera Forms!</p>\n<a href=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/image3.jpg\"><img /></a>Some swags from WordCamp Jakarta 2018, that’s Wapuu ondel-ondel!\n<p>It’s only natural then that I wanted to have my own WordPress website. I had a WordPress.com blog once, but this one is different. You can see <a href=\"http://ascenciafike.com\">my blog here</a>. I felt like a grown-up using WordPress.</p>\n<h3>Transitioning to full-time</h3>\n<p>One day, Caldera Forms was acquired by <a href=\"http://saturdaydrive.com\">Saturday Drive</a>, the company behind <a href=\"http://ninjaforms.com\">Ninja Forms</a>. Josh, Nico, Rosa, and I ‘moved’ there, too. Josh introduced me to <a href=\"http://jameslaws.com\">James Laws</a>, the CEO. But because I was still freelancing and have a few other clients, we used my old contract on Upwork. Saturday Drive was much bigger than Caldera, with 20+ people onboard, and I was really excited! They have product team, support team, and communications team. When we moved there, they’re also in another big transition, which was switching to remote work.</p>\n<p>After a month working with Saturday Drive using the old contract, James offered me a full-time position to manage their affiliate program. It was morning in the U.S., but it’s already 8 p.m. where I live. I was <i>really</i> excited, but it’s also a really hard decision to make. Taking the offer would mean letting go all of my clients and specializing in one side of digital marketing, which is affiliate marketing. I would also have to work 8 hours a day. I stayed up late that night, discussing the possibilities with my parents.</p>\n<p>The next day, I replied to James’ message and accepted his offer.</p>\n<p>It’s been more than 4 months since I started working with Saturday Drive now (time of writing: January 2020). Obviously, it’s different from freelancing, but I love almost every moment of it.</p>\n<p>We use Basecamp instead of Slack, where we set up different questions for different times of the week. Every Wednesday, we would be asked: “What do you look like today?”. There are also questions like “What are you looking forward to most this week?”, “What were the highlights of your work day today?”, and “Read any good books lately?”. We even have fiction and non-fiction book clubs!</p>\n<p>We also use Basecamp’s method of working, called <a href=\"https://basecamp.com/shapeup\">Shape Up</a>. We work on projects in a six-week cycle, and then we’ll have two weeks of cooldown. In the cooldown period, we get to work on things we want to work on. And before the next cycle starts, we’ll submit pitches about the projects we want to work on next.</p>\n<p>What about video calls? We have a big monthly meeting with all team members, and occasional coffee break chats with 4-5 people. If urgently needed, we would also have video calls for projects. Except for these calls, I work in my time zone’s working hours.</p>\n<p>So far, I love working with Saturday Drive and getting to know the people. Although I can’t really relate to the U.S. culture (almost all of the team members are U.S. based), I relate to the values that Saturday Drive has. Most importantly, I’m proud of the work we’re doing!</p>\n<a href=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/image1.png\"><img /></a>We have virtual ‘coffee breaks’.\n<h3>Giving back to the WordPress Community</h3>\n<p>Notice the pattern in my story?</p>\n<p>WordPress people tend to be generous, trusting, and helpful, because the WordPress itself is open-source. WordPress is powered by volunteers, kind people from all over the world doing development, marketing, translation, support, and many more. There are WordPress meetups, local and regional WordCamps, which are organized by organizers and volunteers.</p>\n<p>Because I’ve experienced the generosity of the WordPress people, I wanted to give back to the community. Several months ago, I tried contributing to the Marketing team by attending a few weekly meetings on Slack. But I eventually stopped attending because I was too busy with work (and the meetings are at 10 pm my time).</p>\n<p>Around November 2019, Devin Maeztri from WordPress Indonesia contacted me through Instagram DM. She invited me to join PerempuanWP, an initiative for Indonesian women working in the WordPress world, similar to WomeninWP. So I followed <a href=\"https://twitter.com/PerempuanWP\">@PerempuanWP</a> on Twitter and joined the WordPress Indonesia’s Slack. Not long after that, I contributed to Indonesia’s polyglot team as well, translating the Code of Conduct and revising our Translation Style Guide.</p>\n<p>Currently, I’m preparing an <a href=\"https://wp-id.org/kulgram-4-onboarding-e-mail/\">‘online webinar’ on Telegram</a> and <a href=\"https://wp-id.org/wpjkt-meetup-21-onboarding-email-and-woocommerce-theme-for-your-business\">a talk for WordPress Meetup Jakarta</a>, both about email marketing (both will be done by the time you’re reading this).</p>\n<p>By putting myself out there, or here in this article. I want to represent Asian women. In the future, I hope I can inspire more women, especially Asians, to work remotely.</p>\n<h3>What you should do if you want to work remotely</h3>\n<p>If you’re an introvert, working remotely may sound like a dream come true. Without leaving the comfort of your house (or even your pajamas), you can still work and earn money. But, it’s not all rainbows and butterflies. From my experience, here’s what you should prepare if you want to work remotely.</p>\n<ol>\n<li>You should be comfortable working with computers. All day.<br />\nAt least you can do a basic Google search, because that’s where most of the answers are, especially if you want to start as a general virtual assistant. Take care of your eyes. Stand up and walk around once in awhile.</li>\n<li>It gets boring. You should be OK with <i>not </i>meeting people all day.<br />\nSometimes you just have to focus on your work so much that you can’t afford to get out of the house. But sometimes, the only way to have that focus is to get out of the house and work from a cafe. Just find the balance you need, it’ll get better with experience.</li>\n<li>Learn the English language. Or other international languages.<br />\nIf you want to work internationally, this one is crucial. You won’t be able to work with people from another country if you can’t speak their language.</li>\n<li>Do your best in your current job.<br />\nOne of the best books I’ve read this year was So Good They Can’t Ignore You by Cal Newport. “Don’t follow your passion; rather, let it follow you in your quest to become, in the words of my favorite Steve Martin quote, “so good that they can’t ignore you.”” So, instead of trying to find your passion, enjoy the work you’re doing at the moment, try to master it, and adopt the craftsman mindset. Collect as many skills as you can, and see what those skills can do for the world.<br />\nTLDR; don’t be obsessed with wanting to work remotely. The opportunity will come, eventually.</li>\n<li>Don’t settle for mediocrity.<br />\nJust learn things. As much as you can. From anywhere, about anything. Keep an open mind. Read books, listen to podcasts, and learn new skills.</li>\n<li>Join the community.<br />\nIf you’re working in the WordPress world, join the WordPress community. It’s a great place to learn from and connect with great people.</li>\n</ol>\n<p>Of course, I won’t be able to tell you to follow the same path that I took, but I hope my story and the pointers above can help you to pursue the (remote) career you want.</p>\n<hr />\n<h2 id=\"indonesian\">Bertumbuh bersama teknologi</h2>\n<p>Saya sudah dikelilingi teknologi sejak kecil.</p>\n<p>Papa saya adalah seorang programmer yang familier dengan teknologi. Saat umur saya 10 tahun, Papa membuatkan akun email Gmail dan blog pertama saya di Blogger (Blogspot). Saat itu, artikel blog saya kebanyakan menyerupai diari, catatan dari kejadian sehari-hari yang saya alami. Akhirnya, saya merasa konten tersebut terlalu pribadi, sehingga saya atur aksesnya menjadi pribadi.</p>\n<p>Selain blog pertama itu, saya mempunyai 5 blog lain di Blogger. Satu untuk tulisan yang saya nilai tidak terlalu privat dan bisa dibaca oleh publik, satu untuk blog kelas saya di SMP, dan satu untuk saya belajar menulis dalam Bahasa Inggris. Saya tidak ingat blog yang lain untuk apa, karena banyak yang saya buat lalu saya hapus. Saya merasa puas dan senang saat bisa menuangkan pikiran saya dalam bentuk tulisan. Menulis membantu saya memroses pikiran dan perasaan saya, bahkan sampai saat ini.</p>\n<p>Setelah lulus SMA, saya tadinya ingin kuliah Sastra Inggris di salah satu universitas negeri (saya suka bahasa, Bahasa Inggris mata pelajaran favorit saya!), tetapi karena tidak berhasil masuk, akhirnya saya berkuliah di universitas swasta, mengambil jurusan Sistem Informasi. Di kuliah, saya belajar banyak mengenai TI dan bisnis, saya mempelajari bahasa pemrograman Java, HTML, CSS, Javascript, dan pemrograman Android. Saya juga belajar Bootstrap dan Ruby on Rails secara otodidak lewat Coursera dan Codecademy. Saya bisa memahami pelajaran pemrograman dan mendapat nilai bagus, tetapi saya tidak suka <i>‘coding</i>’. Saya merasa saya tidak cukup sabar untuk menulis kode dan mencari kesalahan dalam kode saya.</p>\n<h3>Bertemu WordPress pertama kali</h3>\n<p>Saat saya kuliah, orangtua saya membangun beberapa website menggunakan WordPress untuk menjual link. Saya membantu mereka mengecek kualitas artikel dan menyusunnya di WordPress, dan mereka membayar saya. Ini pertama kalinya saya bekerja dengan WordPress. Saya ingat, saya menganggap WordPress sebagai platform yang lebih canggih dari Blogger, karena ada lebih banyak cara untuk modifikasi lewat tema dan plugin.</p>\n<p>Saya suka mendapat uang tambahan (siapa yang tidak suka?), sehingga saya membantu mengajar bimbel di dekat rumah. Di semester lain, saya mengajar Inggris di Kumon, di dekat rumah juga. Selain itu, selama 2 semester, saya menjadi mentor di kampus, mengajar 10 orang teman saya yang butuh pelajaran tambahan. Sebagai gantinya, saya mendapat potongan uang kuliah.</p>\n<p>Di rumah, saya juga mencari semua cara yang legal dan aman untuk mencari uang. Saya menerjemahkan teks dari Inggris ke Indonesia menggunakan Gengo dan menulis artikel dalam Bahasa Inggris di Zerys. Saya juga mendaftar di Upwork (marketplace untuk freelancer), apply ke beberapa pekerjaan, tetapi tidak pernah mendapat satupun.</p>\n<p>Di tahun terakhir perkuliahan, saya diwajibkan menjalani magang selama 1 tahun. Saya mendapat kesempatan untuk magang di Asuransi Astra sebagai Staff IT Quality Control mereka. Selama 1 tahun tersebut, saya belajar banyak dan bertemu banyak orang hebat, tetapi saat ditawari posisi tetap menjadi Business Analyst, saya menolak. Saat itu saya ingin mendaftar beasiswa untuk melanjutkan pendidikan S2. Dan saya juga tidak terlalu suka harus bangun jam 6 pagi, sampai di rumah jam 7 malam, dan harus mengulanginya setiap hari.</p>\n<a href=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/image2-1.jpg\"><img /></a>Foto dengan teman-teman kantor, saya yang berbaju putih.\n<p>Tetapi satu hal yang baru saya sadari saat menulis ini, kesempatan remote work yang saya miliki sekarang ini tidak mungkin ada tanpa pengalaman magang tersebut. Perjalanan bus ke kantor setiap hari membuat saya rutin membaca Medium. Membaca cerita-cerita orang di Medium membuat saya ingin menulis dan membagikan cerita saya, sehingga saya melakukannya di Medium.</p>\n<h3>Mulai bekerja remote</h3>\n<p>Setelah magang, saat saya mempersiapkan diri untuk mendaftar beasiswa, saya teringat dengan profil Upwork saya. Saya perbarui info diri dan CV, dan mendaftar ke beberapa lowongan sebagai asisten virtual (virtual assistant). Saya lakukan segala hal mulai dari bayaran yang kecil, seperti mem-format artikel di WordPress, desain pos media sosial, dan memroses pesanan untuk toko online. Saya bekerja dengan klien dari Singapura, Australia, Eropa, dan Amerika. Setelah beberapa review yang bagus dari klien, saya menaikkan tarif per jam saya perlahan-lahan. Saya menjadi mahir menggunakan aplikasi yang sering digunakan di lingkungan kerja remote, seperti Slack, Asana, Trello, dan Google Suites. Saya juga mulai menulis lebih banyak artikel lagi dalam bahasa Inggris, di blog pribadi saya di WordPress.com dan Medium.</p>\n<p>Suatu hari, 3 bulan setelah mulai kerja di Upwork, ada sebuah lowongan yang menarik perhatian saya. Sebuah perusahaan plugin WordPress bernama Caldera Labs/Caldera Forms sedang mencari seseorang yang dapat menjaga konsistensi blog mereka. Mereka ingin menghasilkan satu artikel per minggu. Saya mengirim proposal beserta URL profil Medium saya.</p>\n<p>Tidak lama kemudian, proposal saya dijawab oleh salah satu co-founder mereka, <a href=\"http://christiechirinos.com/\">Christie Chirinos</a>. Saya ingat Christie berkata bahwa ia sudah melihat profil Medium saya dan saya mempunyai ‘nada menulis yang bagus’. Lalu, ia mengirimi saya link Calendly (aplikasi untuk mengatur pertemuan secara online, bisa melihat jadwal kosong dari orang yang bersangkutan), dan saya memberitahunya bahwa saya akan dapat bertemu jam 5 pagi keesokan harinya.</p>\n<p>Itu juga merupakan kali pertama saya diwawancara lewat video. Saya senang dan bersemangat, tetapi juga panik. Pada hari H, saya bangun jam 4 pagi, bersiap-siap, dan membuka laptop. Anehnya, hari itu wi-fi saya putus! Saya akhirnya pergi ke McDonalds terdekat untuk mendapatkan koneksi internet. Untungnya, wawancara tersebut berjalan lancar.</p>\n<p>Saya diterima bekerja di Caldera Forms, sambil terus bekerja dengan klien yang lain, karena beban pekerjaan Caldera Forms saat itu hanya 15 jam seminggu, bahkan kurang. Selain Christie, saya juga bertemu dengan Josh Pollock (co-founder), Ariella, Anchaal, Rosa, Nico, dan Swapnil. Mereka berada di Amerika Serikat, India, dan Perancis.</p>\n<p>Awalnya, saya hanya ditugaskan untuk menyusun artikel di WordPress sesuai dengan style guide yang sudah mereka susun. Setelah beberapa bulan, saya dilibatkan di dalam strategi konten mereka secara keseluruhan, seperti membuat email onboarding dan berkoordinasi dengan penulis tamu. Dari awal, walaupun kami belum pernah bertemu secara langsung, saya merasa disambut oleh tim Caldera Forms. Dalam satu waktu, tim kami hanya berjumlah 5-6 orang, dengan pertemuan bulanan melalui video, dan ‘ngobrol’ harian melalui Slack. Pengalaman dengan Caldera Forms tidak seperti dengan klien saya yang lain.</p>\n<p>Christie dan Josh juga sangat aktif di komunitas WordPress, mereka mengenalkan saya ke orang-orang yang tepat. Untuk berkomunikasi dengan orang-orang tersebut, saya harus membuat akun di Slack Make WordPress. Saya jadi kenal dengan komunitas di balik WordPress, bagaimana orang secara sukarela menyumbangkan waktu, energi, dan kemampuan mereka untuk kemajuan komunitas, kode, pemasaran, hingga penerjemahan. Melihat itu semua sangat menginspirasi saya. Selama di Caldera Forms, saya juga dikirim untuk menghadiri WordCamp pertama saya, WordCamp Jakarta 2018!</p>\n<a href=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/image3-1.jpg\"><img /></a>Merchandise dari WordCamp Jakarta, Wapuu Ondel-ondel!\n<p>Setelah menghadiri WordCamp tersebut, tentunya saya ingin mempunyai website WordPress sendiri dengan domain nama saya sendiri. Teman-teman dapat melihat blog saya <a href=\"http://ascenciafike.com\">disini</a>. Mempunyai blog dengan domain nama saya sendiri terasa seperti langkah selanjutnya dalam perjalanan karir saya.</p>\n<h3>Proses transisi ke pekerjaan penuh waktu</h3>\n<p>Suatu hari, Caldera Forms diakuisisi oleh <a href=\"http://saturdaydrive.com\">Saturday Drive</a>, perusahaan di balik plugin form builder lainnya, <a href=\"http://ninjaforms.com\">Ninja Forms</a>. Josh, Nico, Rosa, dan saya ‘berpindah’ juga. Josh memperkenalkan saya ke <a href=\"http://jameslaws.com\">James Laws</a>, CEO dari Saturday Drive. Saat itu, kami masih menggunakan kontrak lama saya di Upwork, dengan batas waktu kerja 15 jam seminggu. Di Saturday Drive, semuanya berbeda, tim mereka jauh lebih besar dibandingkan Caldera (ada lebih dari 20 orang) sehingga saya sangat bersemangat! Mereka mempunyai tim produk, tim suport, dan tim komunikasi. Tetapi, selain akuisisi tersebut, mereka juga sedang melewati transisi yang lain, yaitu berubah menjadi perusahaan remote.</p>\n<p>Setelah satu bulan bekerja bersama Saturday Drive dengan kontrak lama saya, James tiba-tiba menawari saya posisi penuh waktu untuk mengelola program afiliasi mereka. Saya sangat senang dan bersyukur mendapatkan penawaran tersebut, tetapi juga mengalami dilema. Mengambil tawaran tersebut dan bekerja penuh waktu dengan Saturday Drive berarti melepas semua klien saya dan harus mengambil spesialisasi <i>affiliate marketing</i> (pemasaran afiliasi). Saya juga harus bekerja selama 8 jam sehari. Malam itu, saya tidak bisa tidur, dan saya berdiskusi dengan kedua orangtua saya yang sama bersemangatnya.</p>\n<p>Keesokan harinya, saya menjawab pesan dari James dan menerima tawarannya.</p>\n<p>Sudah lebih dari 4 bulan sejak saya mulai bekerja dengan Saturday Drive (waktu penulisan: bulan Januari 2020). Bekerja penuh waktu dengan satu perusahaan memang sangat berbeda dengan freelancing (bekerja lepas), tetapi saya menikmati hampir setiap momennya.</p>\n<p>Di Saturday Drive, kami menggunakan Basecamp, bukan Slack, dimana kami dapat mengatur pertanyaan rutin untuk anggota yang lain setiap minggunya. Misalnya, setiap Rabu kami akan mendapat pertanyaan: “Bagaimana penampilanmu hari ini?”. Ada juga pertanyaan-pertanyaan seperti: “Apa yang kamu tunggu-tunggu minggu ini?”, “Apa yang berjalan lancar dari kerjamu hari ini?”, dan “Buku apa yang baru kamu baca dan menurutmu bagus akhir-akhir ini?”. Bahkan kami mempunyai klub membaca untuk buku fiksi dan non-fiksi!</p>\n<p>Kami juga menggunakan metode kerja dari Basecamp, yang disebut <a href=\"https://basecamp.com/shapeup\">Shape Up</a>. Kami bekerja dalam siklus, yaitu 6 minggu mengerjakan proyek, lalu 2 minggu mengerjakan hal-hal yang kami ingin kerjakan (disebut <i>cooldown</i>). Sebelum siklus selanjutnya mulai, kami akan mengumpulkan <i>pitch</i> mengenai proyek yang ingin kita lakukan.</p>\n<p>Bagaimana dengan panggilan/konferensi video? Kami mengadakan pertemuan dengan semua anggota tim setiap bulannya, dan <i>ngobrol </i>dengan 4-5 orang setiap 2 minggu. Kalau diperlukan sekali, kami juga mengadakan panggilan video untuk pekerjaan. Saya bekerja dalam zona waktu Indonesia, kecuali untuk mengikuti panggilan-panggilan ini.</p>\n<p>Sejauh ini, saya menikmati bekerja dengan Saturday Drive dan mengenal orang-orang di dalamnya. Walaupun sulit untuk terhubung dengan budaya Amerika (hampir 90% stafnya berada di Amerika), tetapi saya terhubung dan sangat mendukung nilai-nilai yang Saturday Drive pegang. Dan yang terpenting, saya bangga dengan kerja Saturday Drive sebagai perusahaan!</p>\n<a href=\"https://s20094.pcdn.co/wp-content/uploads/2020/01/image1-1.png\"><img /></a>Ngobrol virtual dengan tim Saturday Drive.\n<h3>Memberi kembali ke Komunitas WordPress</h3>\n<p>Apakah teman-teman bisa melihat pola di dalam cerita saya?</p>\n<p>Orang-orang di dalam komunitas WordPress biasanya suka berbagi, sangat percaya kepada orang lain (dan potensi orang lain), dan suka menolong, karena WordPress sendiri bersifat open-source (terbuka). WordPress bisa berjalan karena dibantu oleh para relawan, orang-orag dari seluruh dunia yang secara sukarela menulis kode, membantu pemasaran, penerjemahan, suport, dan masih banyak lagi. Meetup dan WordCamp, baik lokal dan regional, diadakan oleh organizer dan relawan.</p>\n<p>Karena selama ini saya telah merasakan kebaikan dari orang-orang WordPress, saya ingin memberi kembali/membantu komunitas WordPress. Beberapa bulan lalu, saya mencoba berkontribusi ke tim Marketing WordPress global dengan mengikuti beberapa kali pertemuan mingguannya di Slack. Tetapi lama kelamaan saya tidak datang lagi, karena terlalu sibuk dengan pekerjaan (dan pertemuannya diadakan pukul 10 malam).</p>\n<p>Sekitar bulan November 2019, Devin Maeztri dari WordPress Indonesia menghubungi saya lewat DM Instagram. Ia mengundang saya untuk ikut PerempuanWP, sebuah komunitas untuk perempuan Indonesia yang bekerja di dunia WordPress (mirip dengan WomeninWP). Hari itu, saya mulai mengikuti <a href=\"https://twitter.com/PerempuanWP\">@PerempuanWP</a> di Twitter dan bergabung dengan Slack WordPress Indonesia. Tidak lama setelahnya, saya berkontribusi di tim poliglot Indonesia juga, menerjemahkan Kode Etik Komunitas WordPress Indonesia (<i>Code of Conduct</i>) dan merevisi Panduan Penerjemahan (<i>Translation Style Guide</i>).</p>\n<p>Saat ini, saya sedang mempersiapkan <a href=\"https://wp-id.org/kulgram-4-onboarding-e-mail/\">kulgram di grup Telegram PerempuanWP</a> dan menjadi <a href=\"https://wp-id.org/wpjkt-meetup-21-onboarding-email-and-woocommerce-theme-for-your-business\">pembicara di Meetup WordPress Jakarta</a>, keduanya tentang <i>email marketing.</i></p>\n<p>Dengan membagikan pengalaman dan cerita saya, salah satunya melakui artikel ini, saya ingin mewakili perempuan Indonesia dan Asia. Saya berharap saya dapat menginspirasi banyak perempuan di Indonesia dan Asia untuk bekerja secara remote.</p>\n<h3>Apa yang harus Anda lakukan jika ingin bekerja secara <i>remote</i></h3>\n<p>Jika teman-teman adalah seorang yang introver (seperti saya!), bekerja remote mungkin terdengar seperti mimpi yang jadi kenyataan. Tanpa harus meninggalkan rumah (bahkan kadang masih memakai baju tidur), Anda dapat bekerja dan menghasilkan uang. Tetapi tidak semua aspek bekerja remote itu menyenangkan.</p>\n<p>Berdasarkan pengalaman saya, berikut hal-hal yang harus Anda persiapkan jika ingin bekerja secara remote:</p>\n<ol>\n<li>Anda harus siap bekerja di depan komputer. Satu hari penuh.<br />\nPaling tidak Anda harus bisa melakukan pencarian lewat Google, karena akan sangat dibutuhkan untuk bekerja, terutama jika Anda ingin memulai sebagai asisten virtual. Jaga mata Anda. Berdiri dan jalan setiap 30 menit.</li>\n<li>Anda harus siap bosan, dan tidak bertemu orang lain (selain keluarga) selama satu hari.<br />\nKadang Anda harus fokus sekali dengan pekerjaan hingga tidak bisa keluar rumah. Tetapi kadang, satu-satunya cara untuk fokus adalah keluar rumah dan kerja di kafe. Sesuaikan dengan kebutuhan, lama-kelamaan Anda akan menemukan kombinasi yang pas.</li>\n<li>Pelajari bahasa Inggris. Atau bahasa internasional lainnya.<br />\nJika Anda ingin bekerja secara internasional. Poin ini adalah keharusan. Anda tidak akan bisa bekerja dengan orang dari negara lain jika Anda tidak dapat berkomunikasi dalam bahasa mereka.</li>\n<li>Lakukan yang terbaik di pekerjaan Anda saat ini.<br />\nSalah satu buku terbaik yang saya baca di tahun 2019 adalah So Good They Can’t Ignore You oleh Cal Newport. “Jangan ikuti passion Anda; melainkan biarkan passion Anda mengikuti Anda dalam perjalanan, yang Steve Martin sebagai, “bagus sekali hingga mereka tidak dapat mengabaikan Anda.”” Jadi, jangan ikuti passion Anda, tetapi jalani pekerjaan yang Anda punya sekarang sebaik mungkin, coba untuk menguasai kemampuan yang dibutuhkan, dan adopsi cara pikir ‘pengrajin’. Jangan menunggu pekerjaan yang ‘sempurna’, percaya bahwa setiap pekerjaan mempunyai pelajaran bagi diri kita, kumpulkan kemampuan sebanyak mungkin, dan pikirkan apa yang dapat Anda lakukan bagi dunia dengan kemampuan-kemampuan tersebut.<br />\nSingkatnya, jangan terlalu terobsesi dengan ingin bekerja secara remote. Kerjakan pekerjaan Anda sebaik mungkin, kesempatan akan datang pada waktunya.</li>\n<li>Jangan mudah puas.<br />\nApapun tingkat kemampuan Anda saat ini, belajar sebanyak-banyaknya. Darimana saja, tentang apa saja. Tetap terbuka. Baca buku, dengarkan podcast, dan pelajari kemampuan baru.</li>\n<li>Ikut komunitas.<br />\nJika Anda bekerja di dunia WordPress, ikut komunitas WordPress! Selain bisa menolong orang lain, kita juga bisa belajar dari banyak orang hebat dan menambah koneksi.</li>\n</ol>\n<p>Saya berharap pengalaman saya dan tips-tips di atas dapat menginspirasi dan menolong teman-teman yang ingin berkarir secara remote.</p>\n<div class=\"rtsocial-container rtsocial-container-align-right rtsocial-horizontal\"><div class=\"rtsocial-twitter-horizontal\"><div class=\"rtsocial-twitter-horizontal-button\"><a title=\"Tweet: How WordPress Enabled Me To Work Remotely &#8211; Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\" class=\"rtsocial-twitter-button\" href=\"https://twitter.com/share?text=How%20WordPress%20Enabled%20Me%20To%20Work%20Remotely%20%2D%20Bagaimana%20WordPress%20Memungkinkan%20Saya%20Bekerja%20Secara%20Remote&via=heropress&url=https%3A%2F%2Fheropress.com%2Fessays%2Fstarting-early-in-tech%2F\" rel=\"nofollow\" target=\"_blank\"></a></div></div><div class=\"rtsocial-fb-horizontal fb-light\"><div class=\"rtsocial-fb-horizontal-button\"><a title=\"Like: How WordPress Enabled Me To Work Remotely &#8211; Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\" class=\"rtsocial-fb-button rtsocial-fb-like-light\" href=\"https://www.facebook.com/sharer.php?u=https%3A%2F%2Fheropress.com%2Fessays%2Fstarting-early-in-tech%2F\" rel=\"nofollow\" target=\"_blank\"></a></div></div><div class=\"rtsocial-linkedin-horizontal\"><div class=\"rtsocial-linkedin-horizontal-button\"><a class=\"rtsocial-linkedin-button\" href=\"https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fheropress.com%2Fessays%2Fstarting-early-in-tech%2F&title=How+WordPress+Enabled+Me+To+Work+Remotely+%26%238211%3B+Bagaimana+WordPress+Memungkinkan+Saya+Bekerja+Secara+Remote\" rel=\"nofollow\" target=\"_blank\" title=\"Share: How WordPress Enabled Me To Work Remotely &#8211; Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\"></a></div></div><div class=\"rtsocial-pinterest-horizontal\"><div class=\"rtsocial-pinterest-horizontal-button\"><a class=\"rtsocial-pinterest-button\" href=\"https://pinterest.com/pin/create/button/?url=https://heropress.com/essays/starting-early-in-tech/&media=https://heropress.com/wp-content/uploads/2020/01/011320-min-150x150.jpg&description=How WordPress Enabled Me To Work Remotely - Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\" rel=\"nofollow\" target=\"_blank\" title=\"Pin: How WordPress Enabled Me To Work Remotely &#8211; Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\"></a></div></div><a rel=\"nofollow\" class=\"perma-link\" href=\"https://heropress.com/essays/starting-early-in-tech/\" title=\"How WordPress Enabled Me To Work Remotely &#8211; Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote\"></a></div><p>The post <a rel=\"nofollow\" href=\"https://heropress.com/essays/starting-early-in-tech/\">How WordPress Enabled Me To Work Remotely &#8211; Bagaimana WordPress Memungkinkan Saya Bekerja Secara Remote</a> appeared first on <a rel=\"nofollow\" href=\"https://heropress.com\">HeroPress</a>.</p>\";s: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, 15 Jan 2020 01:00: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:11:\"Fike Komala\";s:7:\"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, 03 Mar 2020 16:23:28 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:13:\"last-modified\";s:29:\"Tue, 03 Mar 2020 16:00:08 GMT\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:4:\"x-nc\";s:9:\"HIT ord 1\";s:16:\"content-encoding\";s:4:\"gzip\";}}s:5:\"build\";s:14:\"20130911040210\";}','no');
256
-
257
- INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`)
258
- VALUES
259
- (132,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1583295809','no'),
260
- (133,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1583252609','no'),
261
- (134,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1583295809','no'),
262
- (135,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','<div class=\"rss-widget\"><ul><li><a class=\'rsswidget\' href=\'https://wordpress.org/news/2020/03/the-month-in-wordpress-february-2020/\'>The Month in WordPress: February 2020</a></li></ul></div><div class=\"rss-widget\"><ul><li><a class=\'rsswidget\' href=\'https://wptavern.com/the-international-wordpress-community-and-wordcamps-amid-covid-19?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-international-wordpress-community-and-wordcamps-amid-covid-19\'>WPTavern: The International WordPress Community and WordCamps Amid COVID-19</a></li><li><a class=\'rsswidget\' href=\'https://wordpress.org/news/2020/03/the-month-in-wordpress-february-2020/\'>WordPress.org blog: The Month in WordPress: February 2020</a></li><li><a class=\'rsswidget\' href=\'https://wptavern.com/elementor-raises-15-million-plans-to-invest-in-the-team-product-and-community?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=elementor-raises-15-million-plans-to-invest-in-the-team-product-and-community\'>WPTavern: Elementor Raises $15 Million, Plans to Invest in the Team, Product, and Community</a></li></ul></div>','no');
263
-
264
- /*!40000 ALTER TABLE `wp_options` ENABLE KEYS */;
265
- UNLOCK TABLES;
266
-
267
-
268
- # Dump of table wp_postmeta
269
- # ------------------------------------------------------------
270
-
271
- DROP TABLE IF EXISTS `wp_postmeta`;
272
-
273
- CREATE TABLE `wp_postmeta` (
274
- `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
275
- `post_id` bigint(20) unsigned NOT NULL DEFAULT '0',
276
- `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
277
- `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
278
- PRIMARY KEY (`meta_id`),
279
- KEY `post_id` (`post_id`),
280
- KEY `meta_key` (`meta_key`(191))
281
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
282
-
283
- LOCK TABLES `wp_postmeta` WRITE;
284
- /*!40000 ALTER TABLE `wp_postmeta` DISABLE KEYS */;
285
-
286
- INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`)
287
- VALUES
288
- (1,2,'_wp_page_template','default'),
289
- (2,3,'_wp_page_template','default');
290
-
291
- /*!40000 ALTER TABLE `wp_postmeta` ENABLE KEYS */;
292
- UNLOCK TABLES;
293
-
294
-
295
- # Dump of table wp_posts
296
- # ------------------------------------------------------------
297
-
298
- DROP TABLE IF EXISTS `wp_posts`;
299
-
300
- CREATE TABLE `wp_posts` (
301
- `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
302
- `post_author` bigint(20) unsigned NOT NULL DEFAULT '0',
303
- `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
304
- `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
305
- `post_content` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
306
- `post_title` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
307
- `post_excerpt` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
308
- `post_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'publish',
309
- `comment_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'open',
310
- `ping_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'open',
311
- `post_password` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
312
- `post_name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
313
- `to_ping` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
314
- `pinged` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
315
- `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
316
- `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
317
- `post_content_filtered` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
318
- `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
319
- `guid` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
320
- `menu_order` int(11) NOT NULL DEFAULT '0',
321
- `post_type` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'post',
322
- `post_mime_type` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
323
- `comment_count` bigint(20) NOT NULL DEFAULT '0',
324
- PRIMARY KEY (`ID`),
325
- KEY `post_name` (`post_name`(191)),
326
- KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
327
- KEY `post_parent` (`post_parent`),
328
- KEY `post_author` (`post_author`)
329
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
330
-
331
- LOCK TABLES `wp_posts` WRITE;
332
- /*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */;
333
-
334
- INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`)
335
- VALUES
336
- (1,1,'2020-03-03 16:23:13','2020-03-03 16:23:13','<!-- wp:paragraph -->\n<p>Welcome to WordPress. This is your first post. Edit or delete it, then start writing!</p>\n<!-- /wp:paragraph -->','Hello world!','','publish','open','open','','hello-world','','','2020-03-03 16:23:13','2020-03-03 16:23:13','',0,'http://localhost:32880/?p=1',0,'post','',1),
337
- (2,1,'2020-03-03 16:23:13','2020-03-03 16:23:13','<!-- wp:paragraph -->\n<p>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:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>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&#241;a coladas. (And gettin\' caught in the rain.)</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p>...or something like this:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>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.</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p>As a new WordPress user, you should go to <a href=\"http://localhost:32880/wp-admin/\">your dashboard</a> to delete this page and create new pages for your content. Have fun!</p>\n<!-- /wp:paragraph -->','Sample Page','','publish','closed','open','','sample-page','','','2020-03-03 16:23:13','2020-03-03 16:23:13','',0,'http://localhost:32880/?page_id=2',0,'page','',0),
338
- (3,1,'2020-03-03 16:23:13','2020-03-03 16:23:13','<!-- wp:heading --><h2>Who we are</h2><!-- /wp:heading --><!-- wp:paragraph --><p>Our website address is: http://localhost:32880.</p><!-- /wp:paragraph --><!-- wp:heading --><h2>What personal data we collect and why we collect it</h2><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>Comments</h3><!-- /wp:heading --><!-- wp:paragraph --><p>When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor&#8217;s IP address and browser user agent string to help spam detection.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:heading {\"level\":3} --><h3>Media</h3><!-- /wp:heading --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:heading {\"level\":3} --><h3>Contact forms</h3><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>Cookies</h3><!-- /wp:heading --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>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 &quot;Remember Me&quot;, your login will persist for two weeks. If you log out of your account, the login cookies will be removed.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:heading {\"level\":3} --><h3>Embedded content from other websites</h3><!-- /wp:heading --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:heading {\"level\":3} --><h3>Analytics</h3><!-- /wp:heading --><!-- wp:heading --><h2>Who we share your data with</h2><!-- /wp:heading --><!-- wp:heading --><h2>How long we retain your data</h2><!-- /wp:heading --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:heading --><h2>What rights you have over your data</h2><!-- /wp:heading --><!-- wp:paragraph --><p>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.</p><!-- /wp:paragraph --><!-- wp:heading --><h2>Where we send your data</h2><!-- /wp:heading --><!-- wp:paragraph --><p>Visitor comments may be checked through an automated spam detection service.</p><!-- /wp:paragraph --><!-- wp:heading --><h2>Your contact information</h2><!-- /wp:heading --><!-- wp:heading --><h2>Additional information</h2><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>How we protect your data</h3><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>What data breach procedures we have in place</h3><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>What third parties we receive data from</h3><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>What automated decision making and/or profiling we do with user data</h3><!-- /wp:heading --><!-- wp:heading {\"level\":3} --><h3>Industry regulatory disclosure requirements</h3><!-- /wp:heading -->','Privacy Policy','','draft','closed','open','','privacy-policy','','','2020-03-03 16:23:13','2020-03-03 16:23:13','',0,'http://localhost:32880/?page_id=3',0,'page','',0),
339
- (4,1,'2020-03-03 16:23:25','0000-00-00 00:00:00','','Auto Draft','','auto-draft','open','open','','','','','2020-03-03 16:23:25','0000-00-00 00:00:00','',0,'http://localhost:32880/?p=4',0,'post','',0);
340
-
341
- /*!40000 ALTER TABLE `wp_posts` ENABLE KEYS */;
342
- UNLOCK TABLES;
343
-
344
-
345
- # Dump of table wp_term_relationships
346
- # ------------------------------------------------------------
347
-
348
- DROP TABLE IF EXISTS `wp_term_relationships`;
349
-
350
- CREATE TABLE `wp_term_relationships` (
351
- `object_id` bigint(20) unsigned NOT NULL DEFAULT '0',
352
- `term_taxonomy_id` bigint(20) unsigned NOT NULL DEFAULT '0',
353
- `term_order` int(11) NOT NULL DEFAULT '0',
354
- PRIMARY KEY (`object_id`,`term_taxonomy_id`),
355
- KEY `term_taxonomy_id` (`term_taxonomy_id`)
356
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
357
-
358
- LOCK TABLES `wp_term_relationships` WRITE;
359
- /*!40000 ALTER TABLE `wp_term_relationships` DISABLE KEYS */;
360
-
361
- INSERT INTO `wp_term_relationships` (`object_id`, `term_taxonomy_id`, `term_order`)
362
- VALUES
363
- (1,1,0);
364
-
365
- /*!40000 ALTER TABLE `wp_term_relationships` ENABLE KEYS */;
366
- UNLOCK TABLES;
367
-
368
-
369
- # Dump of table wp_term_taxonomy
370
- # ------------------------------------------------------------
371
-
372
- DROP TABLE IF EXISTS `wp_term_taxonomy`;
373
-
374
- CREATE TABLE `wp_term_taxonomy` (
375
- `term_taxonomy_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
376
- `term_id` bigint(20) unsigned NOT NULL DEFAULT '0',
377
- `taxonomy` varchar(32) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
378
- `description` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
379
- `parent` bigint(20) unsigned NOT NULL DEFAULT '0',
380
- `count` bigint(20) NOT NULL DEFAULT '0',
381
- PRIMARY KEY (`term_taxonomy_id`),
382
- UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),
383
- KEY `taxonomy` (`taxonomy`)
384
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
385
-
386
- LOCK TABLES `wp_term_taxonomy` WRITE;
387
- /*!40000 ALTER TABLE `wp_term_taxonomy` DISABLE KEYS */;
388
-
389
- INSERT INTO `wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`)
390
- VALUES
391
- (1,1,'category','',0,1);
392
-
393
- /*!40000 ALTER TABLE `wp_term_taxonomy` ENABLE KEYS */;
394
- UNLOCK TABLES;
395
-
396
-
397
- # Dump of table wp_termmeta
398
- # ------------------------------------------------------------
399
-
400
- DROP TABLE IF EXISTS `wp_termmeta`;
401
-
402
- CREATE TABLE `wp_termmeta` (
403
- `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
404
- `term_id` bigint(20) unsigned NOT NULL DEFAULT '0',
405
- `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
406
- `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
407
- PRIMARY KEY (`meta_id`),
408
- KEY `term_id` (`term_id`),
409
- KEY `meta_key` (`meta_key`(191))
410
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
411
-
412
-
413
-
414
- # Dump of table wp_terms
415
- # ------------------------------------------------------------
416
-
417
- DROP TABLE IF EXISTS `wp_terms`;
418
-
419
- CREATE TABLE `wp_terms` (
420
- `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
421
- `name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
422
- `slug` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
423
- `term_group` bigint(10) NOT NULL DEFAULT '0',
424
- PRIMARY KEY (`term_id`),
425
- KEY `slug` (`slug`(191)),
426
- KEY `name` (`name`(191))
427
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
428
-
429
- LOCK TABLES `wp_terms` WRITE;
430
- /*!40000 ALTER TABLE `wp_terms` DISABLE KEYS */;
431
-
432
- INSERT INTO `wp_terms` (`term_id`, `name`, `slug`, `term_group`)
433
- VALUES
434
- (1,'Uncategorized','uncategorized',0);
435
-
436
- /*!40000 ALTER TABLE `wp_terms` ENABLE KEYS */;
437
- UNLOCK TABLES;
438
-
439
-
440
- # Dump of table wp_usermeta
441
- # ------------------------------------------------------------
442
-
443
- DROP TABLE IF EXISTS `wp_usermeta`;
444
-
445
- CREATE TABLE `wp_usermeta` (
446
- `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
447
- `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
448
- `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
449
- `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
450
- PRIMARY KEY (`umeta_id`),
451
- KEY `user_id` (`user_id`),
452
- KEY `meta_key` (`meta_key`(191))
453
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
454
-
455
- LOCK TABLES `wp_usermeta` WRITE;
456
- /*!40000 ALTER TABLE `wp_usermeta` DISABLE KEYS */;
457
-
458
- INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`)
459
- VALUES
460
- (1,1,'nickname','admin'),
461
- (2,1,'first_name',''),
462
- (3,1,'last_name',''),
463
- (4,1,'description',''),
464
- (5,1,'rich_editing','true'),
465
- (6,1,'syntax_highlighting','true'),
466
- (7,1,'comment_shortcuts','false'),
467
- (8,1,'admin_color','fresh'),
468
- (9,1,'use_ssl','0'),
469
- (10,1,'show_admin_bar_front','true'),
470
- (11,1,'locale',''),
471
- (12,1,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'),
472
- (13,1,'wp_user_level','10'),
473
- (14,1,'dismissed_wp_pointers',''),
474
- (15,1,'show_welcome_panel','1'),
475
- (16,1,'session_tokens','a:1:{s:64:\"8fa91a49a679cc1ee5e06eaaeb12704222709ea64a147bc1bea8ea4f3367f031\";a:4:{s:10:\"expiration\";i:1583425399;s:2:\"ip\";s:10:\"172.23.0.1\";s:2:\"ua\";s:121:\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36\";s:5:\"login\";i:1583252599;}}'),
476
- (17,1,'wp_user-settings','libraryContent=browse&editor=html&mfold=o'),
477
- (18,1,'wp_user-settings-time','1583252600'),
478
- (19,1,'wp_dashboard_quick_press_last_post_id','4'),
479
- (20,1,'community-events-location','a:1:{s:2:\"ip\";s:10:\"172.23.0.0\";}');
480
-
481
- /*!40000 ALTER TABLE `wp_usermeta` ENABLE KEYS */;
482
- UNLOCK TABLES;
483
-
484
-
485
- # Dump of table wp_users
486
- # ------------------------------------------------------------
487
-
488
- DROP TABLE IF EXISTS `wp_users`;
489
-
490
- CREATE TABLE `wp_users` (
491
- `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
492
- `user_login` varchar(60) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
493
- `user_pass` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
494
- `user_nicename` varchar(50) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
495
- `user_email` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
496
- `user_url` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
497
- `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
498
- `user_activation_key` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
499
- `user_status` int(11) NOT NULL DEFAULT '0',
500
- `display_name` varchar(250) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
501
- PRIMARY KEY (`ID`),
502
- KEY `user_login_key` (`user_login`),
503
- KEY `user_nicename` (`user_nicename`),
504
- KEY `user_email` (`user_email`)
505
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
506
-
507
- LOCK TABLES `wp_users` WRITE;
508
- /*!40000 ALTER TABLE `wp_users` DISABLE KEYS */;
509
-
510
- INSERT INTO `wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`)
511
- VALUES
512
- (1,'admin','$P$B84.rl015K2zTXQ3y6yb75RXNY5lhx0','admin','anderson@publishpress.com','','2020-03-03 16:23:13','',0,'admin');
513
-
514
- /*!40000 ALTER TABLE `wp_users` ENABLE KEYS */;
515
- UNLOCK TABLES;
516
-
517
-
518
-
519
- /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
520
- /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
521
- /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
522
- /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
523
- /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
524
- /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_output/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *
2
- !.gitignore
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/AcceptanceTester.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
-
4
- /**
5
- * Inherited Methods
6
- * @method void wantToTest($text)
7
- * @method void wantTo($text)
8
- * @method void execute($callable)
9
- * @method void expectTo($prediction)
10
- * @method void expect($prediction)
11
- * @method void amGoingTo($argumentation)
12
- * @method void am($role)
13
- * @method void lookForwardTo($achieveValue)
14
- * @method void comment($description)
15
- * @method void pause()
16
- *
17
- * @SuppressWarnings(PHPMD)
18
- */
19
- class AcceptanceTester extends \Codeception\Actor
20
- {
21
- use _generated\AcceptanceTesterActions;
22
-
23
- /**
24
- * Define custom actions here
25
- */
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/FunctionalTester.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
-
4
- /**
5
- * Inherited Methods
6
- * @method void wantToTest($text)
7
- * @method void wantTo($text)
8
- * @method void execute($callable)
9
- * @method void expectTo($prediction)
10
- * @method void expect($prediction)
11
- * @method void amGoingTo($argumentation)
12
- * @method void am($role)
13
- * @method void lookForwardTo($achieveValue)
14
- * @method void comment($description)
15
- * @method void pause()
16
- *
17
- * @SuppressWarnings(PHPMD)
18
- */
19
- class FunctionalTester extends \Codeception\Actor
20
- {
21
- use _generated\FunctionalTesterActions;
22
-
23
- /**
24
- * Define custom actions here
25
- */
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Acceptance.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Helper;
3
-
4
- // here you can define custom actions
5
- // all public methods declared in helper class will be available in $I
6
-
7
- class Acceptance extends \Codeception\Module
8
- {
9
-
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Functional.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Helper;
3
-
4
- // here you can define custom actions
5
- // all public methods declared in helper class will be available in $I
6
-
7
- class Functional extends \Codeception\Module
8
- {
9
-
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Unit.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Helper;
3
-
4
- // here you can define custom actions
5
- // all public methods declared in helper class will be available in $I
6
-
7
- class Unit extends \Codeception\Module
8
- {
9
-
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/Helper/Wpunit.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Helper;
3
-
4
- // here you can define custom actions
5
- // all public methods declared in helper class will be available in $I
6
-
7
- class Wpunit extends \Codeception\Module
8
- {
9
-
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/UnitTester.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
-
4
- /**
5
- * Inherited Methods
6
- * @method void wantToTest($text)
7
- * @method void wantTo($text)
8
- * @method void execute($callable)
9
- * @method void expectTo($prediction)
10
- * @method void expect($prediction)
11
- * @method void amGoingTo($argumentation)
12
- * @method void am($role)
13
- * @method void lookForwardTo($achieveValue)
14
- * @method void comment($description)
15
- * @method void pause()
16
- *
17
- * @SuppressWarnings(PHPMD)
18
- */
19
- class UnitTester extends \Codeception\Actor
20
- {
21
- use _generated\UnitTesterActions;
22
-
23
- /**
24
- * Define custom actions here
25
- */
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/WpunitTester.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
-
4
- /**
5
- * Inherited Methods
6
- * @method void wantToTest($text)
7
- * @method void wantTo($text)
8
- * @method void execute($callable)
9
- * @method void expectTo($prediction)
10
- * @method void expect($prediction)
11
- * @method void amGoingTo($argumentation)
12
- * @method void am($role)
13
- * @method void lookForwardTo($achieveValue)
14
- * @method void comment($description)
15
- * @method void pause()
16
- *
17
- * @SuppressWarnings(PHPMD)
18
- */
19
- class WpunitTester extends \Codeception\Actor
20
- {
21
- use _generated\WpunitTesterActions;
22
-
23
- /**
24
- * Define custom actions here
25
- */
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/_support/_generated/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *
2
- !.gitignore
 
 
vendor/publishpress/wordpress-version-notices/tests/acceptance.suite.yml DELETED
@@ -1,36 +0,0 @@
1
- # Codeception Test Suite Configuration
2
- #
3
- # Suite for acceptance tests.
4
- # Perform tests in browser using the WPWebDriver or WPBrowser.
5
- # Use WPDb to set up your initial database fixture.
6
- # If you need both WPWebDriver and WPBrowser tests - create a separate suite.
7
-
8
- actor: AcceptanceTester
9
- modules:
10
- enabled:
11
- - WPDb
12
- - WPBrowser
13
- - \Helper\Acceptance
14
- - Asserts
15
- config:
16
- WPDb:
17
- dsn: 'mysql:host=%TEST_SITE_DB_HOST%;dbname=%TEST_SITE_DB_NAME%'
18
- user: '%TEST_SITE_DB_USER%'
19
- password: '%TEST_SITE_DB_PASSWORD%'
20
- dump: 'tests/_data/dump.sql'
21
- #import the dump before the tests; this means the test site database will be repopulated before the tests.
22
- populate: true
23
- # re-import the dump between tests; this means the test site database will be repopulated between the tests.
24
- cleanup: true
25
- waitlock: 10
26
- url: '%TEST_SITE_WP_URL%'
27
- urlReplacement: true #replace the hardcoded dump URL with the one above
28
- tablePrefix: '%TEST_SITE_TABLE_PREFIX%'
29
- WPBrowser:
30
- url: '%TEST_SITE_WP_URL%'
31
- adminUsername: '%TEST_SITE_ADMIN_USERNAME%'
32
- adminPassword: '%TEST_SITE_ADMIN_PASSWORD%'
33
- adminPath: '%TEST_SITE_WP_ADMIN_PATH%'
34
- headers:
35
- X_TEST_REQUEST: 1
36
- X_WPBROWSER_REQUEST: 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/acceptance/ActivatePluginsCest.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- class ActivatePluginsCest
4
- {
5
- public function _before(AcceptanceTester $I)
6
- {
7
- }
8
-
9
- public function tryToActivateDumbPluginsUsingTheLibrary(AcceptanceTester $I)
10
- {
11
- $I->loginAsAdmin();
12
- $I->amOnPluginsPage();
13
- $I->activatePlugin(['dumb-plugin-one', 'dumb-plugin-two']);
14
- $I->canSeePluginActivated('dumb-plugin-one');
15
- $I->canSeePluginActivated('dumb-plugin-two');
16
- }
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/acceptance/TopNoticeCest.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
-
3
- class TopNoticeCest
4
- {
5
- public function _before(AcceptanceTester $I)
6
- {
7
- $I->loginAsAdmin();
8
- $I->amOnPluginsPage();
9
- $I->activatePlugin(['dumb-plugin-one', 'dumb-plugin-two']);
10
- }
11
-
12
- public function tryToSeeTheDashboardWithoutTheTopNotice(AcceptanceTester $I)
13
- {
14
- $I->loginAsAdmin();
15
- $I->amOnAdminPage('admin.php');
16
- $I->dontSee('You\'re using Dumb Plugin One Free');
17
- }
18
-
19
- public function tryToSeeTheTopNoticeForDumbPluginOne(AcceptanceTester $I)
20
- {
21
- $I->amOnAdminPage('edit.php?post_type=post');
22
- $I->see('You\'re using Dumb Plugin One Free', '.pp-version-notice-bold-purple-message');
23
- $I->dontSee('You\'re using Dumb Plugin Two Free', '.pp-version-notice-bold-purple-message');
24
-
25
- $notices = $I->grabMultiple('.pp-version-notice-bold-purple-message');
26
- $I->assertEquals(1, count($notices), 'Has more than one notice');
27
- }
28
-
29
- public function tryToSeeTheTopNoticeForDumbPluginTwo(AcceptanceTester $I)
30
- {
31
- $I->amOnAdminPage('edit.php?post_type=page');
32
- $I->see('You\'re using Dumb Plugin Two Free', '.pp-version-notice-bold-purple-message');
33
- $I->dontSee('You\'re using Dumb Plugin One Free', '.pp-version-notice-bold-purple-message');
34
-
35
- $notices = $I->grabMultiple('.pp-version-notice-bold-purple-message');
36
- $I->assertEquals(1, count($notices), 'Has more than one notice');
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/functional.suite.yml DELETED
@@ -1,40 +0,0 @@
1
- # Codeception Test Suite Configuration
2
- #
3
- # Suite for functional tests
4
- # Emulate web requests and make WordPress process them
5
-
6
- actor: FunctionalTester
7
- modules:
8
- enabled:
9
- - WPDb
10
- - WPBrowser
11
- # - WPFilesystem
12
- - Asserts
13
- - \Helper\Functional
14
- config:
15
- WPDb:
16
- dsn: 'mysql:host=%TEST_SITE_DB_HOST%;dbname=%TEST_SITE_DB_NAME%'
17
- user: '%TEST_SITE_DB_USER%'
18
- password: '%TEST_SITE_DB_PASSWORD%'
19
- dump: 'tests/_data/dump.sql'
20
- populate: true
21
- cleanup: true
22
- waitlock: 10
23
- url: '%TEST_SITE_WP_URL%'
24
- urlReplacement: true
25
- tablePrefix: '%TEST_SITE_TABLE_PREFIX%'
26
- WPBrowser:
27
- url: '%TEST_SITE_WP_URL%'
28
- adminUsername: '%TEST_SITE_ADMIN_USERNAME%'
29
- adminPassword: '%TEST_SITE_ADMIN_PASSWORD%'
30
- adminPath: '%TEST_SITE_WP_ADMIN_PATH%'
31
- headers:
32
- X_TEST_REQUEST: 1
33
- X_WPBROWSER_REQUEST: 1
34
-
35
- WPFilesystem:
36
- wpRootFolder: '%WP_ROOT_FOLDER%'
37
- plugins: '/wp-content/plugins'
38
- mu-plugins: '/wp-content/mu-plugins'
39
- themes: '/wp-content/themes'
40
- uploads: '/wp-content/uploads'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/unit.suite.yml DELETED
@@ -1,10 +0,0 @@
1
- # Codeception Test Suite Configuration
2
- #
3
- # Suite for unit or integration tests.
4
-
5
- actor: UnitTester
6
- modules:
7
- enabled:
8
- - Asserts
9
- - \Helper\Unit
10
- step_decorators: ~
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/wpunit.suite.yml DELETED
@@ -1,25 +0,0 @@
1
- # Codeception Test Suite Configuration
2
- #
3
- # Suite for unit or integration tests that require WordPress functions and classes.
4
-
5
- actor: WpunitTester
6
- modules:
7
- enabled:
8
- - WPLoader
9
- - \Helper\Wpunit
10
- config:
11
- WPLoader:
12
- wpRootFolder: "%WP_ROOT_FOLDER%"
13
- dbName: "%TEST_DB_NAME%"
14
- dbHost: "%TEST_DB_HOST%"
15
- dbUser: "%TEST_DB_USER%"
16
- dbPassword: "%TEST_DB_PASSWORD%"
17
- wpDebug: true
18
- tablePrefix: "%TEST_TABLE_PREFIX%"
19
- domain: "%TEST_SITE_WP_DOMAIN%"
20
- adminEmail: "%TEST_SITE_ADMIN_EMAIL%"
21
- title: "Test"
22
- plugins:
23
- - dumb-plugin-one/dumb-plugin-one.php
24
- activatePlugins:
25
- - dumb-plugin-one/dumb-plugin-one.php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/wpunit/IncludesTest.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- class IncludesTest extends \Codeception\TestCase\WPTestCase
4
- {
5
- /**
6
- * @var \WpunitTester
7
- */
8
- protected $tester;
9
-
10
- public function setUp(): void
11
- {
12
- // Before...
13
- parent::setUp();
14
-
15
- // Your set up methods here.
16
- }
17
-
18
- public function tearDown(): void
19
- {
20
- // Your tear down methods here.
21
-
22
- // Then...
23
- parent::tearDown();
24
- }
25
-
26
- public function test_library_being_loaded_by_the_plugin()
27
- {
28
- $this->assertTrue(defined('PP_VERSION_NOTICES_LOADED'), 'Library is not properly loaded');
29
- $this->assertTrue(class_exists('PPVersionNotices\\ServicesProvider'), 'ServicesProvider class was not found');
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/wpunit/Module/TopNotice/ModuleTest.php DELETED
@@ -1,174 +0,0 @@
1
- <?php
2
-
3
- namespace Module\TopNotice;
4
-
5
- use Pimple\Container;
6
- use PPVersionNotices\Module\AdInterface;
7
- use PPVersionNotices\Module\TopNotice\Module;
8
- use PPVersionNotices\ServicesProvider;
9
- use PPVersionNotices\Template\TemplateInvalidArgumentsException;
10
-
11
- class ModuleTest extends \Codeception\TestCase\WPTestCase
12
- {
13
- /**
14
- * @var \WpunitTester
15
- */
16
- protected $tester;
17
-
18
- /**
19
- * @var AdInterface
20
- */
21
- private $module;
22
-
23
- public function setUp(): void
24
- {
25
- // Before...
26
- parent::setUp();
27
-
28
- $container = new Container();
29
- $container->register(new ServicesProvider());
30
-
31
- $this->module = $container['module_top_notice'];
32
- }
33
-
34
- public function tearDown(): void
35
- {
36
- // Your tear down methods here.
37
-
38
- // Then...
39
- parent::tearDown();
40
- }
41
-
42
- // Tests
43
- public function test_module_dont_enqueue_admin_assets_on_invalid_page()
44
- {
45
- // Force a valid page - based on the Dumb plugin
46
- set_current_screen('users.php');
47
-
48
- do_action('admin_init');
49
- do_action('admin_enqueue_scripts');
50
-
51
- $wp_styles = wp_styles();
52
- $this->assertNotContains('pp-version-notice-bold-purple-style', $wp_styles->queue);
53
- $this->assertNotContains('pp-version-notice-bold-purple-script', $wp_styles->queue);
54
- }
55
-
56
- public function test_module_enqueue_admin_assets_on_valid_page()
57
- {
58
- // Force a valid page - based on the Dumb plugin
59
- set_current_screen('edit.php');
60
-
61
- do_action('admin_init');
62
- do_action('admin_enqueue_scripts');
63
-
64
- $wp_styles = wp_styles();
65
- $this->assertContains('pp-version-notice-bold-purple-style', $wp_styles->queue);
66
- }
67
-
68
- public function test_module_add_action_to_display()
69
- {
70
- global $wp_filter;
71
-
72
- $this->assertArrayHasKey(Module::DISPLAY_ACTION, $wp_filter,
73
- 'The action is not defined');
74
- }
75
-
76
- public function test_module_display_with_no_arguments_throws_exception()
77
- {
78
- $this->expectException(TemplateInvalidArgumentsException::class);
79
-
80
- try {
81
- ob_start();
82
- $this->module->display();
83
- } finally {
84
- ob_end_clean();
85
- }
86
- }
87
-
88
- public function test_module_display_with_arguments_returns_output()
89
- {
90
- $expected = '<div class="pp-version-notice-bold-purple"><div class="pp-version-notice-bold-purple-message">You\'re using Dumb Plugin Free. Please, </div><div class="pp-version-notice-bold-purple-button"><a href="http://example.com/upgrade" target="_blank">upgrade to pro</a></div>.</div>';
91
-
92
- $this->expectOutputString($expected);
93
-
94
- $message = 'You\'re using Dumb Plugin Free. Please, %supgrade to pro%s.';
95
- $link = 'http://example.com/upgrade';
96
-
97
- $this->module->display($message, $link);
98
- }
99
-
100
- public function test_module_display_with_no_arguments_throws_exception_for_action()
101
- {
102
- $this->expectException(TemplateInvalidArgumentsException::class);
103
-
104
- try {
105
- ob_start();
106
- do_action(Module::DISPLAY_ACTION);
107
- } finally {
108
- ob_end_clean();
109
- }
110
- }
111
-
112
- public function test_module_display_with_arguments_returns_output_for_action()
113
- {
114
- $expected = '<div class="pp-version-notice-bold-purple"><div class="pp-version-notice-bold-purple-message">You\'re using Dumb Plugin Free. Please, </div><div class="pp-version-notice-bold-purple-button"><a href="http://example.com/upgrade" target="_blank">upgrade to pro</a></div>.</div>';
115
-
116
- $this->expectOutputString($expected);
117
-
118
- $message = 'You\'re using Dumb Plugin Free. Please, %supgrade to pro%s.';
119
- $link = 'http://example.com/upgrade';
120
-
121
- do_action(Module::DISPLAY_ACTION, $message, $link);
122
- }
123
-
124
- public function test_module_display_with_arguments_returns_output_for_action_and_multiple_plugins()
125
- {
126
- $expected = <<<OUTPUT
127
- <div class="pp-version-notice-bold-purple">
128
- <span class="pp-version-notice-bold-purple-message">You're using Test A Free. Please, <a href="http://example.com/upgrade-a" target="_blank">upgrade to pro</a>.</span>
129
- </div>
130
- OUTPUT;
131
-
132
- $messageA = 'You\'re using Test A Free. Please, %supgrade to pro%s.';
133
- $linkA = 'http://example.com/upgrade-a';
134
-
135
- do_action(Module::DISPLAY_ACTION, $messageA, $linkA);
136
-
137
- // --------------------------
138
- $expected = <<<OUTPUT
139
- <div class="pp-version-notice-bold-purple">
140
- <span class="pp-version-notice-bold-purple-message">You're using Test B Free. Please, <a href="http://example.com/upgrade-b" target="_blank">upgrade to pro</a>.</span>
141
- </div>
142
- OUTPUT;
143
-
144
- $messageB = 'You\'re using Test B Free. Please, %supgrade to pro%s.';
145
- $linkB = 'http://example.com/upgrade-b';
146
-
147
- do_action(Module::DISPLAY_ACTION, $messageB, $linkB);
148
- }
149
-
150
- public function test_module_doesnt_display_the_ad_on_invalid_page()
151
- {
152
- // Force a valid page - based on the Dumb plugin
153
- set_current_screen('users.php');
154
-
155
- ob_start();
156
- do_action('in_admin_header');
157
-
158
- $output = ob_get_clean();
159
-
160
- $this->assertStringNotContainsString('You\'re using Dumb Plugin', $output);
161
- }
162
-
163
- public function test_module_displays_the_ad_on_valid_page()
164
- {
165
- $expected = '<div class="pp-version-notice-bold-purple"><div class="pp-version-notice-bold-purple-message">You\'re using Dumb Plugin One Free. Please, </div><div class="pp-version-notice-bold-purple-button"><a href="http://example.com/upgrade" target="_blank">upgrade to pro</a></div>.</div>';
166
-
167
- $this->expectOutputString($expected);
168
-
169
- // Force a valid page - based on the Dumb plugin
170
- set_current_screen('edit.php');
171
-
172
- do_action('in_admin_header');
173
- }
174
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/wpunit/ServicesProviderTest.php DELETED
@@ -1,55 +0,0 @@
1
- <?php
2
-
3
- class ServicesProviderTest extends \Codeception\TestCase\WPTestCase
4
- {
5
- /**
6
- * @var \WpunitTester
7
- */
8
- protected $tester;
9
-
10
- protected $container;
11
-
12
- public function setUp(): void
13
- {
14
- // Before...
15
- parent::setUp();
16
-
17
- $container = new Pimple\Container();
18
- $serviceProvider = new \PPVersionNotices\ServicesProvider();
19
- $container->register($serviceProvider);
20
-
21
- $this->container = $container;
22
- }
23
-
24
- public function tearDown(): void
25
- {
26
- // Your tear down methods here.
27
-
28
- // Then...
29
- parent::tearDown();
30
- }
31
-
32
- public function test_module_top_notice_is_defined()
33
- {
34
- $this->assertArrayHasKey('module_top_notice', $this->container,
35
- 'Module TopNotice is not found in the container');
36
-
37
- $this->assertIsObject($this->container['module_top_notice'], 'TopNotice module is not an object');
38
- }
39
-
40
- public function test_template_loader_is_defined()
41
- {
42
- $this->assertArrayHasKey('template_loader', $this->container,
43
- 'Template Loader is not found in the container');
44
-
45
- $this->assertIsObject($this->container['template_loader'], 'Template Loader is not an object');
46
- }
47
-
48
- public function test_templates_path_is_defined()
49
- {
50
- $this->assertArrayHasKey('TEMPLATES_PATH', $this->container,
51
- 'Template Loader is not found in the container');
52
-
53
- $this->assertIsString($this->container['TEMPLATES_PATH'], 'Template Path is not defined');
54
- }
55
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/publishpress/wordpress-version-notices/tests/wpunit/Template/TemplateLoaderTest.php DELETED
@@ -1,98 +0,0 @@
1
- <?php
2
-
3
- namespace Template;
4
-
5
- use PPVersionNotices\Template\TemplateLoader;
6
- use PPVersionNotices\Template\TemplateLoaderInterface;
7
- use PPVersionNotices\Template\TemplateNotFoundException;
8
-
9
- class TemplateLoaderTest extends \Codeception\TestCase\WPTestCase
10
- {
11
- /**
12
- * @var \WpunitTester
13
- */
14
- protected $tester;
15
-
16
- /**
17
- * @var TemplateLoaderInterface
18
- */
19
- protected $templateLoader;
20
-
21
- public function setUp(): void
22
- {
23
- // Before...
24
- parent::setUp();
25
-
26
- $templatePath = PP_VERSION_NOTICES_BASE_PATH . '/tests/_data/dumb-templates';
27
-
28
- $this->templateLoader = new TemplateLoader($templatePath);
29
- }
30
-
31
- public function tearDown(): void
32
- {
33
- // Your tear down methods here.
34
-
35
- // Then...
36
- parent::tearDown();
37
- }
38
-
39
- // Tests
40
- public function test_exception_if_template_is_not_found_when_displaying()
41
- {
42
- $this->expectException(TemplateNotFoundException::class);
43
- $this->templateLoader->displayOutput('NotExistent', 'any');
44
- }
45
-
46
- public function test_exception_if_template_is_not_found_when_returning()
47
- {
48
- $this->expectException(TemplateNotFoundException::class);
49
- $this->templateLoader->returnOutput('NotExistent', 'any');
50
- }
51
-
52
- public function test_displayed_template_output()
53
- {
54
- $expected = '<h1>Test1</h1>';
55
-
56
- $this->expectOutputString($expected);
57
-
58
- $this->templateLoader->displayOutput('Dumb', 'test1');
59
- }
60
-
61
- public function test_returned_template_output()
62
- {
63
- $expected = '<h1>Test1</h1>';
64
-
65
- $output = $this->templateLoader->returnOutput('Dumb', 'test1');
66
-
67
- $this->assertEquals($expected, $output);
68
- }
69
-
70
- public function test_displayed_template_output_with_context()
71
- {
72
- $expected = '<h1>Test2: bar1, bar2</h1>';
73
-
74
- $this->expectOutputString($expected);
75
-
76
- $context = [
77
- 'foo1' => 'bar1',
78
- 'foo2' => 'bar2',
79
- ];
80
-
81
- $this->templateLoader->displayOutput('Dumb', 'test2', $context);
82
- }
83
-
84
- public function test_returned_template_output_with_context()
85
- {
86
- $expected = '<h1>Test2: bar1, bar2</h1>';
87
-
88
- $context = [
89
- 'foo1' => 'bar1',
90
- 'foo2' => 'bar2',
91
- ];
92
-
93
- $output = $this->templateLoader->returnOutput('Dumb', 'test2', $context);
94
-
95
-
96
- $this->assertEquals($expected, $output);
97
- }
98
- }