Facebook Outlines Messenger Platform Updates

Facebook’s newly released update to the Messenger Platform includes new functionality, improvements to existing tools, while also deprecated legacy endpoints. Changes to the platform impact Click-to-Messenger Ads and provide new tools to encourage user engagement. 

Jason Schuller Launches DSKO, a Discovery Network for Creators and Brands

Homepage of the DSKO site, featuring user profiles in a grid.

On October 23, Jason Schuller officially announced that his new side project built on WordPress was open to the public. The idea behind DSKO was to solve the issue of discoverability for creators and brands across various networks and websites by consolidating everything into a single space.

The website offers an easy signup process. DSKO currently features 220 profiles, but that number is sure to grow. For now, the site is purely about discovering creators and finding out how to contact or follow them through website or social media links.

The site allows profile creators to set up a bio, image, and even video, such as the one seen on the ArtSnacks profile. It will be interesting to see how people use this new WordPress-based site as a branding tool.

“I’ve been asked what the incentive is to re-visit DSKO after you’ve created a profile,” said Schuller in a Twitter update. “I have features (some nearly finished) in the works which will make that crystal clear.”

Schuller has been active within the WordPress community for over a decade. He originally launched Press75, a WordPress theme shop, in 2008 with a focus on video-centric themes. Like several others in the theme business at that time, he had the fortune of good timing. From 2008 through the next couple of years, theme companies enjoyed little competition and a wide-open market for exploration. However, business growth plateaued after a while.

“I quickly realized that my perception of how to properly launch and scale a project had been skewed by my experience with my WordPress theme business,” wrote Schuller in a history of his theme business. “With Press75, I just built it and they came — a strategy that surprisingly doesn’t work so well the majority of the time for new ventures.”

Unable to duplicate his early success and unhappiness with the direction of WordPress theming, he sold Press75 in 2014. Since then, he has moved onto new ventures such as Leeflets, a single-page website creator on top of WordPress.

“There seems to be growing interest in minimalist single-page website solutions for simple profiles (e.g. Carrd.co, Linktr.ee, etc),” said Schuller. “After building [Leeflets] last year, it occurred to me that while all of these options are great for creating an individual site/page, none of them enable the people and brands who are using them to be discovered beyond organic search via Google or sharing a URL across various other networks. My goal was to see if I could solve that by creating a discovery network for people and brands.”

The inspiration behind DSKO came from projects like existing single-page website builders. Schuller said the grid design and navigation were inspired by the image-sharing site Unsplash while Twitter inspired the profiles. “I wanted it to be extremely quick and easy to browse, find and consume profiles,” said Schuller.

While borrowing concepts from popular projects already in the wild, he wanted to put his spin on them. One interesting custom feature is the ability to connect profiles on the DSKO site to other profiles. For example, a person (creator) can connect his or her profile to a separate brand profile. This helps with the discoverability aspect by allowing visitors to browse connected profiles.

The Technology Running the Network

DSKO is a completely front-end interface built on top of WordPress and shows what can be done without sending users to the WordPress backend.

“Essentially, DSKO boils down to users, profiles, categories, and tags which makes WordPress the perfect framework,” said Schuller. “The functionality was there, I just needed to create a custom front-end experience to manage it all. Most of my recent projects have utilized WordPress this way, and every time I make something new, I borrow aspects from the previous project.” This allows Schuller to bring a project from the concept stage to production more quickly.

The only third-party plugin running on the site is Admin Columns Pro, which makes it easier for Schuller to manage users and content based on custom fields.

For those who create a profile on DSKO, one uncommon feature is that there is no password field. Instead, the site provides a “magic” login link. “Essentially, by removing the concept of a password, I’ve simplified the onboarding process and am validating a real email address (ensuring a real user) at the same time.”

The system generates a unique login token when the user creates a new account. The token is sent as a link to the user email address. The link is used to log into the site. When a session expires or a user logs out, users can get a new link by re-entering their email address.

Currently, the code behind the site is not available to the public. However, Schuller did say that he would consider opening up the platform in the future. Starting from a more mature codebase could help other developers in the WordPress space build interesting projects where similar features are needed.

Beyond DSKO: The Present and Future for Schuller

Schuller is currently on contract with 10up. He primarily works with them on the Microsoft In Culture project. “[It] has been an amazing project to be a part of,” said Schuller. Because the contract is only part-time work, it leaves him enough creative freedom to experiment with ideas like DSKO.

Another creative pursuit is an upcoming WordPress plugin that he’s building along with Phil Kurth. It will allow site owners to map custom domains to any post or page on a single WordPress install. The idea was inspired by his work with Leeflets. “It’s going to be the first WordPress product I’ve been a part of since I sold my theme business in 2014.”

8 Best Educational Apps for iPad

The progress of technological innovation has provided us with many useful things. One of its most amazing benefits is the smart devices that have become an integral part of our everyday lives.  Today, e-learning tools play a significant role in allowing us to access abundant knowledge in different fields. The digital education industry is expected […]

The post 8 Best Educational Apps for iPad appeared first on designrfix.com.

It’s All In the Head: Managing the Document Head of a React Powered Site With React Helmet

The document head might not be the most glamorous part of a website, but what goes into it is arguably just as important to the success of your website as its user interface. This is, after all, where you tell search engines about your website and integrate it with third-party applications like Facebook and Twitter, not to mention the assets, ranging from analytics libraries to stylesheets, that you load and initialize there.

A React application lives in the DOM node it was mounted to, and with this in mind, it is not at all obvious how to go about keeping the contents of the document head synchronized with your routes. One way might be to use the componentDidMount lifecycle method, like so:

componentDidMount() {
  document.title = "Whatever you want it to be";
}

However, you are not just going to want to change the title of the document, you are also going to want to modify an array of meta and other tags, and it will not be long before you conclude that managing the contents of the document head in this manner gets tedious pretty quickly and prone to error, not to mention that the code you end up with will be anything but semantic. There clearly has to be a better way to keep the document head up to date with your React application. And as you might suspect given the subject matter of this tutorial, there is a simple and easy to use component called React Helmet, which was developed by and is maintained by the National Football League(!).

In this tutorial, we are going to explore a number of common use cases for React Helmet that range from setting the document title to adding a CSS class to the document body. Wait, the document body? Was this tutorial not supposed to be about how to work with the document head? Well, I have got good news for you: React Helmet also lets you work with the attributes of the <html> and <body> tags; and it goes without saying that we have to look into how to do that, too!

View Repo

One important caveat of this tutorial is that I am going to ask you to install Gatsby — a static site generator built on top of React — instead of Create React App. That's because Gatsby supports server side rendering (SSR) out of the box, and if we truly want to leverage the full power of React Helmet, we will have to use SSR!

Why, you might ask yourself, is SSR important enough to justify the introduction of an entire framework in a tutorial that is about managing the document head of a React application? The answer lies in the fact that search engine and social media crawlers do a very poor job of crawling content that is generated through asynchronous JavaScript. That means, in the absence of SSR, it will not matter that the document head content is up to date with the React application, since Google will not know about it. Fortunately, as you will find out, getting started with Gatsby is no more complicated than getting started with Create React App. I feel quite confident in saying that if this is the first time you have encountered Gatsby, it will not be your last!

Getting started with Gatsby and React Helmet

As is often the case with tutorials like this, the first thing we will do is to install the dependencies that we will be working with.

Let us start by installing the Gatsby command line interface:

npm i -g gatsby-cli

While Gatsby's starter library contains a plethora of projects that provide tons of built-in features, we are going to restrict ourselves to the most basic of these starter projects, namely the Gatsby Hello World project.

