Ask Yoast: Impact of host location on SEO?

Do you want to set up a brand new website or move your website to a new host? Choosing a web host can be hard, because there are thousands of hosting companies out there. So it’s a tough decision to make, but a very important one too. When you’re comparing various hosting aspects, should you consider the location of the web host too? Is the geographic location of their web server important for SEO? Hear what we have to say about this, in this Ask Yoast.

Gerardo Garcia emailed us, asking:

“Do you consider the location of the web server as something important for SEO?”

Check out the video or read the answer below!

Optimize your site for search & social media and keep it optimized with Yoast SEO Premium »

Yoast SEO for WordPress pluginBuy now » Info

Impact of server location on SEO

“Gerardo Garcia is from Spain and he has found web servers in Germany and England that are cheaper than the ones in Spain. He’s wondering if the location of a web server is important for SEO.

First of all, no, not really. But that’s not the entire truth. Because for your visitors you want the most speed, and you’ll get the most speed by hosting as close as possible to them. And you can achieve that by hosting your site in the country where your visitors are coming from.

We’re Dutch, but our main servers are in the US. Why? Well, because the majority of our visitors are from the US. We also have a server in Europe, because we get many visitors from Europe too. So think about that. Of course, we are on a slightly more expensive set up than you would probably be, and need to be. So focus on the country you think is the most valuable.

To be honest, if you’re looking at price too much for you hosting, you probably not doing yourself any service anyway. Don’t go for the cheapest hosting, go for the best hosting. Paying a couple of bucks more per month, really is worth it, When your site is down otherwise, stuff is just not working.

So, I would suggest going with a host that has servers in Spain or at the very least have people that can service you in Spanish in Spain. And then, whether these servers are located in Barcelona or in London, the technical existence of these servers doesn’t make too much of a difference.

Good luck!”

Ask Yoast

In the series Ask Yoast we answer SEO questions from followers. Need some advice about SEO? Let us help you out! Send your question to ask@yoast.com.

Read more: ‘Yoast’s WordPress hosting list’ »

How to Create a Local WordPress Site Using XAMPP

Do you want to create a local WordPress site on your computer using XAMPP? Installing WordPress on your computer helps you try out WordPress, test themes / plugins, and learn WordPress development. In this article, we will show you how to create a local WordPress site Using XAMPP.

Create a local WordPress site using XAMPP

Why Create a Local WordPress Site?

Creating local WordPress sites is a common practice among developers and site owners. It allows you to test WordPress without creating an actual website on the internet.

Local websites are only visible to you on your computer. You can try different WordPress themes and plugins, test their features, and learn the WordPress basics.

If you already have a WordPress website, then you can create a local copy of your website on your computer to try out new plugin updates before implementing them on your live website.

Important: Local website will only be visible to you on your computer. If you want to build a live WordPress site, then you will need a domain name and WordPress hosting. Follow the step by step instructions in our how to start a WordPress blog guide when you are ready to create a live website.

Having said that, let’s check out how to install WordPress locally on Windows, Mac, or Linux using XAMPP.

What is XAMPP?

In order to create a local WordPress site, you will need to set up a web server software (Apache), PHP, and MySQL on your computer.

PHP is a programming language and MySQL is a database management software. Both of them are required to run WordPress.

Installing each of these software separately is quite difficult for beginners. This is where XAMPP comes in.

XAMPP makes it easy for you to build WordPress websites locally. It is available for Windows, Mac, and Linux based computers.

Let’s get started.

Installing XAMPP on Your Computer

First, you need to visit the XAMPP website and click on the download button for your operating system.

Download XAMPP

Depending on your operating system, your installation wizard and the application interface may differ from the screenshots here. For the sake of this article, we will show you the Windows version of the software.

After downloading XAMPP, you will need to click and run the installer.

XAMPP setup wizard

XAMPP will ask you where you want to install the software and which packages you’d like to install. The default settings will work for most users. Keep clicking on ‘Next’ to finish the setup wizard.

After finishing the wizard, check the ‘start the control panel now’ option and then click on the finish button.

Setup finished

This will launch the XAMPP control panel. Go ahead and click on the start button next to Apache and MySQL.

Start Apache and MySQL

XAMPP will now start Apache and MySQL. You may see a Windows Firewall notification, it is important that you click on ‘Allow Access’ button for both applications to run on your computer.

Allow firewall access to Apache and MySQL

Once both applications are started their names will be highlighted in Green.

You have successfully installed XAMPP on your computer.

Now you are ready to create a local website and install WordPress using XAMPP.

Creating a Local WordPress Site with XAMPP

First, you will need to download WordPress. Visit the WordPress.org website and click on the ‘Download WordPress’ button.

Download WordPress

After downloading WordPress, you need to extract the zip file, and you will see a wordpress folder. You need to copy this folder.

Copy WordPress folder

Next, head over to your XAMPP installation folder.

On Windows it would be C:/Program Files/XAMPP/htdocs or C:Xampphtdocs folder.

On Mac, it will be /Applications/XAMPP/htdocs folder.

Paste the wordpress folder you copied earlier inside htdocs.

Rename WordPress folder

We recommend renaming the wordpress folder to website1. This will help you easily identify your local site.

Next, you need to open your favorite web browser and visit localhost/website1. You will see a page like this:

WordPress pre-setup

This page will tell you that WordPress needs a database name, database username, password, and host information.

Let’s create a database for your WordPress site.

You’ll need to open a new browser tab and visit localhost/phpmyadmin/. This will launch phpMyAdmin app that comes pre-installed with XAMPP. It allows you to easily manage your databases using a simpler interface.

You would need to click on Databases, provide a name for your new database, and then click on the create button to continue.

Creating a MySQL database for your local WordPress site

Now that you have created a database, you can use it for your WordPress site.

Switch back to /localhost/website1/ browser tab and click on the ‘Let’s Go’ button.

On the next screen, you will be asked to provide your WordPress database information.

Enter the database name you created earlier. Your username is ‘root’ and you should leave the password field blank. For the database host field, you need to use localhost.

See the screenshot below:

Connect your WordPress database

Once you are done, click on the ‘Submit’ button to continue.

If you are on Windows or Linux, WordPress will now store these settings in your WordPress configuration file called wp-config.php file.

However, if you are on Mac, then it will show you the contents of the file and will ask you to create it.

You will need to create this file in your website’s root folder.

After creating the file, paste the text you copied earlier inside it. Next, you need to save the file and return back to WordPress installer to continue.

In the next step, WordPress will ask you to provide information about your website. First, enter the title you want to use for this site.

After that you need to enter a username, password, and an email address for your admin account.

Enter your WordPress website info

Once you have filled all the information, click on the ‘Install WordPress’ button to continue.

WordPress will now run the installation and prompt you to login once it’s done.

You can login to your website by going to /localhost/website1/wp-admin page and use the username / password that you entered during installation to login.

WordPress login screen

Things to Try After Creating a Local WordPress Site

Now that you have created your local WordPress site using XAMPP, you can work on it like you would do on a live WordPress site.

Head over to Appearance to customize your site’s appearance or install a new theme. Here are some great free themes that you can try.

The next thing you would want to try is WordPress plugins. Plugins are like apps for your WordPress site and allow you to add cool features like contact form, photo galleries, eCommerce store, etc.

Need help installing plugins? See our step by step guide on how to install a WordPress plugin.

After working on your local WordPress site you may want to move it to a live server. Head over to our step by step guide on how to move WordPress from local server to live site.

We hope this article helped you learn how to create a local WordPress site using XAMPP. You may also want to look at alternate ways to create local WordPress sites on Windows using Wampserver, and on Mac using MAMP.

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 Create a Local WordPress Site Using XAMPP appeared first on WPBeginner.

Adding Images to WordPress Sidebars Is About to Get a Lot Easier

Adding images to sidebars in WordPress is a cumbersome task that requires users to upload an image to the Media Library, find the URL, copy it, and paste it into a Text widget along with additional HTML. Nearly two years ago, Mel Choyce opened a ticket on WordPress Trac proposing that a media widget be added to core. This widget would allow users to easily add images to sidebars.

Throughout the discussion, the idea of creating a catch-all media widget was brought up that would allow users to add images, audio, or video to a sidebar. After developers spoke to Matt Mullenweg about the direction of the project, the team decided to create three separate widgets to handle each media type. Choyce outlined the benefits this approach provides:

  • We can focus on creating more tailored experiences for each widget.
  • We’ll be able to launch new widgets without having to worry about constantly updating one central widget, or potentially breaking anything.
  • It’ll be easier for people to discover new media types since they won’t be buried within one widget.
  • This will more closely mimic the approach we’re taking to content blocks in the future, which should provide an easier transition.

Out of the three core widgets in development, the Image one is nearly complete ready for user testing. To test, first download and activate the Core Media Widgets plugin. Once activated, navigate to Appearance > Widgets in the WordPress backend and in the available widgets section, locate the Image widget.

Core Image Widget UI
Core Image Widget UI

Clicking the Select Image button displays the media library modal where you can either select or upload an image. Once an image is selected, click the Add to Widget button in the bottom-right corner. This is what the widget looks like after an image is added.

Core Image Widget With an Image
Core Image Widget With an Image

Here is what the widget looks like on a page using the Twenty Seventeen default theme.

Core Image Widget in Action
Core Image Widget in Action

The core image widget is incredibly easy to set up and is a significant improvement over the Text widget approach. The user interface is much simpler compared to the image widget supplied by Jetpack. Jetpack’s image widget UI doesn’t take advantage of the media library modal and instead, requires the user to know the image’s URL.

Jetpack Image Widget UI
Jetpack Image Widget UI

Many of the fields are the same as what’s provided by the media library modal. Not surprisingly, WordPress.com uses the same interface and requires the user to know the image URL.

Core Image Widget May Be Ready in Time for WordPress 4.7.4

The team is specifically seeking feedback from those who use image widgets provided by plugins on WordPress.org. Once the image widget is merged into core, the video and audio widgets will be added to the Core Media Widgets plugin. Users can leave the plugin enabled until all three widgets are added to core.

“Once a widget has been thoroughly tested by users, we can then copy it into core for a release while then also disabling the widget in the plugin,” Ruter said.

If you encounter a bug or discover an incompatibility with a plugin or theme, please create an issue on the project’s GitHub page. According to Ruter, the team is working hard to get the widget to a point where it can be merged into core. Depending on how testing goes, it could be merged into core as early as WordPress 4.7.4.

Yoast SEO 4.5: update your PHP version

This is a rather special release, as it’s a project that’s close to my heart. It’s not a full-featured release, however, it is just necessary as a regular release. In Yoast SEO 4.5, we are urging site owners whose sites run on servers with an outdated version of PHP to update to a more recent version. To move the web forward, we need to take a stand against old, slow and unsafe software. Updating to PHP 7 will give your site an enormous speed boost. In this post, you’ll find out why we’re showing this notice in WordPress and what you can do to upgrade PHP.

Please read this post to get the complete picture of this move »

Optimize your site for search & social media and keep it optimized with Yoast SEO Premium »

Yoast SEO for WordPress pluginBuy now » Info

Why this move?

WordPress is built on PHP. This programming language takes care of the heavy lifting for the CMS. WordPress was always built with backward compatibility in mind, but we’ve reached a point where that’s just not feasible anymore. WordPress needs a minimum of PHP5.2 to function, but that version will not get updates, fixes or patches. This makes it inherently insecure. If you are on an old version, Yoast SEO 4.5 will show you a message in the backend. Please update to at least 5.6, but rather PHP 7 to take advantage of all the awesomeness of this new version. Not just for you as a user, but for developers as well.

The why is three-pronged: security, speed, and future-proofing. PHP 5.2 hasn’t been updated for years and has serious issues. PHP 7 is lightning fast, up to 400% faster than 5.2. You might even regard this as a green move; you can use 50% fewer servers to get the same results from PHP 7. Last but not least, developers can finally use all the modern technologies to bring WordPress to the next level.

We understand this move might be annoying for some, but it is necessary to speed up the development of the web and to bring it some must needed security. That being said, updating your PHP version is rather easy.

How can I update my PHP version?

How to update your PHP version depends on your host. Most hosts have an article on their site explaining how to update PHP yourself. Here’s the one from SiteGround, or WP Engine. Go to your hosts’ website to find out more on how to go about this. If you can’t find the information you need, please contact your web host. We have made an example email that you can edit and send to your hosting company.

Don’t forget to backup your site before doing any major changes!

And how do I choose a different hosting company?

It might be entirely possible that your host is not willing to work with you. Maybe you just don’t feel valued at your current host or it could be that their future plans don’t fit yours. If so, think about moving web hosts. A web host provides the engine your site runs on and that better be a damn good engine. To help you with your quest for a well-regarded and forward-thinking web host, we’ve compiled a list of hosting services that got the Yoast stamp of approval.

Read more: ‘Whipping your hosting into shape’ »

How to Auto Schedule WordPress Posts

If you post to a WordPress blog on a regular basis like I do on In Photos dot Org you’ll no doubt recognise the fatigue that comes from adjusting the publish date every single time on a new post so it appears a day later. If you have multiple posts like on a daily photoblog you have to remember what day the last post was made and adjust the date accordingly.

