Welcome to ManageWP.org

Register to share, discuss and vote for the best WordPress stories every day, find new ideas and inspiration for your business and network with other members of the WordPress community. Join the #1 WordPress news community!

×

Development | medium.com | 6 days ago

Matt Mullenweg on WordPress and Update Signing

Matt Mullenweg, on Medium (!!!), talks about update signing and security in general.

2 min read Ahmad Awais
Development | 10up.com | 12 days ago

Introducing the WordPress Component Library

Accessible WordPress Components Library from 10up is awesome! Check it out!

Introducing the WordPress Component Library

Development | 10up.com | 12 days ago

We’re proud to introduce the WordPress Component Library: a collection of front-end components constructed with WordPress and accessibility at the forefront. Many of the HTML and CSS components we build for our clients are structurally similar, particularly for prolific features like menus, search forms, posts, and blogrolls. A common starting point offers efficiencies to our clients while simultaneously raising the bar on polish and compliance with standards like accessibility. In evaluating existing libraries, we found that the industry was missing a good, open source project built with WordPress’s often opinionated markup (e.g. menus) and basic layout structure in mind.
Since accessibility is a top priority for many of our clients, and critical to our mission to make the web a better place, each component in the library is WCAG 2.0 accessible. We think that this project will help engineers and clients who value accessibility, but may struggle to budget for it, achieve a higher standard with little-to-no added cost.
We are actively adding to and improving the components. Hosted on GitHub, we welcome feedback, questions, and pull requests.

5 min read Donna Cavalier
Development | khromov.se | 6 days ago

WordPress needs another long term support version

I seriously doubt this will occur. The tiniest changes take years, so this is likely a pipe dream. But dreaming is fun too, right?

WordPress needs another long term support version

Development | khromov.se | 6 days ago

Imagine reading the following update notes in a coming version of WordPress: “We have a number of exciting features for WordPress 5.0. The new Gutenberg editor has replaced TinyMCE and heralded in a new and simpler way to edit any type of content. The Fields API now provides a utilized way for plugins and themes to create fields in the customizer, on any type of content, or in options pages. We also welcome new endpoints in the REST API – which is finally becoming a full-fledged citizen and allow you to build fully JavaScript-based sites.”
Most developers would be very happy to read this changelog. But many also understand that all of this is years into the future. How can we change that?
An ode to WordPress versioning
WordPress 3.7 introduced automatic updates, and while many hardcore developers quickly wanted to find ways to disable them t0 not disrupt finely-tuned deployment systems, there is no doubt that it was a net win in terms of usability and security for the vast majority of people running a WordPress site.
When 3.8 was released, we saw patches to the 3.7 branch to fix vulnerabilities found in 3.8. This is great, as backporting security updates ensures ample

3 min read David Bisset

New WordPress Unified API Console

A brand new Open Source WordPress API console that you can use w/ WordPress REST API for any website hosted on WordPress.com or using JetPack.

New WordPress Unified API Console

Since the WordPress 4.7 “Vaughan” release, each WordPress installation includes REST API endpoints to access and manipulate its content. These endpoints will be the foundation for the next generation of WordPress websites and applications. Today we’re releasing a brand new Open Source WordPress API console. You can use it to try these endpoints and explore the results. The console works for any website on WordPress.com and also for any self-hosted WordPress installation.
Using the console with WordPress.com APIs
You can use this application today to make read and write requests to the WordPress.com API or the WordPress REST API for any website hosted on WordPress.com or using JetPack. Visit the new version of the application here: https://developer.wordpress.com/docs/api/console/
Using the console with your self-hosted WordPress sites
To use the console with your self-hosted WordPress installation(s), you’ll need to download the application from GitHub, configure it, and run it on your local machine. You’ll also need to install the WP REST API – OAuth 1.0a Server plugin on your WordPress site. The Application Passwords plugin is another option –

2 min read M Asif Rahman

Initial Gutenberg prototype editor testing

This is UI prototype for Editor. Very initial stage, but do test-around!

Initial Gutenberg prototype editor testing

