The Importance of “The Bigger Picture”

I’ve been spending the week before WordCamp US in New York City, adjusting to the time zone difference, meeting some clients and WordPress folks, and browsing around. As usual, discussions with smart entrepreneurs and developers are insightful, challenging the mind and providing various ideas for experimentation and validating different models.

Assumptions != Business strategy. Source:
Assumptions != Business strategy. Source:

Workflow and Operations

While chatting today with a few great guys over a hookah, we did cover some integrational aspects of a platform connecting to different systems, providing a wider suite of services and automating processes. We reviewed certain issues with support companies and plugin authors dealing with free support, and in the midst of the heated discussion, I got challenged by my friend Vova Feldman from Freemius to provide some support services and organize our process around that.

This got me thinking about my support experience in 4 different companies as a part of the development process, the fact that we do provide maintenance and retainer development services anyway, and I’m comfortable training staff or aligning priorities – but that’s not my priority.

“It’s operations after all – regardless of the business niche or the field, there is always a certain process to follow, a workflow to build, and a business plan to outline the business picture”.

While every business has its quirks and special bits, the majority of the day-to-day or even long-term planning goes around a certain business model.

The “Common Sense” Phenomenon

With the good amount of #wpdrama lately, there’s a lot going on between people who care a lot about the WordPress community, but disagree on the leadership questions, or the future of WordPress, or what happens with the platform as a whole: should we beat Wix and Squarespace, or tackle the Enterprise space; are we abandoning PHP 5.2 for good, and the like. Since I generally believe in good karma and the fact that WordPress has done a lot for the Open Source world, empowering bloggers and small business owners and providing a different perspective on publishing, I fully support the mantra of “democratizing publishing“:

I often hear people referring to “the other coast” as “it’s common sense, how come they won’t apply it?”. It’s especially funny while sitting on a table and 5 people coming up with different “common sense” problems against the future of WordPress, and then start arguing with one another by providing facts for or against a certain statement, in a “pros and cons” manner, depending on where they stand.

It’s a good popcorn material, especially on the first row, and after a couple of drinks.

So, What About the Future of WordPress?

But in the grand scheme of things, it’s a problem unrelated to the “common sense” – it is in fact the bigger picture that is lacking context; context that has been provided to some, but not publicly available to others. That makes it even worse when a ship is headed to a random direction, without any pointers, planning, or expectations (in the context of a random freelance or small business out there).

Talking about support, I met with the owners of a large hosting company in Europe and they openly admitted that the majority of their operations/planning talks are related to WordPress, and yet they have no idea what’s going on with the platform, what will happen in the next years, is there a danger of purchasing and closing the product and so forth. And these sound like a valid concern for someone who doesn’t spend the majority of their time in a somewhat inner circle, and some are still valid even for many of us.

That said, I find having a clear position on the long-term development of WordPress being paramount to the growth of the project and the community. This is the best way to resolve problems and drama – just as a jurisdictional law provides the framework to follow for being a good citizen, or the governmental planning for budget distribution and investment activities in the long run. People unhappy with the plan can discuss, argue, protest, provide a different point of view or leave the city/country if they disagree with plans related to the ecosystem, the educational problems, crisis the health sector, security policies in the city, privacy and what not.

We see that all the time in a state/country context, and the public and transparent long-term planning makes it possible without massive disruptions.

OK – What is Long-Term Planning Anyway?

Back to our support dilemma, the reason I don’t find support particularly amusing in this case is that it’s not rocket science. Bare in mind that I’m not trying to insult any of my friends working as support folks or running support businesses. It does however translate to operations and a good process related to the available budget and number of customers. That said, I rarely find a job amusing, unless it’s in the cancer research or aeronautics areas which are still unexplored or mystical and require a solid amount of know-how in so many different disciplines.

A Sample Super Brief Support Long-Term Business Plan

A business model canvas for planning and measuring
A business model canvas for planning and measuring

The business of support, for example, can contain various hidden ingredients and is full of different challenges related to hiring, different shifts, response times, communication channels, internal logistics, server access, best help desk software tools and what not. Just as the hosting business, web development, design, marketing, finances, law, and many more. But the core of it – in a standard support scenario of a customer asking for help for a product/service – there are several generic prerequisites:

  • a customer has already acquired a service/product
  • a customer needs a channel/way to reach out to support

Those are obviously the logical bits about why support is needed in the first place.

Then the logistics process could be as follows (again, purely as an example):

  • phone support is available from 9am – 9pm on business days, and 10am – 2pm on weekends
  • tickets are being responded in 12 business hours
  • a problem shouldn’t take more than 3 steps back-and-forth to solve
  • problems have priorities – low, standard, and urgent
  • urgent ones are to be resolved within an hour, and all resources are allocated there
  • standard problems are … (something something)
  • support includes X,Y,Z
  • X is resolved by first-level support staff
  • Y is resolved by second-level support staff
  • Z requires up to 48 hours for reaction due to (something), and is worked on by third-level support staff
  • anything other than X, Y, Z is not included in the support policy and is considered custom work/else

The financial/growth bit varies wildly, but say:

  • clients pay an average of $100 per support request
  • the current monthly number of requests is 200
  • requests grow by 2% on a month-to-month basis
  • 60% of the after-taxes revenue goes to salaries
  • 10% goes to tools
  • 30% goes to marketing or growth

The onboarding bit for clients may be as follows:

  • 30% of our clients found us on Google, 40% at WordCamps, 30% through partnerships with dev agencies
  • we can invest in Adwords (with the right ROI measuring after a few campaigns) in order to grow the first group
  • allocate more budget to attend more WordCamps in order to meet more customers
  • build a list/ask for recommendations/meet at events/work out a way to meet more agencies and provide support plans
  • churn rate for clients is X, and we want to grow by Y percent per year – so more planning on reducing 1 by optimizing process/pricing and investing in things for higher growth

The hiring process for new staff, example:

  • technical prerequisites for support levels 1, 2, 3 are X, Y, Z
  • we need to build a training program for topics A, B, C (assuming it’s being built or purchased through a learning platform that has most of it if it’s general)
  • hiring an experienced support rep costs $XXXX and requires 2 weeks of training
  • hiring a new support person will require 3 months of training through the platform X/some of our guys working here
  • a new recruit becomes useful in X months
  • total investment for a new hire before becoming active is $XXXXX
  • monthly cost is $YYY
  • average time of a person in a company is 1y, 3y, 5y (whatever it is)
  • a support person takes 30% – 40% of the profit allocated for support from salaries
  • based on the above – some formulas for number of clients / requests needed for a new higher, margin on top of salaries, how often new recruits should be trained, how to increase the retention etc

As I said earlier, all of those are hypothetical and could be applied in so many different ways. But based on my experience doing support as part of my development career in different companies and dozens of talks with other people, they all face similar problems, use similar tools, care about different metrics (margins, growth, customer satisfaction percentage etc), which means that they all rotate around a process.

And the “bigger picture” is in fact visualizing a process.

Processes that allow you to define workflows, measure, and execute better.

Why Are Processes and The Bigger Picture Important?

The good thing about processes is that, once being used to them, you can apply them in different aspects of life.

  1. There are different workflows and systems for learning new languages in a significantly lower amount of time by following a process. These depend on person’s experience and how each one’s brain functions, but there are different systems as well.
  2. You can start a new business, venture, startup or something else by knowing the concept of a process and looking for the bigger picture. The bigger picture would allow you organize your work load, measure activities, track and compare metrics, isolate specific problematic bits, and identify key problems or aspects to work on based on the above.
  3. This makes learning new things easier. Because you know how much more there is, what are the branches, and how they interact with each other.
  4. That said, knowing the bigger picture helps your development activity. Debugging a problem in a large system is impossible without context – it will simply cause regressions. And building a component for a platform without knowing how it plays with others is often ludicrous.
  5. It will help you build better specifications and roadmaps.
  6. It will make the project management easier. Plan for the deadline, and then allocate the work milestones backwards, with all the buffers, leaves, surprises that may occur.
  7. It will also make you a better consultant, given the fact that understanding the bigger picture of your clients’ businesses will provide you with the opportunity to analyze their model, suggest optimizations, and build a system / provide a service tailored to their needs – instead of a generic one for them to get used to.

Regardless of how you look into it, the bigger picture is essential. It gives you the end goal, the framework, the processes needed on a day-to-day. It sheds enough light in your work so that you can focus better, stop wandering around unsure what is wrong, and optimize the way you spend your time. It also allows you to be more effective, spend more time enjoying life, sleeping or having fun with friends and family, or earning more in order to invest in another venture, reduce costs, or build something new.

