My MVC Experiment for WordPress Plugins

I spent a few days last week working on a new plugin, trying to approach it from different angles and test a few development flows in a way that would possibly change the way I work. One of my experiments was related to building an MVC plugin for WordPress - and I failed to do that in a way that satisfies me. tl;dr - there are ways to build MVC plugins on the top of WordPress, some people do that, it didn't seem natural to me even if I like MVC a lot. Why MVC? Even if some developers, architects… Continue Reading

Plugins Scalability

Recently, I've been thinking about the state of plugins. In my previous post I've mentioned the free and premium plugins, and additionally I could split them in other categories, such as: small and large, self-contained and extensible, user-oriented and developer-related, optimized and non-optimized. I could go further with secure/insecure and everything, but that's another story. I'd also like to cover the aspect of user-oriented plugins vs. developer helpers, which is a separate topic. Scalability According to Wikipedia: In electronics (including hardware, communication and software), scalability is the ability of a system, network, or process to handle a growing amount of work in… Continue Reading

DX Share Selection – Fork

I have that habit of selecting text snippets while I read (like adding breakpoints every few lines), but still I find it quite helpful when I can share a given snippet in an article by selecting it and sharing it through a popup. I found the WP Selected Text Sharer in the repo and it looks pretty close to what I need, however it hasn't been maintained for a while (more than 3 years). I have contacted the plugin author and he mentioned that he'd like to rewrite it one day, so I forked it into a simplified version with few… Continue Reading

1000+ Downloads of DX Plugin Base

Almost 2 years ago I built the DX Plugin Base plugin as a skeleton for my own plugins - to copy-paste snippets that I regularly use like: adding custom post types, metaboxes, implementing the Settings API and so forth. Few days ago it hit the 1000 downloads mark and I'm pretty happy that other people find that useful. Recently I saw a plugin published on by another author (I kinda inherited that since the author left my contributor name in the readme too) completely built on the top of the Plugin Base. As a reminder, I welcome all contributions as… Continue Reading

5 WordPress Contribution Tips Learned from Scribu

If you have used WordPress for at least a few months, you have probably used a plugin by scribu or at least heard a discussion over one of the tools or plugins he is involved with. Recently Cristi (scribu) announced his "retirement" from the WordPress industry and he's currently involved in just a few projects, mostly WP-CLI (which involves mostly some custom PHP, server-related tasks and playing with cool stuff such as Travis, Composer, Behat). However, I've been monitoring his work on the WordPress Core and his plugins over the Trac/support forums/GitHub and I am happy to outline my top 5… Continue Reading

Contributing Together

Recently I've been spending a lot of time poking others' projects. Since I have more time than I had while working full-time for an employer, I'm polishing more of my snippets and I've been busy with small enhancements that couldn't find a place in my long list before. Additionally, I find myself sending more pull request than before and requesting from plugin authors to clone their project to GitHub as well for collaboration: As a developer, I'm tempted by reinventing the wheel and releasing something on my own. But I try to be practical and I often browse… Continue Reading

WordPress IRC Chats Schedule

Since I tend to forget when most WordPress dev chats are or pick wrong time zones instead, I set up a small weekly schedule with weekly IRC chats: I got the schedules from the Make blogs and listed them with custom post type entries in a calendar. The handy thing is that one can control the timezone listing with a UTC-relative GET argument (also, few time zones are listed at the top of the calendar that switch that automatically). For example, what I use in Bulgaria is which triggers the events shifted towards my timing instead of UTC. Even though I… Continue Reading

DX Plugin Base v1.3 with AJAX

Earlier today I pushed an update to my skeleton plugin builder - DX Plugin Base. The plugin is meant to be used as a base for creating new plugins, you can either copy-paste it and just delete and replace what needs to be changed (that's what the author of the Metwit Weather Widget did) or just use specific functions to create post types, meta boxes or anything like that in new plugins without having to browse again in Codex or old projects for "how exactly did I write that the last time". The new enhancements in version 1.3 are AJAX… Continue Reading

Theme Mentor – inspired by Theme-Check

Today I finally released the first version of Theme Mentor - a theme review plugin inspired by the almighty Theme-Check. Over the last year I have spent more than 200 hours fixing themes for the repository gone through the Theme-Check tests. There are numerous issues not covered by Theme-Check, easy to miss during your review or development process. Truth is, most of them are absolutely valid and an algorithm couldn't be built so smart to determine whether it is a real error or not. Few of the problems covered by the first Theme Mentor version: <link> or <script> tags… Continue Reading

Submit iframe Form To External Site

Many advertising services and external APIs provide iframes to be embedded on external sites, but also require some data to be transferred from one site to the other. iframe tags are being restricted for many reasons, mostly security. There are iframe busters (or framekillers) that export the iframe behavior in the parent window, takeover the browser, so to speak. If you need something 'in-between', i.e. a controlled iframe on site 1 which, when submitted, loads a new browser page with the request data valid, then add a _parent target to the form, i.e.: [php] <form method="POST" action="" target="_parent"> // form… Continue Reading