The Tide team released the first beta version this week. Tide will be integrated on WordPress.org to display, for example, results of Coding Standard tests for plugins and themes.Continue reading WordPress weekly recap #26: Tide 1.0.0 beta and more
A while back I updated to Elasticsearch 6, and with that, the related posts feature of ElasticPress stopped working. First I thought it has to do with an ElasticPress issue, but the reason was a parameter used by ElasticPress that is not supported by Elasticsearch 6 that needs to be modified.Continue reading Use ElasticPress’ related posts feature with Elasticsearch 6
Gutenberg 3.1 brings – among other things – an interface for tips to guide users through the new editor.Continue reading WordPress weekly recap #25: Gutenberg 3.1 and more
The PHP team finished work on design and wording of the notice that a plugin cannot be installed because the WordPress and/or PHP version is too low. Now they are working on committing it to the core.Continue reading WordPress weekly recap #24: Blocking plugin installs when requirements are not met and more
My Lazy Loader plugin needs PHP 5.3 or higher. If users count on that, it is annoying if this minimum version is raised through a inadvertency (like using the
 array syntax) in a patch or minor release.
This week, Gutenberg 3.0 was released. With that, it is possible to specify blocks as child blocks of other blocks, so they only will be visible in the block inserter when the parent block is selected.Continue reading WordPress weekly recap #23: Gutenberg 3.0 and more
Currently, I want to wrap all acronyms – »PHP«, for example – in a
span element to display them as small capitals. So I searched for a way to search and replace in MySQL, and there it is:
For example, the following command wraps
WOFF in the post titles in the wanted markup (it is a good idea to create a backup before):
UPDATE `wp_posts` SET `post_title` = REGEXP_REPLACE(post_title COLLATE utf8mb4_bin, 'WOFF', '<span class="smcp">WOFF</span>' ) WHERE `ID` = 4691
The first param of
REGEXP_REPLACE is the string to search in – we set the column’s name we want to search in. The second parameter is the searched string and the third the string to replace the searched string with. Setting
COLLATE utf8mb4_bin (you may need to adjust the collation if you use another one) is important because otherwise, the search would be case insensitive.
Like written in the MariaDB documentation (and as the name suggests) you can also use regular expressions with
REGEXP_REPLACE. For my German version of the weekly recap, I used the following:
UPDATE `wp_posts` SET `post_title` = REGEXP_REPLACE(post_title COLLATE utf8mb4_bin, 'KW([0-9]+)', '<span class="smcp">KW</span>\\1' ) WHERE `ID` = 4691
\\1 inserts the part inside the brackets from the searched string into the replace string: the week number.
Because of the larger amount of new code in 4.9.6, the team decided to disable the automatic updates for a day to wait for incoming issues. There were some issues with plugins that use the wrong hook for the new privacy features that caused a white screen, so the team kept the feature disabled.Continue reading WordPress weekly recap #22: no auto updates for 4.9.6 and more
This week, the Meta team announced privacy improvements to WordPress.org.Continue reading WordPress weekly recap #21: Privacy improvements to WordPress.org and more
Recently I needed to improve the performance of a WooCommerce installation with multiple 10,000 products. On regular WordPress pages, performance was already good – the performance issues occurred on product archive pages. The post »What does it take to scale WooCommerce?« by Chris Lema contained the tip to use Elasticsearch, that can be integrated via ElasticPress that also supports WooCommerce. After that, WordPress uses Elasticsearch instead of the MySQL database for querying content.
Read and tested, and the result: a significant improvement of load time, now below one second ⚡
So if you are having issues with load speed on larger installations, where the database seems to be the bottleneck, try using Elasticsearch 🙂