Run the following from your Terminal:

gatsby new my-hello-world-starter https://github.com/gatsbyjs/gatsby-starter-hello-world

my-hello-world-starter is the name of your project, so if you want to change it to something else, do so by all means!

Once you have installed the starter project, navigate into its root directory by running cd [name of your project]/ from the Terminal, and once there, run gatsby develop. Your site is now running at http://localhost:8000, and if you open and edit src/pages/index.js, you will notice that your site is updated instantaneously: Gatsby takes care of all our hot-reloading needs without us even having to think of — and much less touch — a webpack configuration file. Just like Create React App does! While I would recommend all JavaScript developers learn how to set up and configure a project with webpack for a granular understanding of how something works, it sure is nice to have all that webpack boilerplate abstracted away so that we can focus our energy on learning about React Helmet and Gatsby!

Next up, we are going to install React Helmet:

npm i --save react-helmet

After that, we need to install Gatsby Plugin React Helmet to enable server rendering of data added with React Helmet:

npm i --save gatsby-plugin-react-helmet

When you want to use a plugin with Gatsby, you always need to add it to the plugins array in the gatsby-config.js file, which is located at the root of the project directory. The Hello World starter project does not ship with any plugins, so we need to make this array ourselves, like so:

module.exports = {
  plugins: [`gatsby-plugin-react-helmet`]
}

Great! All of our dependencies are now in place, which means we can move on to the business end of things.

Our first foray with React Helmet

The first question that we need to answer is where React Helmet ought to live in the application. Since we are going to use React Helmet on all of our pages, it makes sense to nest it in a component together with the page header and footer components since they will also be used on every page of our website. This component will wrap the content on all of our pages. This type of component is commonly referred to as a "layout" component in React parlance.

In the src directory, create a new directory called components in which you create a file called layout.js. Once you have done this, copy and paste the code below into this file.

import React from "react"
import Helmet from "react-helmet"

export default ({ children }) => (
  <>
    <Helmet>
      <title>Cool</title>
    </Helmet>
    <div>
      <header>
        <h1></h1>
        <nav>
          <ul>
          </ul>
        </nav>  
      </header>
      {children}
      <footer>{`${new Date().getFullYear()} No Rights Whatsoever Reserved`}</footer>
    </div>
  </>
)

Let's break down that code.

First off, if you are new to React, you might be asking yourself what is up with the empty tags that wrap the React Helmet component and the header and footer elements. The answer is that React will go bananas and throw an error if you try to return multiple elements from a component, and for a long time, there was no choice but to nest elements in a parent element — commonly a div — which led to a distinctly unpleasant element inspector experience littered with divs that serve no purpose whatsoever. The empty tags, which are a shorthand way for declaring the Fragment component, were introduced to React as a solution to this problem. They let us return multiple elements from a component without adding unnecessary DOM bloat.

That was quite a detour, but if you are like me, you do not mind a healthy dose of code-related trivia. In any case, let us move on to the <Helmet> section of the code. As you are probably able to deduce from a cursory glance, we are setting the title of the document here, and we are doing it in exactly the same way we would in a plain HTML document; quite an improvement over the clunky recipe I typed up in the introduction to this tutorial! However, the title is hard coded, and we would like to be able to set it dynamically. Before we take a look at how to do that, we are going to put our fancy Layout component to use.

Head over to src/pages/ and open ìndex.js. Replace the existing code with this:

import React from "react"
import Layout from "../components/layout"

export default () => 
  <Layout>
    <div>I live in a layout component, and life is pretty good here!</div>
  </Layout>

That imports the Layout component to the application and provides the markup for it.

Making things dynamic

Hard coding things in React does not make much sense because one of the major selling points of React is that makes it's easy to create reusable components that are customized by passing props to them. We would like to be able to use props to set the title of the document, of course, but what exactly do we want the title to look like? Normally, the document title starts with the name of the website, followed by a separator and ends with the name of the page you are on, like Website Name | Page Name or something similar. You are probably right, in thinking, we could use template literals for this, and right you are!

Let us say that we are creating a website for a company called Cars4All. In the code below, you will see that the Layout component now accepts a prop called pageTitle, and that the document title, which is now rendered with a template literal, uses it as a placeholder value. Setting the title of the document does not get any more difficult than that!

import React from "react"
import Helmet from "react-helmet"

export default ({ pageTitle, children }) => (
  <>
    <Helmet>
      <title>{`Cars4All | ${pageTitle}`}</title>
    </Helmet>
    <div>
      <header>
        <h1>Cars4All</h1>
        <nav>
          <ul>
          </ul>
        </nav>  
      </header>
      {children}
      <footer>{`${new Date().getFullYear()} No Rights Whatsoever Reserved`}</footer>
    </div>
  </>
)

Let us update ìndex.js accordingly by setting the pageTitle to "Home":

import React from "react"
import Layout from "../components/layout"

export default () => 
  <Layout pageTitle="Home">
    <div>I live in a layout component, and life is pretty good here!</div>
  </Layout>

If you open http://localhost:8000 in the browser, you will see that the document title is now Cars4All | Home. Victory! However, as stated in the introduction, we will want to do more in the document head than set the title. For instance, we will probably want to include charset, description, keywords, author and viewport meta tags.

How would we go about doing that? The answer is exactly the same way we set the title of the document:

import React from "react"
import Helmet from "react-helmet"

export default ({ pageMeta, children }) => (
  <>
    <Helmet>
      <title>{`Cars4All | ${pageMeta.title}`}</title>
      
      {/* The charset, viewport and author meta tags will always have the same value, so we hard code them! */}
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <meta name="author" content="Bob Trustly" />

      {/* The rest we set dynamically with props */}
      <meta name="description" content={pageMeta.description} />
      
      {/* We pass an array of keywords, and then we use the Array.join method to convert them to a string where each keyword is separated by a comma */}
      <meta name="keywords" content={pageMeta.keywords.join(',')} />
    </Helmet>
    <div>
      <header>
        <h1>Cars4All</h1>
        <nav>
          <ul>
          </ul>
        </nav>  
      </header>
      {children}
      <footer>{`${new Date().getFullYear()} No Rights Whatsoever Reserved`}</footer>
    </div>
  </>
)

As you may have noticed, the Layout component no longer accepts a pageTitle prop, but a pageMeta one instead, which is an object that encapsulates all the meta data on a page. You do not have to do bundle all the page data like this, but I am very averse to props bloat. If there is data with a common denominator, I will always encapsulate it like this. Regardless, let us update index.js with the relevant data:

import React from "react"
import Layout from "../components/layout"

export default () => 
  <Layout
    pageMeta={{
      title: "Home",
      keywords: ["cars", "cheap", "deal"],
      description: "Cars4All has a car for everybody! Our prices are the lowest, and the quality the best-est; we are all about having the cake and eating it, too!"
    }}
  >
    <div>I live in a layout component, and life is pretty good here!</div>
  </Layout>

If you open http://localhost:8000 again, fire up DevTools and dive into the document head, you will see that all of the meta tags we added are there. Regardless of whether you want to add more meta tags, a canonical URL or integrate your site with Facebook using the Open Graph Protocol, this is how you about about it. One thing that I feel is worth pointing out: if you need to add a script to the document head (maybe because you want to enhance the SEO of your website by including some structured data), then you have to render the script as a string within curly braces, like so:

<script type="application/ld+json">{`
{
  "@context": "http://schema.org",
  "@type": "LocalBusiness",
  "address": {
  "@type": "PostalAddress",
  "addressLocality": "Imbrium",
  "addressRegion": "OH",
  "postalCode":"11340",
  "streetAddress": "987 Happy Avenue"
  },
  "description": "Cars4All has a car for everybody! Our prices are the lowest, and the quality the best-est; we are all about having the cake and eating it, too!",
  "name": "Cars4All",
  "telephone": "555",
  "openingHours": "Mo,Tu,We,Th,Fr 09:00-17:00",
  "geo": {
  "@type": "GeoCoordinates",
  "latitude": "40.75",
  "longitude": "73.98"
  }, 			
  "sameAs" : ["http://www.facebook.com/your-profile",
  "http://www.twitter.com/your-profile",
  "http://plus.google.com/your-profile"]
}
`}</script>

For a complete reference of everything that you can put in the document head, check out Josh Buchea's great overview.

The escape hatch

For whatever reason, you might have to overwrite a value that you have already set with React Helmet — what do you do then? The clever people behind React Helmet have thought of this particular use case and provided us with an escape hatch: values set in components that are further down the component tree always take precedence over values set in components that find themselves higher up in the component tree. By taking advantage of this, we can overwrite existing values.

Say we have a fictitious component that looks like this:

import React from "react"
import Helmet from "react-helmet"

export default () => (
  <>
    <Helmet>
      <title>The Titliest Title of Them All</title>
    </Helmet>
    <h2>I'm a component that serves no real purpose besides mucking about with the document title.</h2>
  </>
)

And then we want to include this component in ìndex.js page, like so:

import React from "react"
import Layout from "../components/layout"
import Fictitious from "../components/fictitious"

export default () => 
  <Layout
    pageMeta={{
      title: "Home",
      keywords: ["cars", "cheap", "deal"],
      description: "Cars4All has a car for everybody! Our prices are the lowest, and the quality the best-est; we are all about having the cake and eating it, too!"
    }}
  >
    <div>I live in a layout component, and life is pretty good here!</div>
    <Fictitious />
  </Layout>

Because the Fictitious component hangs out in the underworld of our component tree, it is able to hijack the document title and change it from "Home" to "The Titliest Title of Them All." While I think it is a good thing that this escape hatch exists, I would caution against using it unless there really is no other way. If other developers pick up your code and have no knowledge of your Fictitious component and what it does, then they will probably suspect that the code is haunted, and we do not want to spook our fellow developers! After all, fighter jets do come with ejection seats, but that is not to say fighter pilots should use them just because they can.

Venturing outside of the document head

As mentioned earlier, we can also use React Helmet to change HTML and body attributes. For example, it's always a good idea to declare the language of your website, which you do with the HTML lang attribute. That's set with React Helmet like this:

<Helmet>

  /* Setting the language of your page does not get more difficult than this! */
  <html lang="en" />
    
  /* Other React Helmet-y stuff...  */
</Helmet>

Now let us really tap into the power of React Helmet by letting the pageMeta prop of the Layout component accept a custom CSS class that is added to the document body. Thus far, our React Helmet work has been limited to one page, so we can really spice things up by creating another page for the Cars4All site and pass a custom CSS class with the Layout component's pageMeta prop.

First, we need to modify our Layout component. Note that since our Cars4All website will now consist of more than one page, we need to make it possible for site visitors to navigate between these pages: Gatsby's Link component to the rescue!

Using the Link component is no more difficult than setting its to prop to the name of the file that makes up the page you want to link to. So if we want to create a page for the cars sold by Cars4All and we name the page file cars.js, linking to it is no more difficult than typing out <Link to="/cars/">Our Cars</Link>. When you are on the Our Cars page, it should be possible to navigate back to the ìndex.js page, which we call Home. That means we need to add <Link to="/">Home</Link> to our navigation as well.

In the new Layout component code below, you can see that we are importing the Link component from Gatsby and that the previously empty unordered list in the head element is now populated with the links for our pages. The only thing left to do in the Layout component is add the following snippet:

<body className={pageMeta.customCssClass ? pageMeta.customCssClass : ''}/>

...to the <Helmet> code, which adds a CSS class to the document body if one has been passed with the pageMeta prop. Oh, and given that we are going to pass a CSS class, we do, of course, have to create one. Let's head back to the src directory and create a new directory called css in which we create a file called main.css. Last, but not least, we have to import it into the Layout component, because otherwise our website will not know that it exists. Then add the following CSS to the file:

.slick {
  background-color: yellow;
  color: limegreen;
  font-family: "Comic Sans MS", cursive, sans-serif;
}

Now replace the code in src/components/layout.js with the new Layout code that we just discussed:

import React from "react"
import Helmet from "react-helmet"
import { Link } from "gatsby"
import "../css/main.css"

export default ({ pageMeta, children }) => (
  <>
    <Helmet>
      {/* Setting the language of your page does not get more difficult than this! */}
      <html lang="en" />
      
     {/* Add the customCssClass from our pageMeta prop to the document body */}
     
     <body className={pageMeta.customCssClass ? pageMeta.customCssClass : ''}/>
      
      <title>{`Cars4All | ${pageMeta.title}`}</title>
      
      {/* The charset, viewport and author meta tags will always have the same value, so we hard code them! */}
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <meta name="author" content="Bob Trustly" />

      {/* The rest we set dynamically with props */}
      <meta name="description" content={pageMeta.description} />
      
      {/* We pass an array of keywords, and then we use the Array.join method to convert them to a string where each keyword is separated by a comma */}
      <meta name="keywords" content={pageMeta.keywords.join(',')} />
    </Helmet>
    <div>
      <header>
        <h1>Cars4All</h1>
        <nav>
          <ul>
            <li><Link to="/">Home</Link></li>
            <li><Link to="/cars/">Our Cars</Link></li>
          </ul>
        </nav>  
      </header>
      {children}
      <footer>{`${new Date().getFullYear()} No Rights Whatsoever Reserved`}</footer>
    </div>
  </>
)

We are only going to add a custom CSS class to the document body in the cars.js page, so there is no need to make any modifications to the ìndex.js page. In the src/pages/ directory, create a file called cars.js and add the code below to it.

import React from "react"
import Layout from "../components/layout"

export default () => 
  <Layout
    pageMeta={{
      title: "Our Cars",
      keywords: <a href="">"toyota", "suv", "volvo"],
      description: "We sell Toyotas, gas guzzlers and Volvos. If we don't have the car you would like, let us know and we will order it for you!!!",
      customCssClass: "slick"
    }}
  >
    <h2>Our Cars</h2>
    <div>A car</div>
    <div>Another car</div>
    <div>Yet another car</div>
    <div>Cars ad infinitum</div>
  </Layout>

If you head on over to http://localhost:8000, you will see that you can now navigate between the pages. Moreover, when you land on the cars.js page, you will notice that something looks slightly off... Hmm, no wonder I call myself a web developer and not a web designer! Let's open DevTools, toggle the document head and navigate back to the ìndex.js page. The content is updated when changing routes!

The icing on the cake

If you inspect the source of your pages, you might feel a tad bit cheated. I promised a SSR React website, but none of our React Helmet goodness can be found in the source.

What was the point of my foisting Gatsby on you, you might ask? Well, patience young padowan! Run gatsby build in Terminal from the root of the site, followed by gatsby serve.

Gatsby will tell you that the site is now running on http://localhost:9000. Dash over there and inspect the source of your pages again. Tadá, it's all there! You now have a website that has all the advantages of a React SPA without giving up on SEO or integrating with third-party applications and what not. Gatsby is amazing, and it is my sincere hope that you will continue to explore what Gatsby has to offer.

On that note, happy coding!

