CAll Us: +1 888-999-8231 Submit Ticket

Google Docs Users Can Now Send Articles Straight To WordPress

Google DocsWordPress’ editing interface is great for writing – and it’s only going to get better – but collaboration is a weak point. It is possible to collaborate on a WordPress article, but only if writers and editors take it in turns. Several contributors can’t work on the same document at the same time, which is one of the reasons so many WordPress publishers turn to third-party editors like Google Docs.

Google Docs offers excellent collaboration support. Any number of participants can edit a document and – most of the time – Docs will do the right thing with the changes. It’s easy to see who has made each edit, suggest edits without committing them to the active document, and add comments.

But for WordPress users there’s a major stumbling block: getting content out of Google Docs and into WordPress isn’t straightforward. The obvious solution is to copy-and-paste, but that plays havoc with formatting and links. When I’ve used this method for longer documents, it’s taken a lot of work to knock the article into shape for publishing.

In a move that recognizes the value of collaboration and that WordPress’ native collaboration features aren’t quite there yet, Matt Mullenweg has announced the release of a Google Docs add-on that can send documents to WordPress sites as a draft. The big win here is that all the formatting – images, text styles, links – are maintained.

As with many of the innovations coming out of Automattic, the Google Docs add-on only works if you have a JetPack-enabled WordPress site.

The add-on isn’t perfect: image layout can go awry, and any edits that happen in the Google Doc after it’s been pushed to WordPress aren’t synchronized. As a consequence, it’s not possible to edit any existing WordPress drafts in Google Docs – it’s a one-way process. I expect some of these limitations will be overcome in the future, and the features that are available are welcome.

As someone who writes a lot of content that ends up in WordPress via Google Docs, this tool will save me a lot of time. Apart from single-writer blogs, almost every publishing workflow involves collaboration with other writers, editors, and clients. Google Docs is the perfect app for that sort of collaboration.

When I write an article, it starts life as a Markdown file which is converted to HTML and uploaded to Google Docs, where editors or clients can review it, add notes, and make edits. That process is smooth – but once the article is ready for publication, someone has to take the Google Doc, paste it into WordPress and then spend a lot of time redoing formatting, images, and links that were already part of the Google Doc. For a busy site owner, that’s a frustrating waste of time.

The new WordPress Google Docs add-on has the potential to improve that process, providing a friction-free workflow that can take documents from drafting to publication-ready without an onerous duplication of effort.

Posted in:
Content, WordPress

Source link

A WordPress Security Plugin Won’t Solve All Your Security Problems

Security PluginWordPress security plugins help improve the security of WordPress sites, but they’re no substitute for an understanding of basic security precautions. Any web application is vulnerable if its developers and users don’t follow security best practices. WordPress is no different, and because WordPress is used by millions of non-technical users, it’s reasonable to assume that many of them won’t understand the complexities of web application security.

WordPress security plugins exist — in part — to help non-technical users limit the risk, without asking them to become security experts. But no WordPress plugin can make a site invulnerable to hackers, and it’s important that WordPress site owners understand at least the basics of web application security to keep themselves safe. It’s perfectly possible for WordPress to be secure. In fact, it’s relatively easy to create a secure WordPress site, but you need to know a few commonsense rules.

Bringing easy web publishing to everyone is a core goal of the WordPress project, and it’s been remarkably successful. Anyone with an idea can publish content on a site over which they have complete control. But, however easy it is to create a WordPress site — and modern WordPress hosting companies make it very easy indeed — the user still has some responsibility to educate themselves about security. The vast majority of hacked WordPress sites are the result of user error: the user chooses a bad password for their admin account or they fail to update a plugin with a known vulnerability.

However well-designed and feature-rich a security plugin is, it won’t protect users against many of the mistakes that hackers exploit. WordPress security plugins like WordFence and iThemes Security make it much easier to secure a WordPress site, and I’d strongly advise any non-technical WordPress user to install a security plugin, but WordPress users should understand that installing a security plugin isn’t the end of their security responsibility.

This isn’t a WordPress problem: it’s web application problem. Web applications like WordPress, Joomla!, Drupal, and Magento are immensely complex pieces of software. No one has figured out how to make software that’s both feature-rich and completely without bugs. Software bugs, and hence software vulnerabilities, come with the territory — and, unfortunately, so do hackers and criminals.