A few years ago I wrote a small plugin that I never released to help schedule posts. In the media uploader you could select multiple photos and click a few buttons to be brought to a new page where you could enter title, content and tags for each image. Based on this experience, I suggested it as an idea to one of the teams at Automattic who built Post Bot. I used that for a long time and it has its strengths. If you’re posting content that has the same or similar tags you can copy and paste the tags from one post to another. I posted lots of black and white street images from my home town this way and it was super useful!

I got tired of manually typing out tags, and unfortunately the site broke a few times, with posts not scheduling or one time they scheduled all in one go. Luckily the problems were quickly fixed. However, I started using the WordPress post editor again and scheduling a bunch of photos that way.

Manually editing the publish date quickly became a chore. Lazarus, the form saver Chrome extension, would sometimes popup if I didn’t click exactly on the date, or as I said before I had to remember when the last post was made. They say there’s a plugin for everything, and there is for this too. Check out Publish to Schedule.

You tell “Publish to Schedule” which days and how many posts should be published and when you go into the post editor the next available date is picked for you! The date doesn’t change until you hit Publish but I already used it to schedule a number of posts and it works really well.

Related Posts

Take the WordPress Editor Experience Survey

photo credit: Joanna Kosinska

WordPress core contributors have published a survey to collect feedback on how people are using the editor. The results of the short 15-question survey will assist the team in redesigning the editing experience in the WordPress admin.

Participants are asked to identify how they use WordPress and if they use certain features like formatting buttons and distraction-free writing. The survey also asks how easy-to-use they consider the current editor to be and how organized it is. Users are also asked if they have ever installed a plugin that adds features to the editor, presumably to determine if there are features missing that should be considered for core.

One question asks participants if they use any assistive technologies along with a screen reader. WordPress Accessibility team member Amanda Rush published some tips for screen reader users who want to take the survey. It includes several questions with radio buttons and screenshots that are not so friendly to screen readers. Rush provides a general walk-through with more explanation for those who are using screen readers to participate.

So far, this survey has been more widely shared than the design team’s recent customizer survey, which was published after receiving just 50 results. WordPress contributors rely heavily on these surveys to make decisions about projects they are working on, as they do not have any telemetry data about what features people are using or not using. This is one example where data could quickly demonstrate how widely the distraction-free writing mode has been adopted and show what editor formatting buttons people are using.

If you have a few minutes over the weekend and want to contribute to the future of WordPress, take the Editor Experience Survey.

Clarification of Guideline 8 – Executable Code and Installs

Since Jetpack announced it installs themes, a number of people have asked if this is a violation of the 8th guideline:

The plugin may not send executable code via third-party systems.

And in specific, these two items:

  • Serving updates or otherwise installing plugins, themes, or add-ons from servers other than WordPress.org’s
  • Installing premium versions of the same plugin

The short answer is no, it’s not, and yes, you could do this too.

The longer answer involves understanding the intent of this guideline, which initially was to prevent nefarious developers from using your installs as a botnet. In addition, it’s used to disallow plugins that exist only to install products from other locations, without actually being of use themselves (ie. marketplace only plugins). Finally it’s there to prevent someone silly from making a plugin that installs a collection of ‘cool plugins’ they found from GitHub and want to make easier to install. Which actually did happen once.

Plugins are expected to do ‘something’ to your site. A plugin that exists only to check a license and install a product, while incredibly useful, is currently not something we currently allow as a standalone product. This is why we allow plugins to have the in-situ code for updates that is used by their add-on plugins. The plugin we host has to use WordPress.org to update itself.

In addition, we do permit valid services to perform actions of installations onto sites, and have for a very long time. ManageWP, for example, has had this ability for quite a while. It provides a valid service, letting you manage multiple sites from their dashboard, and yes, install and update plugins. Going back to the example of a plugin that hosts the update code for it’s addons, the ‘service’ is the license you bought for the add-on plugin.

The trick here, and this is what is about to sound like hair splitting, is that it’s not the plugin UI on your site that does the install. In order for Manage WP and Jetpack to work, you have to go to your panel on their sites and install the items. If you wanted to make, say, my.servicename.com and let people log in, authenticate their sites, and from that interface use a JSON API to trigger an install, you absolutely, 100%, totally can.

To hit the major talking points:

  • Is Jetpack allowed to do this? Yes.
  • Are you allowed to do this? Yes.
  • Can you have your plugin install things? No.
  • Can your service install things onto a connected site? Yes.
  • Are you allowed to have a marketplace plugin? Not at this time.

I know this is frustrating to a lot of people. The reason it never came up before is no one asked us, and it isn’t our place to run your business or invent all the cool things. The guidelines are guidelines, and not laws or rules, to allow people to interpret them, and you’re always welcome to ask us if something’s okay or not. Or warn us if you’re about to do something you think might get the masses up in a dander.

#guidelines

15 Obstacles That Enterprises Report in WordPress and Development Partners

SME (Small and Medium-sized Enterprises) have been one of the strategic audiences that DevriX regularly partners up with. There are certain peculiar misconceptions (or legitimate concerns) that enterprise representatives always outline during meetings and calls with regards to their hesitation when considering WordPress.

Over the last years, we have built WordPress-driven software for automotive manufacturers, airline brokers, banks, large educational institutions, enterprise digital media publishers, certification authorities, among others. Many problems pop up during the initial contact, negotiation calls, and onboarding new partners.

I will go over all the main 15 obstacles that enterprise CEOs and directors have shared during our enterprise sales process and what is the actual state of these in the WordPress ecosystem context.

1. WordPress Isn’t Secure Enough for Enterprises

Infographic by WP Smackdown

Security is one of the main issues pointed by enterprises who regularly read online magazines, blogs, social media group reports and posts about hacked WordPress websites. The initial perception is that WordPress is insecure in its roots.

As a Core platform itself, WordPress is incredibly secure. There are regular security fixes or various vulnerabilities that are responsibly disclosed to the WordPress Core security team. But looking at the bigger picture, the core WordPress platform is more secure and better tested than the vast majority of solutions out there.

Most of the security issues related to WordPress that enterprises stumble upon are caused by vulnerable themes and plugins, improper hosting setup, or misuse of WordPress by its own users. There have been regular reports of security issues with themes and plugins, but using them is optional, and depends on the expertise and understanding of the service provider building the enterprise WordPress platform.

The WordPress Foundation has crafted a detailed whitepaper for WordPress security that should be a go-to resource for enterprises researching WordPress as a possible platform for their needs.

2. Convoluted Marketplace With No Authority

Providing numerous alternatives for a particular technical requirement is welcome by small businesses, freelancers and agencies, but seems like a liability when discussing that with Enterprise organizations.

The way most of them look at it is the following:

If there are too many solutions doing more or less the same thing, there is not enough focus or user base that allows a business to scale, implement the best practices, and prepare it for enterprise use.

While discussing the pros and cons of each solution, the follow-up response is:

But still, there is no repository with recommended and preferred applications and tools that come with a security stamp which would ensure the safe and reliable use in an enterprise context.

A search for a “Slider” return over 1,000 results on WordPress.org

In a nutshell, the way we handle that at DevriX is conducting regular code reviews of established market solutions across several major versions of a plugin. We have an internal list of solutions that we have validated internally, and have confirmed with enterprise technical teams that are comfortable with using the plugin in their platform. We also keep in touch with other agencies that work with enterprises and sync our resources internally – in order to ensure that nothing is missed.

The reason we don’t have a public list of these is that we conduct regular reviews, and sometimes following updates may cause discrepancies in the regular flow of operations. We also use certain plugins with additional extensions that detach functionality and callbacks for extra security.

The vast majority of programming work on our end is built upon our plugin framework that is secure by default. We develop most of the features in-house and design them to be lightweight, and straight to the point. This leads to a limited code base with less conditional operations, thus fewer loopholes that can be leveraged for a breach.

3. Lack of Certification/Trust Issues

The lack of credibility when selecting a service provider, a hosting vendor, or a plugin shop stands out among the major bottlenecks for service providers.

What Drupal’s certification program by Acquia looks like

Coming from the enterprise space and visiting Java or .NET conferences regularly, most industry experts have gone through a number of procedures and taken various certificates that ensure compliance with a standardized process. WordPress is more flexible and provides fewer restrictions regarding validating repository plugins (or certifying WordPress vendors).

On top of that, over 95% of the WordPress consultants and companies don’t profile in enterprise solutions and don’t conduct most of the security reviews themselves. This isn’t a requirement for small businesses that are looking for lower-cost solutions and don’t go through the elaborate review which is a necessity for enterprises.

That said, there are a several established organizations in the WordPress space that have built many platforms for enterprises, and continue maintaining and innovating in the enterprise space. Some of our clients have spent 4-6 months of detailed background research of agencies and their team members before contacting them for a new project or a retainer agreement.

4. Enterprise is Not a Focus of WordPress

The WordPress leadership team has never outlined a particular market that they target exclusively. The platform has evolved over the past 14 years and is currently used by 27% of the Internet.

Various established corporations and popular brands have deployed WordPress as their primary solution, or for some of their internal applications.

In 2015, we built a multisite platform for one of the largest automotive manufacturers in the world. A year earlier, a security solution constructed by our team has been reviewed by several security consultants and auditors who have confirmed the enterprise stability of the end application. Over the years we have been providing architecture and development services for other established brands and enterprises with an overwhelming set of new features, 3rd party integrations, data synchronization between custom ERPs and CRMs, extensive data analytics and user experience logging, custom reporting engines, flexible membership levels and payment capabilities and more.

WordPress is flexible enough as an application framework and allows for bending the core in multiple directions – enterprise being a viable alternative for various providers.

5. Incomplete Deployment and Delivery Process

Datamark’s process example of their Enterprise ECM

Enterprises talking to different providers often complain about the incomplete implementation process of an application. Their end product depends on multiple variables that should be built by third parties, or integrated with existing solutions of theirs.

There is no proven process of delivery and ongoing updates that let them sleep at night, and seems contradictory to other hosted solutions built by enterprise web content management providers.

One of the reasons for that is the variety of hosting providers and their limitations. There are hosting vendors who offer hosting solutions on top of their own infrastructure, those who build external layers on top of AWS or Google Compute Engine. Enterprises often have their infrastructure, or host on AWS directly.

Some WordPress development companies also have partnerships with specific hosting providers, or often hosting that they manage themselves.

The process of deployment to AWS via Solano CI through GitHub

Since different clients come with the various expectations in terms of traffic, user base, and pricing caps, many vendors have to use different deployment processes that accommodate for each and every case. That prevents providers from spending all of their time on polishing an automated deployment solution with capistrano/chef/ansible and connect it to a continuous integration server that runs all tests before deploying to staging.

Luckily, all of those are possible, and many service providers in the field are already equipped with the right setup and internal workflow that allows them to put these in motion and ensure the stability of an enterprise application. It’s about selecting the right provider who has expertise in the field, and the right toolkit which is suitable for enterprise needs. And the right hosting vendor that makes all of that possible when pushing to staging and merging to production.

6. Scarcity When It Comes to Updates

Over the past few years, WordPress has been following a release cycle revolving around launching 3 major releases a year. 2017 will be the first year that schedules releases depending on the readiness of the focus features of the application, which allows for more testing and proper utilization of resources or planning by all involved parties.

Overall, updating a WordPress site with its set of plugins and themes is different than dealing with a hosted solution that takes care of the full round of extensions and add-ons. We approach that with three separate steps in our internal process:

  1. Monitoring security sources – our team is subscribed to several security databases that report vulnerabilities in WordPress themes and plugins. Finding a major issue in a plugin is followed by a rapid upgrade iteration that prevents hackers from taking advantage on our sites.
  2. Code review – we keep track of plugin updates, their changelogs, and the version updates as compared to their previous release. If we note an unexpected change that may affect the stability of the applications, we investigate further and test locally for possible regressions.
  3. Testing changes in a staging environment – whenever possible (and unrelated to a major security leak), we push updates to staging and test internally first, then send over for validation in case of doubts. Confirmed updates are merged to production.
Subscribe for WP Scan’s Vulnerability Database

More often than not, changes are minor and don’t affect the functionality of an application. However, feature updates may possibly have an impact on a large number of clients and public-faced screens for hundreds of multisite instances that we need to review carefully.

One of our existing clients is a notable entertainment vendor with dozens of franchise subsites in 60+ cities in North America, Europe, Asia, Australia. Each franchisee operates their own instance, and occasionally introduces specific updates that could be affected by a major network update. Updates should be performed carefully by looking into each subsite separately, validating a list of main screens that are widely used by visitors, and administrators.

7. Lack of SLA Packages for Enterprises

Many development agencies providing WordPress solutions don’t provide the flexibility and availability that enterprises need.

AWS had a couple of major outages over the past couple of weeks that affected some of the largest websites hosted online. A research conducted in 2013 based on Amazon’s profit report in 2012 stated the following:

Based on Amazon’s 2012 net sales, it was determined that  outage cost Amazon $66,240 per minute

Enterprises generate different revenue, and that downtime cost may be lower for other businesses, but even a tenth of that amount would be over $6,000 in lost opportunity and sales for each minute of downtime.

Service interruption may be caused by the server provider or a technical issue in the codebase. The longer the downtime, the higher the loss for the enterprise.

We partner up with Pagely for 7 of our high-end customers and communicate proactively in the event of glitches, or expected outages. Some of our clients purchase high availability plans that host their solution in multiple locations, therefore reducing the risk of an outage due to a mirror version of the site available in a different zone.