The post It’s All In the Head: Managing the Document Head of a React Powered Site With React Helmet appeared first on CSS-Tricks.

Compare The Best Cheap Web Hosting Companies

Want to jump straight to the answer? The best cheap web hosting provider for most people is Hostinger or DreamHost.

If you’re trying to get your site up and running for as little as possible, you’ve come to the right place. I’ve investigated dozens of the cheapest web hosts out there to find the most affordable web hosting plans that are actually worth using.

The Cheapest Hosting Plans

  • Hostinger — Starting at $9.99 (month-to-month contract)
  • DreamHost — Starting at $4.95 (month-to-month contract)
  • GreenGeeks — Starting at $9.95 (month-to-month contract)
  • InMotion — Starting at $4.99 (annual contract)
  • A2 Hosting — Starting at $8.99 (month-to-month contract)
  • HostGator — Starting at $6.95 (month-to-month contract)
  • SiteGround — Starting at $2.99 (annual contract)
  • iPage — Starting at $2.99 (annual contract)
  • Bluehost — Starting at $4.95 (annual contract)
How to choose the best cheap web hosting. Quicksprout.com's methodology for reviewing cheap web hosting.

A lot of the options in this top list are priced on a month-to-month basis. That means minimal commitment.

But to get the absolute cheapest monthly rates available, you need to lock in a longer contract and pay in advance. This costs more money upfront but saves you a lot in the long run.

If you can afford to do it, I highly recommend signing on to a longer contract to get the best discount.

Here are my top picks ranked by the cheapest per-month cost along with the contract term. All require full payment upfront:

You may be wondering where SiteGround is on this second list. Don’t worry, it’s still here–it just offers its best rates with a one-year commitment. You’ll pay just $2.99 per month that way. Paying for two or three years upfront saves quite a bit, too.

In addition to locking in the lowest available rates with these pre-paid, long-term packages, you’re also delaying the inevitable renewal upcharges. Commit now and stretch that promotional rate as long as possible.

If you know that your site will be up and running for at least a few years, a long-term contract will offer the most value. Just make sure you sign up for a plan with a money-back guarantee, so you can opt-out at the beginning if you’re unhappy.

The Best Month-to-Month Hosting Prices

For those of you who don’t want long-term contract commitments, you’ll need to find a web hosting provider that offers month-to-month pricing.

These prices will be a bit higher than the cheapest advertised rates, but you can pay way less on day one.

Typically, you have to pay everything upfront for a long-term hosting plan–so even if it’s only a few dollars a month, that might cost hundreds of dollars to get started.

If you are looking for hosting without a big price tag or years-long commitment, you should definitely look at my top picks for month-to-month web hosting.

DreamHost

  • Starts at $1.99/month
  • $2.95/month if you pay annually
  • Recommended by WordPress
  • 4.6/5 rating from Trustpilot
Get up to 47% off

If you’re looking for an affordable web hosting option, look no further than DreamHost. More than 1.5 million websites worldwide are hosted by DreamHost. They also have an outstanding reputation due to their high-quality hosting at rock-bottom prices.

DreamHost offers month-to-month web hosting plans starting at $7.99 per month. This is a solid price for web hosting without a long-term commitment, but DreamHost is willing to lower that price to get your business.

Currently, it’s less than $2 for the first month to get your website off the ground.

There are no setup fees and no strings attached. Cancel whenever you want. You don’t have to commit to more than a month. These are two of the most straightforward low-cost plans in the industry.

Dreamhost pricing page. Shows prices for their cheapest web hosting plans.

The sale pricing above is subject to change, but I’ve included the current regular pricing below:

  • Shared Starter— starting at $7.99 paying monthly, $2.95 per month for one year, $2.59 per month for three years
  • Shared Unlimited— starting at $13.99 paying monthly, $2.95 per month for one year, $3.95 per month for three years

You can save a good bit by signing up for a longer plan with DreamHost, but they offer a lot more at a better price than most other hosts if you are looking to avoid a long-term contract.

Shared Starter is good for one website, but if you upgrade to Shared Unlimited, you’ll be able to create as many sites as you need.

Both plans come with a free website builder, WordPress pre-installed, and a free SSL certificate.

Email comes free with the Shared Unlimited plan and starts at $1.67 per month with the Shared Starter plan.

Their customer service team is 100% in-house. They don’t outsource agents like other web hosting companies and can provide more hands-on support to your issues. However, the trade-off is that live chat and email support is only available for 16 hours per day.

If you miss those hours, don’t worry. DreamHost has an extensive knowledge base of FAQs and guides making it easy for you to find help on your own.

Not only are you able to sign up month-to-month, but you’ll also be refunded if you’re unhappy. DreamHost has an industry-leading 97-day money-back guarantee. Check out my complete Dreamhost review for more details about them.

A2 Hosting

  • Starts at $9.99/month
  • $7.99/month if you pay annually
  • Free domain and SSL certificate
  • 30-day money back guarantee
Get up to 51% off

A2 Hosting is built for speed. The fact that you can get cheap plans from such a reputable provider is a bonus.

Like most web hosts, A2 offers the lowest prices when you lock in a longer contract. The best rates are available when you sign up for 36 months.

Here’s a closer look at those plans and prices:

  • Startup — $2.99 per month
  • Drive — $5.99 per month
  • Turbo Boost — $6.99 per month
  • Turbo Max — $12.99 per month
A2 Hosting pricing

The Turbo Max plan gives you the fastest speeds. But if you’re prioritizing price, Startup is the cheapest. The Turbo Boost plan is an excellent value when you consider the fact that it’s just $1 more than the Drive plan, with access to a turbo server.

A2 offers a free SSL certificate with every plan. All plans are backed by a 99.9% uptime commitment and money-back guarantee. 

If you’re switching from another hosting provider, A2 will migrate your account for free. 

Another reason why I recommend A2 Hosting is because they provide a cPanel control panel. This feature will make it much easier for you to manage your hosting experience.

HostGator

  • Starts at $10.95/month
  • $8.95/month if you pay annually
  • Free domain and SSL certificate
  • 45-day money back guarantee
Get up to 61% off

HostGator’s entry-level rates are a bit higher than some of the other month-to-month plans that we’ve reviewed—but they are still one of the best cheap web hosting providers in the industry.

One great benefit of HostGator: Their month-to-month rates are exactly the same as the 3-month contracts and 6-month contracts.

So for those of you who don’t want to commit, even for a few months, there’s no reason to.

  • Hatchling Plan — $2.75 per month for the 1st year, then $6.95 per month
  • Baby Plan — $3.95 per month for the 1st year, then $9.95 per month
  • Business Plan — $5.95 per month for the 1st year, then $14.95 per month
HostGator pricing page.

Even at $6.95 per month, it’s still very affordable. Especially when you factor in the setup fees and renewal rates of other providers.

The fact that there is only a $1 difference between the Hatchling and Baby plans is another bonus. In my mind, this pricing structure makes it a no-brainer for you to sign up for the Baby plan.

Even if you only have one domain right now, being able to add more down the road without switching plans is worth the extra $1 per month, and even the extra $3 after the first year.

Additional features like SiteLock monitoring, professional email, SEO tools, and daily backups will cost you extra.

HostGator has 24/7/365 support via phone, email, and live chat. They offer instant account activation without any setup costs as well as a 45-day money-back guarantee.

SiteGround

  • Unmetered traffic on all plans
  • $2.99/month if you pay annually
  • Recommended by WordPress
  • 30-day money-back guarantee
Get up to 80% off

SiteGround is a web host with a great reputation and websites all over the world.