Installing a security plugin won’t protect you against these vulnerabilities. WordPress and WordPress plugin developers try hard not to introduce bugs, and when bugs are found, they’re squashed very quickly. To be protected, you have to update and understand why you have to update.

Many classes of vulnerability aren’t caused by software bugs, but by simple user errors. Nothing the developers can do will stop you using “miaow” as your admin password, although the WordPress interface will tell you it’s a bad idea. Security plugins won’t help you out there either, although they can limit your exposure to brute force attacks that take advantage of bad passwords. You need to know that using a simple password isn’t a good idea.

Web application security is a partnership between developers, hosting providers, and users. Users have to do their part, and installing a security plugin a great first step, but it won’t get you all the way to a secure site on its own.

Posted in:
Content, WordPress

Source link

Making The Case For Automatic Updates In WordPress

Automatic UpdatesThe release of WordPress 3.7 introduced a feature that was met with mixed reactions: automatic background updates. In all versions after 3.7, WordPress completes minor updates without asking for permission.

Left to their own devices, site owners often neglect to perform updates. Updates – particularly the minor updates that can be applied automatically – include security patches that fix known vulnerabilities. If the updates aren’t applied to a WordPress site, it remains vulnerable. If the vulnerability wasn’t widely known in the criminal community, it will be after a patch is released, increasing the risk to sites that fail to update. The sooner sites are patched, the better. But many in the WordPress developer and professional communities weren’t impressed with automatic updates.

Updates sometimes break WordPress sites. This happens rarely, but whenever part of a complex system changes, so do its interactions with other parts of that system. An update may stop a plugin from working or cause a regression – a bug introduced when another bug is fixed or feature added.

It’s not impossible that a minor security update could stop a WordPress site working, but ask yourself how often you’ve seen that happen when applying a minor update to a production site. And then ask yourself how many hacked WordPress sites you’ve come across. Compare the two numbers and I think it’s fair to say that it’s a risk worth taking.

Some argue that automatic updates introduce a security risk. If the servers hosting the updates are compromised, criminals could inject malware into the update files and infect hundreds of thousands of sites. It would be nice if WordPress introduced code signing to further reduce the risk, but in reality the likelihood of this chain of events occurring is vanishingly small. And it’s certainly smaller than the risk of leaving sites unpatched.

Finally, some people simply want complete control over what’s installed on their site. Automatic updates don’t sit well with them. That’s fine: control over your own site and content is what WordPress is all about. But that has to be balanced against the potential risk if security problems aren’t dealt with. If you’re a responsible WordPress site owner, you’ll apply the patch eventually. If you plan to pore over the code before you patch, then you’re probably not the target market for automatic updates. If your objection is simply to the concept of automatic updates, that’s your choice, but you shouldn’t make that choice for less technical users for whom you build and manage sites.

Earlier this year, a vulnerability in the newly introduced WordPress REST API lead to the defacement of a large number of WordPress sites. The patch to fix the vulnerability was released immediately after the problem was discovered and pushed out as an automatic update. Sites with automatic updates turned on – the default state – are no longer vulnerable. And yet, we’re still seeing many thousands of sites fall victim to the attack. The obvious conclusion is that some people think turning automatic updates off is a good idea.

There’s nothing wrong with turning off the automatic updates in principle, but if you provide a client with a site that has automatic updates turned off, you have a responsibility to make sure security updates are applied in good time. If you’ve turned off automatic updates on your own site, it’s up to you to manually update at the earliest possible opportunity.

Otherwise, the smart thing is to leave automatic updates turned on and let them do their job.

Posted in:
Content, WordPress

Source link

Gutenberg — A New WordPress Editing Experience In The Making

GutenbergI’ve been a WordPress user for years and I’ve written many thousands of words in the WordPress editor. I’ve seen the editor develop from a barely usable and — at times — frustrating writing experience into a functional tool. Gradual iteration over more than a decade has created a polished interface for writing and creating blog posts.

But sometimes an iterative approach isn’t enough. Sometimes a complete re-imagining is called for. The core functionality of the editor, including shortcodes and embeds, was developed for a different time, and has become increasingly clunky compared to the best editing experiences available on the web.

While many of us have grown to know and love WordPress’ TinyMCE-based editor, it can be off-putting to new users used to writing and editing in word processors like Word or text editors like iA Writer.