There is a UI prototype now for testing, this is a call for people to start that. If you want to test you can find Gutenberg here. How to test?
You can test in any way you want. You can test yourself and also test others. You can take images, audio or video. If you do create a video don’t forget to pull out those bugs, action points and do a summary. Cutting smaller videos out is also really useful.
Questions you can ask:
(on first look) Can you explain in words what each section does?
Can you write a paragraph of text? How does it feel? What are your thoughts?
Can you add an image? How does it feel? What are your thoughts?
Reporting:
If you find a bug please report it in this repo.
You can also leave results from your user testing either as a comment here, or you can link to a blog post.
As specific things need testing, further posts like this can be made.
Edit: as mentioned by @grappleulrich, this is very much in the early stages as a prototype. If you find an issue though please report it on the repo and also focus on how the flows work at this point.

Introducing Locomotive

Locomotive is a batch processing library and plugin that untangles the complexity of querying and making changes to large datasets. Locomotive automatically breaks these queries into a number of steps, performing smaller queries one at a time, then running each individual result through a single callback function.

Introducing Locomotive

When it comes to batch processing WordPress data there aren’t a ton of options available. Yet, we often find ourselves needing to query large amounts of data, and perform simple and repetitive tasks on them. This might mean moving unapproved comments into an approved status, converting users from one role to another, or migrating posts from one content structure to another. Instances where manual effort won’t get the job done without some serious work.
Think about any time you’ve wanted to pull a large amount of posts and perform a simple action on them. Or maybe you want to manipulate users, comments, terms, or any of the other built-in WordPress post types. Writing a single function that performs a query and makes the data changes works…to a point.
But we often work with sites with thousands of posts. One query would be too much to load at once, so the query needs to be broken up. Then, it’s just a matter of setting the right offset, catching errors, performing the steps asynchronously, and pretty soon the complexity skyrockets.
In the last few years, WP-CLI has helped a lot with these kinds of tasks. But there are still hosting environments that don’t

6 min read Shawn Hooper
Development | shawnhooper.ca | 5 days ago

The WordPress REST API's Undocumented Validation Options – Shawn Hooper - WordPress Developer & Speaker

I discovered a few awesome tricks for validating the input of your custom REST endpoint arguments. Here they are.

The WordPress REST API's Undocumented Validation Options – Shawn Hooper - WordPress Developer & Speaker

Development | shawnhooper.ca | 5 days ago