They pack a lot of useful features in each plan and offer the same pricing packages for managed WordPress and WooCommerce hosting as their shared hosting plans. That can help you secure an even better deal by getting more specialized hosting for a shared hosting price.

Their best deal, across the board, is their StartUp tier with a one-year upfront commitment. No matter which tier you go with, the one-year term gives you the best promotional price compared to month-to-month billing and longer commitments.

Here’s a deeper breakdown of their pricing plans for a one-year term:

  • StartUp: $2.99 per month
  • GrowBig: $4.99 per month
  • GoGeek: $7.99 per month

As you can see, you get a good chunk of resources on the lowest-tier package. Those of you who are starting a new website should be fine with the StartUp plan. SiteGround recently dropped its prices for all three tiers, making the StartUp plan even more enticing.

StartUp does only offer one website and 10 GB of space, so you will need to aim for one of the pricier tiers if you want unlimited websites or more storage space. Only the GoGeek tier offers advanced priority technical support, although all three tiers offer phone and live chat support.

On all plans, you get managed WordPress and useful freebies like an SSL certificate, content delivery network, email, and daily backups.

Renewal pricing can get expensive, but there’s another hidden benefit of seizing on the one-year-term promotional pricing. SiteGround offers a 20% discount on their base renewal rate for two-year renewals and a 30% discount when renewing for three years. That means you’ll come out ahead over the long haul, as well as for that first year of hosting.

The Best Annual Hosting Prices

If you’re willing to commit to a web hosting plan for at least one year, you’ll get a cheaper monthly rate if you pay for 12 months upfront. These plans will take more out of your pocket initially but save you money in the long run.

InMotion

  • $3.29/month paid annually
  • Free domain and SSL certificate
  • Free and unlimited email
  • 90-day money back guarantee
Get up to 57% off

The web hosting plans offered by InMotion are great for small business owners. So if you’re looking for cheap small business web hosting, these are the plans that you should consider:

  • Core — starting at $3.29 per month ($9.99 per month after first year)
  • Launch — starting at $6.99 per month ($13.99 per month after first year)
  • Power — starting at $6.99 per month ($17.99 per month after first year)
  • Pro — starting at $14.99 per month ($24.99 per month after first year)
Inmotion pricing page. Shows prices annual prices for Inmotion's cheap web hosting plans.

Again, you need to pay upfront to lock in these annual rates.

Most entry-level plans limit you to host just one website. But the Launch plan from InMotion allows you to host two sites.

All plans come with unlimited disk space, unlimited bandwidth, unlimited email, a security suite, marketing tools, and a free SSL certificate.

InMotion has a free one-click installer for more than 400 apps as well as one-click data backups and restores.

Another reason why I recommend InMotion is because of their 90-day money-back guarantee. This assurance should make you feel more comfortable about paying for a year in full when you sign up.

While InMotion does have some add-ons like a dedicated IP and backup management, the plans seem to have more basic features included than some of the other providers out there. Learn more about them by reading my in-depth InMotion hosting review.

iPage

  • $2.99/month paid annually
  • Free domain and SSL certificate
  • FREE drag and drop site builder
  • 30-day money back guarantee
Get up to 75% off

iPage is known for its excellent website builders and affordable web hosting.

I recommend iPage because its annual pricing rates are cheap and straightforward.

As we’ve already seen, other hosting providers offer multiple plans at varying price points. The pricing depends on features and resources.

iPage landing page for their cheapest web hosting option

But iPage pricing is based solely on your term length. Then you can customize your plan with additional products.

The base price for an annual web hosting plan is $2.99 per month, which translates to an upfront total of $35.88 for the year.

Here are some of the additional features that you can add to customize your plan:

  • Daily backups — $14.99 per year
  • Website security — $19.95 per year
  • Pro website builder — $131.88 per year
  • SiteLock — $23.88 per year
  • Domain privacy — $9.99 per year
  • WordPress optimization — $36.00 per year
  • G Suite business — $36.00 per year

Most of you won’t need all of these. But you’ll probably want to add on the domain privacy and added security at a minimum. That would bring your upfront annual total to $65.82.

iPage offers a free SSL certificate and a 30-day money-back guarantee for its annual plans as well.

Overall, iPage has some of the most affordable annual web hosting plans in the industry. Read my full iPage review for more on them.

GreenGeeks

  • Starts at $2.49 per month
  • Reduce your carbon footprint
  • Free CDN & SSL Certificate
  • 30-day money-back guarantee
Get up to 67% off

GreenGeeks is affordable shared and VPS web hosting with a twist. GreenGeeks is so committed to the environment that for every amp of power the company uses, it matches three times that with renewable energy. That 300% renewable energy match means your website will actually be carbon-reducing!

But don’t choose GreenGeeks just because of its renewable energy commitment–GreenGeeks also guarantees 99.98% uptime and has five data centers. Four of the five centers are located in North America, and the fifth is in Amsterdam. 

All GreenGeeks hosting plans include free CDN integration plus a 30-day money-back guarantee. The Lite shared hosting plan starts as low as $2.49 per month for one website with a three-year contract. This plan includes 50GB of web space, unmetered transfer, 50 email accounts, a free SSL certificate, a free domain for one year, nightly backups, free CDN, built-in caching, managed WordPress hosting, unlimited databases, and multi-user access. 

The other two GreenGeeks plans are Pro starting at $4.95 per month, and Premium starting at $8.95 per month. Both of these plans cover unlimited websites, web space, and email accounts. The biggest additional features in the Premium plan are a free dedicated IP, free AlphaSSL, and object caching. 

On top of the 300% renewable energy match and affordable rates, GreenGeek has 24/7 live chat support and a robust knowledge base. And the free drag-and-drop website builder is a great tool, with hundreds of templates to customize.

For cheap, planet-friendly hosting with great uptime and support, get started with GreenGeeks now.

SiteGround

  • $2.99/month paid annually
  • Free SSL, email, CDN, & backups
  • Recommended by WordPress
  • 30 day money back guarantee
Get up to 80% off

We have already reviewed SiteGround’s month-to-month pricing. But their annual rates are appealing enough for me to mention them again here.

In most cases, web hosting providers give you better discounts for longer contract terms. But SiteGround offers the same monthly rate for 12-month, 24-month, and 36-month contracts.

You’ll still have to pay upfront, but you don’t need to commit for three years to get the best rate.

  • Startup — $2.99 per month ($41.88 per year)
  • GrowBig — $4.99 per month ($71.88 per year)
  • GoGeek — $7.99 per month ($119.88 per year)

So if you know that you want to use SiteGround for at least one year, these annual rates are very affordable.

Bluehost

  • $2.75/month paid annually
  • Free domain and SSL certificate
  • Recommended by WordPress
  • 30-day money back guarantee
Get up to 63% off

Bluehost is an incredibly reliable and popular hosting service — and for very god reason.

Bluehost plans are pretty unbeatable when you compare the price to the performance and quality of service that you’re getting in return.

Let’s take a closer look at the annual rates for Bluehost shared hosting plans.

  • Basic — $2.75 per month ($33.00 per year)
  • Plus — $5.45 per month ($65.40 per year)
  • Choice Plus — $5.45 per month ($64.40 per year)
  • Pro — $13.95 per month ($167.40 per year)

In terms of affordable web hosting, most of you probably won’t need or want the Pro plan.

But the Basic plan is a great option for a new or small website.

If you have the budget to spend a little bit more, the Plus and Choice Plus plans are offered at the same price for the first year. So I’d recommend Choice Plus, as it comes with extra benefits like site backups and domain privacy.