An early prototype of a new vision for WordPress editing was recently released, and it promises to revolutionise the WordPress editing experience. Gutenberg is a block-based editor that leverages the best in modern web technology to provide an editing interface that will hopefully satisfy TinyMCE nostalgics and new WordPress users alike.

It should be noted that Gutenberg is a very early prototype. It demonstrates where the developers are hoping to go, but there’s a long road to travel before they get there. Most of the promised functionality isn’t yet working, and it’ll be some time before we see Gutenberg in WordPress Core.

A Gutenberg page is made up of blocks, and each block contains a particular type of content. Each paragraph or heading is a block, and so are images, lists, and galleries. As Gutenberg matures, new blocks will be added to extend the editor’s functionality. Each block offers tools appropriate to its contents in a pop-up menu: paragraph blocks provide text styling options and image blocks provide positioning and sizing options. Blocks can be moved around relative to each other to create custom page layouts quickly and intuitively.

Blocks are intended to take the place of shortcodes and other less-than-intuitive techniques for adding content to pages and posts.

Joen Asmussen, Design Wrangler at Automattic, expresses Gutenberg’s design goals in a recent blog post:

“At the core of the 2017 editor focus is the is idea of introducing blocks (or sections) which help “make easy what today might take shortcodes, custom HTML, or ‘mystery meat’ embed discovery”. How do we do that?”

Gutenberg is a product of the new focus-based development process announced by Matt Mullenweg at last year’s State of the Word address. Rather than focusing on fixed releases, during 2017, WordPress development will be focused around specific projects. The editor is one of those projects. A release-based schedule with fixed release dates is great for iterative improvement, but it’s not ideal for making deeper changes to software. Without the pressure of a release date and the ability to focus all their energy on single project, developers can make more revolutionary changes.

Posted in:
Content, WordPress

Source link

Disqus To Charge Bloggers To Remove Advertising From Comments

DisqusThe popular comment platform will charge bloggers a monthly fee to remove advertising from comment threads.

The tide has turned against comments among some major publishers, but they’re still regarded by many as an essential part of the blogging experience. Although they can be a pain to moderate and they’re a magnet for spammers and trolls, most bloggers believe the community-building benefits of comments are worth the investment. Disqus, a cloud-based comment platform, is by far the most popular alternative to WordPress’ native comment system. Disqus is easy to use, fast, and has features that aren’t available from alternative comment systems.

When big publishers do choose to keep comments on their site, Disqus is usually where they turn. Disqus has always been free to use, but, starting later this year, Disqus will charge its users if they want to offer an ad-free experience.

We know that ads may not be a good fit for all publishers and all sites. For these publishers, we will provide a simple option to remove ads altogether. For an inexpensive monthly fee publishers will be able to completely remove ads and take advantage of all of Disqus’ basic features and functionality. We will release finalized pricing for this offering soon.

Bloggers will be able to use Disqus for “free”, but unless they pay the fee and opt-out of advertising, Disqus intends to monetize their comments.

It’s easy to see why Disqus wants to add advertising. The infrastructure necessary to support comments on hundreds of thousands of sites isn’t cheap. But understanding why Disqus is making the change isn’t likely to make publishers any happier about it. Publishers like to be in control of the content on their sites, and they also want a slice of the pie for any advertising displayed with their content. Disqus also faces the resistance that any company encounters when it takes once-free services and charges from them.

A few things to note here: if you’re running a blog that isn’t monetized, it appears you won’t be charged to opt out. But if your blog does run advertising, you’ll have to pay around $10 per month for ad-free comments. At the moment, it’s claimed that the adverts will mostly be for Disqus itself, but there’s no guarantee that will be the case forever.

If you’re unsettled by this change in Disqus’ policy there are plenty of alternatives, although none of them offer the full range of features that Disqus includes.

The most obvious alternative is native WordPress comments. WordPress comes with a built-in commenting system. It’s by no means as advanced as Disqus or the other alternative we’re about to discuss, but for smaller blogs, it’s perfectly adequate.

A more advanced alternative is the comment system included in the Jetpack plugin collection. It offers features that aren’t part of WordPress’ native comments, like social media sign-in. The ability to sign-in using social media networks is a big improvement over the native comments interface, which requires users to jump through hoops before they can comment.

