WordPress’ Missing Functionality (and How to Find It)

Did you know that 26% of all internet sites are run by WordPress? WordPress has established itself as a high-end system for blogging, and is now one of the most preferred content management systems for business websites.

People love that WordPress is flexible, secure and that multiple plugins can be installed to provide additional functionality—without having to code useful tools from scratch. But even though many WordPress users have documented and shared their common issues with the software, WordPress still lacks many things business owners and developers think should come standard with an install.

Here are a few requests for functionality missing in WordPress, and some workarounds for the meantime.

1. Ability to Duplicate Posts

Some websites have a standard format for posts or pages, and having to completely redo settings to get the desired output all over again can unnecessarily time consuming. As of now, this functionality on WordPress is limited to the use of a plugin: Duplicate Post.

Using the Duplicate Post plugin, you can “clone” a post or “create a new draft.” The latter copies the post and opens it in a new window for editing, while the former creates a new post entirely.

Using this plugin, you can also edit settings that let you do things like copy:

Original date;

Original status (draft, published, pending);

Original excerpt; original attachments;

Children of the original page;

Taxonomies/custom fields.

This plugin allows you to work with custom post types, as well. Unfortunately, it is incompatible with some plugins, and doesn’t necessarily call out these incompatibilities on the front end. In worst case scenarios, complications from using this plugin could crash your website—make sure you have a backup!

2. Bundle Settings and Plugins for New Installs

For WordPress developers that create multiple sites from scratch, it would be particularly helpful to have some functionality that combines all desired features into a file that you could upload to the site you’re building. Many WordPress websites have the same base features, especially if you work with clients in a similar industry. At any rate, there are bound to be some launch list plugins you use on a regular basis, and installing/activating them one by one is tedious.

The closest solution to this problem is WordPress Install Profiles plugins. Once installed and activated, Go to Plugins > Bulk Install Profiles.

This tool provides a default list of plugins, and you can add or remove plugins from the list. To add a new plugin, use the name on the plugin’s URL. Once you’re done, you can give the list profile a name, and download it to your computer.

To install on another website, you’ll need to have the WordPress Install Profiles plugin installed and activated on that site, then import the profile you want. This video tutorial shows this tool in action.

It’s important to understand that this plugin bundling solution hasn’t been updated in many years – there may be issues compatibility or security issues associated with it’s use.

3. Site Caching

Site caching helps make your websites load faster by storing the website processes in an HTML file to be loaded as needed. On that note, page load is a major factor for ranking, with regards to technical SEO. Developers wish that WordPress had site caching at its core to avoid server calls.

Though WordPress doesn’t have site caching built into the platform (despite many requests for its inclusion), there are many plugins that can initiate this process, like W3 Total Cache and WP Super Cache. Additionally, some WordPress hosting companies offer site caching (like Flywheel and WPEngine). Ultimately site caching offered through a web host is more efficient than these plugins, so if that’s an option, don’t install a caching plugin.

4. Built-in Form Builder

There are a lot of form builder plugins, but since most businesses use forms anyway, why not add this functionality to the WordPress core code?

While developers wait for this functionality missing in WordPress, try an all-purpose (and highly recommended) contact form plugin like Contact Form 7. Contact Form 7 can manage multiple contact forms, and you can easily customize form and email content with simple markup. Contact Form 7 supports Ajax-powered submitting, CAPTCHA, Akismet spam filtering, and other important security factors. This plugin is easy to set-up, flexible, offers customizable default messages, and easily-defined mail messages.

5. Improved Theming System

Although WordPress is a top-rated CMS, there is much to be improved on in terms of the theming system. Many developers call out it’s “sloppy code” and “disastrous mix of business and display logic”.

In the current version of WordPress [at the time of writing], template hierarchy does not take plugins into account. This means that if you have a plugin with a custom post type for movies (for example), the plugin has to override the template system, or create a workaround to provide a default template for displaying this custom post type.

With a code base as complex as WordPress, there’s always room to improve code practices, eliminate short codes, and fix template hierarchy for a more efficient base theme.

6. Custom User Permissions

Currently, WordPress has 5 user roles:

Administrator

Editor

Author

Contributor

Writer

Each of these roles has specific limits on tasks (called capabilities). Many developers argue that it would be better if WordPress could allow users to set, specify, or limit what each individual user can do, especially for a multi-author/user site.

The closest thing to overcoming this functionality missing in WordPress is the Advanced Access Manager plugin, which manages both frontend and backend access.