Just be aware that all of these plans renew at higher rates after the first year. The renewal rate for Choice Plus is $18.99 per month compared to $13.99 per month for the Plus plan.

For an extra $5 per month, I’d still lean toward Choice Plus as the best value.

All plans come with a free SSL certificate and unmetered bandwidth. The basic plan has 50 GB of storage, and the other three have unlimited SSD storage.

Bluehost also offers $100 in advertising credits for Microsoft Advertising as well as $100 in credits for Google Ads. The free advertising can balance out some of your hosting costs. Read my full Bluehost review for more info about them.

Hostinger

  • Starts at $9.99/month
  • $1.99/month if you pay annually
  • Free SSL certificate
  • 30-day money back guarantee
Get up to 90% off

Hostinger offers affordable web hosting with a long-term contract. So, if you are always going to need hosting, why not sign a contract and lock in the lowest price possible for as long as you can.

Here is an overview of Hostinger’s current per-month rates if you lock in a 48-month contract:

  • Single Shared Hosting — starting at $1.99 per month
  • Premium Shared Hosting — starting at $2.99 per month
  • Business Shared Hosting — starting at $4.99 per month

The biggest difference between the three options is the server resources and the number of websites that can be hosted. The available disk space is 30 GB, 100 GB, or 200 GB, depending on the plan you choose.

The Single Shared Hosting plan allows you to create one website that can host approximately 10,000 visitors each month. The Premium and Business plans let you host up to 100 sites with a lot more visitors each month.

All three plans have a 99.9% uptime guarantee, 24/7/365 customer support, and an easy-to-use website builder.

What they lack in name recognition, they make up for in affordability and service.

I like Hostinger because their service is reliable and they don’t force you to commit long-term. However, the month-to-month plans do not come with lots of freebies and extras. These are some of the add-ons that you’ll want to consider:

  • Daily backups (free with the Business Shared plan)
  • Cloudflare CDN
  • SEO toolkit
  • Priority support

At a minimum, I’d recommend the daily backups. The Cloudflare CDN is a good value as well.

How to Choose the Best Cheap Web Hosting For You

With so many great options to consider, finding the best cheap web hosting provider can be challenging. But this process is much easier when you know what to look for as you’re evaluating different contenders. 

We encourage you to use the criteria below to guide your decision.

Intro pricing and renewal rates

Whether you commit to one month, one year, or four years, your first contract will always be your best offer. That’s why it’s important to understand what you’re going to be paying when your contract expires.

Let’s look at an example using the web hosting platform iPage, which has the lowest annual rates on our list.

The intro offer for a 12-month contract paid-in-full is $2.99 per month. So your base hosting cost is $35.88 for the first year. But iPage annual plans renew at $9.99 per month, so you’ll be paying a $119.88 base cost for each subsequent year. 

Hosting providers are always changing their introductory offers. It’s common to see prices slashed around the holidays, like Black Friday or Cyber Monday. No matter what introductory offer you see from a hosting provider, find out what you’ll be paying once the promotional period ends.

Contract length

Month-to-month pricing can seem lucrative. Without a long-term commitment, it’s no big deal if you’re unsatisfied, right?

But short contract terms often translate to higher monthly rates.

For example, HostGator’s entry-level pricing starts at $10.95 per month with no long-term commitments. This will cost you $131.40 over the course of the year, which is very affordable.

But locking in that same exact plan for 36 months and paying upfront costs just $2.75 per month. So you’ll get three years of web hosting for $99 in total. That’s less than the cost of one year at the month-to-month rate!

Hostinger is another prime example of the difference between monthly and yearly rates. You can pay Hostinger upfront for four years of hosting at $1.39 per month, and you’ll still be paying less than you would for a single year with other providers.

The downside of locking in a long-term contract is that you lose the flexibility to change your plan if you’re unhappy or outgrow your resources.

That said, most of the providers I’ve chosen offer money-back guarantees if you aren’t happy. And if you’re always going to need a website, you’re always going to need a host. 

I recommend looking for the best long-term deal you can find. You can always continue using your same hosting plan even if you change domain names.

Add-ons and freebies

Most web hosting providers will offer extra features built into the base cost of your web hosting plan. But some providers offer more than others.

In addition to web hosting, common add-ons, freebies, and extras include:

  • SSL certificate
  • Domain registration
  • Setup costs
  • Security
  • Daily backups
  • cPanel
  • WordPress integration
  • Advertising credits
  • Email
  • Marketing tools
  • SEO tools
  • MySQL databases
  • Domain privacy
  • Website builders

It’s important to take all of this into consideration—and balance it with the cost.

One plan may look more appealing at face value, but you’ll have to pay extra for basic features. In comparison, another provider may have higher base prices but deliver more in terms of extras and freebies.

Upgrades

As your site grows, you’ll need to look beyond the cheapest option. After all, you want your website’s traffic to exceed the limits of an entry-level shared plan.

The next logical step is to upgrade to VPS hosting or a cloud hosting plan.

This might not happen for a few years. But you should take a look to see what types of upgrades are offered by various web hosts. Ideally, you’ll want to choose a provider that will make it easy for you to upgrade to another type of web hosting.

Review those upgraded plans so you can budget and calculate hosting costs accordingly for the long term.

The Best Cheap Web Hosting in Summary

You don’t need to spend a ton of money on web hosting, especially if you have a new or small website. I don’t recommend choosing a web host based solely on price. You also need to factor in the quality of the service you get.

Many hosts require a long-term contract to lock in the lowest possible rate. But some providers offer cheap annual and month-to-month pricing.

Vonage Streamlines Multi-Channel Communication via New Conversation API

Vonage, a provider of business cloud communication services, has announced a new API that is designed to provide developers with the tool necessary for creating and managing conversations across various messaging channels in real-time. The new Conversation API is the latest addition to the Vonage API Platform and helps to streamline communication across not only disparate channels but also devices.

How to Stop and Prevent a DDoS Attack on WordPress

WordPress is one of the most popular website builder in the world because it offers powerful features and a secure codebase. However, that does not protect WordPress or any other software from malicious DDoS attacks, which are common on the internet.

DDoS attacks can slow down websites and eventually make them inaccessible to users. These attacks can be targeted towards both small and large websites.

Now, you may be wondering how can a small business website using WordPress prevent such DDoS attacks with limited resources?

In this guide, we will show you how to effectively stop and prevent a DDoS attack on WordPress. Our goal is to help you learn how to manage your website security against a DDoS attack like a total pro.

Stopping and preventing a DDOS attack on a WordPress site

What is a DDoS Attack?

DDoS attack, short for Distributed Denial of Service attack, is a type of cyber attack that uses compromised computers and devices to send or request data from a WordPress hosting server. The purpose of these requests is to slow down and eventually crash the targeted server.

DDoS attacks are an evolved form of DoS (Denial of Service) attacks. Unlike a DoS attack, they take advantage of multiple compromised machines or servers spread across different regions.

These compromised machines form a network, which is sometimes called a botnet. Each affected machine acts as a bot and launches attacks on the targeted system or server.

This allows them to go unnoticed for a while and cause maximum damage before they are being blocked.

DDoS attack diagram

Even the largest internet companies are vulnerable to DDoS attacks.

In 2018, GitHub, a popular code hosting platform, witnessed a massive DDoS attack that sent 1.3 terabytes per second traffic to their servers.

You may also remember the notorious 2016 attack on DYN (a DNS service provider). This attack got worldwide news coverage as it affected many popular websites like Amazon, Netflix, PayPal, Visa, AirBnB, The New York Times, Reddit, and thousands of other websites.