Epoch is also a promising alternative to Disqus. Epoch is a JavaScript-based real time commenting plugin that uses WordPress’ native comment handling but provides a more advanced interface. Epoch combines the benefits of real-time updating with the ability to keep your comment data stored on your WordPress site, rather than on a third-party platform, which means you can use tools like Akismet for spam filtering.

If you’re fine with Disqus inserting its advertising into your site or paying to have them removed, there’s no real reason to migrate to another comment system, but it’s good to know there are alternatives if things change in the future.

Posted in:
Content, WordPress

Source link

10Up Introduces A New Front-End WordPress Component Library

10UpA typical WordPress theme consists of the same basic components put together in novel ways. Almost every WordPress site has a logo, navigation components, blog posts, blog indexes, and so on. Many theme developers create their own spins on each of these components or adapt existing front-end frameworks to work with WordPress.

Rebuilding or repurposing is often not the best approach though. Building common components in-house duplicates effort that could better be spent building truly original custom functionality and providing added value to clients.

The WordPress Component Library, created by WordPress development agency 10up, is a collection of front-end components designed to be used in WordPress themes. Each component in the library provides commonly needed functionality that developers and designers can integrate into their own projects.

The Library is divided into UI, Content, and Navigation components. A standout member of the Navigation collection is an elegant lightweight responsive navigation menu implemented almost entirely in CSS (SCSS) and a small JavaScript component. After experiencing any number of glitchy “responsive” menu bars, I’m happy to see the release of an off-the-shelf component that just works.

Each component in the library includes minimal styling, so developers can build unique themes to suit specific projects. A key benefit of using a components library of this sort is that future maintenance is made substantially easier: developers can get up to speed on a site’s code base more quickly if it’s built from well-understood parts.

One of the outstanding features of the WordPress Component Library is that it’s built from the ground up to conform to the Web Content Accessibility Guidelines 2.0. Each component is designed to provide an accessible experience to users and work well with keyboard navigation and assistive devices.

Everyone wants to provide accessible websites, but complying with accessibility best practices can be time consuming. Many developers don’t have a well-developed understanding of accessibility issues. And when under time or budgetary constraints, accessibility issues fall by the wayside.

The WordPress Component Library gives theme developers a quick and easy way to build accessible WordPress-based websites using of-the-shelf components.

Much of the buzz around WordPress is focused on the new REST APIs, which give developers the ability to build WordPress themes and front-end integrations in any number of languages, but particularly in JavaScript. Any increase to the flexibility of WordPress is welcome. There are millions of developers who know JavaScript and don’t know — or want to learn — PHP. The REST APIs will invigorate an ecosystem that has become somewhat stuck in its ways.

But it shouldn’t be forgotten that WordPress is — at heart — a PHP application and WordPress professionals all over the world are intimately familiar with PHP and WordPress. Tools like the WordPress Component Library may not generate headlines, but they do provide useful tools that have the potential to improve the workflows of WordPress developers and help them build better sites.

Posted in:
Content, WordPress

Source link

Algolia Brings Google-like Search To WordPress

AlgoliaAny large WordPress blog has a hinterland of content that isn’t exposed on the homepage. Site owners use tools like “Recent Articles” widgets to surface some of that content, but users still only see a tiny fraction of published posts.

Frequently, the only place users are exposed to older articles is in Google search results. They search for a term, and, if you’re lucky, your article appears somewhere near the top. Third-party search a powerful source of traffic for content sites, but it’s not a replacement for powerful internal search.

Ideally, when users come to your site, you want them to stay there. If you don’t offer a search experience intelligent enough to surface the content the user expects, they’ll just head back to Google. Once they leave, there’s no guarantee they’ll come back — Google is just as likely to send them to a different site.

Search is hard to get right. It’s a complex problem that relies on algorithms capable of “understanding” queries, indexing content, and ranking it according to meaningful criteria. Google is dominant in the search space because it solves a difficult problem well.

Out-of-the-box, WordPress includes a reasonably good search interface. Users can search posts and pages, and they’ll usually find what they’re looking for. But, for large WordPress sites, the built-in search can leave a lot to be desired. It lacks much of the sophistication that users have become accustomed to — Google’s search, with its smart autocomplete, spelling correction, and instant results is the gold standard.