Additionally, we provide 18 hours of availability during business hours and several contact channels over the weekend in the event of an outage. Weekend hot fixes have been performed several times over the past few years in order to ensure the stability of an application in the case of a regression.

Enterprise SLAs are provided by several industry providers – mainly larger companies that work with enterprises and can afford to hire enough team members covering different time zones, and support staff who can tackle first-level support issues over the weekend. It’s an extra cost that is justified for businesses who risk a lot in the event of an outage.

8. WordPress Can’t Scale Well

Enterprises who consider WordPress as an application for their needs are often worried about the scalability of the core platform. Scalability issues often pop up during Google search due to small businesses who don’t invest in proper technical solution or pay pennies a month to lower end hosting vendors.

During WordCamp San Francisco in 2012, Iliya Polihronov – a system wrangler at Automattic, announced some statistics around the WordPress.com hosted platform powering tens of millions of blogs, among some of the largest online magazines:

There is an extremely low number of existing websites online that have ever registered a comparable traffic or amount of content.

Scalability issues usually result in four different scenarios for all websites online:

  1. Consistently high traffic (hundreds of thousands, millions, or tens of millions of visitors a month)
  2. Large volume of content – hundreds of thousands of articles, tutorials, lessons, products
  3. Large customer base – a good number of users registered in WordPress, browsing the dashboard simultaneously
  4. Traffic peaks during product launches, events, or PR campaigns

Depending on the business case, each of those can be tackled differently with the right consultation and planning. We have personally dealt with all of the above and implemented different solutions for enterprises – implementing various caching engines, denormalizing the database, purchasing extra storage for planned launches, building custom lightweight dashboards for users, and more.

WordPress is a proven solution that can scale incredibly well and even rank among the best platforms regarding the ability to handle high-end traffic.

9. WordPress Has Limitations in Terms of Functionality

Many of our customers in the enterprise space question the viability of WordPress with regards to handling data analytics, logging, reporting or user management activities that comply with established enterprise processes online.

The truth is, WordPress isn’t always the right tool for the job, but integrates extremely well with 3rd party services and external solutions that can tackle some of the heavy-lifting. We integrate with various providers such as HubSpot, Salesforce, LinkedIn, Cvent, Boomtrain, Parse.ly, and a large number of professional providers that leverage the information collected by WordPress, crunch it and extend the feature set inside of their own dashboards. The core infrastructure provides a good number of available APIs, a flexible and extensible database schema, and an entirely limitless front-end engine for incredible design and user experience.

WordPress Developer APIs and their adoption – original research by Rarst.

Different activities may be performed in external dashboards for additional insight or data processing that could be passed back to WordPress. Or connected to other 3rd party services or internal applications used by enterprises that communicate with dozens of applications that serve different needs. The WordPress APIs have been one of the main reason the platform is so popular at the end – there’s hardly anything limiting the functional progress of a WordPress-driven platform.

10. WordPress Doesn’t Integrate Well with Services and Internal Tools

As mentioned in the previous point, WordPress does integrate very well with external services and other tools used by the enterprise.

Recently, WordPress incorporated the REST API in its core system. This presents the opportunity for external services to fetch data from WordPress, extend the data reporting capabilities, and push additional information in the database. We leverage the REST API in MySLP‘s dashboard by pulling data in different screens and presenting it as a table, list, and grid views. It’s of use for our multisites whenever the main site has to aggregate information from the subsites and report the best stories from different channels or pass it over to external data analysis platforms.

It’s a two-way architecture platform that even allows you to build lightweight mobile applications or HTML/JS-driven SPA pages that operate with an external WordPress website.

For self-hosted applications, the WordPress MySQL database can also be exposed to other applications, denormalized in order to provide additional logging and data tracking capabilities, or combined with the use of NoSQL databases or caching engines with some advantages.

The popularity of WordPress has also put it on the radar of numerous organizations that maintain WordPress integration plugins and frameworks. This reduces the amount of development time to integrate an individual solution or extend it depending on the business needs.

11. Back-end is Useless and Incredibly Complicated

A common concern from business owners, C-level executives, and directors with no former experience in WordPress is the complexity of the WordPress dashboard. Most enterprise web content management platforms are easy to use and somewhat intuitive. They focus only on enterprises and don’t provide a lot of flexibility in terms of tens of thousands of possible add-ons that could extend the flexibility of a website.

Having said that, there are plenty of options that would simplify the look and feel for logged in users and provide various opportunities for better control and a more organized dashboard.

  • Admin menus and dashboard widgets can be removed or reorganized for certain roles or even specific users – less cluttered admin experience
  • Additional back-end themes can be installed or created that match the corporate brand
  • Custom dashboards can be created for different roles in order to match the user experience expectations of users and administrators
  • Front-end member management is often provided by user management plugins, social network solutions integrating with WordPress, or LMS solutions
A sample screenshot from the custom WordPress dashboard that we provide to our My Store Locator Plus customers

Essentially, WordPress provides a lot of additional benefits by using the default administrative look and feel (that external extensions make use of, together with default security layers dealing with role management). But user experience doesn’t need to be a hassle and can be adjusted as to match the enterprise expectations.

12. There is No Established Training Vendor for Onboarding

Larger corporations often employ hundreds or thousands of employees, and a new platform may very well be used by several different departments. A proper onboarding training is needed, and there is no official authority providing training courses for WordPress.

I have been training technical and business courses since 2006 and over the years, I’ve met dozens of trainers and small training companies that specialize in WordPress education. Platforms like Linda, WP101, Video User Manuals have training courses available for WordPress users as well.

Enterprises can’t find a reliable reference to these, and they often need additional options for on-site training sessions, customized curriculums, or workshops from a training institution. While no designated educational organization provides that at scale, alternatives could be combined with the same end result.

13. Open Source is Equal to Lack of Responsibility

We live by the open source playbook as it gives us flexibility and control over the technical development process. Commercial solutions keep the intellectual property to a limited number of employees who decide on the future course of the software.

Some of our prospects and partners in the enterprise space have raised concerns with regards to accountability.

Freedom vs. Lack of Responsibility

During an onboarding call last month, a client of ours said the following:

We need accountability with regards to every piece of the puzzle. Some of the proposed tools or extensions don’t seem reliable due to the lack of enterprise support plans in the event of a technical problem.

Insurance is critical for high-end corporations legally bound to some degree of accessibility, data governance, and overall service operability. While the assumption for lack of responsibility is inherently incorrect, no single authority could be held accountable in the event of a critical issue. This could be a liability for individual businesses unless they partner up with the right community vendors and distribute responsibilities in a thoughtful and careful manner.

14. Too Many Steps to Build, Host, and Maintain a WordPress Platform

In the context of Enterprise Content Management Systems or Web Content Management Platforms, small and medium-sized businesses compare somewhat different tools with WordPress as compared to enterprises.

Most small businesses that we talk to point at Drupal, Joomla, TYPO3. Most enterprises that we meet compare with Crafter CMS, IBM Web Content Manager, Adobe Experience Manager, Sitefinity, Hippo, dotCMS.

That’s an entirely different world played by vendors who market in a different way, target different audiences, go to different conferences, and focus on a different set of features. And each of those enterprise WCM providers offers a hosted enterprise solution.

And there are various alternatives between a self-hosted to a fully-managed environment.

The setup and maintenance complexity or a very limited set of features?

The process is enterprise-alike as well – starts with a couple of phone calls, sending formal specifications and white papers elaborating on the value proposition. Sign up does not require the understanding of hosting (although enterprise CIO and their staff often discuss these), nor goes through a lookout of service providers, hosting vendors, extension developers.

Everything is consistent, available in one place, signed off by the company behind the product.

While WordPress doesn’t have a single authority that offers a verified marketplace, in-house onboarding or development team, and a hosted environment for enterprises, there are different configurations dependent on the WordPress development company that would manage the process and ensure the reliant deliverability. The obvious benefit is building a custom-tailored platform that could be significantly more powerful, extensible, and appealing as compared to any hosted solution with a finite set of features or customization opportunities.

15. WordPress isn’t Design for Enterprises From Day 1

This objection is actually valid. But how many enterprises have really started as such?

The Google search engine launched as Google.com in 1997. Gmail was introduced in 2004, G-Suite (Google Apps) in 2006. Over the past years, Google has been investing in hardware and mobile software as well – from the Chromebook and Nexus phones through partnerships with hardware providers, to Google Glass and the Pixel phone.

Plenty of successful products and services in use by enterprises have started as products for small or medium-sized businesses and scaled with their first enterprise clients. Other startups emerged just a few years ago and have been on the market, but haven’t generated a large portfolio of customers yet.

That said, WordPress has started as a blogging platform in 2003, but transitioned to a CMS a few years later and is currently being used as an application framework. It’s been validated and used by Fortune 500 companies, many of the most visited websites in the US, celebrities, international brands, and corporations in all industries.

Enterprises could undoubtedly consider it as a viable alternative and a legitimate candidate for enterprise-grade web content management solutions.

The post 15 Obstacles That Enterprises Report in WordPress and Development Partners appeared first on Mario Peshev on WordPress Development.

Settings wrappers for plugins and themes

I’ve seen many methods of retrieving settings in themes and plugins over the years. Everything from an object property buried somewhere I can rarely find to a global variable wrapped by a function set up by a global variable.

Suffice it to say, I’ve seen it all.

Over time, I’ve developed my own system of retrieving settings by creating custom wrapper functions.

Why wrapper functions?

Generally, there are two calls theme or plugin authors might make to retrieve settings:

  • get_option()
  • get_theme_mod() (this is actually a wrapper for get_option())

I like to keep wrapper functions so that I’m not directly calling those functions in various parts of my code because:

  • Sometimes default values change.
  • Sometimes I need to change something about the setting itself.
  • I might add in some validation code.
  • There can be multiple calls to the same setting, which means I might make a mistake.
  • Other plugins or child themes may need to access the setting.

Having a dedicated wrapper function for settings helps alleviate any potential issues that might crop up.

Wrappers for theme mods

Because the Theme Mods API is already a wrapper for the core Options API, this is a bit simpler for themes. What I do with themes is create a dedicated wrapper function for each setting.

Let’s suppose I have a theme mod named color_primary. The call to it would look like the following.

get_theme_mod( 'color_primary', '#000000' );

To create a wrapper function for that, I simply do this:

function jt_get_color_primary() {

    return get_theme_mod( 'color_primary', '#000000' );
}

This way, any time I need to access the color, I use the jt_get_color_primary() function. Multiple calls would all share the same default #000000 value. And, if I ever wanted to do something like add an extra hook or run some other code over it, I’d only have to do it in one place.

Wrappers for plugin options

Plugin options (and themes that don’t utilize theme mods) require a different approach. I’m going to assume that the plugin is storing all of its settings as an array within a single database option.

There are three aspects to handling plugin options:

  • Setting up an array of defaults.
  • Creating a function similar to get_theme_mod() for your plugin.
  • Creating wrappers for individual settings.

Here’s how I create an array of default settings:

function jt_get_default_settings() {

    return array(
        // 1.0.0
        'example_a' => 'example',
        'example_b' => 'example',

        // 2.0.0
        'example_x' => 'example',
        'example_y' => 'example'
    );
}

I try to leave an inline comment for when new settings are added. So, I just drop in the version number.

The next thing to do is to create a function for grabbing individual settings, similar to what get_theme_mod() does for themes.

This function is very useful if you ever add new settings to your plugin and need for new defaults to work before the user has a chance to save them. I prefer this to having to run an update routine. Note: This is the reason for the wp_parse_args() call.

function jt_get_setting( $setting ) {

    $defaults = jt_get_default_settings();
    $settings = wp_parse_args( get_option( 'jt_settings', $defaults ), $defaults );

    return isset( $settings[ $setting ] ) ? $settings[ $setting ] : false;
}

I like to add wrappers for individual settings as well. So, to get the example_a setting, I’ll add a wrapper function like so:

function jt_get_example_a() {

    return jt_get_setting( 'example_a' );
}

Conditional settings

Some settings have a limited set of accepted values and work great in conditionals. I might change it up a bit for these.

Let’s suppose we have a theme mod named layout_type to determine the type of layout. I might create a couple of functions for this, depending on my needs:

function jt_is_boxed_layout() {

    return 'boxed' === get_theme_mod( 'layout_type', $default_goes_here );
}

function jt_is_wide_layout() {

    return 'wide' === get_theme_mod( 'layout_type', $default_goes_here );
}

This helps keep some of the logic code out of theme templates.

The truth is that there’s a lot of variations you can do. They all depend on what you need and what type of data your setting is storing.

Hooks and other features

Some developers might want to add in extra hooks and such. I didn’t do this because core WP already has hooks for options. I also wanted to keep the code down to its basics for this tutorial. If you want to add in some extra hooks that are specific to your theme/plugin, go for it if you need to.

You can also run extra code within these functions, such as validation code. There are times when I do this; it just depends on what I need for a specific function and setting.

Strategies for long-term management

I don’t do this for every theme and plugin. It depends on how many settings I have and how those settings might be used by child themes or add-on plugins. If you only have two or three settings, you might not want to go this route.