Why DDoS Attacks Happen?

There are several motivations behind DDoS attacks. Below are some common ones:

  • Technically savvy people who are just bored and find it adventurous
  • People and groups trying to make a political point
  • Groups targeting websites and services of a particular country or region
  • Targeted attacks on a specific business or service provider to cause them monetary harm
  • To blackmail and collect ransom money

What is the difference between a Brute Force Attack and a DDoS Attack?

Brute force attack

Brute Force Attacks are usually trying to break into a system by guessing passwords or trying random combinations to gain unauthorized access to a system.

DDoS attacks are purely used to simply crash the targetted system making it inaccessible or slowing it down.

For details see our guide on how to block brute force attacks on WordPress with step by step instructions.

What damages can be caused by a DDoS attack?

DDoS attacks can make a website inaccessible or reduce performance. This may cause bad user experience, loss of business, and the costs of mitigating the attack can be in thousands of dollars.

Here is a breakdown of these costs:

  • Loss of business due to inaccessibility of website
  • Cost of customer support to answer service disruption related queries
  • Cost of mitigating attack by hiring security services or support
  • The biggest cost is the bad user experience and brand reputation

How to Stop and Prevent DDoS Attack on WordPress

DDoS attacks can be cleverly disguised and difficult to deal with. However, with some basic security best practices, you can prevent and easily stop DDoS attacks from affecting your WordPress website.

Here are the steps you need to take to prevent and stop DDoS attacks on your WordPress site.

Remove DDoS / Brute Force Attack Verticals

The best thing about WordPress is that it is highly flexible. WordPress allows third-party plugins and tools to integrate into your website and add new features.

To do that WordPress makes several APIs available to programmers. These APIs are methods in which third-party WordPress plugins and services can interact with WordPress.

However, some of these APIs can also be exploited during a DDoS attack by sending a ton of requests. You can safely disable them to reduce those requests.

Disable XML RPC in WordPress

XML-RPC allows third-party apps to interact with your WordPress website. For example, you need XML-RPC to use the WordPress app on your mobile device.

If you’re like a vast majority of users who don’t use the mobile app, then you can disable XML-RPC by simply adding the following code to your website’s .htaccess file.

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

For alternate methods, see our guide on how to easily disable XML-RPC in WordPress.

Disable REST API in WordPress

The WordPress JSON REST API allow plugins and tools the ability to access WordPress data, update content, and/or even delete it. Here is how you can disable REST API in WordPress.

First thing you need to do is install and activate the Disable WP Rest API plugin. For more details, see our step by step guide on how to install a WordPress plugin.

The plugin works out of the box, and it will simply disable the REST API for all non-logged in users.

Activate WAF (Website Application Firewall)

Website Application Firewall (WAF)

Disabling attack vectors like REST API and XML-RPC provides limited protection against DDoS attacks. Your website is still vulnerable to normal HTTP requests.

While you can mitigate a small DOS attack by trying to catch the bad machine IPs and blocking them manually, this approach is not very effective when dealing with a large DDoS attack.

The easiest way to block suspicious requests is by activating a website application firewall.

A website application firewall acts as a proxy between your website and all incoming traffic. It uses smart algorithm to catch all suspicious requests and block them before they reach your website server.

Website application firewall

We recommend using Sucuri because it is the best WordPress security plugin and website firewall. It runs on a DNS level which means they can catch a DDoS attack before it can make a request to your website.

Pricing for Sucuri starts from $20 per month (paid yearly).

We use Sucuri on WPBeginner. See our case study on how they help block hundreds of thousands of attacks on our website.

Alternately, you can also use Cloudflare. However, Cloudflare’s free service only gives limited DDoS protection. You’ll need to signup for at least their business plan for layer 7 DDoS protection which costs around $200 per month.

See our article on Sucuri vs Cloudflare for a detailed side-by-side comparison.

Note: Website Application Firewalls (WAFs) that run on an application-level are less effective during a DDoS attack. They block the traffic once it has already reached your web server, so it still affects your overall website performance.

Finding Out Whether it’s Brute Force or DDoS Attack

Both brute force and DDoS attacks intensively use server resources, which means their symptoms look quite similar. Your website will get slower and may crash.

You can easily find out whether it is a brute force attack or a DDoS attack by simply looking at Sucuri plugin’s login reports.

Simply, install and activate the free Sucuri plugin and then go to Sucuri Security » Last Logins page.

Failed logins

If you are seeing a large number of random login requests, then this means your wp-admin is under a brute force attack. To mitigate it, you can see our guide on how to block brute force attacks in WordPress.

Things to Do During a DDoS Attack

DDoS attacks can happen even if you have a web application firewall and other protections in place. Companies like CloudFlare and Sucuri deal with these attacks on regular basis, and most of the time you will never hear about it since they can easily mitigate it.

However in some cases, when these attacks are large, it can still impact you. In that case, it’s best to be prepared to mitigate the problems that may arise during and after the DDoS attack.

Following are a few things you can do to minimize the impact of a DDoS attack.

1. Alert your team members

If you have a team, then you need to inform co-workers about the issue. This will help them prepare for customer support queries, look out for possible issues, and help out during or after the attack.

2. Inform customers about the inconvience

A DDoS attack can affect user experience on your website. If you run a WooCommerce store, then your customers may not be able to place an order or login to their account.

You can announce through your social media accounts that your website is having technical difficulties and everything will be back to normal soon.

If the attack is large, then you can also use your email marketing service to communicate with customers and ask them to follow your social media updates.

If you have VIP customers, then you might want to use your business phone service to make individual phone calls and let them know how you’re working to restore the services.

Communication during these tough times make a huge difference in keeping your brand’s reputation strong.

3. Contact Hosting and Security Support

Get in touch with your WordPress hosting provider. The attack you may be witnessing could be part of a larger attack targetting their systems. In that case, they will be able to provide you latest updates about the situation.

Contact your Firewall service and let them know that your website is under a DDoS attack. They may be able to mitigate the situation even faster and can provide you with more information.

In firewall providers like Sucuri, you can also set your settings to be in Paranoid mode which helps block a lot of requests and make your website accessible for normal users.

Keeping Your WordPress Website Secure

WordPress is quite secure out of the box. However, as the world’s most popular website builder it is often targeted by hackers.

Luckily, there are many security best practices that you can apply on your website to make it even more secure.

We have compiled a complete step by step WordPress security guide for beginners. It will walk you through the best WordPress security settings to protect your website, and its data against common threats.

We hope this article helped you learn how to block and prevent a DDoS attack on WordPress. You may also want to see our guide on the most common WordPress errors and how to fix them.

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 Stop and Prevent a DDoS Attack on WordPress appeared first on WPBeginner.

Using the Platform

Tim Kadlec:

So much care and planning has gone into creating the web platform, to ensure that even as new features are added, they’re added in a way that doesn’t break the web for anyone using an older device or browser. Can you say the same for any framework out there? I don’t mean that to be perceived as throwing shade (as the kids say). Building the actual web platform requires a deeper level of commitment to these sorts of things out of necessity.