Understanding the “bigger picture” could make your life easier as well – even when planning a trip you can predict certain issues such as delayed flights due to bad weather, luggage problems due to expected purchases on site, visiting a crowded location or one with a terrible weather and so on. Being more informed and doing your due diligence in order to shape the bigger picture can save you a lot of time from problems in the long run by helping you plan properly and avoid unexpected surprises. That experience is adding up, saves you time in the long run, and provides you with a unique perspective or analytical thinking that could be applied in so many other areas of life.

Organized and reasonable people need “the bigger picture” in order to take informed decisions. Assumptions are subjective, waste time and are often incorrect, or could even cause conflicts.

Regardless of whether you are a student, an employee, a manager, a community leader, the global thinking is essential to your growth and personal and professional development.

The post The Importance of “The Bigger Picture” appeared first on Mario Peshev on WordPress Development.

How to Show User Registration Date in WordPress

Do you want to show the user registration date in WordPress? Often popular membership sites and forums display the user registration date on profile as “member since 2015”. In this article, we will cover how to show user registration date in WordPress.

Showing a the date of a user's registration in WordPress

Where and How You Want to Show User Registration Date?

Some of you may just want to display a user’s registration date in the admin columns of the Users page. This will give you a quick overview of when a user joined your website and allow you to sort by registration date.

Another usage scenario is to display a user’s registration date on the ‘Edit Profile’ page. This will allow any administrator and the user themselves to see when they joined your website.

Last but probably the most popular usage scenario is when you want to display the user registration date on their public profile on the front-end of your website.

Let’s take a look at how you can do all of them.

Adding Registered Date Column on Users Page in Admin Area

First thing you need to do is install and activate the Admin Columns plugin. Upon activation, you need to visit Settings » Admin Columns to configure the plugin.

Add registered column in users table

Under the admin columns tab, click on users and then click on add column button.

Next select ‘Registered” in the Type drop down menu and click on store updates button.

You can now visit the users screen where you will see a new column labeled ‘Registered’ showing the date when a user registered on your WordPress site.

Users table with registration date column

See what other things you can do to add and customize admin columns in WordPress.

Showing Registration Date Field in User Profile

For showing registration date on the edit profile page, you will need to upload a custom plugin to your website.

Simply create a new file on your computer using a text editor like Notepad and save it as membersince.php on your desktop.

Next open the file and paste the following code inside it.

Plugin Name: Member Since
Plugin URI:
Description: Adds registration date on edit user profile screen. 
Version:     1.0
Author:      WPBeginner

namespace ShowMemberSince;
add_action( 'plugins_loaded', 'ShowMemberSinceinit' );
 * Adding needed action hooks