The WordPress REST API is still very new. As with many early early technologies, documentation seems to be the last thing to get updated. This is why it can be fun/educational to read through the source code in open source projects. You’ll find things the documentation didn’t teach you! (Or at least not in any documentation I could easily find.) The custom endpoint I was creating required quite a few arguments when called. I wanted to include sanitization and/or validation of these arguments. Setting up a schema for the endpoint made sense. I knew I could perform validation by specifying a ‘validate_callback’ function in the argument definition.
However browsing the source code in WordPress’ core revealed a few bonuses built right into the core, in a function called rest_validate_value_from_schema.
The ‘type’ attribute
By including in a ‘type‘ attribute when defining an argument, the REST API’s validation will automatically check if the value passed into this argument is of the appropriate data type.
register_rest_route( 'route/v1', '/endpoint/', array(
'methods' => 'POST',
'callback' => array( $this, 'endpoint_post_handler'

14 min read Josh Nederveld
Development | gschoppe.com | 9 days ago

Separation of Concern & Gutenberg - An alternate proposal

As a fellow developer who has also suffered from the vagaries of tinyMCE, I think Gregory's idea has merit.

Separation of Concern & Gutenberg - An alternate proposal

Development | gschoppe.com | 9 days ago

If you already know all about the WordPress editor, you can skip directly to the section on separation of concern. The WordPress editor is a curious beast. It’s oddly tied down into the core codebase, despite being a completely external project (TinyMCE), and it has given rise to a significant number of hacks and workarounds, to try to support the various workflows of different WordPress users. Since 2017 is the year for WordPress core to focus on the editor, I thought I’d put down some thoughts, in the hopes that I might help inform some decisions.
First, let’s talk about what the editor does, and walk through some of the different workflows it supports.
The WordPress editor, at its heart, is just a way to get the body of a post, whether text or html, into the database field “post_content”. That field is designed to be the sole, canonical source for WordPress post/page content, whether accessed by excerpt, search, feed, api, or any other method.
The simplest way to insert content into post_content is via “Text Mode”, where the user enters plain text, to be published as-is. Of course, unless the content is wrapped in <pre> tags, that content

1 min read Joe Casabona
Development | wpinonemonth.com | 4 days ago

90 Minute HTML & CSS Live Webinar - March 6th @ 2pm ET

If you've ever wanted to learn HTML and CSS to manage your website a little better, make small tweaks, or start a career in web design, this is a great opportunity. On March 6th I will be hosting a live webinar where I go over the basics, and we'll make our own web page. If you can't make it, don't worry! Anyone registered will get the recording.

90 Minute HTML & CSS Live Webinar - March 6th @ 2pm ET

Development | wpinonemonth.com | 4 days ago

HTML and CSS are the basis of any website; they are the absolute minimum you need to know to build things on the web. In this 90 minute webinar, I will introduce both HTML and CSS to you by going over the basics and building out a basic web page complete with color scheme, font choices, images, and more.
Even better: the first 21 people to register will get in for just $24.00! That's 50% off the full price.

3 min read David Bisset
Development | halfelf.org | 11 days ago

On Uninstalling WordPress Plugins (and Data)

Bottom line: when you uninstall a plugin, if it was well written, it removes the files and the data.

On Uninstalling WordPress Plugins (and Data)

Development | halfelf.org | 11 days ago

Someone asked me why WordPress always says it’s going to delete files and data when it only removes the files and not the database options. There are two parts of the answer to this, one being a little historical and the other being a bit unhelpful. The Message: Delete Files and Data
Once upon a time, when you uninstalled a WordPress plugin, it looked something like this:
That was a very simple screen. You were asked to delete the plugin files, you clicked that you were, done.
Now you see this thanks to Shiny Updates:
It’s a different message, telling you it’s deleting data!
What Is The Data?
The part you don’t see is that WordPress would also remove all the data as well as those files.
Any time WordPress showed you that message to delete files and data, it was saying that it found a file called uninstall.php which would, presumably, delete the data set by the plugin. By this I mean the options and settings you chose for your plugin. Some plugins have data and others don’t. For example, Hello Dolly has no data, just files. It doesn’t need an uninstall file. On the other hand, a plugin like Jetpack has a lot of settings it should remove from the database

Development | wpappstudio.com | 6 days ago

WP App Studio Professional WordPress Development Platform (PaaS)

After 5 months of hard work, we are pleased to announce that WP App Studio 5.3 has been released. WP App Studio helps you create custom WordPress web apps in the form of plugins without any dependencies to external services or libraries. Check out our commercial and free plugins created by WP App Studio platform at emdplugins.com and wordpress.org.

WP App Studio Professional WordPress Development Platform (PaaS)

Development | wpappstudio.com | 6 days ago

With Wp App Studio 5.3 version, we are moving more and more towards to our goal of creating a fully featured integrated development environment (IDE) for WordPress. We think the addition of a PHP field in app settings and ability to write PHP code in view layouts will help us achieve this goal. If you need to write PHP code in view layouts, just use [PHP]Code here[/PHP] format. Thanks to the CodeMirror integration, you also have an excellent code editor supporting PHP, JavaScript and HTML. Another major improvement is the introduction of EMD templating system which, we believe, will fix the issues related to the themes with unorthodox markup. If you use EMD templating system, you need to wrap your attributes, taxonomies and relationships in "emd_is_item_visible() function in a PHP code snippet. If WPAS detects this function's usage, it auto creates customization tab in the settings. The new templating system allows users to enable, disable, or hide(from frontend only) attributes, taxonomies or relationships without modifying user's theme template files and comes with EMD Widget area which can be used to display widgets in the generated plugin's pages. WPAS ProDev owners can enable

2 min read David Bisset
Development | wordpress.org | 25 days ago

WordPress 4.7.2 Security Release

This is a security release so better get to updating. Three issues including WP_Query being vulnerable to a SQL injection and a cross-site scripting (XSS) vulnerability.

WordPress 4.7.2 Security Release

Development | wordpress.org | 25 days ago

WordPress 4.7.2 is now available. This is a security release for all previous versions and we strongly encourage you to update your sites immediately. WordPress versions 4.7.1 and earlier are affected by three security issues:
The user interface for assigning taxonomy terms in Press This is shown to users who do not have permissions to use it. Reported by David Herrera of Alley Interactive.
WP_Query is vulnerable to a SQL injection (SQLi) when passing unsafe data. WordPress core is not directly vulnerable to this issue, but we’ve added hardening to prevent plugins and themes from accidentally causing a vulnerability. Reported by Mo Jangda (batmoo).
A cross-site scripting (XSS) vulnerability was discovered in the posts list table. Reported by Ian Dunn of the WordPress Security Team.
Thank you to the reporters of these issues for practicing responsible disclosure.
Download WordPress 4.7.2 or venture over to Dashboard → Updates and simply click “Update Now.” Sites that support automatic background updates are already beginning to update to WordPress 4.7.2.
Thanks to everyone who contributed to 4.7.2.

4 min read David Bisset

WordPress Directory Plugin Guideline Change

If you're a WordPress plugin developer with plugins in the repo, note these changes to two specific guidelines.

WordPress Directory Plugin Guideline Change

With the advent of the new directory being on the horizon, which allows us to easily hard-limit the number of plugin tags displayed, we have taken the time to change the guidelines. While minor updates to the guidelines (with regard to spelling, grammar, etc) are common, major changes are rare and we are striving to be more transparent about them. Hence this post
Guideline 12 (readme links) clarified to cover spam and tags.
The guideline now reads as follows:
12. Public facing pages on WordPress.org (readmes) may not spam.
Public facing pages, including readmes and translation files, may not be used to spam. Spammy behavior includes (but is not limited to) unnecessary affiliate links, tags to competitors plugins, use of over 12 tags total, blackhat SEO, and keyword stuffing.
Links to directly required products, such as themes or other plugins required for the plugin’s use, are permitted within moderation. Similarly, related products may be used in tags but not competitors. If a plugin is a WooCommerce extension, it may use the tag ‘woocommerce.’ However if the plugin is an alternative to Akismet, it may not use that term as a tag. Repetitive use of a tag or specific

Development | zao.is | 12 days ago

What Developers Need to Know Before Offering Code Audits

Developers, if you've thought about offering code audits but aren't sure where to start, Justin has got you covered with what you need to ask, need to know, and how to price your code auditing services.

zao.is |

What Developers Need to Know Before Offering Code Audits

Development | zao.is | 12 days ago

So, you’re a developer. You’ve thought about offering code audits, but maybe you haven’t had a clear idea of what your code audit should provide, why clients go seeking one, or how to price the service. In January, we covered the questions clients need to ask their developer before getting a code audit, and offered some guidance on how to vet their vendor. This time around, we’re going to cover the developer side of things: why clients seek code audits, what questions you need to be asking before you get started, and how code audits lay a good foundation for a future relationship with your clients.
Why Clients Look For Code Audits
Yes, of course, there’s a ton of information available on the internet, including all the information that a client could need regarding the basics of site performance and functionality. Most clients, however, either don’t have the time to do this research, or don’t have the technical expertise to make sense of it all.
When clients are coming to you asking about code audits and an assessment of their technology, they’re looking for your extensive knowledge that empowers you to look at their code, quickly parse

2 min read Iain Poulson
Development | kizu514.com | 6 days ago

Profile WordPress from the Command Line Using Blackfire.io and WP-CLI

Really helpful post showing how to use Blackfire.io to profile a POST action in the WordPress admin using WP-CLI.

Profile WordPress from the Command Line Using Blackfire.io and WP-CLI

Development | kizu514.com | 6 days ago

Last week I needed a way to use Blackfire.io to profile a POST action in the WordPress administration panel. I thought Blackfire.io would be able to handle POST the way Xdebug does: Generate a different cachegrind file for every PHP invocation; but alas, Blackfire.io currently only does static webpages, command line, or API calls. In theory I could have used “Copy-As-cURL in your Browser” (and believe me I tried) but in practice the WordPress admin is stateless (no $_SESSION), uses check_admin_referer() all over, making whatever POST action I was copying as cURL useless.
My solution was the following hack:
Where `wp` is WP-CLI, `eval-file` loads and executes a PHP file after loading WordPress, `–url=` is the the current site I want to profile on a WordPress multi-site install, and `test.php` is a script containing only the functionality I want to profile.
The profiler data gave some bogus results (Ie. a lot of WP-CLI bootstrapping gets flagged as slow) but at least this was better than nothing.
In the future, it would be great if Blackfire Companion had some sort of option to profile “the next action,” or to “start profiler on submit,” or something

2 min read Shawn Hooper
Development | shawnhooper.ca | 11 days ago

jQuery Tip: Submitting All Form Fields via AJAX to a REST Endpoint

If you're working with the REST API, here's a quick tip on how to submit all fields on an HTML to a REST endpoint using jQuery.ajax()

jQuery Tip: Submitting All Form Fields via AJAX to a REST Endpoint

Development | shawnhooper.ca | 11 days ago

While working with the WordPress REST API, I found I was writing jQuery AJAX calls with data objects that were getting longer and longer as I submitted more complex forms. I used to list out each form field that I wanted to submit, like this: jQuery.ajax({
url : '/wp-json/my-namespace/v1/my-endpoint/',
async : true,
dataType: 'json',
type : 'POST',
data : {
first_name: jQuery("#first_name").val(),
last_name: jQuery("#last_name").val(),
email: jQuery("#email").val(),
language_preference: jQuery("#language").val(),
country_code: jQuery("#country_code").val(),
phone_number: jQuery("#phone").val(),
start_date: jQuery("#start_date").val()
}
}).done(function() {
// Handle Success
}).fail(function(xhr, status, error) {
// Handle Failure
});
Then I discovered jQuery’s serialize function. You can use it to take each element in a form and serialize their values into a string. The resulting code now looks like:
jQuery.ajax({
url

1 min read David Bisset
Development | make.wordpress.org | Jan. 18, 2017

Theme Developer Handbook Released!

The WordPress Theme Developer Handbook has finally been released. Congrats to the almost 100 involved. Feedback welcomed.

Theme Developer Handbook Released!

Development | make.wordpress.org | Jan. 18, 2017

Weekly Meetings As well as discussing docs issues here on the blog, we use Slack for group communication.
Individual teams have their own regular meetings – you can find details of those in the sidebar.

11 min read Iain Poulson

Hooks, Line, and Sinker: WordPress’ New WP_Hook Class

WordPress 4.7 contained an overhaul of the hooks system in WordPress core. In our latest post Pete goes over some of the changes and the introduction of the WP_Hook class.

Hooks, Line, and Sinker: WordPress’ New WP_Hook Class

The hooks system is a central pillar of WordPress and with the 4.7 release a major overhaul of how it works was merged. The Trac ticket that initially raised an issue with the hooks system was logged over 6 years ago. After a few attempts, the updates finally made it into the 4.7 release and the venerable hooks system was overhauled. In this post I want to go over some of the technical changes and decisions that went into the new WP_Hook class. I’ll also go over some of the more interesting aspects of WordPress core development and look into what it takes to overhaul a major feature in WordPress core. For the purposes of this post I’m going to assume you know what the WordPress hooks system is (i.e. add_filter(), add_action(), apply_filters() and do_action()), and have a general idea of how it works. It would also be a good idea to read over the Make blog post that covers the changes.
What’s Changed?
One of the bigger changes introduced in WordPress 4.7 is that there is a new WP_Hook class. This new class is now used to handle all the internal hooks within WordPress core. It’s kind of a big deal. Pre-4.7, all the hook functions (add_filter() etc.) and logic were

11 min read Tom Zsomborgi
Development | kinsta.com | 29 days ago

A Developer's Introduction to the Twenty Seventeen Theme

This advanced tutorial shows how developers can get the most from the new WordPress default theme.

A Developer's Introduction to the Twenty Seventeen Theme

Development | kinsta.com | 29 days ago

With the release of WordPress 4.7, also came the new Twenty Seventeen theme. More than all its predecessors, the new default theme is highly customizable for both users and developers, it’s easy to use, and perfectly suitable for both personal and professional purposes. Moreover, it is great when it comes to site performance, as Brian explains in How to Score 100/100 in Google PageSpeed Insights with WordPress. The Twenty Seventeen theme provides the perfect dress for new amazing WordPress features like the customizable video header. Moreover, it provides theme specific features like front-page sections, SVG icons support, visible edit icons in the Customizer.
Much has already been written about Twenty Seventeen theme, so in this post I won’t make a new list of its cool features and functionalities. Rather, I will propose five small tutorials aiming to help developers and advanced users to get the most from the new WordPress default theme. Thanks to a child theme, we will:
A Child Theme to Enhance Twenty Seventeen Theme Functionalities
I will assume you are familiar with child theming in WordPress. If you’d need a refresher, take the time to have a read at our WordPress

10 min read Iain Poulson
Development | deliciousbrains.com | Jan. 17, 2017

Performance Best Practices in the HTTP/2 Era

It’s been an exciting couple of years for the web, with the widespread adoption of HTTP/2 and Let’s Encrypt. Not only is the web becoming faster and more secure, but it’s easier than ever for developers and site owners to implement performance and security best practices. In this article Ash takes a look at what’s new in HTTP/2 and what that means for performance best practices going into 2017.

Performance Best Practices in the HTTP/2 Era

Development | deliciousbrains.com | Jan. 17, 2017

Hypertext Transfer Protocol (HTTP) has been around since 1991, and we haven’t seen a major update since 1999, when HTTP/1.1 was released. During this time a lot of performance best practices have been passed around the web to try and circumvent some of the shortcomings in HTTP/1.1. Sites such as Pingdom and GTmetrix are the de facto when it comes to measuring a site’s performance and for the most part they’re excellent tools. However, some of their recommendations aren’t relevant in the era of HTTP/2.
What’s New?
Let’s take a look at what’s new in HTTP/2 and what that means for performance best practices going into 2017.
Fully Multiplexed
This is arguably the flagship feature of HTTP/2, which fixes one of the biggest problems with HTTP/1.1, namely head-of-line blocking. In layman’s terms it means that only one request can be outstanding on a connection at a time, resulting in latency. This is because the next request is only issued once the response to the current request has been received, resulting in a “queue” of assets to be downloaded from the server.
In an attempt to circumvent this issue a browser may open multiple TCP

13 min read David Bisset
Development | blog.sucuri.net | Jan. 19, 2017

Sucuri's WordPress Performance Optimization Guide

This guide is basic, but well rounded: it should help the thought about performance and which areas to focus on.

Sucuri's WordPress Performance Optimization Guide

Development | blog.sucuri.net | Jan. 19, 2017

Since launching our website performance testing tool we have been getting a lot of questions about how to improve the speed and performance of WordPress websites. Many website owners are not aware how slow their sites are, so we are excited to help shed some light on the matter. There are a number of different resources available to help you dive into the world of performance optimization. In this article, I want to create a proper foundation for any website owner to start thinking about performance optimization.
This basic guide should help website owners understand how to think about performance and which areas to focus on. This information is designed as a high-level overview, but it is structured so that if you were interested in more data, you can follow the links provided for additional research, details, and tutorials online that help you optimize your website at every layer.
Performance – Core Domains
First, we have to understand that website performance can be divided into three domains. These areas each affect the speed of your website in different ways.
The basic performance principles for each domain can be delineated as follows:
Networking: Reduce distances
Software:

3 min read David Bisset
Development | themeshaper.com | 25 days ago

Content Options in Jetpack 4.5

Content Options in JetPack are allowing users make small visual adjustments, like showing or hiding the author, date, featured images, and more.

Content Options in Jetpack 4.5

Development | themeshaper.com | 25 days ago

Now available through Jetpack, Content Options let users make small visual changes, like showing or hiding the author, date, featured images, and more. Last July, we introduced a new WordPress.com Customizer panel called Content Options, which gives users an easy way to make small visual modifications across their sites – no custom CSS needed.
Content Options supports four main features: Blog Display, Author Bio, Post Details, and Featured Images.
Content Options are now available to self-hosted WordPress sites with the latest version of Jetpack (4.5). Theme developers can add support for Content Options by following the Jetpack guide.
Let’s look at the main features of Content Options in more detail.
Blog Display
Users can choose between displaying the full content of each post or an excerpt on the blog and category, tag, and date archive pages, as well as search results.
Default Blog Display
If a theme displays either an excerpt or the full post depending on the post’s post format, theme developers can add a “Default” blog display option to let the theme keep its default blog display settings. For example, by default a theme might always displays posts

4 min read David Bisset
Development | rarst.net | Jan. 16, 2017

WordPress APIs Developer Satisfaction Survey Results

Andrey publishes results of a WordPress API survey from developers: their development experience with WordPress and how would they rate WordPress APIs.

WordPress APIs Developer Satisfaction Survey Results

Development | rarst.net | Jan. 16, 2017

When you spend a lot of time with it you get a distinct feel about WordPress developer experience. Some parts get job done and other are synonymous with trouble. Yet there is rarely organized conversation about this. Which WordPress APIs perform well and why? How do we get more to that point?
I had run WordPress APIs Developer Satisfaction survey to get some measured insights.
Responses
Survey asked two questions of participants:
Their development experience with WordPress — on the scale from 1–Novice to 5–Expert.
How would they rate WordPress APIs on the list of 30 — with possible ratings of: Horrible, Bad, Normal, Good, Excellent.
The results are summarized in following chart.
You can see raw responses and processed results as a spreadsheet. Thank you to everyone who participated!
Survey attracted responses from experienced developers. 62.7% rated their WordPress experience level 5/5 and 31.3% — 4/5.
The distribution of API ratings was:
40.3% positive (Good or Excellent)
33.1% Normal
26.6% negative (Bad or Horrible)
Familiarity
Most familiar
Admin Menus, Ajax (100%)
Admin Pages, Custom Post Types, Query (97%)
Custom Taxonomies, Database, Plugin (hooks),

6 min read Sallie Goetsch
Development | tommcfarlin.com | 25 days ago

Sharing Our Programming Problems (Is It Lipstick on a Pig?)

Tom McFarlin's suggestions on how to write an article about solving a programming problem--including your mistakes and how you fixed them.

Sharing Our Programming Problems (Is It Lipstick on a Pig?)

Development | tommcfarlin.com | 25 days ago

I was recently reading another programmer’s blog post on Coding skills you won’t learn in school in which he was specifically talking about Object Ownership. The topic of the blog post is good in and of itself, and if you’re into lower-level programming, such as C, and data structures, like trees, then it’s worth a read. But just as I was closing the tab, I came across the following paragraph at the bottom of his post:
Broken software, bad job offers: I”m sharing my mistakes so you can avoid them.
In short, it’s an invitation to join his mailing list (which is fine), but what really caught my eye was his call to action:
I’m sharing my mistakes.
For anyone who writes on the web – myself included – I think a lot of us do share our mistakes, but I couldn’t help but think about the way we go about doing it.
And it now has me re-thinking the approach to some of the posts that I’ve written and that I’ve yet to write.
Framing My Programming Problems
If there’s one thing that can be said about our industry, it’s that developers are opinionated. I don’t care what segment of the industry you’re in,