WordCamp Moscow 2016

I’m Konstantin Kovshenin, a WordPress core contributor, ex-Automattician, public speaker and consultant, enjoying life in Moscow. I blog about tech, WordPress and DevOps.

I do code review, training and consulting on WordPress performance, scaling and security. Schedule a call if you’re interested.

Subscribe to my newsletter and follow me on Twitter.

Recent Blog Posts

Stop SOPA Ribbon for WordPress

Stop SOPA Ribbon for your WordPress site or network. A plugin I made in a few minutes to show my support. It works with Multisite if you need a ribbon throughout the whole network. Learn more about SOPA on the Stop American Censorship website or read the Help Stop SOPA/PIPA in the WordPress news section.

Diet Pills, SEO, and Theme Frameworks by Andy Stratton

Andy Stratton gave a presentation called “Diet Pills, SEO, and Theme Frameworks” at WordCamp Chicago 2011. He talked about WordPress themes, frameworks, marketplaces and a lot of related misconceptions, and some of the many problems with commercial themes including SEO, customization, child themes. Here’s a quote if you haven’t got time to watch the whole video. There are...

About the "Lock in Effect" in WordPress Themes and Plugins

The WordPress themes and plugins market is huge these days. With all that wide range of products available, we sometimes stumble into situations where we’d like to change our mind, i.e. use a different plugin or theme instead of the one we’re currently using. Eventually we figure out that it’s incredibly tough to replace some of the themes and plugins, because as soon as...

Akismet Comment Spam Chart

I turned commenting off on articles older than 14 days a copule of months ago and here’s the impact shown by Akismet’s stats page. No wonder why I stopped receiving a bunch of “please moderate” e-mails every day.

How to Get the Current URL in WordPress

Here’s a quick tip! I was wandering around the web for the perfect solution to retrieve the current URL in a WordPress theme or plugin. I found a bunch of solutions for PHP, but not directly related to WordPress so I thought there has to be an easier way, and after a few hours of examining with global variables seems like I found it. global $wp; $current_url = add_query_arg( $wp...

Quitting Applications with Dvorak

I wrote earlier that I’ve been training myself on the Dvorak keyboard layout lately, so the fun part is that the Dvorak Q is right where the Qwerty X is and I’m a crazy user of shortcut keys, so there you have it! Can’t wait to make the full switch. By the way, I’m using this plugin to embed tweets.

Change the WordPress Core to Django

I couldn’t not post this tweet by Andrew Nacin. Seriously, why not change the WordPress core to Django? ;) Perhaps the author of the quote meant a Django-style templating engine, which is indeed cool and quite popular too. Oh well, that was a good laugh, thank you!

How To: Add Taxonomies to Your Custom Post Types in WordPress

Custom Post Types are not new to WordPress, they’ve been around since version 3.0 and have really changed the “WordPress as a CMS” game ever since. Custom taxonomies though, have been around even earlier and are used to group your posts and custom post types. This post will give you a short insight on taxonomies in WordPress and show you how to add different taxonomies to...

Plugins vs. "… Without a Plugin"

Posted this yesterday on Twitter, thanks for all the retweet and fave love! I started seeing quite a lot of tweets and posts on how to do things “without a plugin” in WordPress and 99% of them involve writing snippets in your theme’s functions.php file. Now, how does that differ from writing a plugin? It’s more difficult to manage and maintain. If something stops working...

Google Analytics Proxy with Nginx

Here’s a quick tip! If you need to serve a specific script, stylesheet or any other file from your own domain, you can easily proxy it with nginx. A good example is the ga.js file for Google Analytics. Here’s how I proxy it with nginx, in the server context: # Google Analytics Proxy rewrite ^/ga.js$ /ga/ last; location /ga/ { proxy_pass ; break; } This rewrites the ga.js filename to...