However, if you have a large and complex plugin, having a dedicated options.php file where you define all of these would help out in long-term management. And, that’s my primary goal. I want to be able to not break stuff in the future and make it easy to figure out whenever I or someone else looks at the code.

Even if not following this exact method, create something that’s practical for both you and other developers who might use your code.

If you want to check out a real-world example, check out the function-options.php file from my Custom Content Portfolio plugin.

The post Settings wrappers for plugins and themes appeared first on Justin Tadlock.

WordPress 4.7.3 Patches Six Security Vulnerabilities, Immediate Update Advised

WordPress 4.7.3 is now available with patches for six security vulnerabilities that affect version 4.7.2 and all previous versions. WordPress.org is strongly encouraging users to update their sites immediately.

The release includes fixes for three XSS vulnerabilities that affect media file metadata, video URLs in YouTube embeds, and taxonomy term names. It also includes patches for three other security issues:

  • Control characters can trick redirect URL validation
  • Unintended files can be deleted by administrators using the plugin deletion functionality
  • Cross-site request forgery (CSRF) in Press This leading to excessive use of server resources

These vulnerabilities were responsibly disclosed by a variety of different sources contributing to WordPress security.

Version 4.7.3 is also a maintenance release with fixes for 39 issues. This includes a fix for an annoying bug that popped up after 4.7.1 where certain non-image files failed to upload, giving an error message that said: “Sorry, this file type is not permitted for security reasons.” Those who were negatively impacted have been waiting on this fix for two months.

WordPress sites that haven’t been updated have been subject to a rash of exploits during the last month after a WP REST API vulnerability was disclosed. Now that the patched vulnerabilities in 4.7.3 are public, it is only a matter of time before hackers begin exploiting sites that do not update. If you have auto-updates on, your site has probably already updated by now. If for some reason you have auto-updates disabled, you will want to manually update as soon as possible.

A WordPress without Woman.

If WordPress had no Woman contributors, 4.7 wouldn’t have had a release lead.
If WordPress had no Woman contributors, The queue for plugin reviews would rarely be empty.
If WordPress had no Woman contributors, many WordCamps would lack lead organizers, speaker wranglers and sponsor wranglers.
If WordPress had no Woman contributors, most WordCamps never would have been approved to be organized.
If WordPress had no Woman contributors, The REST-API never would have made it into core.
If WordPress had no Woman contributors, WordPress for Dummies never would have been written.
If WordPress had no Woman contributors, many support questions would go unanswered.
If WordPress had no Woman contributors, the training team wouldn’t have created lesson plans to help anyone teach WordPress.
If WordPress had no Woman contributors, most waapuu would never have been designed.
If WordPress had no Woman contributors, WordPress would be inaccessible to many people using assistive technology.
If WordPress had no Woman contributors, WordPress wouldn’t be fully translated in over 60 languages.

There is no area of WordPress that is untouched by the contributions of Woman. In honor of International Woman’s Day tomorrow, my friend Mika is participating in “A Day Without Women”. I support her and every other Woman of WordPress that chooses to do the same.

The theme for 2017’s International Woman’s Day is “Women in the Changing World of Work: Planet 50-50 by 2030”. While Planet 50-50 ignores the gender non-binary members of the world, it’s a phrase that aims to seek equal representation, recognition, and opportunity.

For my fellow men of the WordPress community, I encourage you to make sure a woman who’s work you appreciate is known tomorrow. Without the contributions of woman, WordPress would be worse off.

Ask Yoast: redirecting your site to non-www and HTTPS

Let’s say you own the website http://www.some-example.com. At one point, you might like visitors to go to the non-www version instead of the www version of your domain. In addition to this, if you follow security best practices, you might want to switch from HTTP to HTTPS. What should you do if you want to make both these changes? You probably figured out that you’ll have to redirect traffic from your current domain to your preferred domain. But what’s the best way to do this? Is there a preferred order?

We received an anonymous question for this Ask Yoast:

“I want to move my site from www and HTTP to non-www and HTTPS… what should I do?
1. Strip www and then force HTTPS;
2. or force HTTPS and then strip www?”

Check out the video or read the answer below!

Our SEO for WordPress eBook guides you through every aspect of Search Engine Optimization »

SEO for WordPress$ 25 - Buy now » Info

How to switch from HTTP to HTTPS and www to non-www?

Check out the video or read the answer below!

You should do both at the same time. You should redirect the HTTP link straight to the HTTPS version without the www. Don’t try to do that with two 301 redirects, you should do that in just one 301 redirect.

Forcing HTTPS is something that you need to test really well. There are all sorts of things in your site that probably aren’t HTTPS ready that you should know of upfront. I know it was a lot of hard work to get yoast.com to HTTPS and we don’t even have ads. Especially ad services can be really tough to get working on HTTPS. But you should do it in one go. So it’s really secret option number three: redirect from one to the other straight away, and don’t think about anything else.

If you really can do HTTPS for everything and it works fine, make sure to add an HSTS: ‘Strict Transport Security Header’, which forces everything to be over HTTPS. And then, if the browser sees an HTTP link to your domain in the content somewhere, it will still automatically grab the HTTPS version, thus the right one.

Good luck!

Ask Yoast

In the series Ask Yoast we answer SEO questions from followers. Need some advice about SEO? Let us help you out! Send your question to ask@yoast.com.

Read more: ‘How to remove www from your URL’ »

WordPress Plugin: Blackhole Pro

Announcing the Pro version of my WordPress security plugin, Blackhole for Bad Bots. Like the free version, Blackhole Pro protects your site against bad bots, spammers, scrapers, scanners, and other automated threats. This increases site security and saves precious server resources for your legit visitors. It’s time to say “bye bye” to bad bots.

[ Blackhole Pro ]

Trap bad bots in a virtual Blackhole!

How does it work?

Blackhole Pro adds a hidden link to your pages. You add a rule to your robots.txt that instructs bots to stay away. Good bots will obey the rule, but bad bots will ignore it and follow the link.. right into the blackhole trap. Once trapped, bad bots are blocked and denied further access to your entire site.

The main benefits of Blackhole Pro include:

  • Stops leeches, scanners, and spammers
  • Saves server resources for humans and good bots
  • Improves traffic quality and overall site security

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rules. Failure to comply results in immediate banishment. And if that seems too harsh, you can adjust the number of allowed “strikes” via the plugin’s Threshold setting.

What about human visitors?

What about human visitors? Will they get banned from the site if they follow the hidden blackhole trigger link?

Nope. The blackhole trigger is completely hidden from normal visitors. The only way to discover the link is to snoop around in the page markup. And even if someone does happen to find the link, it clearly warns against following it. So there is virtually zero chance of false positives. If you are concerned about any code-inspecting visitors who might find the hidden link, you can adjust the Threshold setting to allow for a few “mistakes”.

Pro Features

Blackhole Pro includes all features of the free version, plus settings to give you full control over virtually everything. Pro version features include:

  • Customize Blackhole Warning message
  • Choose a custom blocked message for bad bots
  • Disable Blackhole for logged in users
  • Logs number of blocked hits for each bot
  • Set the number of hits before a bot is banned
  • Exclude Blackhole trigger link on specific posts/pages
  • Customize the trigger link with any text-markup
  • Optionally redirect all blocked bots
  • Optionally redirect all whitelisted bots
  • Choose a custom HTTP Status Code for blocked bots
  • Includes new email alert templates
  • Customize your own email alerts with shortcodes
  • Plus all of the features of the free version!

So you can customize just about all aspects of the plugin. Blackhole Pro also features complete documentation and tips via the Help tab of any plugin screen. And of course, you get one-click restore of the default plugin settings and Bad Bot Log. In the words of Darth Vader, Blackhole Pro makes trapping and blocking bad bots:

All too easy..

Bad Bot Log

To make the Pro version extra awesome, Blackhole Pro includes a robust, full-featured Bad Bot Log, where you can view and manage all of your blocked bots. The Bad Bot Log is extra deluxe with the following features:

  • Geo/IP location lookups for every blocked bot
  • Field-refined search, custom sorting, and paged results
  • One-click forward/reverse and DNS lookups for each bot
  • Add bots manually, directly via the Bad Bots screen
  • Delete any bot or multiple bots with a click

Blackhole Pro is by far the coolest plugin I’ve developed so far. I’m really excited about it, and hope that it benefits WordPress users who take their site’s security, reputation, and performance seriously. Plus it’s just a lot of fun to trap and block bad bots :)

Screenshots

Full-size screenshots of Blackhole Pro:

Complete documentation for Blackhole Pro available at Plugin Planet.

Get Blackhole Pro

Learn more and get Blackhole Pro at Plugin Planet »


Initial Customizer Survey Results Reveal Majority of Respondents Don’t Use It

In January 2017, WordPress core design contributors posted a survey titled What are you using the Customizer for? The link was published on the Make WordPress Design blog and wasn’t widely shared, so it only received 50 replies. Responses were anonymous, but most seem to have come from the WordPress developer community.

Despite the small sample number, the design team deemed the initial results important enough to share with the community. Responses on the first question show that 53% never or rarely use the Customizer and 7.8% tend to only use it when setting up a site for the first time. Those who do use it (39.3%) range in frequency from monthly, weekly, and daily.

More than half of respondents (53.6%) do not add plugins to extend the Customizer. Those who do are adding plugins for theme options (12.5%), colors (5.4%), layout (7.1%), and other (21.4%). The majority of respondents indicated they use themes that add new functionality to the Customizer (53.9%) and those specified include colors, layout, typography, theme options, and design features.

When asked if is there anything in the Customizer they cannot live without, 53.2% of respondents said no. This isn’t surprising given that most of them seem to be developers who are likely familiar with adding custom CSS or making edits to a child theme. Only 6.4% said they could not live without live previews. When asked if there was anything in the Customizer they never use, 31.3% of respondents said “Everything,” 20.8% said “No,” and the others identified specific features.

The negative comments on the questions are a general indicator of the lingering dissatisfaction with the Customizer. For those who use the feature regularly, one strong theme in their comments is that the separation between what settings are available in the Customizer versus the backend is confusing:

Setting up theme styling, redesigning, setting up sites, etc. Very useful for quick changes like a new header image to change up the look. Wish you could edit everything there instead of going elsewhere to edit content too.

I don’t like it and wish that I didn’t have to use it. Most often if there is a setting I had to use the customizer for, I will either forget that something was set in the customizer and end up hunting around for it for a long time before remembering that’s where it was. More often than not the “preview” functionality doesn’t work and you have to save the settings anyway. Also there doesn’t seem to be any consistent logic as to what features should be in the customizer, and theme authors just put whatever they feel like putting in there.

What would be great, it is to incorporate more settings in the Customizer in order to avoid the back and forth to set up the site (date format, title, tagline, posts per page, …).

Many users don’t understand the separation between content and presentation and don’t approach the Customizer with this mindset. Therefore, the Customizer’s omissions create a disjointed experience for users who are new to WordPress.

Absolutely! Most of my clients complain about the footer and why is it so difficult to modify something so basic as this sentence: “Proudly powered by WordPress”… It is really nonsense having so many options in customizer and still having to create a child theme only to be able to edit the standard footer sentence… That doesn’t make any sense, really!”

These kinds of frustrations are likely to continue until the Customizer can unify the content and theme editing experience. Currently, the bulk of content editing happens in the admin, but Customizer contributors are working towards adding frontend editing powered by the Customizer.

It is difficult to know how to place this data, since the survey didn’t ask for any information about the respondents’ WordPress background. However, the large number of negative responses underscore the importance of having the Customizer as one of the three focuses for WordPress core development in 2017.

Customizer component co-maintainer Weston Ruter said he’s “not really surprised” by the negative feedback in the survey, as there are lots of passionate opinions about the Customizer.

“Everyone should agree that the Customizer isn’t a finished product, but the answer to that is to make it a focus and make it the live preview interface that WP needs, not rip it out,” Ruter said. “And that focus is what 2017 includes.”

The survey is still open, if you want to contribute more data for the design team to consider.

Whipping your hosting into shape

In this post I explain why Yoast SEO will soon warn people whose website runs on an older, unsupported, version of PHP to upgrade their PHP version. We’re doing this mainly to improve the security and speed of those websites.

This post is long, but I’ll explain:

  • what the problem is;
  • why we want to fix it;
  • why we burden the user with it;
  • and how web hosts can work with us.

PHP? Versions? What are you talking about?

WordPress, (like Yoast SEO), is built in large part in a programming language called PHP. This language, as WordPress itself, has gradually improved over time. Web developers all over the world are enjoying the new features that newer versions of PHP have brought. Also, more importantly, everyone all over the world enjoys the increased security these new versions bring. Unfortunately, WordPress developers do not get to join in.

Compared to WordPress, PHP has a rather aggressive update path. PHP 5.6 will receive security patches for just under two more years, but nothing else, and no other PHP 5 version receives security updates. PHP 7 is the future (and boy is it nice and fast).

Ever since July 2011, the minimum PHP required for WordPress is PHP version 5.2. Here at Yoast, we think it’s time for WordPress to move that requirement up to PHP 5.6.

Why do you care so much?

At Yoast we care about a lot of things, but two things in a very particular order: user happiness first, developer happiness second. A user is happy when he or she has a fast, easy to install, secure content management system like WordPress to build a site in. A developer is happy when he or she can use a modern language and modern tooling to build software with.

Security