7. File Browsing Interface

There are thousands of plugins available, but not everything is a good fit for your website. In fact, certain plugins may cause your website to slow down, and need to be deleted.

Usually an error code helps identify this, but when it does not, you have to manually deactivate all files, then reactivate them one by one in the admin area to determine what is causing the error.

If the error (like the white screen of death!) does not allow access to the admin area, you have to use a File Transfer protocol (FTP) like Firezilla to backup all plugin files.

Besides fixing problems, having access to files directly from WordPress would make it easier for developers to quickly fix issues without needing cPanel/FTP access.

Conclusion

WordPress is a powerful platform on its own. The development of various plugins have extended its usefulness and make it even more powerful. Many of these plugins can help with functionality missing in WordPress, but developers are still holding out hope that many of the aforementioned issues will get built-in solutions.

Let’s make an open letter to the people behind WordPress – what is some functionality in WordPress that you’d like to see fixed in the core code?

Maddy Osman creates engaging content with SEO best practices for marketing thought leaders and agencies that have their hands full with clients and projects. Learn more about her process and experience on her website, www.The-Blogsmith.com and read her latest articles on Twitter: @MaddyOsman.
More articles by Maddy Osman

Picking up from where we left off, we need to start by creating some HTML to display the data we’ve stored in the $results variable. You can always modify this to suite your project. I’ll be using a table structure. <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <link href="styles/theme.css" rel="stylesheet"/> <title>PHP & MySQL</title>\ </head> <body> <div id="wrapper"> <table> <thead> <th>Title</th>...

In the first two parts of this series, we created the data layer that will hold the polling data and established methods for setting the variable values and reading from the database tables. In this part, we will build the methods that will write new polls and answers to the tables. The addPoll method adds a new record to the devdrive_polls table and returns a Boolean value that signals if the record was added successfully. function addPoll($aArgs) { // add a poll record $sql = "LOCK TABLES devdrive_polls...

A SQL injection is a common programming error the consequences of which can be really devastating. Many successful hacking attacks start when a hacker discovers a vulnerability that gives an opportunity to inject SQL code. When an SQL injection occurs, the structure of an SQL query is compromised and as a result you are left at the mercy of the potential hackers. If there is a vulnerability found, hackers can exploit it to gain access not only to your site and database but in extreme cases also to your corporate...

So far we've created some basic PHP pages and added some simple authentication. Today we're going to going to build on that by adding database support. This will allow us to add proper authentication to our application and start saving tasks. I should also note that I am currently writing PHP in-line and not using functions (or object orientated PHP) I will tidy this up in the next tutorial and spend more time explaining it and what it's benefits are. Last week ... Last week we installed XAMPP, so you should...

In our last session, we looked at the process of entering information on ad banners and ad clients, as well as generating ad activity reports. This week, we examine how to retrieve a random banner ad. We will also learn how to delete, activate and deactivate ads and clients. The getRandomAd() function retrieves a random ad by using the PHP rand() function. The function returns the ad’s primary key ID, client ID, title, URL and redirect path. The function also updates the activity table for this banner...

In our last PHP Ad Tracker lesson, we constructed the database tables for our ad banner application. Now we are ready to construct the data object that will hold the variables and functions that will display, add, edit and delete the data in those tables. Once we name all of the variables and functions, we will start applying the code to them. Variables: The data object class will hold two variables: one to hold the banner ad ID number from the ads table, and one to hold the database connection information....

In the previous lesson, we examined the basic functions of our banner ad tracking system, including the retrieval of records for both banner ads and advertisers. In this lesson, we will look at the functions responsible for generating reports and manipulating the data in the ads table and advertiser table. The getClientsList() function retrieves active client records and sorts them alphabetically by client name: function getClientsList() { // get clients from db $sql = "SELECT ad_client_id,...

Introduction ... I’m going to tell you a story, its about love, death and re-birth... Or something In the beginning there was a young html element called <table>. He had one purpose in life, to display data and life was good. But before long though he had been corrupted, his masters used him to define layout and structure. Things he was not originally designed to do, and so began the dark ages of web design. Then one day, there came a young knight called CSS, and with him he brought light to designers...

About

DeveloperDrive.com is a blog about web development from the makers of the popular web design blog WebdesignerDepot.com
Founded in 2011, we focus on the latest trends, tutorials, opinion articles as well as tips and tricks to empower our readers to become better web developers.