function init(){
  foreach( array( 'show_user_profile', 'edit_user_profile' ) as $hook )
		add_action( $hook, 'ShowMemberSinceadd_custom_user_profile_fields', 10, 1 );
 * Output table
 * @param object $user User object
function add_custom_user_profile_fields( $user ){
	$table =
	<table class="form-table">
				<p>Member since: %2$s</p>
	$udata = get_userdata( $user-ID );
	$registered = $udata->user_registered;
		date( "M Y", strtotime( $registered ) )

Save your file and then upload it to your WordPress site.

Finally you can connect to your WordPress site using a FTP client and then go to /wp-content/plugins/ folder. Select the membersince.php file from your computer and then upload it.

Now you can go to your WordPress plugins page and activate this plugin on your website.

That’s all. Verify everything is working by editing a user profile on in your WordPress admin area, and you will see the user registration date.

Showing member registration date in WordPress user profile

Showing User Registration Date on Your Website

In this method, we will be using a simple shortcode to display any users registration date on the front-end of your WordPress site.

First you will need to add the following code in your theme’s functions.php file or in a site-specific plugin.

function wpb_user_registration_date($atts, $content = null ) { 

$userlogin = shortcode_atts( array(
'user' => FALSE,
), $atts );

$uname = $userlogin['user'];     

if ($uname!== FALSE) {             

$user = get_user_by( 'login', $uname );  
if ($user == false) { 

$message ='Sorry no such user found.'; 

} else { 

$udata = get_userdata( $user-ID );
$registered = $udata->user_registered;

$message =	'Member since: ' . date( "d F Y", strtotime( $registered ) );

} else { 

$message = 'Please provide a username.'; 


return $message; 


add_shortcode('membersince', 'wpb_user_registration_date');

Next, you can display a user’s registration date by simply using the shortcode like this:

[membersince user=peter]

Replace peter with the username that you want to show.

We hope this article helped you show registration date in WordPress user profiles. You may also want to see our tutorial on how to add additional user profile fields in WordPress registration.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Show User Registration Date in WordPress appeared first on WPBeginner.

Keyword density in a post-Panda world

The Yoast SEO plugin helps you to optimize your text for the keyword you want to be found for. In Yoast SEO 3.0 we made some big changes in our content analysis. In this post we’ll discuss the adaption of our keyword density in Yoast SEO and the possibility to optimize for multiple keywords in Yoast SEO Premium.

keyword stuffing is not a good idea in a post-Panda world

Keyword stuffing is not a great SEO strategy. You’ll be hit by Google Panda (or another update) in no time. Optimizing your text for specific keywords however, is something you definitely can do! This is the reason we have our focus keyword functionality in Yoast SEO. If you go to far though, over-optimization is around the corner. Over-optimization can be seriously dangerous, which is why our Yoast SEO plugin has some safeguards (in the form of red bullets) of doing so.

Keyword density check is much stricter now

Google prefers nice, readable texts. Your text should be well structured and attractively written. Texts with a high keyword density do not read nicely. They are, in fact, terrible to read!  Instead of using your focus keyword over and over, you should use synonyms if possible. Google actually recognizes synonyms to keywords now. With Google’s ability to recognize synonyms, optimizing for a single focus keyword becomes more and more silly.

We therefore decided to update the keyword density check in Yoast SEO. In the new Yoast SEO the keyword density for your post has to be between 0.5 and 2.5%. In the old analysis, you could get away with a keyword density of as high as 4.5%. We’ve come to the conclusion that that’s just too high in this post-Panda world!

If you want to check your old posts and make sure their keyword densities are within our new guideline, you can do so. When you upgrade you’ll see (or have seen) a notice about recalculating SEO scores. This is one of the things we recalculate at that point. This does mean that a post that was green before can now suddenly turn red… If you can’t find that notice, you can find the tool under SEO → Tools.

Multiple keywords

In Yoast SEO premium we have a new feature which will help you optimize for more than one focus keyword. You could use this in optimizing for two related keywords, allowing you to rank in Google on different keywords. You could also use this to optimize for two synonyms. Optimizing a post for two or three synonyms simultaneously while still requiring a 1% keyword density as a minimum, would lead to over-optimization and thus angry Pandas. This was one of the reasons to lower our “required” keyword density to 0.5%. We are actually working on some new functionality now, allowing you to treat synonyms and multiple keywords differently in our Content SEO analysis. As that has multiple implications that’ll take a while to get right.

Your SEO strategy should never focus on one single keyword. You really do need a proper keyword strategy. Sometimes it’s useful to try to make a single post or page rank for multiple (related) keywords. Perhaps you have a shop in ballet accessories and are writing a post about ballet shoes. But, you’d also like this post to rank for [dance shoes], as [dance shoes] is a more general (and common) search term. Our multiple keywords functionality is actually really well fitted to help you optimize for more than one keyword like this. It also allows you to focus on multiple angles and words, reducing the risk that you over-optimize your texts.

Until the end of the year, Yoast SEO Premium, Yoast_SEO_In_Icon_71_x2which has this multiple keywords functionality, costs only $69 per year for support, upgrades and updates.

How to Restore a WordPress Site with Just a Database Backup

We always recommend our users to make complete WordPress backups on a regular basis. But what if you unknowingly used one of the free plugins that only make database backups? In this article, we will show you how to restore a WordPress site with just a database backup. It will not be a complete restore, but we will show you how you can minimize the damage.

Recovering a WordPress site from a database backup alone

Getting Started

For the sake of this tutorial, we are assuming that you have your WordPress database backup in a zip file. If you do not have one yet, here is how to make a WordPress database backup manually.

If you are recovering from a bad experience with your web hosting provider, then it is probably the time to find a better host. We have hand picked some of the best WordPress hosting providers. These are the companies that we have worked with and trust with our own projects.

Also see: 7 Key Indicators when you should switch your WordPress hosting.

Preparing to Restore WordPress Database Backup

First, you will need to create a new database. Simply login to your cPanel account and click on MySQL Databases under the Database section.

MySQL databases in cPanel

Next, provide a name for your database and then click on create database button.

Creating new MySQL database

Now that you have created a database, you need a MySQL user who will be assigned all privileges to work on your newly created database.

On the same MySQL databases page, scroll down to MySQL users section and add a new user.

Adding a new MySQL user

Provide a username and a strong password for your database user and then click on create user button.

Next, you need to add this user to the MySQL database. Scroll down to ‘Add user to database’ section and select the user along with the database from the drop down menus and then click on the add button.

Adding a user to database

Your new database is now ready for WordPress.

Importing WordPress Database Backup

First you need to visit the cPanel dashbaord. Under the databases section, you need to click on phpMyAdmin.

Launching phpMyAdmin from cPanel

On then next step, select the database you created earlier on the phpMyAdmin page and then click on the Import button.

Now you need to click on the choose file button to upload your WordPress database backup file. Simply click on the go button at the bottom of the page to start importing.


You will see a success message when the import job is finished.

You have successfully imported your WordPress database. Now the next step is to install WordPress using your new database.

Restoring Your WordPress Site

For a manual restore of WordPress, you will need to manually install WordPress on your server. Visit our step by step WordPress installation tutorial and jump to the section ‘how to install WordPress using FTP’ for detailed instructions.

During the installation, when you reach ‘create a configuration file’ step. Enter the database name and user you created earlier.

Creating configuration file step during WordPress installation

You will now see a message that WordPress can connect to your database, and you can run the installation now.

Clicking on the install button will now show you the ‘Already Installed’ message.

Already installed message

That’s all you can now proceed to login to your WordPress site.

Restoration Troubleshooting

Since you do not have your old WordPress files, there will be several things missing. Some of them can be easily restored while others will be a bit difficult. We will go through all of them one by one.

1. Theme

Simply install a fresh copy of your old WordPress theme. If you made direct changes to your theme files, then all those changes will be gone.

You will have to go through theme options to set it up the way it was before.

2. Widgets

Widgets play an important role in WordPress themes. Luckily, they are stored in your WordPress database and switching to your old theme will restore some of your widgets.

You can always go to Appearance » Widgets to add and rearrange widgets in your sidebars.

Some WordPress plugins come with their own widgets. In order to use those widgets, you will first need to install and activate those plugins.

3. Permalinks

Your site’s permalink structure is also stored in database, and it will be automatically restored. However, if you are seeing 404 errors on front-end of your site, then you need to refresh permalink settings.

Simply go to Settings » Permalinks and click on the save changes button without changing anything. This will refresh your WordPress url structure.

4. Plugins

WordPress stores a record of your site’s active plugins. When you visit the plugins page for the first time, WordPress will show you a list of errors for each plugin that was in the database but is not installed anymore.

Deactivated plugins

Copy all the plugin names and start installing and activating them one by one.

Recovering Lost Images for your WordPress Site

Finding and replacing lost images on your website would be the trickiest part of the recovery. Depending on how much content and images you have, this can take a long time.

Unfortunately, there is no easy way around it. You will have to use a variety of tools to extract your images from different sources. Your chances of recovering all images are fairly low.

1. Look in Your Browser Caches

If you have recently lost your website, then you can look into your browser cache.

Firefox users can download CacheViewer2 add-on to easily find images from their website stored in browser cache.

Finding cached images in Firefox

You can just right click on an image and select save as from the menu.

Google Chrome users on Windows can try Chrome Cache Viewer.

Google Chrome users on Mac will be out of luck. We were unable to find any reasonable solution to browse, preview, and save image from Google Chrome cache on Mac.

2. Look for Your Images in Web Caches

There are several web services that keep cached versions of websites. You can start by looking for your images in Google’s image search. Simply enter your site’s URL and you will be able to see images Google found on your website.

Finding your images in Google Image search

You can click on an image to see a larger preview and save the image.

If you are restoring a much older site and can’t find images on Google or Bing, then you can try It is a non-profit organization that stores snapshots of websites for historical purposes.

Internet Archive Way Back Machine

Finding and Replacing Images on Your Website

If you did not have much content on your old site, then you can manually replace images in your posts. However, if you have a lot of content then finding and replacing images manually will be difficult.

Here is how you can easily locate broken images and replace them.

First, you need to install and activate the Broken Link Checker plugin. Upon activation, simply go to Tools » Broken Links Checker page. The plugin will show you a list of all broken links on your site.

Find and replace missing images in WordPress

Broken images are also considered broken links, so they will appear in the list as well. You can click on the link text column to sort the broken links list to show images first.

Now you can replace the images that you have recovered by editing posts. For the images that you were not able to recover, you can either try to recreate them or simply unlink them.

Bonus Tip

It will be hard to recover all your lost data. Your site may even show errors and affect user experience. This is why you see many experts strongly urging you to set up automatic backups.

We recommend using BackupBuddy. It is a premium WordPress backup plugin with easy restore options and the ability to automatically create and save your backups on the cloud.

That’s all, we hope this article helped you restore your WordPress site from database backup. You may also want to see our list of 13 vital tips and hacks to protect your WordPress admin area.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Restore a WordPress Site with Just a Database Backup appeared first on WPBeginner.

Stanko Metodiev’s First-time Experience Contributing Patches to WordPress Core

Stanko Metodiev, project manager for Devrix, shares his experience contributing a patch to WordPress core for the first time. While browsing Trac, Metodiev discovered a bug report with the menu customizer.

Although a patch was already attached to the ticket, it didn’t work, “The change didn’t fix the issue for me, so I submitted a new patch to adjust the size by a few more pixels,” Metodiev said.

The change was merged into core by WordPress lead developer, Helen Hou-Sandí.

Merged into Core
Merged into Core

It’s a small change but as I learned from my experience contributing to core, every merged patch is important no matter how small it is. Metodiev offers the following advice to new contributors, “Don’t be scared and don’t be shy. The core team is hospitable, especially for first timers and they will give guidance and advice if needed, so feel free to contribute patches!”

Since his experience with WordPress 4.3, Metodiev continues to contribute to core and has seven merged patches in WordPress 4.4. If you’re thinking about contributing patches to core but don’t know where to start, I highly encourage you to read the Core Contributor Handbook. In it you’ll find best practices, testing techniques, and how to submit patches to Trac.

Automattic Unveils Calypso, an Open Source WordPress Desktop Application for the Mac

In the last two years, Automattic has made significant improvements to and Jetpack. From managing plugins, themes, and other updates to New Dash and a revamped post editor. The individual changes represent iteration but when seen as a whole, show off an entirely new

Automattic has announced that the improvements its made in the last two years are part of an internal project named Calypso. It’s a WordPress Desktop application for the Mac and the code behind it is open source on GitHub.

The application is written entirely in JavaScript using the Node and React libraries. It’s also 100% reliant on APIs, including the REST API.

My Experience with Calypso

Over the weekend, I tested the application on my Macbook Pro. I initially thought it was inconsistent as there were many instances where a button opened a browser and took me outside the app. However, Calypso has gone through a number of updates and most of the inconsistencies have disappeared.


Most of what you’re able to accomplish in the WordPress backend you can do in the app including, editing posts, creating drafts, and moderating comments.

Calypso2Although there is the occasional Beep….Beep….Boop, the application is fast. Some of the pages within the app feel like they load faster than their browser counterparts. Some things still require action from within a browser such as applying updates. This doesn’t make sense considering the Jetpack Manage module is enabled.

When managing themes, I noticed at least two of the them don’t include the white bottom bar making the titles difficult to read. Also, the details link loads a browser window to the backend of the site I’m managing. It feels like an interruption instead of a seamless experience. There should be no reason to load a browser window except for previewing a post.

Managing Themes in Calypso

If you’re familiar with or use the post editor, the editor in Calypso is pretty much the same.

For years I’ve written posts with meta boxes on the right and getting used to them on the left will take a while. The editor has most of the features available in WordPress. For example, oEmbed support which many other third-party WordPress apps don’t have.

When the application is in full-screen mode, it looks great and blocks out distractions. In the most recent update however, the Preview button acts like a Save button and doesn’t show a preview of the post. This is likely a bug and will be fixed in a later version.

CalypsoPostEditingScreenCalypso is a great example of what’s possible with the WordPress REST API. There are still a few instances when clicking a button takes you outside the app but those will be fixed in future updates.

Overall, it’s convenient to have access to most of WordPress’ features without interacting with a browser. For those who use a Mac, I can easily see Calypso being the preferred way to interact and manage WordPress sites.

As Matt Mullenweg mentions in his post, there’s still a lot of work left to do, “This is a beginning, not an ending. (1.0 is the loneliest.) Better things are yet to come, as all of you dig in.” Calypso is available for free but you’ll need a account which is also free.

If you own a Mac and test drive Calypso, please share your experience with us in the comments.

Your Plugin Committers Should be Your Developers

After we started pushing back on the auto-reply stuff, a couple plugin devs said that they used their support accounts (like as their committer so that they could get email updates from the forums.

This is a terrible idea. It’s insecure and rather dangerous.

That means the support account is the one with write access to your plugin. And that means anyone with access to your group email (or your support tool) can click on reset password, get the password, change it, and blow up your plugin. Obviously that’s a major security issue. The only people who should have write access to your plugin should be people who know how to code and are responsible and reliable and trustworthy. And remember, people can go nutters in a company of any size and seek out revenge in weird ways. Limiting the damage they can do is your responsibility.

This also means that when we send you an email about your plugin, you may be accidentally sharing privileged information with people who have no business knowing these things. With a support account for a company of four people, it may be okay for everyone to know your plugin was pulled from the repository for a security hole. When you have a company of 300 and you use a system like ZenDesk (not to pick on them, but they are popular), now everyone knows. This may not seem like a big deal, but if one person tweets “OMG! Plugin FOO has a security hole!” then there’s a major risk that you’ve opened up the floodgates of potential hacks. Limiting the risks you put on your users is important.

Only allow your developer account(s) to have commit access to your plugin.

If you want one joint email-alias ( that forwards to everyone, that’s okay, but not great. Remember, if everyone has their OWN user account, then you can easily track who pushed what change to a system. If you’re only using SVN as your version control, it’s a good idea to make sure you know who did what. If you’re using Git or Mercurial or your own SVN to track the changes, then make sure that only responsible, reliable, people have access to that dev account. Again, remember that we’re talking about access to push code to (say) a million users.

Remember: Anyone listed as a developer has the ability to remove anyone else as a committer. So you really want to limit those users.

Make a separate account to handle support

Make a separate account ( that does whatever it needs to do. Then you can sign up for email alerts. Go to and scroll to the bottom where it says “Subscribe to Emails for this Plugin”:

Click "Subscribe to Emails for this Plugin" when logged in.

Click “Subscribe to Emails for this Plugin” when logged in.

Click the link and baboom, that account gets email alerts. You can do the same for reviews at if you want to catch the inevitable ‘this review should have been a support post’ threads.

Remember: If you sign a support account up for getting those emails, you should still disable auto-replies. Otherwise you’ll be generating a lot of unnecessary email every time someone replies to your threads and you may get caught as a spammer.

Add your support accounts as Contributors

Contributors are the people you list under the ‘Authors’ field on your readme. They do not have any commit access to a plugin. They can’t edit the code.

Example: “Automattic” has an account for Jetpack. That account can be a placeholder account. It can be a support account if you want to use it in the forums. It can be marked as a Contributor in the plugin’s readme.txt in order to get special markings in the forums for replies from that account for that plugin.

The other accounts should be individual accounts, belonging to the devs, and preferably using their company email addresses. This way, if the organization changes, an individual leaves, etc, the email address still goes to the company and the plugin can be recovered, if necessary.

Back on Jetpack, there are over 70 people listed as ‘authors.’ They all get that happy plugin author green lozenge in their forum replies and they can officially help people without you worrying they’ll miss a semi-colon and take down 20 thousand users with a bad push of code.

Remember: Anyone listed as an author is going to get that green lozenge. If you don’t want people representing you, credit them in the readme but remove them as an author.

TimThumb EOL

If you’re using (or thinking of using) TimThumb in the repository, please read.

TimThumb has reached it’s end of life. As such, we strongly recommend you stop using it in your plugins as soon as possible. It’s not supported, it’s not maintained, and that means the 130ish of you who have it are going to have a bad day if another exploit is found because we will close your plugins.

Please note, we’re not retroactively banning it from the repository at this time, though that may change. Right now, we’re asking everyone to take the first step and find an alternative. All new plugins are being required to use something else.

In general, please keep an eye on your third party libraries. If they’re no longer supported, look for a replacement. If they’re out of date, update your plugins. This is the best way to keep your code secure and avoid those awful emails about how we closed your plugin.

AutoReply Sucks

Did you know we have no auto-replies at all sent from WordPress plugins?

Every single email, even the predefined ones, are written and picked and sent by hand. Even the one that goes out to all 22,573 user accounts with commit access to a plugin.

But you know what happens when we send out that nice reminder to test on WordPress 4.4?

We get a few hundred auto-replies from support systems.


Please change the address on your forums account to one that does not go to an automated support system. We need to be able to communicate directly with plugin authors, and having automated responses don’t help us much.

THIS IS A REQUIREMENT. If we continue to receive automated responses from your support system, we will have to shut down your plugin and remove it from the directory.

We require that we have the ability to contact you about updates on a regular basis. If we also get automated responses, then this eats up our time, and is a problem for us.

Please do whatever is necessary to STOP these automated responses. We would prefer that you use an email address on the forums that goes to actual people, not into a support system. Our forums send emails for all sorts of reasons, and automated responses eat up our bandwidth needlessly, since they don’t go anywhere.

Basically it’s this: If we can’t get in touch with you, we can’t host your plugin.

Please whitelist and please exclude us from your auto-replies.

(A quick note – A personal autoreply, like “I’m at a wedding and won’t be back until December 3rd” is not the same thing. Those are fine!)

Two-Step Verification Setup Workflow

Recently I’ve been involved in developing the Two-factor authentication plugin for WordPress. As part of research of the two step verification setup process I’ve created these screenshots.

Google 2-Step Verification Setup

Sign-in Overview OTP overview OTP Reset App Password Overview App Password Details U2F Key Overview U2F Add Key U2F Add Key in Progress

Never lose a single business lead or enquiry again! Get my latest plugin Storage for Contact Form 7 now!

Buy now for only $18 →

WordPress Freelancer Adam Soucie on the Dangers of Accepting Credit Cards

If you’re running or opening a new WordPress business, you should read Adam Soucie’s warning on the dangers of accepting credit cards. Soucie, a WordPress Developer based in Orlando, Florida describes what happened after working with a client that claimed to be hearing disabled.

Soucie went through the usual process of sending over a contract, bringing in a designer, discussing scope, and sending over an invoice. The client then claimed to be in the hospital and requested help to pay for one of the contractors involved in the project because he didn’t accept credit cards. According to Soucie, this should have been the red flag:

But I ignored it because I’ve also been a trusting person who is sympathetic to people with disabilities.  Plus I figured I had proof of everything, so I’d be protected.  I was so wrong.

To make a long story short, the ‘client’ was paying with stolen credit cards and the other contractor was in on the scam.  I discovered the scam when they started getting pushy about the contractor receiving his payments.  When leaving to make the final payment, I got a call from the person whose credit card info was stolen.  I reached out to my ‘client’ and she had disappeared.

As the merchant, Soucie was liable for the transaction. After not receiving help from the FBI Cyber Crimes division and the credit card companies, QuickBooks, Soucie’s payment processor, went after him for the total amount of $10,000. He was able to get the amount slightly reduced after working with QuickBooks. What looked like an awesome project quickly turned into a nightmare.

I highly encourage you to read his article as it includes tips to protect yourself and why you shouldn’t be too trusting. What advice do you have for freelancers who accept credit card payments? What signs should freelancers look for to avoid fraudulent scams like this one?

Don’t Call Yourself a Developer If You Don’t Code

For some unknown reason, the number of “WordPress Developers” out there is probably nearing the number of Java developers, despite of the fact that all Java developers do program extensively whilst the WordPress developers far too often have no idea what’s going on behind the admin panel.

I do conduct interviews on a weekly basis for various reasons, and over the past couple of years I’ve probably shortlisted over 500 applications for WordPress development.

Existing programming solutions. Via
Existing programming solutions. Via

A tiny chunk of them had exposure to code at all. The rest of them usually fall in one of the following categories:

  • WordPress installers – setting up WP websites and installing themes
  • WordPress administrators – people who use theme option panels from premium themes and a multitude of plugins to “build” a website
  • Virtual assistants
  • Bloggers
  • People who have in fact edited some HTML/CSS to align a menu or hide an element

Developers Actually Code

According to Wikipedia, “Software Development” is:

Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product. The term refers to a process of writing and maintaining the source code, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process.

There is no ambiguity here. At all.

Programming, writing code, building products, maintaining code and bug fixing. None of those means “installing a platform with a few clicks” or “customizing options built by other programmers”.

I used to find that amusing over the first dozen or two interviews or applications. Nowadays I do receive submissions by various people, including people with little to no exposure to computer use or even “developers” who don’t own a computer (but rather use a smartphone to change themes, write short posts and post statuses on Facebook).

Most people suffer from the Dunning-Kruger effect and know nothing, hence claim to be developers. But far too often this is not the case.

I stumbled upon a tweet that was defined in a proper manner:

Running a website could be WordPress administration or operation, or a number of different terms that have nothing to do with web development.

This wouldn’t have been a major problem unless it affected the entire industry:

  • Millions of amateurs selling WordPress services claiming to do what they don’t, in fact, do
  • Various clients looking for expert programmers and getting lost in the pool of amateurs
  • New clients receiving ridiculously low price offers from “super admins” which leads to huge gaps when receiving an offer for a custom solution on top of WordPress
  • Large customers picking another platform due to disappointment by their experience with “WordPress developers” (or generally being unable to find any decent ones)
  • Amateurs not knowing what “development” entails and lacking the scope of work a developer deals with on a day-to-day basis
  • WordPress customers being hacked, suffering from slow page load times and broken websites
  • WordPress plugin repository filled in with plugins causing various issues related to performance, compatibility, broken UI and more
  • I’m not even going to touch on the premium WP themes

I’ve written about that plenty of times in different context:

I wrote the definitive guide of the skills taught at a Computer Science specialty that are relevant to WordPress development at WP Elevation:

Building a Web Product Requires a Set of Skills
Building a Web Product Requires a Set of Skills

My guide includes a list of skills such as: Computer Architectures, Operating Systems, Networks, Databases, Programming Languages, Data Structures, Algorithms and more that are used by developers while building a web solution in order to build a robust, scalable and reliable end product for the right stack while considering other aspects related to building, operating and running a web solution.

So, if you’re someone who offers “WordPress development” but don’t code, and you haven’t read about the different layers under WordPress itself, please change your title to something relevant to your skills and service offering. Also, in order to evolve and start offering valuable solutions, allocate some time and start reading – extensively – about everything that happens from the hardware through the network layers to the databases and programming languages.

Installing a website itself is of no service to most clients who can accomplish the same in a couple of hours with a cheap host providing a detailed guide on their website. Providing real value and investing your relevant skills or partnering with a technical expert would be far more rewarding to you and your customers, and allow you to step up and take on great custom projects for large businesses.

The post Don’t Call Yourself a Developer If You Don’t Code appeared first on Mario Peshev on WordPress Development.

A Field Guide to Major Features in WordPress 4.4

The WordPress 4.4 field guide is available and covers all of the major features in WordPress 4.4. The guide explains what the features are and more specifically, links to posts that explain how they work.

WordPress 4.4: Field Guide

While it doesn’t cover every single change, it gives developers and site maintainers an opportunity to learn and understand the major features before WordPress 4.4’s release.

If you haven’t tested your plugins and themes with WordPress 4.4, now is a great time to do so. In testing WordPress 4.4 betas on WP Tavern, I discovered two broken plugins. I notified the developers and they quickly released an update addressing the issues.

WordPress 4.4 is scheduled for release in December.

The site structure of a growing blog

It is never easy to set up a new blog. It can take quite some time to get picked up by the search engines. Nevertheless, as your blog starts to grow, you’ll probably face new SEO problems. In the upcoming weeks, I’ll discuss some of the difficulties you might encounter as your blog really starts to grow. How do you come up with new content? Should your keyword strategy be adapted as your blog gets bigger? How do you manage different authors? And how will you keep the structure of your blog in shape? In this post, I’ll discuss some techniques to improve the structure of a growing blog.

Managing the structure a growing blog

Why is structure important for SEO?

Maintaining a solid structure of your website should be an important part of your SEO strategy (read our post about site structure and about cleaning up your site structure for more info). A decent site structure helps Google understand your site and makes sure you don’t compete with your own content when trying to rank in search engines.  The structure of your blog will be fairly easy to maintain as long as your blog is small. As your blog gets bigger, you’ll need to do more in order to keep the structure of your blog optimal.

1. Evaluate your categories

As your blog is growing, it could well be that you’re blogging about one thing far more than other things. That’s just the way blogging goes. You should therefore critically evaluate your categories every few months, asking yourself whether or not one category is growing much faster than another category. If some parts of your blog are growing much faster than other parts, you could divide such a category in two separate categories.

Imagine yourself having an Italian food blog for example with the categories pasta, salads, meat dishes and desserts. You should critically evaluate these categories every now and then. It could well be that the category pasta becomes a really large category, because you love spaghetti so much. Perhaps you could make a separate spaghetti category, if you tend to write a lot of spaghetti posts. You would then have five categories: pasta, spaghetti, meat dishes and desserts.

2. Add sub categories and tags

If you have lots and lots of posts, it becomes harder to make sure you link to (all) similar content. There will be too many posts to choose from. As a result of that, a lot of blog posts will ‘get lost’ in a structure that is too flat. There will be few links to these posts, making it hard to be found by both your audience and Google!

By making subcategories, you create an extra layer and a more hierarchical structure. This will make your site easier to be understood by Google. Moreover, there will be fewer posts within each group. In a relatively small group of posts, it will be more likely that every post will receive a link from a new blogpost once in a while, making sure that post won’t get lost.

Tags could also make sure a post gets enough links. Don’t create too many tags, though. Each tag group should have at least three posts. Evaluate your tag structure on a regular basis and make sure you add new tags if you’re blogging about new topics.

3. Add pagination

People don’t want to click through an endless collection of posts. Suppose your blog has 1,000 articles and you’re listing 10 articles per page: that would give you a hundred archive pages. If you would link these pages just by adding an Older (Previous) posts link and a Newer (Next) posts link, that would mean you would have to click 99 times to get to the last page. There is no need to make it that hard.

By adding a numbered pagination, linking for instance the first, second, third, tenth, twentieth, thirtieth, up to the ninetieth and last page, you reduce the number of clicks. Jumping every 20 pages will already lower that number to 10, of course. Pagination will allow your users to click through your archive in a rather simple way.

4. Get rid of outdated content

If articles aren’t up to date anymore and are hardly read by anyone, you could decide to delete them all together. This will clean up your site nicely! Be careful though, because deleting pages could lead to a lot of 404’s. Read Joost’s post about properly deleting a post, before you clean up your old content!

Conclusion: stay on top!

If your blog is growing, you have to analyze the structure of your blog on a very regular basis. Make sure your categories, subcategories and tags are well organized. As your blog is growing, the structure will change and evolve. As long as you stay on top, that structure will remain SEO-friendly!

Making Better Banners for your Plugins

With the plugin directory now being converted to use language packs, it’s more and more likely that your plugin will be translated by others and available in our various international plugin directories. But banners are kind of a problem for a few of those directories.

Compare the Hebrew plugin directory to the English plugin directory. One thing you’ll probably notice right away is that the icons are on the other side. Hebrew is a Right to Left language, so the design for it is flipped. Click through to any of the plugin and you’ll notice something else: The banner image is the same, but the title is now on the opposite side of the page.

For some plugins, especially those who designed banners thinking that the title was in a fixed place, this can present a problem.

Probably the best solution is simply to make your banner work with either method. Compare Ninja Forms old banner vs. their new banner:





For another example, take a look at Yoast’s SEO plugin.





It’s an interesting stylistic difference, but the point is that they simply made the banner work for either case of title positioning. That’s honestly the best solution, IMO, because it also eliminates something from the banner that shouldn’t be there to begin with: Text.

Text in images is bad. It’s non-accessible. Screen-readers can’t read it. It’s non-translatable to other languages. It’s a pain. Avoid it.

However, sometimes people really like their designs. The design of a banner says a lot about the plugin, even though it’s just a big image. Some authors may want to be able to adjust their banner designs to adapt to the RTL language pages.

For this reason, a couple of weeks ago, we added RTL support to the banners. I’ve been holding off on announcing this here to make sure it worked okay, and it appears to work fine, so, here’s the announcement. :)

How to do it? There’s no magic to it. Just make your new banner, and name it with -rtl at the end of the name. Banner images live in the same directory as always, /assets. Nothing else changes.

An example if you want to see how this looks in the SVN:

And how it looks on the plugin page:



Strictly speaking, the banner on Pluginception didn’t need to be reversed. I only did so as a demonstration, to show you how it’s done. Nothing tricky to it.

In the future, adding support for specific locales may or may not happen. It is undecided if it is necessary, because, frankly, there’s a LOT of locales we have. Who wants to make individual banner images for 80+ languages? Best to just leave the text out of the banner instead.

Note that while the RTL banners are now active for, they have not yet made their way into core, so the banners won’t yet show up properly in WordPress installations. Working on it. :)

Local SEO: using our store locator

In our previous post about local SEO, we explained how to set up local landing pages for your site. In this post we’re going to highlight one of the other features of our Local SEO plugin: the store locator.

How to use the store locator of the Yoast Local SEO plugin

A helpful tool for your visitors

The store locator isn’t something that will directly help your site’s SEO. It’s mostly a helpful tool for your visitors. It allows them to search the nearest store to their address and plan their route to the store. For example, they might be looking for an Apple Store within 10 km from Chicago:

what a store locator looks like

You can expand your locations overview page (we described how to set this page up in our previous post) with the store locator to give your users a better experience. And maybe even more important: to let them find your store more easily, so they can directly contact or visit you!

How to use the store locator

The store locator can be inserted on any page using the following shortcode: [wpseo_storelocator]. For more options please take a look at our knowledge base.


Using the store locator for your business directory

Using our plugin isn’t limited to only list your own business or businesses. When you own a business directory to list (for example all the dentists in Los Angeles or car dealers in Arizona) you can still use our plugin!

To add these locations you can just enter them one by one, or import them, After this, you can add the store locator to the (category) pages you want.

A small remark: of course it may be harder to rank in Local Search when you don’t own those places, but it still would be a very user friendly feature for your visitors.

Want to play?

Not sure how to use this, or just curious what it looks like in real life and how it works? Please go ahead and try it on our demo website.

If you feel like something is missing in our store locator: please leave your suggestions in the comments!

How to Use SMTP Server to Send WordPress Emails

Are you having trouble receiving or sending emails from your WordPress site? One solution for that is to use third party email services such as Mandrill. However, these services will cost you extra money. In this article, we will show you how to use a SMTP server to send WordPress emails.

Sending WordPress emails using SMTP server

The Problem with WordPress Emails

WordPress uses mail function in PHP to send emails. Many shared hosting providers do not have this function configured properly, or they have disabled it entirely to avoid abuse. In either case, your WordPress emails will not be delivered.

The alternate solution is to use a third party email service to send out your emails. You can use services like Mandrill, Google Apps for work, or Sendgrid.

You will have to pay for your account, and the cost will vary depending on how many users/accounts you add or the number of emails you send. See our tutorial on how to fix WordPress not sending email issue.

What if we told you that there is another option, and most likely you have already paid for it?

Using Email Accounts by Your Host

Most WordPress hosting providers offer email service for each domain you host with them. This means you can create email accounts with your own domain name like

First you will need to create an email account. For the sake of this example, we will show you how to create an email account in cPanel. Your hosting service provider may use some other account management system, but the basic process is the same on most hosting services.

Log into your hosting account, and click on email accounts under the mail section.

Email accounts

This will show you a simple form where you need to fill out information required to create your email account.

Since we will be using this account to send WordPress emails. We recommend that you create an email account like Replace with your own domain name.

Creating email account in cPanel

After creating your email account, you are now ready to use it in WordPress. But before you do that, you will need the following information from your hosting service provider.

1. SMTP Host for your email address.
2. SMTP Port for secure login

You can check the support section on your host’s website for this information. Most likely there will be an article providing this information. If you don’t find it, then you should contact the hosting support to request this information.

Using Your Branded Email Address in WordPress

You will now need to install and activate the WP Mail SMTP plugin. Upon activation, you need to visit Settings » Email to configure the plugin settings.

Setting up WordPress to use your SMTP server

First you need to enter the email address you just created. After that you can add a from name.

If you do not add a from name, then the plugin will use the default WordPress.

Make sure that the ‘Send all WordPress emails via SMTP’ option is checked.

Under the SMTP options section, fill out your SMTP host and port information you obtained from your hosting provider. For encryption method, you need to select SSL for encryption.

Since we are using an SMTP server, the plugin will need your login credentials to send out emails. Under the authentication section, check ‘Yes: Use SMTP authentication.’ option and provide your SMTP login details.

Next, click on the save changes button to store your settings. The settings page will now reload, and you will see the ‘Settings saved’ message.

Testing Your SMTP Settings

WP Mail SMTP comes with an email testing tool. After saving your settings, scroll down to the bottom of the page and enter your email address.

Sending test email

WP Mail SMTP will send a test message to the email address you provided. If you do not receive the test message, then this means that WP Mail SMTP is not configured properly.

Troubleshooting WordPress Email Issues

The most common reason for errors in sending emails using SMTP is incorrect SMTP host or port. Make sure that you are entering the correct host and port settings provided by your hosting provider.

Make sure that you select the correct encryption method. Usually SSL works on most environments but check it with your web host if your emails are not getting delivered.

Pros and Cons of Using Your Web Host’s Mail Servers for WordPress Emails

First and the most obvious advantage is that you can use your own branded email address for outgoing emails in WordPress.

Another advantage is that you have already paid for this service when signing up for your hosting account. You will not need to pay any extra money for sending and recieving emails.

However, some WordPress hosting providers enforce limitations on outgoing emails. This is why we don’t recommend using WordPress to send newsletter emails.

Another common problem with shared hosting providers is that their mail servers can be quite unreliable at times. If you notice delays in email delivery, then you should consider using third party email services like Google Apps for Work, Mandrill, or SendGrid.

We hope this article helped you learn how to use SMTP server to send WordPress emails. You may also want to see our case study on how we increased our email subscribers by 600% with OptinMonster.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Use SMTP Server to Send WordPress Emails appeared first on WPBeginner.

Tis the Season for Snow

Every year about this time, we get people submitting plugins to make it snow on a website.

Besides the fact that making it snow can make your site inaccessible to people with visual issues, we actually have a lot of snow plugins.

No, we have a blizzard of them.

And unless your brand new ‘snow’ plugin does something in a magically new and different way, we’re not going to accept it.

We’re all about innovation and creating new ways to solve problems. That’s why we allow so many similar plugins in the first place. There are a hundred ways around design decisions, and we love how people create their solutions. There just aren’t that many ways to make it snow, though, and in the last two years, I haven’t seen a single new ‘snow’ plugin that didn’t do things another one already did.

If you’re going to submit a snow plugin, please make sure it’s significantly different from the ones we already have. Make sure it does something in a cool way.

To help you with that, here’s a randomly ordered list of only some of the plugins that make it snow. I picked the top 21. There are more.

If you want to code this just for your own coding exercise, awesome. But for now, if it’s not terribly different than what we already have, please put it on Github.

Creative Commons Licenses in the Plugin Directory

Back in February, the Creative Commons organization began taking steps to introduce compatibility between their licenses and the GPL. At that time, we took notice and started discussing the problems we’ve had with CC licenses in the directory in the past.

Part of the problem is that the Creative Commons licenses are so fragmented. It’s very much a choose-your-own adventure landscape for CC licenses, and many people don’t understand licensing very well in the first place (it can be confusing, I admit).

Since we require everything in our directory to be GPL Compatible, then it’s something we have to constantly scan for when even an accidental violation occurs.

Then, things became even more interesting in March, when silently changed their compatibility page to state that CC-BY 4.0 was now considered compatible with all versions of the GPL. So, at that time, we started trying to ignore that particular case. It isn’t easy, because a lot of CC licensed code is licensed under version 3.0 of their licenses, which is not GPL Compatible. And the issue of CC-BY-SA was still very much up in the air.

However, last month, Creative Commons finally stepped up. CC-BY-SA 4.0 is now compatible with the GPLv3.

Accordingly, you can now use CC-BY 4.0 and CC-BY-SA 4.0 licensed code or images or anything else in the plugin and theme directories.

A few points of note:

  • Only version 4.0 is acceptable. Check before using third party code which may still be licensed using 3.0.
  • Only the Attribution (BY) and Share-Alike (SA) clauses are acceptable. The No-Derivs (ND) and Non-Commercial (NC) clauses are definitely not GPL-Compatible. Code or images using them cannot be used.
  • If the code you’re wanting to use has the Share-Alike (SA) clause, then it is only compatible with the GPLv3, not GPLv2. This means your plugin and all the other code in it must be licensed under the GPLv3. The GPLv2 is not compatible with the GPLv3.

The license compatibility page does mention that the compatibility is one-way. This is important, but probably not relevant for the most common cases we’re concerned with. The cases for plugins is likely that they want to use CC licensed code such as javascripts. The cases for themes is likely that they want to use images or other artistic work in the themes. Well, now you can do that. Just mention in the readme.txt for either where the work you’re using was obtained from, and the license that work is available under. Since you’re not relicensing the work, then one-way compatibility is not really an issue.

If you need it in simpler terms:

  • CC0 – This is equivalent to a public domain declaration, essentially, compatible with everything, and we have always allowed it.
  • CC-BY 4.0 – Compatible with any version of the GPL.
  • CC-BY-SA 4.0 – Compatible with the GPLv3 only.
  • Previous versions of CC licenses (like 3.0) – not compatible.
  • Any CC license containing “NC” or “ND” terms – not compatible.

So, if you have a favorite library or image that we’ve had to push back on you in the past for, take another look at it. The license might be compatible now. Also, if something is CC 3.0, consider asking the author of the work to bump that up to 4.0, so you can use it. It’s nicer for everybody to have more things out there compatible with each other.

(Note: everything above applies to themes too. I just don’t want to write two posts. :) )

Justin Tadlock Explains Taxonomy Term Meta

While developers celebrate the first half of the WordPress REST API being merged into WordPress, there’s also another reason to celebrate. Six years in the making, taxonomy term meta will be available in WordPress 4.4.

If you’re like me and don’t have a clue as to what taxonomy term meta is, I highly encourage you to read Justin Tadlock’s explanation and tutorial. In the post, Tadlock explains why term meta is significant and some of the possibilities it affords developers.

After reading through the tutorial, I have a better understanding as to why developers are so excited. Not only does it create more opportunities to extend WordPress, but does so in a standard and expected way. Previous to WordPress 4.4, developers had to rely on work-arounds to add term meta to taxonomies.

Let us know what you think of the tutorial and how you plan to take advantage of this feature once WordPress 4.4 is released.

How Non-Developers Can Contribute to and Influence WordPress Core Development

If you don’t consider yourself a developer and want to contribute to WordPress core, Hugh Lashbrooke’s guide offers a few different techniques. The guide explains how and where to provide feedback and how important it is to beta test new features.

Over the years, I’ve used WP Tavern to advocate for and against features in WordPress. One of the best pieces of advice I can give non-developers is to organize your thoughts or stance on a specific feature or direction and publish them on your site. This allows you to control the conversation and gives you plenty of space to explain your perspective.

A great example is this post asking for help to add comment moderation approval notifications to WordPress. I explain why it’s needed with a link to the ticket I created to keep track of the conversation. I prefer to write about potential features and based on feedback, I’ll either create a trac ticket myself or someone will do it for me with a link to the post.

The Tavern is in the dashboard and is read by a large audience, including core developers. However, thanks to social media, a well constructed post with solid points will make the rounds on Twitter, Facebook, and within WordPress sub-communities.

It’s those posts and associated comments that serve as one of many foundations for change in WordPress without touching a line of code. Keep in mind that there’s no guarantee you’ll be able to directly influence WordPress core development with words alone, but respectful, in-depth conversations with differing opinions and perspectives are an important part of the community regardless.

93Digital Publishes WordPress Time Machine

93Digital, a London-based WordPress development agency, has published a WordPress time machine. The page features a timeline where visitors can browse every major version of WordPress released since 1.0. Versions are displayed in a horizontal timeline format with fancy animations when hovered over.

WordPress Time Machine
WordPress Time Machine

Unfortunately, the animations are more distracting than they are useful and add a small delay when viewing images. The full-size images are not large enough and appear blurry when clicked on. If 93Digital removes the animations and uses larger images, the timeline would be a nice way to visually browse through WordPress’ history.

If you’d like to see clear, large images of past WordPress releases and learn about some of the key features in each version, I recommend reading WordPress through the ages. Through the images, you can see the natural progression of features, designs, and layouts WordPress has gone through during the past 10 years.

WordPress 4.4 Streamlines Content Sharing

For the last six years, WordPress has been an oEmbed consumer, adding support for services with nearly every major release since 2.9. In WordPress 4.4, it switches roles and is an oEmbed provider.

Proposed by Pascal Birchler earlier this year, oEmbeds for posts streamlines how they’re shared across the web. Here’s an example of what an oEmbedded post looks like.

Content is displayed in an iFrame with a link to comments, a sharing button, and a link to the main page the article is hosted on. The continue reading link takes visitors to the source site. In the last three months, Birchler and members of the core team have worked hard to make sure embedded content is secure.

  • The iFrames use the sandbox attribute to enable extra restrictions on content that can appear in the inline frame.
  • The host and the embedded site communicate via postMessage to allow resizing and clicking on links safely

oEmbed discovery is turned on by default in WordPress 4.4. Too disable it, you’ll need install and activate the Disable Embeds plugin. The plugin does the following:

  • Prevents others from embedding your site.
  • Prevents you from embedding other non-whitelisted sites.
  • Disables all JavaScript

Some people are requesting that an option be added to disable oEmbeds rather than installing a plugin. In response to requests, Aaron Jorbin, WordPress core contributor, reemphasized WordPress’ philosophy on adding options.

Every time you give a user an option, you are asking them to make a decision. When a user doesn’t care or understand the option this ultimately leads to frustration. As developers we sometimes feel that providing options for everything is a good thing, you can never have too many choices, right?

Ultimately these choices end up being technical ones, choices that the average end-user has no interest in. It’s our duty as developers to make smart design decisions and avoid putting the weight of technical choices on our end users.

Birchler also responded saying, “The new embed functionality was developed with the majority of users in mind.” One of the largest problems with adding to options to WordPress is that they’re difficult to remove.

Some WordPress developers are excited to see how post embeds can be extended. Hugh Lashbrooke, who works for Automattic, thinks post embeds will be great for Custom Post Types, “I think the oEmbed feature has loads of awesome use cases for Custom Post Types. For example, being able to embed eCommerce products on other sites with dynamic add to cart links,” he said.

The easiest way to try post embeds is to log into TryWPBeta using these credentials.

  • Username: wcpdx
  • Password: wcpdx15

Create a new post and make sure the visual editor is selected. Copy a URL from one of the Make Core WordPress blog posts and paste it into the editor.

If you’d like to learn more about how this feature works, check out Birchler’s post where he explains what developers need to take note of and how to customize the output. WordPress 4.4 is scheduled for release in December.

The Abusement of Open Source

The Free Software Foundation has a clear and concise definition of free software – which is tightly connected to what we refer to “open source” with some verbal modifications:

“Free software” means software that respects users’ freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software.

Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. We sometimes call it “libre software” to show we do not mean it is gratis.

My Open Source Experience

A couple of years back I shared my experience after 10 years of being a Linux user. Whilst it was not my initial FOSS expertise per se, it was a turning point in my mindset for several reasons.

First off, I had the full control of everything. Even if I wasn’t aware with what is going on behind the scenes, with the right motivation and tons of time, there was a way out. Even if it takes a countless number of formatting the hard drive and starting all over, or restoring multiple waypoints of a certain version of my stack.

Second, I wasn’t able to afford all of the software that was available and popular back then. Windows wasn’t cheap, and then there was the Microsoft Office suite, and various audio/video players, and even the IDEs or compilers I’ve been using to learn coding. I wasn’t comfortable with the fact that I may be a license violator or a pirate, and at the same time my software suite would have cost close to 6 months of the average salary of a local Joe.

It was exciting, it was new, it was liberating. It’s been a way of living ever since.

Later on I had intimate experience with different closed platforms and languages, and I focused on Java. Then I did some Python and PHP, and now I’m actively involved with WordPress development, as well as numerous small and medium-sized projects built on top of Open programming standards or languages.

The “Free Beer” Phenomena

Image credit:
Image credit:

Back in the days when “Open Source” was still unpopular as a concept (or people couldn’t care less about that), I wasn’t entirely aware of the business model behind doing anything with open source. After all, the cashier at the store doesn’t cash commits or product patches for food, nor does my landlord. And yet, I had a few acquaintances from user groups and conferences who were actively spending 100% of their time on open source work and earning a good living.

I spent some time digging around and exploring the financial bit behind Red Hat, Mozilla and other players in the market. Later on a dream (or a reality interpretation) of mine was crushed once I realized that code itself does not matter at all, and there are other significant factors as adoption, community, solving actual business problems based on ROI and so on.

And eventually, there are two main types of open source projects:

  1. Those that get funding, provide premium services and generally have various sources of revenue in order to survive, grow, and provide great experience
  2. Those that eventually get poorly supported and abandoned at some point of time

In other words, even if “karma” and “common good” mean nothing to you, there is no way for a project to survive without your involvement – be it time, or financial assistance.

Open Source cannot survive without your commitment and financial involvement.
Click To Tweet

Let’s repeat again. If you don’t give back a good chunk of your time to a project and a community or pay the ones in charge, there is no future in that project.

The Bigger Picture of the WordPress Community

For what is worth, the WordPress ecosystem is one of the most open ones. I’m not talking about the community here (which is still fairly closed) or the project, but being able to use the platform and the variety of plugins or themes is completely free.

And the majority of the community is cool, gives away a ton, shares free resources and so forth.

But funnily enough, unlike with other communities, even though WordPress powers over 24% of the Internet, have you seen many large WordPress companies? Or even a medium-sized ones (as compared to many other dev studios)?

There are a tiny number of companies over 50 people, a few in the 20-50 range, a fair number of 8-20 people ones – and the rest are basically freelancers and small agencies of 2-5 people.

That’s not necessarily bad – unless you travel to a small local WordCamp outside of the US where plenty of people dream about a WP job that could pay their bills. And then you visit a bunch of Java or .NET conferences with companies shipping a department or two (20-40 people each) overseas for a conference that charges $800 entry fee per person. Or a Python/Ruby conference with consultants and even freelancers being appreciated for their contributions, supported by various companies or simply charging more than enough for their skills and efforts.

code-html-for-foodI won’t dig into the hole that no one openly talks about, but you have to live in a bubble should you not see that – similarly to claiming that poverty does not exist, or there is an infinite supply of water and gas for everyone and wars are only seen in books and movies.

WordPress people are underrated, under-educated (due to the lack of any legit training/certification program in place), there’s a lot of noise that gives praise to marketing as compared to product quality or actual skills. That affects the quality of the plugin ecosystem which is the backbone of each and every CMS, and most enterprise businesses run away since they have a hard time to find a stable infrastructure or a good development team.

It’s a complex problem that could easily be solved (rapidly improving quality and life standard) over the next year or two with the right motivation, which is not quite in place though. The closest thing to that right now is the WP Developers Club.

But other than some internal issues, lack of training or a good strategy from the key players in the market, users do not help with the natural growth – at all.

WordPress Users Miss the Point

Using generalizations is obviously a shortcut to defining the label without meaning to blame the good an honest WordPress users. Unfortunately, the space is crowded with people following a number of false assumptions, such as:

  • WordPress is free, so I have to get everything for free
  • If this plugin/theme is out there, it should work exactly as I want – regardless of whether it’s free, or not
  • If the “famous 5-minute install” takes 5 minutes for an entire site, everything else should take hours, days at most
  • Any change to anything I have should cost a few bucks at most
  • Since I can install WordPress through cPanel, then everything is extremely easy
  • Free plugin authors deserve a 1-star rating if the plugin does not do what I need
  • People in Facebook and support forums must solve my problems for free, immediately, regardless of the problem
  • Plugin/theme authors should set up my site and configure everything for me for free

One of Donald Trump’s statements hit the industry big time:

And remember the $5 billion website[?], 5 billion we spent on a website, and to this day it doesn’t work. A $5 billion dollar website[?]. I have so many website[s]. I have them all over the place. I hire people, they do a website. It costs me $3.

My friend Morten wrote about the “WordPress is easy” misconceptions, and I’ve touched on that quite a few times in many of my latest posts, my guest posts and interviews and our company blog.

What Should Both Freelancers and Users Learn

For everyone with a successful business track record capable to produce high quality and being knowledgeable in the WordPress field – I salute you. I would urge you to blog and share more and help the large ecosystem since that could only happen from the inside out.

As for everyone else, here is my advice for you.


  • WordPress is free. However, building solutions on top of WordPress may not be free. And the fact that the largest brands are investing millions in their web platforms is not a coincidence, but a necessity.
  • Owning a WordPress website by itself does not solving problems. Solving problems with the right business model is what makes a venture successful.
  • There is so much more to building a web solution other than installing WordPress and activating a bunch of free plugins.
  • You must appreciate the work that others have provided to you for free. That’s right, you must appreciate it, or don’t use it – period.
  • Give back to WordPress – other than code, there is also documentation, support, translations and much more. You can also sponsor a WordCamp, speak at a meetup, and help your local role models grow your local community.
  • Support your favorite plugins and their authors. Remember – if no one takes care of them, they’ll have to find a “real job” and stop doing stuff for free.


  • Think about yourself first. As they say – love yourself first before you love someone else. Your stability is required in order for you to start giving back.
  • However, give back – actively. It’s the basis of the survival of the mankind, and the best way to support, help, and inspire other people.
  • Find ways to monetize your free work. Don’t deal with scams, but think of way that would allow you to use your contributions for the common good and get paid for them so that you can give back more. There are plenty of ways to do that – and many people don’t do that so you’re one of the “chosen few”.
  • Opensource as much as you can. Embed that in your mindset so that, when working on a project, you think about components or best practices that you could share through free software, blog posts, case studies and so forth.
  • Reuse code and contribute to other projects. Instead of building the yet another slider or a gallery, find a good one and make it even better. WordPress is a product of thousands of contributors working together, and a lifetime would not be sufficient for reproducing those results and experience by a single person or even a small team.
  • Accept collaboration and contributions. Embrace the spirit of working together, learning together, peer reviews, exploring new technologies and sharing advice and experience.
  • Always keep learning. Extend your skill set, invest in books and courses, discover new technologies or methodologies, solve complex problems and become a better and more skillful person day after day.
  • Mentor people and support your local community. Don’t let shady, greedy and unworthy people take over and plague it. Find a role model that is worth supporting or become one – a true, honorable leader with clear vision, admirable experience, commitment and dedication to the cause.

Open Source Software

Living the Open Source life is not hard, but it requires a certain level of mindset adjustment. Transparency and sharing isn’t just a software concept and it could be easily applied in every aspect of life, making you a better and successful person.

The post The Abusement of Open Source appeared first on Mario Peshev on WordPress Development.

How to Easily Display Code on Your WordPress Site

Do you run a development related blog and want to share code snippets on your blog posts? By default, showing codes in your WordPress site is not easy. For security reasons WordPress filters out any raw code added into posts, widgets, or comments. We’re often asked about what syntax highlighter plugin do we use to display code on our website. In this article, we will show you how to easily display code on your WordPress site.

First you need to install and activate the Synatx Highlighter Evolved plugin. Upon activation, you need to visit Settings » Syntax Highlighter to configure the plugin settings.

Syntax Highlighter settings page

The basic plugin settings should work for most websites. However, you should review all settings and make changes if necessary. Each option has detailed description to explain what it does. Once you are done, simply click on the save changes button to store your settings.

Syntax Highlighter evolved uses simple shortcodes to display code. For each language you need wrap your code in the shortcode for that language.

For PHP you would wrap your code like this:

echo “Hello World”;

It will appear in your post like this:

echo "Hello World";

For CSS you will wrap your code like this:

.entry-title {
font-family:”Open Sans”, arial, sans-serif;

It will appear on your site like this:

.entry-title { 
font-family:"Open Sans", arial, sans-serif;

Syntax Highlighter will automatically highlight the code for that particular language. It will also add line numbers and handle tab indent properly. Your users will be able to easily copy and paste code snippets from your WordPress site.

How to Display Code in WordPress Without Using Plugin

Many bloggers do not run a development blog, so they don’t need to add sample code snippets in their posts very often. For rare occasions, you can add code by encoding the code into HTML entities. Like this:

&gt;?php echo "Hello World"; ?&lt;

The problem with converting code into HTML entities is that it is difficult to do manually. You can use online tools like this one, to convert code into HTML entities.

By converting PHP, HTML, JavaScript code into HTML entities, you can paste them into your WordPress posts. For additional styling you can wrap code between <code> and </code> tags.

We hope this article helped you find the best syntax highlighter plugin for WordPress. You may also enjoy our article about 13 plugins and tips to improve WordPress admin area.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Easily Display Code on Your WordPress Site appeared first on WPBeginner.