The single most important reason for us to want to increase the minimum requirement is security: PHP versions 5.2 through to 5.5, while still actively in use on millions of sites, no longer get security updates. Some Linux branches and web hosts still backport security fixes from newer PHP versions to older versions, but that’s not something we, as a community, should rely on.

This security concern is not a theoretical concern. We have seen time and time again that the number one reason sites get hacked is because of outdated software. The last release of PHP 5.2 is 6 years old, and several major security issues have been found in it since. WordPress has automatic updates for security updates built-in for exactly this reason. Why would we push people to update WordPress and its plugins regularly, but let the PHP version fall behind?

Speed

Another big issue is speed. WordPress is sometimes said to be slow, but it actually doesn’t have to be slow at all. If it’s running on old versions of PHP however it is, most certainly, slow. PHP 5.2 is more than 100% slower than PHP 5.6, and a whopping 400% slower than PHP 7 (source). If you’re getting a bad reputation because you’re allowing old stuff to stay around, maybe we shouldn’t allow the old stuff to stay around so much?

Modern programming language

PHP 5.2, which was released November 2nd 2006, is no longer a modern language. This makes developers unhappy because they’re missing many of the cool features every other modern language has.

As WordPress is gaining popularity, something else is happening because of this: more and more developers are turning their back on WordPress because it’s moving too slowly. Developing themes or plugins for WordPress, where PHP 5.2 is required, is a hassle and thus not as much fun. This is becoming a problem: we’re literally losing good developers. Those developers could benefit the entire community, but we’re missing out because we’re not getting with the times. Over time, losing developers means other products will move faster, and WordPress will lose marketshare.

Why isn’t WordPress simply upping the requirements to PHP 5.6?

There is a long and ongoing discussion in the WordPress community about upping the requirements for PHP to 5.6. The problem lies therein, that for a user, upgrading their PHP version is non-trivial in a lot of cases. It’s not something we want to burden a user with. So we’ve been waiting and waiting for web hosts to do their work. We’ve been waiting, literally, for years. Unfortunately, it turns out, not all web hosts are created equal. Not all of them pro-actively upgrade their customers to newer PHP versions.

As I type this, the WordPress stats page says 5.6% of websites is using PHP 5.2, 15.6% is using PHP 5.3, 23% is using PHP 5.4 and 15.4% is using PHP 5.5. That means almost 60% of WordPress installs is running on an unsupported version of PHP. So much for web hosts doing their work.

Because web hosts are not upgrading PHP, we have decided to start pushing this from within plugins.

Why don’t web hosts update PHP?

When you’ve seen all the above, you’re probably wondering why web hosts don’t pro-actively update their customers PHP versions. Well the good news is: lots of them do. If you’re on one of those hosts, and you’re running PHP 5.6 or higher: good on you! Other hosts though, seem to be intent on doing as little as possible while still keeping the customer.

We’ve heard all sorts of reasons from hosts to not want to upgrade PHP. The only one we understand to a certain extent is that they don’t want to break your site. Some software running on the same server as your site may not support newer PHP versions, probably because that software needs to be upgraded too. But in all honesty: you shouldn’t have to worry about that. We think a host should upgrade your PHP for you.

What is Yoast going to do?

Combined, all of the above reasons make us very intent on moving WordPress forward. Unfortunately, we don’t have the power to decide on minimum requirements. So we’ve decided to throw our weight behind this in a different way.

As of Yoast SEO 4.5 we will start showing a notice on the WordPress dashboard to administrators of sites running on PHP 5.2.  This notice will be big, ugly, and non-dismissible. In this notice we will explain why the administrator should upgrade the PHP version of the site.

If a web host integrates with our project, which we’ve called WHIP, the host can add some information about how to upgrade right within the notice. See the Github repo for info about how to integrate.

The notice will also encourage people to contact their host if they don’t know how to upgrade their PHP. Yes, this could be painful for some hosts. This notice is deliberately intended to make them work.

As a last resort, if a users host does not cooperate, we recommend the user to change to better hosting. We will provide a link to a page we’re building right now here at Yoast, with hosts that we’ve vetted. When we say we’ve vetted them, we mean it: we have verified that Yoast SEO works well on their servers and that they put new customers on modern PHP versions. The page isn’t ready yet, but it’ll be cool and we will not be using affiliate links on that page. This isn’t about money.

Does this stop with PHP 5.2?

This most probably does not stop with PHP 5.2. We will release it and watch closely what’s happening. If it works, we will start pushing the same notice for PHP 5.3 a few weeks later, and so on. We fully intend to see if we can get the minimum version up to 5.6.

I’m a theme / plugin developer, can I join?

You can of course join this endeavour! Our WHIP package is open source and very easy to implement. Put it in your code following the instructions on the repository and you too will be part of this move forward! Of course your feedback is highly appreciated on that repository too.

For developers that want to integrate WHIP into their plugin, we will make it possible to link to the WordPress.org hosting page. Those hosts are all PHP7 ready too.

Why are you telling us now?

We’re telling you all this now because we fully hope that we have to show this notice to as few people as possible. Upgrade your PHP versions. If you’re a host, integrate with our messaging system and start proactively upgrading your customers PHP versions. With 6.5 million active installs of Yoast SEO, you’re bound to have a lot of customers that are going to start asking for help. You might as well get started.

Why You Have to Target Non-US Markets For Higher Profits

Currently, the United States is the world’s largest national economy. Its GDP for 2016 is $18,56 trillion, hosts the majority of the biggest companies in the universe (that we know of), and is notoriously known as the “land of unlimited possibilities.”

GDP for the US over the years – source

It’s only natural to target the US market when selling services, or products, and aim for a higher percentage of visitors, users, and customers living in the States. It’s the goal of many entrepreneurs and a target for their marketing teams.

A study quoted by Reference.com for 2014 states that an average person spends $3,735 per month in the US. That equates to about $45K every year and shows the purchase habits of US citizens and their ability to spend money on different activities and products.

However, the US market also comes at a price. It’s oversaturated, with tons of offerings on the market. Rents are high, and so are the salaries for local staff. Finding talent is close to impossible for professional jobs given the number of BigCorp entities offering incredible company packages and added benefits. Positioning yourself high and getting a piece of the pie may be far more complicated and expensive that you may expect at first.

For many businesses, selling outside of the US may yield higher margins and lower costs – even for US-based businesses. Here are some of the main reasons why targeting other markets could be preferable for your business.

1. Competition in the US is Enormous

Whatever you’re selling, it’s unlikely that it’s unique and revolutionary when pitching the US market. Most ideas have already been implemented. You are either competing in a developed category with intense competition or trying to invent a new category, which requires endless education and PR stunts to pull it off correctly.

Targeting a local market will position you in the sweet spot of selling an already known type of product that hasn’t been developed in that area. You can take advantage of local events and meet people who don’t get a chance to interact with your competitors. Or advertise as the one and only product in the space on a local level.

2. Possible Revenue Increase

Being the only service provider in the area can allow you to sell at a higher cost than your initial estimate while reducing your costs by tackling international markets.

It’s a combined benefit of lower competition, lower marketing costs, potential outsourcing in a market with lower salaries, and selling to several different countries with a combined higher GDP than the US.

Even if the spending power of US consumers is high, that doesn’t mean that the sale is easier. Buyers are educated and look for the best opportunities on the market. Some enterprises even launch free products that you can never compete with or can generate losses when entering a competitive market in order to bankrupt a competitor. That’s also true for start-ups that have received funding and are expected to run at a negative profit for a while until they position their brand or generate enough user base.

3. Easier to Prove Value and Expertise

Building brand reputation would be easier since you’re no longer a small fish in a big pond. Your previous knowledge is likely more valuable in certain markets worldwide, and you can leverage it for media exposure, building trust, and brand awareness.

Additionally, your prior expertise can be instrumental to partner businesses who can cross-promote your products or feature you in webinars, local training activities, university events and more.

4. Cost per Click For US is Times Higher

Stats by https://adespresso.com/

Paying for advertising in the US is 5-10 times higher for the same keyword as compared to other countries. Added to the fact that US buyers are “spoiled” regarding opportunities and available opportunities, your actual customer acquisition cost may be 20 times higher than an alternative market.

That’s valid for Google Adwords, Facebook Ads, LinkedIn and other networks that have been widely used across the world.

5. Pitching in English vs. Multilingual

If you live in the US or another country with English as a primary language, selling in the US means that you’re competing with everyone out there who has learned English. English is an official language in various countries and a mandatory second language in the majority of the schools across the world.

When targeting a foreign market, you can partner up with a local business who can lead the negotiations and translation for you, or directly hire a local who would deal with business development. Later on, you can open a local office or hire several people, but for starters even sending a translated presentation or a script for a radio commercial would do miracles – as long as your product is brought in that language and can be used by the locals.

Despite the broad understanding of English worldwide, many people can’t communicate freely, or simply prefer using localized software and services. Offering a localized solution when your competitors focus only on the US audience could be amazing for your business growth.

6. Certain Niche Markets are Strong Elsewhere

Many industries are well developed outside of the US.

Take the oil industry as an example. The United States ranks as number 10 in the list of countries by proven oil reserves. Venezuela, Saudi Aramco, Canada, Iran, Iraq head the top 5. Saudi Aramco – based in Saudi Arabia, is the world’s most valuable company with an estimated value of up to $10,000,000,000,000 (correct, that’s ten trillion dollars).

Working with a leading vendor based outside of the US in a niche market, in their own language, understanding their culture can be more rewarding for you in the long run.

7. Local Opportunities in Certain Areas

There are plenty of possibilities for business problems that have been solved in the US long ago or are simply not a problem there. Some are related to the economic development, lack of good Internet or telephony coverage, climate specifics, architectural decisions.

An overview by The Energy Collective summarized the costs of electricity by country:

The higher the costs, the more likely it is for a country to invest in renewable energy or alternative sources that would bring the costs down.

For example, solar energy in Africa could be used as the primary electricity generator since some parts of Africa report over 300 days of sunlight. Building sun-charging power banks or cheap smartphones recharging with solar energy could be an opportunity that simply isn’t relevant in the US.

Speaking of smartphones, Africa is the second largest market for selling smartphones. As a comparison, 77% of Americans now own a smartphone.

Those unique local opportunities can be leveraged if you are the first vendor in that niche and bring along the existing expertise of innovators who have experimented in that space.

8. Local Culture Fit is Indispensable

Looking for the best “culture fit” when hiring in the US is extremely common since any deviations can impact the business success or the calibration of an existing team.

It’s even more widespread when working with different markets. You’ve probably seen Japanese ads on YouTube or a TV show aired in France, India, or Russia. If it appears to be funny or odd for you, it may be perceived as normal in the local region.

Many US companies who try to expand globally don’t take local culture into account. They try to apply the same process internationally, but results are usually not as promising. You can study a domestic market and partner up with someone who can guide you through the market specifics. At the end of the day, you’ll target a localized experience that is natural to your audience.

9. Gradual Market Expansion

Aiming for the US market alone could lead to lost opportunities when working with different markets. Lack of translations for your product or user guides, no “right-to-left” font alignment options, no support for additional currencies, sticking to local holidays may reduce the feature set of your product when going internationally.

When you start with a localized market, expansion is part of the long-term plan. Therefore, you should be prepared for local-specific changes which would allow you to grow internationally and scale quickly.

10. Global Networking

Providing solutions in several countries can grow your network, and introduce you to entrepreneurs or professionals with diverse expertise. This could be invaluable at some point for building partnerships, hiring locally, receiving media exposure, organizing events, or connecting with other peers.

According to a research study, over 40% of the Fortune 500 companies were founded by immigrants or their children. Geniuses and smart business owners can be found everywhere, and your reputation in a local market could increase your chances of meeting these who haven’t received the right appraisal yet.

11. International Growth at Lower Costs

Growing your business when working with international markets would detach you from the corporate culture of hiring on-site people working in the same environment. When competing for talent working inside of great metropolitan cities, your business is compared to tech and finance giants, cool startups, or established corporations that could hire everyone in the area.

Here is how Economics Online defines the supply curve of labour in competitive markets:

In a perfectly competitive labour market, where the wage rate is determined in the industry, rather than by the individual firm, each firm is a wage taker. This means that the actual equilibrium wage will be set in the market, and the supply of labour to the individual firm is perfectly elastic at the market rate.

Equilibrium wage in the labour market, and supply for the individual firm.

Working internationally allows you to focus on a distributed culture, and find the best talent across the globe. Additionally, hiring in different countries would enrich your company culture, the number of languages your team speaks, and the abilities to target new markets.

Office costs and other operative expenses in the US are also a tradeoff if you try to hire local people and find a large office downtown in a top city. Its benefits may not be justified if your product costs are too high and margins are close to zero.

12. Economic Risk Dispersion

Globalization, political uncertainty, and economic fluctuations have endangered businesses over the years.

In 2015, the European Union announced VAT MOSS and required companies registered in EU countries to collect VAT for digital products based on the place of purchase instead of the place of supply (the origins of the site). Collecting VAT for 28 separate EU members with a total of 75 VAT rates let to closing hundreds of small eCommerce businesses in the United Kingdom alone within a week of the official announcement.

Similar drastic changes have affected other businesses in numerous countries, and relying on a single market is simply a liability.