Algolia — a cloud search provider — has recently released a WordPress plugin that brings many of the features users expect from search to WordPress, including autocomplete as the user types their query, instant search results, and smart faceting that can update filters as the user types.

Its customizable search functionality integrates well with WordPress, and it’s capable of returning results of searches over thousands of articles in fractions of a second, surfacing relevant content that can be ranked according to the specific requirements of a site.

Algolia is a third-party cloud search provider. If you’re worried about sending your site’s data off into the cloud, this may not be the plugin and service for you. Relevanssi is a popular alternative. But using a cloud platform relieves your servers of the load created by search — and for large sites, search can consume an expensive chunk of resources.

A search widget is only the beginning of what a powerful search engine can do. It’s possible to build flexible WordPress themes that leverage a search API throughout the design to display content according to any number of complex criteria. The Algolia plugin is “built by developers, for developers” and it exposes a lot of the platform’s functionality through WordPress filters and hooks that can be used by plugin and theme developers.

Algolia isn’t a free service, and even the lowest tier is likely to put it out of reach for smaller sites, but for sites with large quantities of content that can take advantage of enterprise-class search capabilities, Algolia is worth considering.

Posted in:
Content, WordPress

Source link

Protecting Photographers’ Image Copyright On WordPress Sites

Image CopyrightThe web doesn’t have a native mechanism for protecting content from copyright infringement. Aside from complex digital rights management solutions, which aren’t really appropriate for photography sites, there’s little a photographer can do to prevent determined infringers from copying images and using them without regard for the photographer’s chosen licence.

This is a huge problem for photographers. The web is an essential tool for displaying and promoting photography, but anything published on the web is up for grabs — at least from a technical perspective. From a legal and ethical perspective, photographers have the right and the ability to protect their work. But many users either don’t understand or don’t respect those rights.

There are various routes a photographer can take to the reduce the impact of copyright infringement, but none is ideal and each has trade-offs.

The Low Impact Approach

One strategy is to do nothing at all to prevent infringement. Your work will be taken and used without any immediate benefit to you. However, there may be promotional benefits. Increased sharing can enhance the exposure of your business and your work. Although you lose direct control of the images you publish on your site, you stand to make more in the long-run. This approach can be risky, because there’s always the chance that your images will be taken and used and you’ll see nothing in return.

If you think this approach will work for your business, I suggest you consider watermarking images, and only uploading lower resolution copies to your site, using a Creative Commons licence for images, and making it easy for visitors to pay for full resolution images if they want to.

The High Impact Approach

As I’ve already said, it’s next to impossible to stop a determined individual taking your photographs, but there are ways to make it more difficult. WP Content Copy Protection & No Right Click is a plugin that makes users jump over a lot of hurdles to download images.

Disabling the right-click functionality in the user’s browser means they can’t simply open the contextual menu and download an image. Disabling copy-and-paste shortcuts has a similar effect.

There are drawbacks though. Firstly, it doesn’t prevent a determined user from downloading images. The content is loaded in their browser, and if they have any technical chops at all, it won’t take much work for them to circumvent the protection.

This approach also degrades the experience of everyone using your site. The right-click menu holds a lot more than just a “download” option. Hijacking and subverting browser functionality will annoy a lot of visitors, while doing little to prevent determined content thieves.

Posted in:
Content, WordPress

Source link

Mergebot Aims To Make Seamless WordPress Staging To Production Deployments A Reality

MergebotIf you’re a WordPress pro, the awkwardness of deploying from a testing or dev server to a live server will be all-too-familiar. It’s easy enough to replicate a WordPress site, and there are plugins that will do the job for you, but the reality is usually messier than a simple migration.

Ideally, a WordPress staging installation is in the same state as the live site, and that includes the database. However, when both the staging site and the live site are constantly changing, keeping the two in sync is a real headache. You can’t simply copy the staging site to the production server if posts and pages have changed in the meantime.

Mergebot aims to solve this problem by making it easy to sync changes between sites, including merging databases. It works like this: the developer creates a copy of the production site on their staging or test server and installs the Mergebot plugin on both sites. Mergebot records all changes made to both sites. When the developer is ready to go live with their changes, Mergebot can sync the staging site to the live server while also retaining any changes that have been made to the live site.