The platform (meaning using standard features built into browsers) might not have everything you need (it often won't) and using those features will bring long-term resiliency to what you build in a way that a framework may not. The web evolves and very likely won't break things. Frameworks evolve and very likely will break things.

Sorta evokes the story of MooTools and Smooshgate.

Direct Link to ArticlePermalink

The post Using the Platform appeared first on CSS-Tricks.

How to Backup a WooCommerce Store

How to Backup a WooCommerce StoreBack in June 1995, there were less than 25,000 websites in total. Fast-forward to 2019 and that number has multiplied by 12,681 times. There are nearly 2 BILLION websites currently. Websites have become a crucial form of representation and a medium to showcase one’s skills. Now imagine if your website suddenly crashed. You can lose […]

The post How to Backup a WooCommerce Store appeared first on WPExplorer.

WordPress Businesses Should Send Out Press Releases

I have only been on the job for less than two months. In that time, one thing has become abundantly clear. The largest companies in the WordPress ecosystem send out press releases to news organizations such as WP Tavern. Small businesses may send an email with few details. Others send nothing at all.

As a former business owner, I never thought about writing a statement to send to the press. Now that I am on the other side, I see how I missed huge opportunities to potentially get more coverage and build a relationship with the publications within the WordPress arena.

Brian Krogsgard of Post Status, a competing publication of WP Tavern, agrees that companies are missing opportunities. “There are many easy wins in PR that only a few companies take advantage of in our space,” said Krogsgard.

As a journalist, I am here to tell the truth, regardless of who or what the story is about. However, there will always be a part of me that wants to see every businesses within the WordPress space succeed. Therefore, this article is a tutorial that will help businesses within our space get their news items out to the public. Plus, the larger and more successful the WordPress community grows, the more potential WP Tavern has of growing its audience. It is healthy for the ecosystem on the whole.

Because of this symbiotic relationship between the media and product creators, it is important that business owners have a good working relationship with the publications that are writing about them.

What Is a Press Release?

A press release is sometimes called a “press statement” or “news release.” It is an official statement from a company about a particular news item. In a sense, it is a news story itself. There are some publications in the larger world of journalism that routinely publish only the press releases sent to them.

A press release can be in the form of an email, text file, PDF, or even video. Its purpose is to simply let the press know about your news.

Why Should Companies Put Together Press Releases?

On occasion, I get a message that says something along the lines of, “Hey, you’re giving the big businesses too much coverage. How about throwing the smaller folks a bone?” That is a fair question. However, what is often the problem is that this news by a smaller company may not be on a particular publication’s radar.

Enter the press release.

This is where smaller companies should sneak a peek at larger companies’ playbooks. Large businesses often have entire public relations (PR) or communications departments. Sometimes they only have one person in that role. What those PR positions are doing is getting the word out, and they are making sure the publications within the WordPress realm know about their news.

Individuals or small companies need not hire someone for communications with the press. However, at least one person should serve as a representative and handle this role.

There are many things happening in the WordPress world on any given day. Even with a press release, there is no guarantee that WP Tavern or another publication will publish your story. There is a guarantee that they won’t if they do not know about it.

A press release is a way to get your foot in the door and should be a part of any company’s strategy.

“I definitely prefer press packets for product launches, particularly if I can see the key features ahead of time,” said Krogsgard. “Press releases at the time of a news event is fine, but the best company PR is usually done by working with media outlets ahead of a release schedule.”

Whether your news is covered will depend on several factors. The important thing, particularly for smaller businesses, is that you put yourself on a publication’s radar.

The team here at WP Tavern will certainly appreciate your company passing along a press release, but do not limit yourself. Send it to other publications. Give podcast creators a copy. Most will be accepting of any news you send their way.

How To Write a Press Release

Press releases can take a few different forms, but there are some things that should be included with every statement that a business issues.

The following is an outline of a basic press release. You can deviate from the formula a bit, but make sure you include the important information.

Contact Information

Journalists need to know how to get in touch with you or the appropriate representative for your company for potential follow-up questions. In the WordPress world, this will primarily be a name and email address. However, including something like your WordPress Slack username for text chats helps.

Most of all, you should provide the best way to contact you.

This also means being prepared to answer questions if and when you are contacted. Quotes are like gold to journalists. It is often the human element that we are after. The press release opens the door to a conversation.

Story Headline

Journalists get a lot of emails, notes, and so on. A press release should contain a headline that is both factual and grabs attention. It should be a brief summary of what news you want to share. It is no different than writing a blog post. In our fast-paced culture, you only have a moment to let someone know that your story is worth reading. Avoid headlines that look like click-bait, but tell why your news is newsworthy.

Depending on the news, a sub-headline is often an extra piece of info that helps. A quick sentence or two that expands on the headline is sometimes necessary to fully explain why the press should continue reading.

Dateline

A press release should always include a dateline. There are two types of datelines. The first type is the date of the press release. This means journalists can move forward with the story.

However, you can also put a future date in the dateline. This is common when you want to prepare publications for an upcoming story that you don’t want to publicly announce yet. This is called requesting a news embargo, which means that publications should sit on the story until that particular date.

Introduction or Lede

A lede is the opening paragraph of a story that answers the five W’s: who, what, when, where, and why. This is the moment you should let journalists know what the story is about. Get to the point in answering those five questions.

Body Copy

After introducing the story, you should stick to relevant information about the story. Any data or details that are important for the story should be included.

“Another thing that’s really helpful is screenshots, or short video overviews, and other brand assets that can provide visual appeal to go alongside a story,” said Krogsgard of writing a compelling press statement. “Do you have a revamped interface? Well nicely packaged visual materials really help sell that to convince me that it’s worth covering — and also to use in the article myself if I do write about it.”

Company Bio or Info

Last but certainly not least is including a section that provides details about your company. Consider it a short biography.

One of the worst things for a journalist covering a story is spending hours trying to dig up your company’s information online instead of working on the story. Providing that information up front is a huge help to the press. It also ensures we are getting your information correct.

How to Publish ASP.NET Core 3.0 Web Apps/APIs in Azure’s Linux App Service

Create a new App Service Plan. If you have already created then skip this step. An app service is like one container or a VM machine. In a single Azure app service, you can host N number of web apps. Based on load, you can split your apps to separate app services if required.

To create a new app service, you'll first need to set a resource group name; if you already have created it, you can use the same or else can create new. Next, fill the app service name, select Linux as your OS, select a pricing plan based on your needs, and hit create.

Main Uses for Couchbase Primary Index

 FROM customer USE KEYS ["cx:123"] Couchbase is a distributed database. It supports a flexible data model using JSON. Each document in a bucket will have a user-generated unique document key. This uniqueness is enforced during the insertion or updation of the data. Here’s an example document.

select meta().id, travel
from `travel-sample` travel
where type = 'airline' limit 1;
[
  {
      "id": "airline_10",
      "travel": {
          "callsign": "MILE-AIR",
          "country": "United States",
          "iata": "Q5",
          "icao": "MLA",
          "id": 10,
          "name": "40-Mile Air",
          "type": "airline"
          }
      }
  ]



INSERT INTO customer (key, value) VALUES(“cx:123”, {“name”:”joe”, “zip”: 94040, “state”:ca});

SELECT META().id FROM customer;

cx:123


How to Enable Sign-in With iOS Biometric Authentication

When developing a CloudEver app, I learned about iOS biometric authentication technologies, including Face ID and Touch ID. Then, I reviewed some apps with fingerprint sign-in features and found that many of them did not fully take advantages of iOS security capabilities. I would like to share my knowledge I've gained with the community, and I hope that the apps we use will be more and more secure.

Why Do We Need Authentication?

Most of the early Internet services mainly provided static content for everyone without login. Later, there were some dynamic services, such as forums, chat rooms, and so on. At that time, passwords were required for identity authentication. Since then, password authentication have been widely adopted by many Internet services.

Dangling Pointer in C++

It's not always easy to understand some concept at first. However, a good analogy can always help you to grasp it and keep remembering it. 

A dangling pointer is one of those concepts. Let me demonstrate with code first, then explain after that with an analogy.