International growth on various markets would reduce the risks of jeopardizing the future of your business by targeting a particular market. The economic bubble in the start-up industry, recent political changes and distributed workforce around the world may affect some of your target customers, so profile your audience wisely.

13. Head Start When Targeting the US

If you start internationally and develop several locations successfully, focusing on the US next would be easier.

Your product won’t be a brand new solution with no user base. Your portfolio will include successful businesses, case studies, reviews, and testimonials from people who are already acquainted with your business. Your initial launch would be more tempting to investors, partners, new customers.

As compared to a new product with no adoption, you would already be a stable operation with recurring revenue and real customer feedback.

14. Take Advantage of Local Funding Opportunities

What was the initial investment for known brands? By http://fundersandfounders.com/

While Silicon Valley provides opportunities for investments, every start-up tries to move there and attract VCs and angel investors. At the same time, there are other possibilities in less developed markets with emerging entrepreneurial communities.

Africa, Eastern Europe, South America and slower economies around the world want to develop their own entrepreneurial ecosystem, start new incubators and reinvest in local products. This is a terrific chance for receiving funding and building something for a domestic market that can be exported worldwide later.

15. More Wow, Less Pressure

Targeting markets with fewer opportunities and low competition is less stressful, and more rewarding as a result.

Think about starting an engineering company in a small town as compared to San Francisco or New York. The local town probably has only 1 or 2 competitors who run slowly, and don’t implement the best industry practices. Local talent has nowhere else to work at, and appreciates the opportunity to work in the same town without relocating or commuting for 3-4 hours every single day.

Local politicians and foundations are willing to feature companies that provide incredible opportunities, give away rewards, and help out with PR. Given the lower competition, you won’t need to work 24/7 in order to innovate and provide unique opportunities in order to keep your talent happy. Job-hopping in metropolitan cities is quite common (with rates averaging 1.5 years of employment in each company), but loyalty and commitment in less entrepreneurial markets allow you to focus on work-life balance and great company culture (instead of squeezing 80-hour work weeks from your staff).

And Yet, Don’t Forget the US

Having said that, the US market is still a great one that provides incredible opportunities for growth, creativity, innovation and business success. When building your plan of activities, don’t discard any country or market as a potential one, and define your success metrics based on a detailed statistical research.

You can focus on the US directly and try to compete with the big players with a unique proposition, or start small with less pressure in other profitable places that would boost your presence and customer base. An alternative option is positioning you for US customers while building localized versions for a couple of external markets.

Validate your concept by contacting prospects in all areas, and run small ads focused on each region. Measure customer engagement and costs per click (and acquisition of a client), and iterate from there.

 

 

 

The post Why You Have to Target Non-US Markets For Higher Profits appeared first on Mario Peshev on WordPress Development.

Beware Your Zips!

Its not you, it’s Google.

A lot of people have been mentioning that Gmail won’t send emails if they have zips. Other people have no problem. And reading the list of filetypes that are blocked, it took me a while to figure out what was going on. Not only does Gmail block bad attachments, they also check in your zips to see what files are there:

Certain file types (listed below), including their compressed form (like .gz or .bz2 files) or when found within archives (like .zip or .tgz files)

And guess what filetype Gmail just added on as a banned attachment? `.js` files. Explains perfectly why some of you had no problem and others have massive ones, right? Right.

My advice is, and has been for quite a while now, to use GitHub or Gitlab or Bitbucket or some sort of true development version control system. They all generate their own zips and you can just link us to them. Plus if it’s really complicated to explain what’s wrong, we can highlight the code for you.

I strongly recommend you NOT use free download sources like mega file and all those other ones, especially if they offer faster downloads for money. The majority come with scam popups, viruses, and x-rated ads. Of which I have seen enough. Dropbox is free and has public links. Plus you all have your own websites and can upload a zip there if needed.

#notice

Top 10 WordPress Rich Snippet Plugins

A single keyword can lead to millions of search results on any of the popular search engines. A user comes across multiple websites whenever any keyword(s) or topic is searched. To attract users to a particular website has become a tedious job. This is because there are tons of options for the users, so getting a website clicked through needs some extra efforts.

In 2009, Google introduced ‘Rich Snippets’ with the purpose of giving some extra visibility to a link or website. High rankings on Google etc. are not enough nowadays. Adding rich snippets to your webpage definitely increases its click-through rate (CTR).

What are Rich Snippets?

Whenever we explore about any topic on popular search engines like Google, Yahoo etc. we often get our search result links along with prices, star ratings, author photo, image, event times and much more. These attention-grabbing links are often visited more by the user than the conventional links. The premier goal is to help web developers present their content better and give users as much information as possible before they make a choice to click on any website.

A Rich Snippet comprises of every minute detail that a user wants. It summarizes any page in the search results of Google, Yahoo, Bing etc. and displays it in a nice format just like a Facebook news feed.

Rich snippets include the following information:

  • Star ratings
  • Price range
  • Images and Video
  • Average Review
  • Phone Numbers, Address and Photo
  • Event Location, Date and Time
  • Author Photo
  • Breadcrumbs

How are Rich Snippets useful?

Rich snippets are useful for websites in many ways.

They give only the relevant, important and precise search results to the search engine for displaying. Thus, helping the users by saving their time and focusing on the relevant links.

Users find Rich Snippets very interactive, which in return boosts the chances of a link or website being clicked. The use of star ratings, images, photos videos, etc attract a number of users than just using the old plain text.

Helps a website in ranking higher. Users generally tend to click only on the top 5 links which are displayed for any corresponding search that has been done via the search engine. So, it would be a total waste if any link or website doesn’t rank higher.

Rich Snippets make a huge difference in Click-Through Rate (CTR). Using plain text no longer attracts that amount of users which a snippet rich link would.

Also useful for Facebook as it displays proper information whenever a user shares any link on it.

Top 10 WordPress Rich Snippet Plugins

1. All In One Schema.org Rich Snippets

wordpress rich snippet plugins

If you are looking for a top quality WordPress plugin to add rich snippets, then you have come to the right place. This plugin provides all the important and precise information to display in search result snippets. It has more than 40k downloads and 4.4-star rating making it the Swizz knife of plugins.

Key features

  • Installation and configuration are quick and easy.
  • Developers provide a fast and free support.
  • Supports common schema along with reviews, ratings, events, people, products and recipes.

Price: Free

More Info/Download

2. Rich Reviews

wordpress rich snippet plugins

This plugin delivers premium type features and support. It is compatible with the latest version of WordPress. Rich Reviews gives the control to use and customize three types of reviews: per-page/per post, category or worldwide reviews. Plus there are numerous color options for the star and numerical rating system.

Key features

  • Premium features and support.
  • Multiple options are available for the users for editing.
  • Compatible with the latest version of WordPress.

Price: Free

More Info/Download

3. Rich Snippets WordPress plugin

 

This is the best paid plugin which you can use for specific requirements. The plugin ships with pre-installed shortcodes but the users have the option to manually add their own in every post and pages.

Supported snippets by this plugin are

  • Reviews and Ratings
  • Products
  • People
  • Businesses and organizations
  • Recipes

Price: $12

More Info/Download

4. WP Review Pro

rich snippet plugin for wordpress

WP Review Pro is a good option for creating a product review site. It is very flexible and comes with its powerful settings options panel to help the user get started quickly.

Key features

  • Responsive
  • Speed Optimized
  • SEO Ready
  • Use on Unlimited Sites

Price: $39

More Info/Download

5. kk Star Ratings

rich snippet plugin for wordpress

kk Star Ratings is the best and one of the widely used star rating plugins for WordPress. It shows beautiful star rating in the Google search bar which makes a blog post stand out.

Key features

  • Best Star Rating plugin
  • Widget support
  • Widgets can be placed in the Sidebar to show popular posts which are top rated.

Price: Free

More Info/Download

6. WPSSO Schema JSON-LD Markup

rich snippets wordpress

This is a premium WordPress plugin. If a user wants to pay for plugins then this is the best option. Its offers complete schema, Rich Snippet markup and Structured data. It resolves all the errors of schema markup in the theme template.

Key features

  • Premium WordPress plugin
  • WooCommerce support
  • Adds all product variations to the schema product markup.

Price: $19.95/Free (Lite Version)

More Info/Download

7. WP Rich Snippets

rich snippets wordpress

WP Rich Snippets is another premium plugin which is quite useful. The user has a complete control over the schema data that is added to each page and post. As a user, you can control what your readers see on your website. This may include review summaries, pricing, percentage ratings and more.

Key features

  • Complete control over the schema data.
  • Tons of features
  • Customer support
  • Also displays product, organization or restaurant data.

Price: $69+

More Info/Download

8. Schema App Structured Data

Schema App Structured Data is a simple tool which allows any WordPress website owner to edit their schema directly, even if they have zero coding knowledge. On successful installation, it automatically generates default schema markup to your whole website which includes pages, posts, author pages and more.

Key features

  • No coding knowledge required for editing for editing the schema of each page.
  • Technical support available.
  • Advanced features are available in the premium version.

Price: Free/Premium version at $37

More Info/Download

 9. Rich Contact Widget

Rich Contact Widget is used for adding rich snippets related to user’s contact details for search engines. This plugin is great for location-specific online business. It provides the user’s with an easy option to find out the address details in the search results.

Key features

  • Great plugin for location-specific online business.
  • Shows details on Google map page.
  • Display a static image map of your location.

Price: Free

More Info/Download

10. WP Product Review

rich snippets wordpress

It is a comprehensive product review plugin for WordPress which includes rich snippet support. The admin can make any post tag as a review post and insert the review related details. This plugin is highly customizable.

Key features

  • Customer Review Icons
  • Preloader functionality
  • Unlimited Options

Price: Free (Lite version)/Premium ($75+)

More Info/Download

Conclusion

Above is a brief description about the top 10 rich snippet plugins for WordPress websites. Please comment in the section below and let me know if I have missed any of the important plugins which could have been mentioned instead of those above.

Related: 7 WordPress Plugins for Increased User Engagement

Author Bio:

Sarah Clarke works as a professionally qualified WordPress developer at WordSuccor Ltd., a renowned firm providing WordPress services at very reasonable cost with a global reach. She loves to share her thoughts on WordPress and always looking for learning something new about it.

How to Display the Last Updated Date of Your Posts in WordPress

Do you want to display last updated date for your posts in WordPress? Some websites regularly update their posts and would like to show users when the article was last updated. In this article, we will show you how to easily display the last updated date of your posts in WordPress.

How to display last updated date of your posts in WordPress

When You Need Last Updated Date for Posts in WordPress?

Most WordPress themes usually show the date when a post was last published. This is fine for most blogs and static websites.

However, WordPress is also used by websites where old articles are regularly updated (like ours). This last updated date and time is important information for those publications.

The most common example is news websites. They often update old stories to show new developments, add corrections, or media files. If they only added the published date, then their users would miss those updates.

Many popular blogs and websites don’t show any date on their articles. This is a bad practice and you should never remove dates from your blog posts.

Having said that, let’s see how to easily display last updated date for your posts in WordPress.

Displaying Last Updated Date in WordPress

This tutorial requires you to add code to your WordPress files. If you haven’t done this before, then we recommend you to look at our guide on how to copy paste code in WordPress.

Method 1: Show Last Updated Date Before Post Content

You will need to add this code to your theme’s functions.php file or a site-specific plugin.


function wpb_last_updated_date( $content ) {
$u_time = get_the_time('U'); 
$u_modified_time = get_the_modified_time('U'); 
if ($u_modified_time >= $u_time + 86400) { 
$updated_date = the_modified_time('F jS, Y');
$updated_time = the_modified_time(); 
$custom_content = '<p class="last-updated">Last updated on'. $updated_date . 'at'. $updated_time .'</p>';  
} 

    $custom_content .= $content;
    return $custom_content;
}
add_filter( 'the_content', 'wpb_last_updated_date' );

This code checks to see if a post’s published date and last modified dates are different. If they are, then it displays last modified date before the post content.

You can add custom CSS to style the appearance of the last updated date. Here is a little CSS that you can use as starting point:

.last-updated {
    font-size: small;
    text-transform: uppercase;
    background-color: #fffdd4;
} 

This is how it looked on our demo website.

Last updated date in post content

Method 2: Add Last Updated Date in Theme Templates

This method requires you to edit specific WordPress theme files. Many WordPress themes now use their own template tags which define how these themes show post meta data like date and time.

Some themes also use content templates or template parts to display posts.

Few simpler themes will use single.php, archive.php, and other template files to show content and meta information.

You will be looking for the code responsible for displaying the date and time. You can then either replace that code with the following code, or add it right after your theme’s date and time code.

$u_time = get_the_time('U'); 
$u_modified_time = get_the_modified_time('U'); 
if ($u_modified_time >= $u_time + 86400) { 
echo "<p>Last modified on "; 
the_modified_time('F jS, Y'); 
echo " at "; 
the_modified_time(); 
echo "</p> "; } 

This is how it looked on our demo site:

Last updated date in post meta

We hope this article helped you learn how to display last updated date of your posts in WordPress. You may also want to see our list of most useful time saving WordPress shortcuts.

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 Display the Last Updated Date of Your Posts in WordPress appeared first on WPBeginner.

Coming up in WP Super Cache 1.5.0

The next version of WP Super Cache will be one with some big changes! There are many small bug fixes and improvements but the one I’m most excited about is moving the legacy cache files into the supercache directory.