In theory, that should make deploying to production a breeze. In practice, it’s not quite so simple, largely because of plugins. Plugins create their own database tables, and the most complex plugins can create many new tables. Without help, Mergebot can’t handle plugin database tables because it knows nothing about each plugin’s schema. In the most recent release of Mergebot, that problem is being addressed. Mergebot uses schema files to understand how plugins use the database. Many of the most popular plugins already have schemas available, and it’s not too tricky to create schemas for less popular plugins.

If the functionality offered by Mergebot sounds familiar, that’s because it does basically the same job as VersionPress, although the way Mergebot goes about syncing sites is different. Unlike VersionPress, Mergebot doesn’t require git, which makes it more likely to be compatible with shared WordPress hosting. VersionPress is somewhat more flexible and feature-rich than Mergebot, although that may change as Mergebot matures.

Another key difference between VersionPress and Mergebot is the way they’re made available by their respective developers. VersionPress is an open source plugin and is free to use. Mergebot is a SaaS product that requires a paid account. Both are perfectly legitimate business models, but it’s worth keeping in mind.

Both Mergebot and VersionPress are promising additions to a class of solutions that has been lacking in the WordPress ecosystem — tooling for developers. It’s exciting to see new tools that make life easier for developers and WordPress professionals.

Mergebot is still in closed beta, and is under active development. It’s not quite ready for production work, but I’ll be keeping a close eye on its development and, once it leaves beta, I plan to write a more thorough review of its capabilities.

Posted in:
Content, WordPress

Source link

One Day, A WordPress Backup Could Save Your Business

WordPress BackupMost WordPress users realise they should backup their site. It’s a dangerous world, and if a business depends on its WordPress site, a backup — or preferably several backups — is a necessary safety net.

However, a backup is worthless if it isn’t tested and verified. I’ve come across many sites where the owners have gone through the motions of creating a backup, but haven’t checked to make sure that the data they have stored can restore their site to its former glory.

I’d like to discuss some of the ways a backup can go wrong, and the basic procedure for checking the viability of your WordPress site’s backup.

What Can Go Wrong With A Backup?

Naïve WordPress users often don’t understand that their WordPress site has two distinct parts: a set of files, and a database. I’ve encountered sites where the owner was confident in their backup because they’d used FTP or some other method to download the site’s files to their PC. This is not an adequate backup.

A WordPress site cannot be reconstituted from the files alone: they’re necessary, but not sufficient because the site’s content —and other important information — is stored in the database. A simple test restore would have revealed the problem.

Another problem I’ve encountered is backups that simply fail to run. One WordPress user I tried to help used a script to automatically backup their site to an external server. Unfortunately, they didn’t check on the updates for several months. The script kept running, but the drive they were backing-up to was full and the update failed silently.

There are a million things that can go wrong with an automated backup. The only way to make sure you aren’t caught out is to regularly test the backups.

If you don’t keep several month’s worth of regular backups, you’re going to lose data when something goes wrong. Consider the case of a hacked site. Hackers are sneaky and they don’t want their malware to be found. Often, site owners are unaware their site has been hacked for several months. That’s not a problem if you have backups for the last few months, but if you don’t have a clean backup, restoring your site will take a lot more work.

Testing WordPress Backups

Testing backups is usually as simple as running a complete restore against a new installation of WordPress. The process is essentially identical to restoring a site from the backup or copying a site to a new hosting environment. You can run the restore on your home PC or on an external server, staging area, or hosting plan.

There are any number of decent WordPress backup plugins. I tend to recommend BackupWordPress, which has proven itself reliable and easy to use. Restoring backups for testing is clearly explained in the BackupWordPress documentation.

An alternative option is VaultPress, a backup service owned by Automattic. VaultPress is more sophisticated than BackupWordPress, and is capable of automatically restoring a backup to a testing site.

Of course, you can also backup manually by copying the files to a secure location and dumping the database with a tool like PhpMyAdmin, but in my experience, manual backups aren’t reliable because they’re easy to forget. An automated solution that is tested regularly is more reliable.

Ultimately, it doesn’t matter how you backup your WordPress site. What’s important is that you backup regularly and frequently test the backups to ensure you can restore your WordPress site should the worst happen.

All Hostdedi Managed Hosting plans include daily backups for the last 30 days. Hostdedi hosting clients can also choose our Extended Backup plans, which include 90-day and 365-day plans.

Posted in:
Content, WordPress

Source link