The legacy cache files were the files created by the old WP-Cache plugin upon which this plugin is based. They’re really useful as they store the headers sent from the server as well as the page contents. If you’re serving pages that aren’t regular html, such as JSON or XML you don’t want to tell the browser they’re text/html documents. This caching method is also used for anyone who is logged into your site, or left a comment.
There is a problem however. They’re stored in one directory. If you have many thousands of visitors interacting with your site you may end up with a directory containing thousands of files. The names of the cache files are a hash of the URL, gzip support and browser cookies so one file can match one user, or one file can be used by thousands of anonymous users. In the event that someone left a comment on a popular post the plugin has to search through all those files looking for the pages cached for other users who were also looking at that page. On a busy server that can cause problems.

So, in #177 I added code that moves the legacy cache files into the supercache directory. That means the files are stored in directories that reflect the URL of the page that was served which makes it very easy to delete the cached files belonging to that page as they’re all in the same directory!

The new code will look in the old location for legacy files first as some sites will have a large collection of cached files, but any new cache files will be created in the supercache directory.

Ian Dunn submitted code to cache the REST API. It’s not yet complete but we’ll be able to build on the changes to the legacy cache to make caching the API more efficient than it would have been before.

I really need people to help test this. The latest code is running on this site so I’m very confident in how well it works but just because it works on my odd little server doesn’t mean it will work right everywhere. If you want to give it a spin, visit the plugin Github repository and click on the “Clone or download” button. If you don’t know how to clone a Git respository just grab the zip file and install it on your server, overwriting the files in the plugins/wp-super-cache/ directory. If the changes to where cache files go doesn’t interest you, some of the changes in this list might:

Related Posts

How to Display Category Descriptions in WordPress

Do you want to display category descriptions on your WordPress site? Categories allow you to easily sort content on your website. They also help users easily find content and are good for SEO. In this article, we will show you how to easily display category descriptions in WordPress.

How to display category description in WordPress

Adding Category Descriptions in WordPress

WordPress comes with two built-in taxonomies called categories and tags. These taxonomies allow you to easily sort your content into different topics.

When used correctly, categories and tags can also be very helpful in improving your WordPress SEO.

WordPress allows you to add descriptions for your categories. However, many users don’t notice it because they create categories when writing a post which doesn’t let them add description.

Here is how to easily add description to your categories.

Head over to Posts » Categories page. If you are creating a new category, then you can simply enter category name and description here and then click on ‘Add new category’ button.

Add category description

If you want to add description to an existing category, then you need to click on the ‘Edit’ link below that category.

This will take you to category edit screen where you can add description for your category.

Editing a category to add description

Don’t forget to click on the ‘Update’ button to save your changes.

Repeat the process to add descriptions to all your categories. You can use the same method to add descriptions for tags as well.

Display Category Description on Category Archive Page

Most WordPress themes will automatically display the category description on the category archive pages.

Category description shown on category archive page in WordPress

However if your theme does not display category description on archive pages, then you will need to edit your theme files.

Connect to your WordPress site using an FTP client and then go to /wp-content/themes/your-current-theme/ folder.

Now you will need to locate and edit category.php file. If your theme doesn’t have category.php file, then you will need to edit archive.php file.

Copy and paste this code where you would like the category description to be displayed.

<?php 
the_archive_description( '<div class="taxonomy-description">', '</div>' ); 
?>

You can now save your changes and upload the file back to your website.

After that, you can visit the category archive page on your website to see the description in action.

Display Category Description in WordPress Theme

If you want to display the category description in other parts of your website, then you can also use the category_description template tag:

<?php echo category_description(3); ?>

Don’t forget to replace 3 with your own category ID.

If you want to display category description inside a single post, then you can use this code.

$catID = get_the_category();
echo category_description( $catID[0] ); 

This code simply gets all categories for the current post and then outputs the category description of the first category.

If you would like to list all your WordPress categories with a description in list format, then you can add this code in your theme’s functions.php file:

function wpb_catlist_desc() { 
$string = '<ul>';
$catlist = get_terms( 'category' );
if ( ! empty( $catlist ) ) {
  foreach ( $catlist as $key => $item ) {
    $string .= '<li>'. $item->name . '<br />';
    $string .= '<em>'. $item->description . '</em> </li>';
  }
}
$string .= '</ul>';

return $string; 
}
add_shortcode('wpb_categories', 'wpb_catlist_desc');

This code creates a shortcode which displays all your categories and their descriptions in a plain list.

You can now use [wpb_categories] in your posts and pages. To use this shortcode inside a text widget, you will need to enable shortcodes for widgets.

List WordPress categories with description

We hope this article helped you learn how to add and display category descriptions in WordPress. You may also want to see our list of most wanted category hacks and plugins for WordPress.

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 Display Category Descriptions in WordPress appeared first on WPBeginner.

WordPress Community Summit 2017 Set for June 13-14 in Paris

WordPress contributor teams are getting ready for the next Community Summit, which will be held in Paris leading up to WordCamp Europe on June 13-14. This is the first time the event will be held outside the United States, making it more accessible to European community members who may have been unable to attend previous summits.

The summit provides an opportunity for those who contribute to WordPress and its surrounding community to tackle difficult topics that require in-person discussion or collaboration. This year the organizing team is trying a new selection process for attendees. Instead of the previous invitation-only system, contributor teams are identifying the challenging issues they want to discuss and then nominating attendees who will represent diverse viewpoints on these particular topics.

For example, a few proposed topics for the core team include discussions about the future of JavaScript in core, how to attract more JavaScript-first developers to build on WordPress, and technology version support policies (PHP, MySQL, browsers, etc.) Theme Review Team contributors have proposed discussion on how to allow for more experimentation and ways to improve the leadership of the team and the theme author and reviewer experiences.

Each of the 16 contributor teams tagged in the announcement has until March 3rd to create a list of topics and representatives, including contributors who are willing to help organize the event. An application form is open for those who represent other interests within the WordPress community but are not part of one of the contributor teams. The summit will be limited to 180 attendees (the capacity for the venue).

The call for sponsors will be published next week, but promotional activities will not be incorporated into the event. The organizing team is also working on finding sponsors to cover travel expenses for contributors who have financial barriers to attending.

“The idea of this event sponsorship is about supporting the project and the community,” summit organizer Rocio Valdivia said. “So, there aren’t levels of exposure associated with each price level other than the label that will show up in the make/summit p2 page for it and on the sidebar. We’ll add links to their sites, logos, and a huge thanks at event to all sponsors, regardless how much they’ve sponsored. The sponsorship levels are about the desire and financial ability of the companies to contribute to the summit, not about a marketing thing.”

The summit is closed to the public and the press, but there is a decent level of transparency around the topics attendees plan to discuss if you peruse the make.wordpress.org blogs. If contributor teams publish notes from the discussions as they have in previous years, the wider community will be able to follow along to see if the summit precipitates meaningful progress for the project.

Build Your Own One-Click WordPress Content Importer

In this tutorial, I’m going to walk you through how you can add a new menu in WordPress Admin Area, where your users will be able to import any demo content — including widgets, their positions and navigation as well — by a single click. The code follows the best WordPress practices, uses WP Filesystem for file management, includes escaping and all text strings are prepared for translation. It also passes the WordPress theme check plugin!


The script in action…

Important note: this script will remove existing posts, pages, comments and media library from the database! So it’s recommended to use the script on a new WordPress install or demo/testing site. The script is meant to give you a starting point to build your own content importer and customize it as desired. Here is what our script will accomplish in a nutshell:

  • Check webhosting settings, throw error message if something is not okay
  • Copy demo media files into the upload folder
  • Clear current posts, pages, comments and media library from the database
  • Import demo posts, pages, comments and media library into the database
  • Configure navigation, widgets and other settings

You can download the completed source files if you want follow along with the tutorial. I assume that non-beginner coders will read this article so I won’t explain every line. Let’s begin!

Preparing your demo content

So probably at this point your theme is finished already, filled with demo content and located on your local webserver, along with a new or test installation of WordPress. In this tutorial we’ll use the following path as reference to your finished theme folder: http://localhost/cooltheme/

Make sure that your uploaded media files are not stored in month- and year-based folders in the http://localhost/cooltheme/wp-content/uploads/ directory. This is important because we don’t want to mess with those folders when we copy the demo content. You can verify this setting in the WP Admin Area, under Settings ▸ Media ▸ Uploading files. Here is a screenshot of what that setting should look like:

WordPress Media Settings

In case you have some files that are organized in month and year folders, disable the “Uploading files” setting and save the changes. After that unfortunately you’ll have to go through the painful process of re-adding the files to the root of the /uploads/ directory. Basically for this tutorial, all media should be located in /uploads/ without using any year/month subdirectories.

Preparing the media files

Within your current theme’s directory, http://localhost/cooltheme/wp-content/themes/cooltheme/, create a folder named /importer/. Within that folder, create a folder named /media/. When finished, your theme should include the following directories:

/wp-content/themes/my-theme/                  <- theme directory
/wp-content/themes/my-theme/importer/         <- importer files
/wp-content/themes/my-theme/importer/media/   <- media files

Once that is set up, copy all files from your WP /wp-content/uploads/ directory, and paste them into the /media/ folder in your theme. Tip: if you are planning to distribute your theme publicly, make sure that all of the media files are properly licensed.

Exporting database content

Now let’s export all the posts, comments, and pages from the database. I’m going to use phpMyAdmin for this, since it’s the most popular MySQL management tool out there. Obviously you can also use your own preferred tool, e.g. SQLyog, etc. Log in to your theme’s database via phpMyAdmin and follow these steps:

  • Go to the Export tab
  • Select the Custom export method
  • Select these tables: wp_comments, wp_postmeta, wp_posts, wp_terms, wp_term_relationships, and wp_term_taxonomy
  • Save the output to a file with character set UTF-8, no compression
  • Set the format as: SQL
  • At format-specific options select data only (if there’s an option for this), we won’t need the structure
  • Function to use when dumping data: INSERT
  • Syntax to use when inserting data: insert multiple rows in every INSERT statement
  • Press the Go button and save this SQL dump file on your local machine

phpMyAdmin Export SQL Dump

Now open the exported database file in your favorite text editor (I prefer Notepad++). Also create a new file, set its encoding to UTF-8, and save it as data.imp in your theme’s new /importer/ directory. This file will contain SQL data for insert.

Now copy all INSERT statements from the SQL dump and paste them below each other in data.imp. Make sure you copy-paste only the statements, leave comments and everything else behind. Finally put a unique separator among all statements, for example: <cooltheme_sep>, and remove all line breaks between the statements. This will help us to properly process SQL data later. Here is an image how your data.imp content should look something like this:

Example of data.imp content

Add the Importer menu to the WP Admin Area

Now that the demo content is prepared, let’s code the Importer! Open your theme’s functions.php file and add the following code:

if (is_admin()) {
	include_once('importer/importer.inc.php');
}

Create a new file in your code editor, name it importer.inc.php, save it in the /importer/ directory. Then insert these code lines:

<?php

//add importer to WP admin
add_action('admin_menu', 'YOURPREFIX_add_demo_importer');
	
function YOURPREFIX_add_demo_importer() {
	add_theme_page(esc_html__('Demo Importer', 'cooltheme'), esc_html__('Demo Importer', 'cooltheme'), 'administrator', 'YOURPREFIX-demo-importer', 'YOURPREFIX_demo_importer_page');
}

//admin page
function YOURPREFIX_demo_importer_page() {
	global $YOURPREFIX_demo_importer_error;
	echo '<div class="wrap"><h1>'.esc_html__('Demo Content Importer', 'cooltheme').'</h1><div>';
	
}

With these lines we added a new demo importer menu under Appearance in WP Admin Area. It can be accessed only by an administrator or above. Important: You might want to switch YOURPREFIX strings to your unique prefix in all our code examples. Also change translation functions’ text domain (cooltheme) to your theme’s text domain.

Webhosting permission and capability check

Before we start importing we need to make sure that our script is allowed to read and copy files, create directories and read/write database. Different hosting systems have different limitations when it comes to file handling, so we’ll use the WP Filesystem API for file management. Insert the following code above the function YOURPREFIX_demo_importer_page() in importer.inc.php:

// webhosting permission and capability check
if (empty($_POST['YOURPREFIX_importing']) && $_GET['page'] == 'YOURPREFIX-demo-importer' && current_user_can('administrator')) {
	
	// is allow_url_fopen setting on in php.ini?
	if (ini_get('allow_url_fopen') != '1' && ini_get('allow_url_fopen') != 'On') {
		
		$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The allow_url_fopen setting is turned off in the PHP ini!', 'cooltheme');
		
	} else {		
					
		// can we read a file with wp filesystem?
		global $wp_filesystem;
		if (empty($wp_filesystem)) {
			require_once(ABSPATH . '/wp-admin/includes/file.php');
			WP_Filesystem();
		}		
		
		if (!$wp_filesystem->get_contents(get_template_directory_uri().'/importer/data.imp')) {
			
			$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script couldn't read the data.imp file. Is it there? Does it have the permission to read?', 'cooltheme');
			
		}
		
	}
	
	// can we create directory?
	$uploads_dir = $wp_filesystem->abspath() . '/wp-content/uploads';
	if (!$wp_filesystem->is_dir($uploads_dir)) {
		if (!$wp_filesystem->mkdir($uploads_dir)) {
			
			$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script couldn't create a directory!', 'cooltheme');
			
		}
	}
	
	// can we copy files?
	if (!$wp_filesystem->copy(get_template_directory().'/importer/media/book.jpg', $wp_filesystem->abspath() . '/wp-content/uploads/test.jpg')) {
		
		$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script couldn't copy a file!', 'cooltheme');
		
	} else {
		
		$wp_filesystem->delete($wp_filesystem->abspath() . '/wp-content/uploads/test.jpg');
		
	}
	
	// can we read/write database?
	global $wpdb;
	if (!$wpdb->query('CREATE TABLE IF NOT EXISTS '.$wpdb->prefix.'testing (id mediumint(9) NOT NULL AUTO_INCREMENT, test varchar(255), UNIQUE KEY id (id))')) {
		
		$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script is not allowed to write MySQL database!', 'cooltheme');
		
	} else {
		
		if (!$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'testing')) {
			
			$YOURPREFIX_demo_importer_selfcheck[] = esc_html__('The script is not allowed to write MySQL database!', 'cooltheme');
			
		}
		
	}
	
}

In the example above, change book.jpg to a file that actually exists in the /uploads/ directory. As you can see the script collects error messages in an array. Let’s create a section in admin page where we can display these errors. We’ll also add the magic importer buttton and a notification to warn our users about database clearing. So find and extend YOURPREFIX_demo_importer_page() function the following way:

// admin page
function YOURPREFIX_demo_importer_page() {
	
	global $YOURPREFIX_demo_importer_selfcheck, $YOURPREFIX_demo_importer_success;
	
	echo '<div class="wrap"><h1>'.esc_html__('Demo Content Importer', 'cooltheme').'</h1>';
	
	if (empty($_POST['YOURPREFIX_importing'])) {
		
		// welcome message
		echo '<p>' . esc_html__('Here you can import sample content with a single click!', 'cooltheme') . '<br /><br />
			'. __('<b>WARNING! The importing process will remove your existing posts, pages and media library!<br />
			It's recommended to use a fresh, clean wordpress install!</b>', 'cooltheme') . '</p>';
		
		// show button if no error were found in selfcheck
		if (empty($YOURPREFIX_demo_importer_selfcheck)) {
			echo '<form method="post">
				<input type="hidden" name="YOURPREFIX_importing" value="1" />
				<input type="submit" name="submit" id="submit" class="button button-primary" value="' . esc_attr__('Import Now!', 'cooltheme') . '"  />
				</form>';
		}
		
	} else {			
		
		// user pressed the import button
		if (!empty($YOURPREFIX_demo_importer_success)) {				  
			
			//successful import
			echo '<p><b>' . __('Demo content has been successfully imported!', 'cooltheme') . '</p>';
			
		} else {
			
			//something went wrong
			echo '<p><b>' . __('ERROR! Something went wrong!', 'cooltheme') . '</p>';
			
		}
		
	}
	
	// error messages from webhosting check
	if (!empty($YOURPREFIX_demo_importer_selfcheck)) {
		
		echo '<h2 class="title">'.esc_html__('Whooops!', 'cooltheme').'</h2>					
			<p><b>'.esc_html__('One or more problems were found that needs to be fixed before the import!', 'cooltheme').'</b></p>					
			<ul>';
		
		foreach ($YOURPREFIX_demo_importer_selfcheck as $err) {
			echo '<li>&bull; '. $err .'</li>';
		}
		
		echo '</ul>';
		
	}
	
	echo '</div>';
	
}

You can visit your importer page now to find out if your actual local webserver has any problem with our script and to check for typos.

Copy media files and import MySQL data

If everything seems good at this point, we can copy our demo images/files, clear database tables, read and process data.imp file line by line and import the SQL data. Paste the following code above the YOURPREFIX_demo_importer_page() function:

// start importing
if (!empty($_POST['YOURPREFIX_importing']) && $_GET['page'] == 'YOURPREFIX-demo-importer' && current_user_can('administrator')) {
	
	// copy all media files
	global $wp_filesystem;
	if (empty($wp_filesystem)) {
		require_once(ABSPATH . '/wp-admin/includes/file.php');
		WP_Filesystem();
	}
	
	$files = glob(get_template_directory().'/importer/media/*.*');	
	foreach($files as $file) {
		if (!$wp_filesystem->copy($file, $wp_filesystem->abspath() . '/wp-content/uploads/' . basename($file))) {			
			$YOURPREFIX_demo_importer_error = '1';
		}
	}
	
	// clear tables
	global $wpdb;
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'comments');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'postmeta');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'posts');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'term_relationships');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'term_taxonomy');
	$wpdb->query('TRUNCATE TABLE '.$wpdb->prefix.'terms');
	
	// read SQL dump and process each statement
	$data = $wp_filesystem->get_contents(get_template_directory_uri().'/importer/data.imp');
	$sql = explode('<cooltheme_sep>', $data);
	$current_url = get_site_url();
	
	foreach ($sql as $statement) {
		
		if (!empty($statement)) {
			
			// replace default wp prefix to user's choice if it's not the default one
			if (strstr($statement,'wp_comments') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_comments',$wpdb->prefix.'comments',$statement);
			}
			
			if (strstr($statement,'wp_postmeta')) {
				if ($wpdb->prefix != 'wp_') {
					$statement = str_replace('wp_postmeta',$wpdb->prefix.'postmeta',$statement);
				}											
				// also replace all our sample paths to the user's actual path
				$statement = str_replace('http://localhost/cooltheme',$current_url,$statement);
			}
			
			if (strstr($statement,'wp_posts')) {
				if ($wpdb->prefix != 'wp_') {
					$statement = str_replace('wp_posts',$wpdb->prefix.'posts',$statement);
				}
				// also replace all our sample paths to the user's actual path
				$statement = str_replace('http://localhost/cooltheme',$current_url,$statement);
			}
			
			if (strstr($statement,'wp_term_relationships') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_term_relationships',$wpdb->prefix.'term_relationships',$statement);
			}
			
			if (strstr($statement,'wp_term_taxonomy') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_term_taxonomy',$wpdb->prefix.'term_taxonomy',$statement);
			}
			
			if (strstr($statement,'wp_terms') && $wpdb->prefix != 'wp_') {
				$statement = str_replace('wp_terms',$wpdb->prefix.'terms',$statement);
			}						
			
			// run the query
			if (!$wpdb->query($statement)) {
				$YOURPREFIX_demo_importer_error = '1';
			}
			
		}
		
	}
	
	// navigation, widgets, other settings
	if (empty($YOURPREFIX_demo_importer_error)) {
		update_option('option_name','option_value');
		update_option('option_name',unserialize('serialized_option_value'));
	}
	
	// if everything went well
	if (empty($YOURPREFIX_demo_importer_error)) {
		$YOURPREFIX_demo_importer_success = '1';
	}
	
}

When a user presses the importer button, the $_POST['YOURPREFIX_importing'] variable receives a value and this is our sign to start importing. Note how we replace both instances of our demo path, http://localhost/cooltheme, with the user’s actual site path. Always check this path when you’re building a demo importer for a new theme.

Navigation, widget, and other settings

The last things we need to import are the settings from wp_options table. In your MySQL manager go to your theme’s database and list all contents of wp_options table sorted by option_name column. This table contains all your settings, like navigation, number of posts per page, active widgets, etc. You need to go through each of them to see which one is important for you and insert them with update_option() function, as you can see it in example code above. Some settings are stored in a serialized array. In those cases we need to put the value in an unserialize() function. Most of the option names are self-explanatory.

After testing you’ll see if you missed something anyway. Here are some important options: page_for_posts, page_on_front, show_on_front, sidebars_widgets, theme_mods_YOURTHEME. Widget informations are stored in the options named widget_*.

Testing and Debugging

We are ready to test our script! Create a fresh WordPress install on your local webserver for testing purposes. Copy your theme there, activate it, visit the demo importer page and hit the import button. If something went wrong, PHP error messages should tell you all the details (if they are turned on). You can also look for errors in your server’s log files. If everything went smoothly then your sample content should appear properly.

That’s it!

Besides a demo importer I also recommend you to provide a documentation for your theme which explains step-by-step how a user can set up things like your live preview. This is useful for customers, who don’t want to delete their existing content. At DivPusher WordPress theme club we use this method in our themes as well.

Download the source files

Here is a complete example of the code provided in this tutorial. The download file also includes a set of example media files and ready-to-go import file.

Demo: WordPress Content Importer – Version 1.0 (1 MB zip)

If you have any question, problem or fix, just drop a comment below!


The Importance of Website Speed – Guide for Business Owners

DIY site builders and hobbyist service providers are everywhere. This leads to low-cost WordPress solutions bundled with numerous plugins which ends up being a mess.

While I appreciate WordPress as a solution that’s free and open source, with a bearable learning curve, this doesn’t mean that it should be used by non-professionals for business applications. This requires the expertise of professionals who understand how servers work, what happens in the database, how’s traffic transferred through the network, what are OS processes and how is PHP interpret behind the scenes.

Which is why we’ve build our Ultimate Business Guide at DevriX which serves as a go-to resource for our prospects, eager to understand what makes a $500 website different than a $30,000 website.

Our first question to many of our prospects who want to work with us (but can’t justify the prices) is:

How important are the 3S to you: Speed, Stability, and Security?

That’s what really makes the difference.

A standard WordPress install with a visual builder, a slider, and a bunch of complex plugins is heavy. It takes forever to load all of the scripts and styles. The execution of all conditional statements is tedious, and often dangerous.

And hosting that on a low-cost hosting provider is a no-no. That’s the case for website owners who actually want to monetize their portal.

I guest post a lot lately since I want to help out other audiences. Some of my friends nag me about writing more here, but I’d rather reach out to other communities that lack basic understanding of WordPress, website management, and the opportunity that the platform provides with the right touch.

One of my latest stories was published at SEMtuts and covered 11 Ways to Speed Up Your Website. It’s mainly targeted toward business owners with limited technical capabilities or IT staff that isn’t proficient with WordPress, but could as well be used by WordPress folks who don’t profile in performance optimization.

At DevriX we partner up with various accounts who handle a good amount of users (some serve over 10,000,000 page views a month). All of them are ambitious, and want to provide as much value to their clients as possible.

And that’s understandable – because users pay for results, and they want to aggregate as much information as possible in one place.

This is why Google Reader was so heavily used, and many still rely on email subscriptions and RSS readers – because time is money, and information should be compiled in some sensible manner.

The article above covers a number of standard issues for existing websites, such as:

  • Poor choice of hosting provider
  • Heavy images
  • Lack of gzip compression
  • Non-minified and non-combined assets
  • Lack of CDN integration
  • Relying on heavy themes or complex plugins
  • Synchronous script loading
  • Tons of redirects

Read the full guide of 2500 words here.

Read the performance guide by WP Rocket

I haven’t covered in-depth profiling from a development perspective, although it’s an expected process whenever you handle high-scale applications.

What tricks do you implement whenever you deal with performance optimization?

The post The Importance of Website Speed – Guide for Business Owners appeared first on Mario Peshev on WordPress Development.

WordPress Core Editor Team Publishes UI Prototype for “Gutenberg,” an Experimental Block Based Editor

In the past few weeks, the WordPress Core Editor team, led by Automattic employees Matías Ventura and Joen Asmussen, have been hard at work creating a new content creation experience. The team recently published a UI prototype for Gutenberg, an experimental block based editor. The editor displays content-specific toolbars when an element is selected and provides a way to move blocks up and down.

Block Based Editor Prototype
Block Based Editor UI Prototype

While the goal is to reinvent WordPress’ current editor, there’s no guarantee that the prototype will end up as the final product and is in a high state of flux.

“The UI prototype exists mostly to serve as a non-static mockup,” Asmussen said. “It’s like a sandbox we’re building to test some of our mockups and assumptions, to see if they hold water or not. To that extent, it’s already been successful in informing us of things that worked well, and not so well.” The code that powers the editor is made up of about 90% JavaScript.

One of the concerns in revamping the editor is accessibility. Joe Dolson highlighted this concern in a post on the Make WordPress Accessible site. Dolson notes that the accessibility team will work in tandem with the editor team to make the new editor as accessible as possible.

“From an accessibility perspective, this is both an incredible opportunity to build a powerful and flexible experience for all users and an enormous risk that we could end up reducing the effectiveness of the editor for users with disabilities, or require them to use a 2nd-class editor without these enhanced editing capabilities,” Dolson said.

“We in the WordPress accessibility community embrace the challenge of creating a great new experience, and want to assure the community that we are going to do everything we can to make sure that any new editor experience is as accessible as we can possibly make it.”

Although the prototype’s functionality is limited, the team is interested to hear about your experience and expectations with using the editor. Some questions to consider during testing include:

  • Talk through each step, what does this do?
  • What does this feel like?
  • As you use it, what is missing you feel should be there?

Many users have already shared their experiences, providing valuable insight that is fueling rapid improvements to the project on GitHub.

The best way to get involved and contribute to this project is to subscribe to the Make WordPress Design blog and provide feedback by commenting on posts. You can also submit pull requests or issues on GitHub. Weekly meetings dedicated to the Editor component are held on Wednesday at 19:00 CET on Slack in the #core-editor channel.