Git-deployable F# based Web Applications in the Azure Cloud with WebSharper

Web Apps with WebSharper and F#Last month after I wrote a small prototype to get the F# Suave.io web framework running on Azure Web Apps (a git deployed managed Platform as a Service) I started looking for more F# Azure resources.

Here’s a list of some other existing F# programming technologies that are great with Azure. Did I miss any? I surely did. There’s a huge list up at FSharp.org for resources running F# on any cloud.

  • Fog (an F# Azure data scripting API)
  • MBrace (a scalable distributed programming model for F#)
  • FSharp.Data (a set of F# type providers for common cloud data manipulation scenarios)
  • Suave (a simple web development F# library for lightweight microservicesincluding route flow and task composition)
  • FSharp.CloudAgent – a simple framework to easily distribute workloads over the cloud whilst using standard F# Agents as the processing mechanism. Support exists for both simple and reliable messaging via Azure Service Bus, and for both workers and actors.
  • AzureStorageTypeProvider – An F# Azure Type Provider which can be used to explore Blob, Table and Queue Azure Storage assets and easily apply CRUD operations on them
  • Try F# – A web programming console for F# that can be reoriented towards Azure programmability
  • HadoopFs – A lightweight F# implementation of the Hadoop Streaming API
  • FSharp.Azure – A wrapper over WindowsAzure.Store using idiomatic F#

There’s also the WebSharper web framework. WebSharper isn’t ASP.NET with F#, it’s its own idiomatic thing. What’s that really mean, “idiomatic?”

You know how when you Google Translate a sentence it doesn’t quite work? I mean, it works, but it doesn’t feel right. It doesn’t feel right because the translator understands the words, and some phrases, but not the idioms – the underlying thoughts that are unique to that language. There was a time a few years back when folks were constantly looking for C# to VB convertors. This is something that’s quite possible, almost line for line. However, changing an imperative language into a functional one is not like turning American English into British English. 😉 Let functional languages be functional.

F# people like to do things their way and the language has very different goals and ideas than C# so it makes sense there would be a opinionated web framework for F#. I like it.

(Although I’m sure there will be a way to use ASP.NET 5 and MVC with F# in the future, this post isn’t about that.)

WebSharper has a VS Extension so you can File New new projects, and here’s a hello world ToDo List app (minus the HTML view, which you can see here)

namespace UINextApplication1

open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Notation

[<JavaScript>]
module Client =
type IndexTemplate = Templating.Template<"index.html">

let Tasks = ListModel.FromSeq ["Have breakfast"]

let Main =
JQuery.Of("#tasks").Empty().Ignore

let newName = Var.Create ""

IndexTemplate.Main.Doc(
ListContainer =
(ListModel.View Tasks |> Doc.Convert (fun name ->
IndexTemplate.ListItem.Doc(
Task = View.Const name,
Done = (fun e -> Tasks.Remove name)))
),
Task = newName,
Add = (fun e ->
Tasks.Add(newName.Value)
Var.Set newName "")
)
|> Doc.RunById "tasks"

More interesting is the recent blog post by Adam Granicz where he expands on my “Suave to Azure via GitHub” prototype and shows how to deploy a real F# WebShaprter app to Azure Websites via GitHub.

One of the main improvements is that my solution used FAKE and I found myself wanting a binary version of the FSharp compiler as  NuGet. An issue was open and closed within days, simplifying the deployment. Additionally their WebSharper solution creates an ASP.NET app that runs in the context of ASP.NET and IIS, while my Suave solution needed a separate process. WebSharper 3.1 was recently released, and you can see their sample running live in Azure here: http://websharper-clientserver.azurewebsites.net

And of course, you can deploy it to Azure right from here using the Deploy to Azure button!

Deploy to Azure

Do you dabble in F#, are you doing F# professionally? What do you think about F#-based web applications?


Sponsor: Big thanks to Atalasoft for sponsoring the blog and feed this week! If your company works with documents, definitely check out Atalasoft’s developer tools for web & mobile viewing, capture, and transformation. They’ve got free trials and a remarkable support team, too.


© 2015 Scott Hanselman. All rights reserved.
     

Web Apps with WebSharper and F#Last month after I wrote a small prototype to get the F# Suave.io web framework running on Azure Web Apps (a git deployed managed Platform as a Service) I started looking for more F# Azure resources.

Here's a list of some other existing F# programming technologies that are great with Azure. Did I miss any? I surely did. There's a huge list up at FSharp.org for resources running F# on any cloud.

  • Fog (an F# Azure data scripting API)
  • MBrace (a scalable distributed programming model for F#)
  • FSharp.Data (a set of F# type providers for common cloud data manipulation scenarios)
  • Suave (a simple web development F# library for lightweight microservicesincluding route flow and task composition)
  • FSharp.CloudAgent - a simple framework to easily distribute workloads over the cloud whilst using standard F# Agents as the processing mechanism. Support exists for both simple and reliable messaging via Azure Service Bus, and for both workers and actors.
  • AzureStorageTypeProvider - An F# Azure Type Provider which can be used to explore Blob, Table and Queue Azure Storage assets and easily apply CRUD operations on them
  • Try F# - A web programming console for F# that can be reoriented towards Azure programmability
  • HadoopFs - A lightweight F# implementation of the Hadoop Streaming API
  • FSharp.Azure - A wrapper over WindowsAzure.Store using idiomatic F#

There's also the WebSharper web framework. WebSharper isn't ASP.NET with F#, it's its own idiomatic thing. What's that really mean, "idiomatic?"

You know how when you Google Translate a sentence it doesn't quite work? I mean, it works, but it doesn't feel right. It doesn't feel right because the translator understands the words, and some phrases, but not the idioms - the underlying thoughts that are unique to that language. There was a time a few years back when folks were constantly looking for C# to VB convertors. This is something that's quite possible, almost line for line. However, changing an imperative language into a functional one is not like turning American English into British English. ;) Let functional languages be functional.

F# people like to do things their way and the language has very different goals and ideas than C# so it makes sense there would be a opinionated web framework for F#. I like it.

(Although I'm sure there will be a way to use ASP.NET 5 and MVC with F# in the future, this post isn't about that.)

WebSharper has a VS Extension so you can File New new projects, and here's a hello world ToDo List app (minus the HTML view, which you can see here)

namespace UINextApplication1


open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Notation

[<JavaScript>]
module Client =
type IndexTemplate = Templating.Template<"index.html">

let Tasks = ListModel.FromSeq ["Have breakfast"]

let Main =
JQuery.Of("#tasks").Empty().Ignore

let newName = Var.Create ""

IndexTemplate.Main.Doc(
ListContainer =
(ListModel.View Tasks |> Doc.Convert (fun name ->
IndexTemplate.ListItem.Doc(
Task = View.Const name,
Done = (fun e -> Tasks.Remove name)))
),
Task = newName,
Add = (fun e ->
Tasks.Add(newName.Value)
Var.Set newName "")
)
|> Doc.RunById "tasks"

More interesting is the recent blog post by Adam Granicz where he expands on my "Suave to Azure via GitHub" prototype and shows how to deploy a real F# WebShaprter app to Azure Websites via GitHub.

One of the main improvements is that my solution used FAKE and I found myself wanting a binary version of the FSharp compiler as  NuGet. An issue was open and closed within days, simplifying the deployment. Additionally their WebSharper solution creates an ASP.NET app that runs in the context of ASP.NET and IIS, while my Suave solution needed a separate process. WebSharper 3.1 was recently released, and you can see their sample running live in Azure here: http://websharper-clientserver.azurewebsites.net

And of course, you can deploy it to Azure right from here using the Deploy to Azure button!

Deploy to Azure

Do you dabble in F#, are you doing F# professionally? What do you think about F#-based web applications?


Sponsor: Big thanks to Atalasoft for sponsoring the blog and feed this week! If your company works with documents, definitely check out Atalasoft's developer tools for web & mobile viewing, capture, and transformation. They've got free trials and a remarkable support team, too.



© 2015 Scott Hanselman. All rights reserved.
     

13 Free User Management Plugins for WordPress

Are you managing a multi-user WordPress website? By default, WordPress comes with a built-in user management system, and you can extend it to meet your needs. In this article, we will show you the best WordPress user management plugins. Note: If you are looking to… Read More »

To leave a comment please visit 13 Free User Management Plugins for WordPress on WPBeginner.

Are you managing a multi-user WordPress website? By default, WordPress comes with a built-in user management system, and you can extend it to meet your needs. In this article, we will show you the best WordPress user management plugins.

User Management WordPress

Note: If you are looking to add new users, here’s our tutorial on how to add new users in WordPress.

1. Capability Manager Enhanced

Capability Manager Enhanced

WordPress comes with a few built in user roles. Each user role has some pre-defined capabilities assigned to them. Capability Manager Enhanced plugin allows you to edit those capabilities and create customized user roles for your WordPress site. See our tutorial on how to add or remove capabilities to user roles in WordPress for more detailed instructions.

2. WP Idle Logout

WordPress idle logout message

Sometimes user log into their WordPress account and forget to logout. Inactive users may cause session hijacking threat. WP Idle Logout plugin allows you to logout users if they are inactive for a given amount of time. Users can safely log back in when they want to resume their session again. See our guide on how to automatically logout idle users in WordPress for more details.

3. Cimy User Extra Fields

Cimy User Extra Fields

The basic WordPress user profile field is quite simple. Cimy User Extra Fields plugin allows you to extend user profiles by adding extra fields to them. Users can fill out these fields during registration or by editing their profiles. See our step by step tutorial on how to add additional user profile fields in WordPress for more instructions on using the plugin.

4. New User Approve

Moderate new user registration in WordPress

Anyone can register on your site when you open your WordPress site for user registration. New User Approve plugin allows you to moderate new user registrations. You can approve or deny new user registrations from your WordPress admin area. See our guide on how to moderate new user registrations in WordPress for step by step instructions on how to setup the plugin.

5. Peter’s Login Redirect

Peter's Login Redirect

If you want to redirect users to specific page after login, then Peter’s Login Redirect is the plugin for that. Simply activate the plugin and go to the plugin’s settings page. You can redirect users based on username, user role, or capabilities. You can also set a page where users will be redirected after successful registration. For more details take a look at our guide on how to redirect users after successful login in WordPress.

6. User Switching

User switching

When testing a multi user site features, you may need to switch to different user accounts. User Switching plugin provides an easier way to instantly switch user accounts in WordPress. Simply install and activate the plugin and you can switch to any account from the users page or from the toolbar. The plugin only allows site admins to switch user accounts.

7. Account Locker Lite

Locking a user account

Sometimes you may want to restrict a user’s access to your WordPress site without deleting their account or changing their password. Account Locker Lite allows you to block a user account without deleting it. This is particularly helpful if you don’t want to lose a user’s account because there are posts associated with them that you would like to still credit to them. See our tutorial on how to block a WordPress user without deleting their account for more detailed instructions.

8. WP Useronline

Users Online

Many community sites and forums have widgets that can display online users. You can do that in WordPress with WP Useronline plugin. It allows you to display users currently visiting your website. See our tutorial on how to show real time online users in WordPress for more details.

9. Prevent Concurrent Logins

Concurrent user sessions

By default WordPress users can sign into an account from multiple locations at the same time. This could affect the security of a multi author WordPress site. If you run a paid membership site, then this could also affect your profits. Prevent Concurrent Logins plugin disables this behavior and only allows one session per user at a time. See our tutorial on how to stop users from sharing passwords in WordPress for more details.

10. Force Strong Passwords

Force Strong Password

Passwords are the first barrier between your site’s admin area and hackers. Using weak passwords makes your WordPress site vulnerable to hacking attacks. Force Strong Passwords plugin enforces strong passwords for users with capability of publishing or editing posts on your WordPress site. Check out our guide on how to force strong passwords on users in WordPress for more details.

11. Adminimize

Adminimize Menu

Sometimes you may want to tweak the WordPress user interface for some users on your website. Adminimize allows you to hide unnecessary items from WordPress menu. You can configure each and every aspect of WordPress admin area on your site for each user role. Take a look at our detailed guide on how to hide unnecessary items from WordPress admin menu with Adminmize.

12. User Submitted Posts

User Submitted Posts

If you do not want to give other users access to your WordPress admin area, then there are other ways you can allow users to submit content on your WordPress site. User Submitted Posts plugin allows you to add a form to the front-end of your WordPress site where your users can submit posts to your website. Another popular alternative for user submitted content is Gravity Forms. We have detailed tutorial on how to allow user submitted posts on your WordPress site.

13. Simple Local Avatars

Simple Local Avatar

WordPress comes with a built-in user profile photo handling through Gravatar. However, some of your users may not have a Gravatar photo. Simple Local Avatars allows your users to upload a photo from their profile page. WordPress will then use this local image as user’s photo on your site.

We hope this article helped you find the best user management plugins for WordPress. You may also want to take a look at our guide on the WordPress search plugins to improve your site search.

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.

To leave a comment please visit 13 Free User Management Plugins for WordPress on WPBeginner.

How to Detect AdBlock Users in WordPress

Are you looking for a way to detect AdBlock users in WordPress? Many bloggers rely on ad revenues to support their websites. Browser extensions like AdBlock plus can hurt your revenue potential. In this article, we will show you how to detect AdBlock users in… Read More »

To leave a comment please visit How to Detect AdBlock Users in WordPress on WPBeginner.

Are you looking for a way to detect AdBlock users in WordPress? Many bloggers rely on ad revenues to support their websites. Browser extensions like AdBlock plus can hurt your revenue potential. In this article, we will show you how to detect AdBlock users in WordPress and show them a custom message asking them to support your site.

Detect AdBlock Users in WordPress

What is AdBlock and How does it hurt you?

AdBlock is a simple but effective add-on for web browsers that allows users to disable ads on your WordPress site.

While Adblock brings a cherished ad-free experience to users, it can hurt bloggers who rely solely on ad revenues.

There are few approaches that you can take to deal with AdBlock. Each has their pros and cons.

The Do-Nothing Approach

As the title says, you do nothing about the users with AdBlock. You simply learn to live with the loss of revenue for the sake of happy users.

Passive Approach

In a passive approach, you can encourage users to whitelist your site to display ads. Alternatively, you can ask them to join a premium membership or make a donation to support your efforts while browsing ad-free.

This is something a very popular site like Reddit does. They offer their users an ad-free experience for a small monthly fee. You can do this by adding a text link to your site below your ads saying want an ad-free experience? If the user clicks on that, they will be taken to a page where you can explain the details. See Reddit Gold page for example.

Aggressive Approach

In this approach, you simply block the site for all users with AdBlock enabled. If they want to view your content, they must disable AdBlock.

This kind of approach is rather aggressive and will turn away users from your site. It’s best to use the passive approach that we mentioned above.

Now that you know of the various approaches to dealing with AdBlock users, let’s look at how we can do this.

How to Detect AdBlock in WordPress

First thing you need to do is install and activate the Ad Blocking Detector plugin. Upon activation, the plugin will add a new menu item labeled ‘Ad Blocking’ to your WordPress admin. You need to click on it to configure the plugin’s settings.

Settings page for Ad Blocking Detector plugin

You can either edit the Sample Shortcode or create your own shortcode. For the sake of this example, we will edit the existing shortcode.

AdBlock Detector WordPress Edit Shortcode Page

On the edit screen, you will see a name field for the shortcode. Below that you will notice two text areas. The first one will be displayed when no Adblocker is found on user’s browser.

For testing purposes, we recommend that you to add something short here like ‘No Ad Blocker detected’. Later you can put your ads here or leave this box completely empty.

The next box is displayed when the plugin detects that a user has Ad blocking software installed. The default message only shows that the plugin has successfully detected adblock. You can change that with your own custom message.

The WordPress AdBlocking detector plugin comes with basic auto-styling enabled for both text areas. If this auto-styling conflicts with your theme, then you can disable auto-styling under Content Auto-Styling section. Simply check the box next to ‘No. Disable it”.

Disable auto styling

You need to click on the save shortcode button to save your settings.

Now that you have created a shortcode, it’s time to add it.

This plugin comes with a built-in widget that you can add. Simply head over to Appearance » Widgets and drag / drop the Ad Blocking Detector widget to a sidebar.

Ad Blocking Detector Widget

Provide the widget a title if you want, and then select the shortcode from the drop down menu. Lastly, don’t forget to save your widget settings.

That’s all you can now preview your site. If you do not have AdBlock installed, then you will see the message or ad that you entered in no AdBlock box for the shortcode.

Users with no ad blocker

To see the AdBlock message, you will need to install Adblock Plus and then test your website. You will see the notice that you entered in the AdBlock detected box for the shortcode.

Users with ad blocker installed will see your message

The WordPress AdBlock detector plugin detects all major ad blocking browser extensions on all major web browsers including AdBlock Plus. It is also fully compatible with WordPress multisite networks.

John Morris, the author of this plugin, has written a detailed tutorial on how to extend this plugin further with JavaScript to do things like block the entire site access, show a popup with a custom message, add angry gifs, etc.

If you’re savvy with code, then see his article on how to extend WordPress AdBlock Detector with JavaScript.

That’s all we hope this article helped you detect AdBlock in WordPress. You may also want to check out our tutorial on how to insert ads within your post content in WordPress.

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

To leave a comment please visit How to Detect AdBlock Users in WordPress on WPBeginner.

The Mysterious Case of the Rogue Roaming Browser History – Removing OneView Internet Login

I like a good mystery and I hope you do, too. I’ll give you two versions. First, the TL;DR version so you can just fix it, and later second, the maddening technical details.

See how it flashes OneView Internet Login in the title for a moment?

TL;DR – Why does my Internet Explorer say OneView Internet Login?

If you go googling for “OneView Internet Login” google will suggest things like “…remove.” You’ll find Yahoo Answers where folks are thinking they have a toolbar installed or a virus because when they launch Internet Explorer they see a flash of OneView Internet Login in the title bar.

To remove it, go to the Star in Internet Explorer’s toolbar and click History, then By Site. Find “One View Internet Login,” right click and delete that history record.

Note here in this screenshot that the site is http://google.com but the Title is OneView Internet Login. Delete that.

NOTE: If your home page is not google, then find your IE home page by Site, and delete the entry with the wrong title. Or, go nuclear and clear all history.

Delete it from your history

CSI: My Computer – Why does OneView Internet Login show up on all my computers? What is it and why won’t it go away?

A year ago or so I stayed at a Hyatt Hotel. Hotels like the Hyatt often use “Captive Portals” when getting you on their internet. A captive portal “captures” your browser’s traffic so no matter what site you asked for you’ll get their login screen. So you get on their wi-fi, you type googlebing and they redirect you to GlobalSuite.net or whatever to sign up. Only then does your traffic go through.

If you visit a hotel like this and hit it with IE for the first time with a fresh cache (nothing in your history or you’ve recently cleared your history) the Title that gets saved in the browser database will be the URL of the site you asked for but the title of the Hotel’s Captive Portal. Weird? Just wait.

I noticed that my laptop would flash OneView Internet in the title (see the animated gif above) when opening my home page for the first time. Every once in a while I’d go looking for it, search the registry, do a hard-drive-wide grep or findstr but then I’d give up.

Later, though, my desktop at home started showing OneView Internet Login in the title bar on startup. To be clear, that’s my desktop computer that hasn’t left my house.

Roaming, my friends. All browsers roam things now. They roam passwords, history, bunches of stuff. This record, this cache, this tab, this something was getting roamed to all 5 of my machines. Now every time I open a browser on any machine I own I get a little gentle reminder of how hotel wi-fi sucks and how the GlobalSuite OneView Internet Login Captive Portal is sending a 301 or lousy headers or something dumb. Next time I stay there I’ll do a Fiddler trace and prove it. Until then I wanted to find out where this was being stored on my hard drive.

Where is IE History stored? It’s stored in a database using a technique called Extensible Storage Engine or ESE. In fact, Windows has shipped this database tech for over 13 years. You can even use it in your apps as a free and fast local database, but no one knows it exists. Over at NirSoft there are a host of wonderful utilities (they are saints, truly, give them money) and one of them is the ESEDatabaseView.

Run ESEDatabaseView and go File | Open IE10 Locked Database (even though you may be using IE11) and you’ll be into the depths.

NirSoft's ESEDatabaseView

In a tabled called Container one I found a bunch of history entries:

The offending Entry

There’s my first tab, my home page, but I didn’t find “OneView Internet Login” or even the word OneView. I searched the while database, every table.

I was stuck here for a while.

Then I noticed way off to the right (like I literally had to scroll off to the right) there was  column called ResponseHeaders with a bunch of HEX.

20 01 00 00 1C 01 00 00 31 53 50 53 A1 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46
11 00 00 00 17 00 00 00 00 13 00 00 00 00 00 00 00 41 00 00 00 10 00 00 00 00 1F 00
00 00 17 00 00 00 4F 00 6E 00 65 00 56 00 69 00 65 00 77 00 20 00 49 00 6E 00 74 00
65 00 72 00 6E 00 65 00 74 00 20 00 4C 00 6F 00 67 00 69 00 6E 00 00 00 00 00 15 00
00 00 18 00 00 00 00 40 00 00 00 40 E8 3E C4 96 8E D0 01 11 00 00 00 0D 00 00 00 00
13 00 00 00 00 00 00 00 11 00 00 00 09 00 00 00 00 13 00 00 00 00 00 00 00 11 00 00
00 22 00 00 00 00 13 00 00 00 00 00 00 00 11 00 00 00 06 00 00 00 00 13 00 00 00 0A
00 00 00 55 00 00 00 15 00 00 00 00 1F 00 00 00 22 00 00 00 68 00 74 00 74 00 70 00
3A 00 2F 00 2F 00 77 00 77 00 77 00 2E 00 67 00 6F 00 6F 00 67 00 6C 00 65 00 2E 00
63 00 6F 00 6D 00 2F 00 66 00 61 00 76 00 69 00 63 00 6F 00 6E 00 2E 00 69 00 63 00
6F 00 00 00 00 00 00 00 00 00 00 00 DC 00 00 00 D8 00 00 00 31 53 50 53 A1 14 02 00
00 00 00 00 C0 00 00 00 00 00 00 46 11 00 00 00 20 00 00 00 00 03 00 00 00 00 00 00
00 11 00 00 00 14 00 00 00 00 03 00 00 00 01 00 00 00 15 00 00 00 28 00 00 00 00 40
00 00 00 70 0D 51 33 D8 6C D0 01 11 00 00 00 21 00 00 00 00 13 00 00 00 00 00 00 00
3D 00 00 00 1D 00 00 00 00 42 00 00 00 1E 00 00 00 70 00 72 00 6F 00 70 00 34 00 32
00 39 00 34 00 39 00 36 00 37 00 32 00 39 00 35 00 00 00 00 00 08 00 00 00 EB 03 00
00 00 00 00 00 15 00 00 00 1E 00 00 00 00 40 00 00 00 3C DC B8 DF 12 6D D0 01 11 00
00 00 1C 00 00 00 00 03 00 00 00 00 00 00 00 11 00 00 00 27 00 00 00 00 13 00 00 00
01 00 00 00 00 00 00 00 00 00 00 00           

First thing I noticed (I assume you do also) is all the zeros. They are mostly not used as if this is UTF16. But I really look for HEX that I know. That means CR, LF, and Space, so 0D, 0A, and 20.

See that there?

4F 00 6E 00 65 00 56 00 69 00 65 00 77 00 20 00 49 00 6E 00 74 00 65 00 72 00 6E 00
65 00 74 00 20 00 4C 00 6F 00 67 00 69 00 6E 00 00 00 00 00 15 00 00 00 18

That’s One View Internet Login. I converted from Hex to ASCII/UTF16. There’s lots of online Hex to String Convertors where you can just paste this into a text box. I can also put the string above into a PowerShell string and convert it like this:

$HEXDATA.Split(“ “) | FOREACH {WRITE-HOST –object ( [CHAR][BYTE]([CONVERT]::toint16($_,16))) –nonewline }

There it is, OneView Internet Login. The title of the portal was cached along with the original URL (google.com) and the location to the favicon. When IE hits the page it shows what it has and then corrects it as soon as it gets the current title.

image

What’s not clear to me is why this never expired. This title sat around for a year, at least. Maybe an IE engineer will read this and answer in the comments. If they do I will update the post with their answer.

The Good News is that if you delete the history record manually as seen at the very top of this post, that delete will roam and automatically fix this issue on all your machines (to be clear, all those that are logged in with the same Microsoft Account and roaming your browser data.

Remember, Dear Reader, the Internet (and your computer and its operating system) is not a black box. Look inside.


Sponsor: Big thanks to the folks over at Grape City for sponsoring the feed this week. GrapeCity provides amazing development tools to enhance and extend application functionality. Whether it is .NET, HTML5/JavaScript, Reporting or Spreadsheets, they’ve got you covered. Download your free trial of ComponentOne Studio, ActiveReports, Spread and Wijmo.


© 2015 Scott Hanselman. All rights reserved.
     

I like a good mystery and I hope you do, too. I'll give you two versions. First, the TL;DR version so you can just fix it, and later second, the maddening technical details.

See how it flashes OneView Internet Login in the title for a moment?

TL;DR - Why does my Internet Explorer say OneView Internet Login?

If you go googling for "OneView Internet Login" google will suggest things like "...remove." You'll find Yahoo Answers where folks are thinking they have a toolbar installed or a virus because when they launch Internet Explorer they see a flash of OneView Internet Login in the title bar.

To remove it, go to the Star in Internet Explorer's toolbar and click History, then By Site. Find "One View Internet Login," right click and delete that history record.

Note here in this screenshot that the site is http://google.com but the Title is OneView Internet Login. Delete that.

NOTE: If your home page is not google, then find your IE home page by Site, and delete the entry with the wrong title. Or, go nuclear and clear all history.

Delete it from your history

CSI: My Computer - Why does OneView Internet Login show up on all my computers? What is it and why won't it go away?

A year ago or so I stayed at a Hyatt Hotel. Hotels like the Hyatt often use "Captive Portals" when getting you on their internet. A captive portal "captures" your browser's traffic so no matter what site you asked for you'll get their login screen. So you get on their wi-fi, you type googlebing and they redirect you to GlobalSuite.net or whatever to sign up. Only then does your traffic go through.

If you visit a hotel like this and hit it with IE for the first time with a fresh cache (nothing in your history or you've recently cleared your history) the Title that gets saved in the browser database will be the URL of the site you asked for but the title of the Hotel's Captive Portal. Weird? Just wait.

I noticed that my laptop would flash OneView Internet in the title (see the animated gif above) when opening my home page for the first time. Every once in a while I'd go looking for it, search the registry, do a hard-drive-wide grep or findstr but then I'd give up.

Later, though, my desktop at home started showing OneView Internet Login in the title bar on startup. To be clear, that's my desktop computer that hasn't left my house.

Roaming, my friends. All browsers roam things now. They roam passwords, history, bunches of stuff. This record, this cache, this tab, this something was getting roamed to all 5 of my machines. Now every time I open a browser on any machine I own I get a little gentle reminder of how hotel wi-fi sucks and how the GlobalSuite OneView Internet Login Captive Portal is sending a 301 or lousy headers or something dumb. Next time I stay there I'll do a Fiddler trace and prove it. Until then I wanted to find out where this was being stored on my hard drive.

Where is IE History stored? It's stored in a database using a technique called Extensible Storage Engine or ESE. In fact, Windows has shipped this database tech for over 13 years. You can even use it in your apps as a free and fast local database, but no one knows it exists. Over at NirSoft there are a host of wonderful utilities (they are saints, truly, give them money) and one of them is the ESEDatabaseView.

Run ESEDatabaseView and go File | Open IE10 Locked Database (even though you may be using IE11) and you'll be into the depths.

NirSoft's ESEDatabaseView

In a tabled called Container one I found a bunch of history entries:

The offending Entry

There's my first tab, my home page, but I didn't find "OneView Internet Login" or even the word OneView. I searched the while database, every table.

I was stuck here for a while.

Then I noticed way off to the right (like I literally had to scroll off to the right) there was  column called ResponseHeaders with a bunch of HEX.

20 01 00 00 1C 01 00 00 31 53 50 53 A1 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46
11 00 00 00 17 00 00 00 00 13 00 00 00 00 00 00 00 41 00 00 00 10 00 00 00 00 1F 00
00 00 17 00 00 00 4F 00 6E 00 65 00 56 00 69 00 65 00 77 00 20 00 49 00 6E 00 74 00
65 00 72 00 6E 00 65 00 74 00 20 00 4C 00 6F 00 67 00 69 00 6E 00 00 00 00 00 15 00
00 00 18 00 00 00 00 40 00 00 00 40 E8 3E C4 96 8E D0 01 11 00 00 00 0D 00 00 00 00
13 00 00 00 00 00 00 00 11 00 00 00 09 00 00 00 00 13 00 00 00 00 00 00 00 11 00 00
00 22 00 00 00 00 13 00 00 00 00 00 00 00 11 00 00 00 06 00 00 00 00 13 00 00 00 0A
00 00 00 55 00 00 00 15 00 00 00 00 1F 00 00 00 22 00 00 00 68 00 74 00 74 00 70 00
3A 00 2F 00 2F 00 77 00 77 00 77 00 2E 00 67 00 6F 00 6F 00 67 00 6C 00 65 00 2E 00
63 00 6F 00 6D 00 2F 00 66 00 61 00 76 00 69 00 63 00 6F 00 6E 00 2E 00 69 00 63 00
6F 00 00 00 00 00 00 00 00 00 00 00 DC 00 00 00 D8 00 00 00 31 53 50 53 A1 14 02 00
00 00 00 00 C0 00 00 00 00 00 00 46 11 00 00 00 20 00 00 00 00 03 00 00 00 00 00 00
00 11 00 00 00 14 00 00 00 00 03 00 00 00 01 00 00 00 15 00 00 00 28 00 00 00 00 40
00 00 00 70 0D 51 33 D8 6C D0 01 11 00 00 00 21 00 00 00 00 13 00 00 00 00 00 00 00
3D 00 00 00 1D 00 00 00 00 42 00 00 00 1E 00 00 00 70 00 72 00 6F 00 70 00 34 00 32
00 39 00 34 00 39 00 36 00 37 00 32 00 39 00 35 00 00 00 00 00 08 00 00 00 EB 03 00
00 00 00 00 00 15 00 00 00 1E 00 00 00 00 40 00 00 00 3C DC B8 DF 12 6D D0 01 11 00
00 00 1C 00 00 00 00 03 00 00 00 00 00 00 00 11 00 00 00 27 00 00 00 00 13 00 00 00
01 00 00 00 00 00 00 00 00 00 00 00           

First thing I noticed (I assume you do also) is all the zeros. They are mostly not used as if this is UTF16. But I really look for HEX that I know. That means CR, LF, and Space, so 0D, 0A, and 20.

See that there?

4F 00 6E 00 65 00 56 00 69 00 65 00 77 00 20 00 49 00 6E 00 74 00 65 00 72 00 6E 00
65 00 74 00 20 00 4C 00 6F 00 67 00 69 00 6E 00 00 00 00 00 15 00 00 00 18

That's One View Internet Login. I converted from Hex to ASCII/UTF16. There's lots of online Hex to String Convertors where you can just paste this into a text box. I can also put the string above into a PowerShell string and convert it like this:

$HEXDATA.Split(“ “) | FOREACH {WRITE-HOST –object ( [CHAR][BYTE]([CONVERT]::toint16($_,16))) –nonewline }

There it is, OneView Internet Login. The title of the portal was cached along with the original URL (google.com) and the location to the favicon. When IE hits the page it shows what it has and then corrects it as soon as it gets the current title.

image

What's not clear to me is why this never expired. This title sat around for a year, at least. Maybe an IE engineer will read this and answer in the comments. If they do I will update the post with their answer.

The Good News is that if you delete the history record manually as seen at the very top of this post, that delete will roam and automatically fix this issue on all your machines (to be clear, all those that are logged in with the same Microsoft Account and roaming your browser data.

Remember, Dear Reader, the Internet (and your computer and its operating system) is not a black box. Look inside.


Sponsor: Big thanks to the folks over at Grape City for sponsoring the feed this week. GrapeCity provides amazing development tools to enhance and extend application functionality. Whether it is .NET, HTML5/JavaScript, Reporting or Spreadsheets, they’ve got you covered. Download your free trial of ComponentOne Studio, ActiveReports, Spread and Wijmo.



© 2015 Scott Hanselman. All rights reserved.
     

How to set a Network to a “Private Network” in Windows 8.1

A while back Windows introduced this concept of public networks and private networks. Basically it comes down to a question of “do I mostly trust this network?” However, it’s never been totally obvious how to change this back and forth. There’s lots of posts on the internet explaining how, but most are pretty complex with a lot of steps.

The most common reason to want Windows to treat the current network as a Private Network is so you can have someone connect to your machine, either share files over SMB, or connect via Remote Desktop (RDP). I hit this issue probably once a month where I can’t figure out why I can’t see this machine over Remote Desktop, and it’s because it thinks I’m on a Public Network.

One technique is to go to Network within Windows Explorer and try to get this yellow bar to show up.

Network Discovery and file Sharing are turned off. Network Computers and devices are not visible.

Clicking on it will give you a choice that isn’t clear to Non-Technical Family Member.

Do you want to turn on Network discovery and file sharing for all public networks? NO

No is the right answer, always. But this is a bad dialog because it looks like a Sophie’s Choice.

You WANT to treat THIS NETWORK – the one you are on – as a Private Network. Select No.

A better, clearer way to change a Network to Private Network

  • Press the Windows Key + W to search Settings.
  • Type “Network Connections” and Press Enter

Windows 8.1 Network Connections

  • Click on your Network
  • Turn “Find PCs and Content” to ON. This Network is now a Private Network.

Find Devices and Content

Don’t believe me? Bring it up side by side with the Classic Network Center and watch it switch back and forth in real-time!

Switching a Network Private in Windows 8
Switching a Network Public in Windows 8

I hope this helps you out as much as it did me!


Sponsor: Big thanks to the folks over at Grape City for sponsoring the feed this week. GrapeCity provides amazing development tools to enhance and extend application functionality. Whether it is .NET, HTML5/JavaScript, Reporting or Spreadsheets, they’ve got you covered. Download your free trial of ComponentOne Studio, ActiveReports, Spread and Wijmo.


© 2015 Scott Hanselman. All rights reserved.
     

A while back Windows introduced this concept of public networks and private networks. Basically it comes down to a question of "do I mostly trust this network?" However, it's never been totally obvious how to change this back and forth. There's lots of posts on the internet explaining how, but most are pretty complex with a lot of steps.

The most common reason to want Windows to treat the current network as a Private Network is so you can have someone connect to your machine, either share files over SMB, or connect via Remote Desktop (RDP). I hit this issue probably once a month where I can't figure out why I can't see this machine over Remote Desktop, and it's because it thinks I'm on a Public Network.

One technique is to go to Network within Windows Explorer and try to get this yellow bar to show up.

Network Discovery and file Sharing are turned off. Network Computers and devices are not visible.

Clicking on it will give you a choice that isn't clear to Non-Technical Family Member.

Do you want to turn on Network discovery and file sharing for all public networks? NO

No is the right answer, always. But this is a bad dialog because it looks like a Sophie's Choice.

You WANT to treat THIS NETWORK - the one you are on - as a Private Network. Select No.

A better, clearer way to change a Network to Private Network

  • Press the Windows Key + W to search Settings.
  • Type "Network Connections" and Press Enter

Windows 8.1 Network Connections

  • Click on your Network
  • Turn "Find PCs and Content" to ON. This Network is now a Private Network.

Find Devices and Content

Don't believe me? Bring it up side by side with the Classic Network Center and watch it switch back and forth in real-time!

Switching a Network Private in Windows 8
Switching a Network Public in Windows 8

I hope this helps you out as much as it did me!


Sponsor: Big thanks to the folks over at Grape City for sponsoring the feed this week. GrapeCity provides amazing development tools to enhance and extend application functionality. Whether it is .NET, HTML5/JavaScript, Reporting or Spreadsheets, they’ve got you covered. Download your free trial of ComponentOne Studio, ActiveReports, Spread and Wijmo.


© 2015 Scott Hanselman. All rights reserved.
     

12 WordPress Search Plugins to Improve Your Site Search

Do you want to improve your WordPress site search? We all know that the default WordPress search feature is fairly limiting. However, there are several WordPress search plugins that can help you improve the default search experience. In this article, we will highlight the best… Read More »

To leave a comment please visit 12 WordPress Search Plugins to Improve Your Site Search on WPBeginner.

Do you want to improve your WordPress site search? We all know that the default WordPress search feature is fairly limiting. However, there are several WordPress search plugins that can help you improve the default search experience. In this article, we will highlight the best WordPress search plugins and tutorials to customize and improve your site search.

1. SearchWP

SearchWP

SearchWP is a powerful custom search plugin for WordPress. It is very easy to use and the search results are relatively more accurate.

It allows searches for your keyword in post/page title, content, slug, categories, tags, taxonomies, excerpt and even comments. You can control the algorithm by assigning weight to each content type from 1 to 10 where 10 being the highest.

Upon activation, the plugin automatically indexes your content and replaces the default search feature in WordPress. See our article on how to improve WordPress search with SearchWP for more detailed instructions.

2. Adding a Taxonomy Filter to WordPress Search

Ajax based WordPress Search Plugin

If you are using categories, tags, or any other custom taxonomy to sort content, then adding a taxonomy filter to search can greatly help users narrow down the results.

Ajax WP Query Search Filter allows you to create custom WordPress search forms with checkboxes for taxonomies, post types and custom fields.

It uses Ajax to load results, so it works really fast and provides a better experience for users. Take a look at our tutorial on how to add ajax taxonomy filter in WordPress search to learn more.

3. Swiftype Search

Swiftype Search Engine for WordPress

Switype is a site search service that comes with a free and paid version. Their WordPress plugin replaces your default WordPress search with Swiftype.

Swiftype will index your documents, and it works way faster than default WordPress search. Results are extremely relevant. Swiftype will also store user searches and will show you what users searched for, what they clicked on, and other cool analytics.

See our guide on how to improve WordPress search With Swfitype search for step by step instructions.

4. Google Custom Search for WordPress

Google Custom Search for WordPress Sites

When it comes to search, Google is undoubtedly the king. The good thing is that you can create a custom Google search engine for your site and integrate it into WordPress.

The downside is that it comes with Google’s personal branding, which may not be so bad because users already trust this brand.

We have a step by step tutorial on how to add Google search in a WordPress site.

5. Search by Category

Search by category plugin for WordPress

Category Wise Search plugin allows you to add a category drop down to WordPress search. Users can limit their search to a specific category to narrow down the results. The plugin also allows you to exclude categories from the search, and you can easily add it using a widget for your sidebar.

Take a look at our article on how to search by category in WordPress.

6. Highlight Search Terms

Highlighting search terms in WordPress search results

Highlighting search terms in the results page can help improve the user experience. It also increases the chances of them finding what they are looking.

If you are using the default WordPress search, then you can easily implement this by editing the search results template in your child theme. For detailed instructions see our article on how to highlight search terms in WordPress search results.

7. Display Search Term and Result Count in WordPress

Displaying search term and result count in WordPress search

There are several things you can do by editing your theme or child theme’s search.php template. One of these things is to show users the search term and the number of results. Simply add this code to your search.php template.

<h1 class="page-title">Search Result for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' &mdash; '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h1>

This code will simply display search term and the number of results found. You can use .search-terms CSS class to highlight the search terms using CSS.

8. Create an Advanced Search Form For Custom Post Types

Advanced custom WordPress search form for post types

Custom Post Types allow you to add different content types to your WordPress site. For example, at WPBeginner we use custom post types for Glossary and Deals sections.

Many WordPress sites have custom post types for products, reviews, recipes, etc. However, the default WordPress search is not very good at handling post types. Wouldn’t it be nice if you had a search form where users can just check what post type they want to search and narrow down their results?

We have a detailed tutorial on how to create an advanced search form in WordPress for Custom Post Types.

9. Simply Exclude

Exclude specific content from custom WordPress search

Sometimes you may want to exclude specific content from search results. Simply Exclude is a WordPress plugin that allows you to exclude content based on your selected criteria.

For example, you can exclude all posts tagged featured, or all posts in category showcase, etc. Take a look at our tutorial on how to exclude specific pages, authors, and more from WordPress search.

10. Using Multiple Search Forms in WordPress

The default WordPress search may be useless, but with little tweaks it can be improved quite a lot.

Earlier we mentioned creating a search form for custom post types. But what if you wanted to show different search forms on different pages? How about showing more than one search form in WordPress?

This can be easily achieved by creating different search forms and search results templates with different queries. Take a look at our tutorial on how to use multiple search forms in WordPress for detailed instructions.

11. Adding Search Form in a WordPress Post

Sometimes you may want to add a search form inside a post or page to encourage users to search for content on your site. The default WordPress search form is a plain HTML form. However, if you wanted to add the search form inside your posts or pages, the HTML will be stripped by WordPress.

This can be resolved by creating a simple shortcode that displays the search form and then using the shortcode inside your post or page. Simply add this code to your theme’s functions.php file or a site-specific plugin.

add_shortcode('wpbsearch', 'get_search_form');

Use shortcode [wpbsearch] to display search form inside your post/pages. For more detailed instructions take a look at our tutorial on how to add search form in your post with a WordPress search shortcode. You can also add a custom WordPress search form using this method.

12. Add Voice Search in WordPress

Preview of voice search in WordPress

If you have a smartphone, then you are probably familiar with voice search using Siri, Google Now, or Cortana. Wouldn’t it be nice if you can bring voice search functionality to your WordPress site? Well now you can.

WordPress Voice Search plugin allows you to add voice search capabilities to your WordPress search form.

See our article on how to add voice search in WordPress.

We hope this article helped you improve your WordPress search. You may also want to check out the best WordPress tools and plugins for affiliate marketers.

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.

To leave a comment please visit 12 WordPress Search Plugins to Improve Your Site Search on WPBeginner.

How to Build an Online Auction Site Using WordPress

Want to create an eBay style auction site in WordPress? Looking for a WordPress auction plugin that allows you to host your own auctions? In this article, we will show you how to build an online auction site using WordPress. First thing you need to… Read More »

To leave a comment please visit How to Build an Online Auction Site Using WordPress on WPBeginner.

Want to create an eBay style auction site in WordPress? Looking for a WordPress auction plugin that allows you to host your own auctions? In this article, we will show you how to build an online auction site using WordPress.

Creating auction site with WordPress

First thing you need to do is install and activate the Ultimate WordPress Auction Plugin.

Upon activation, Ultimate WordPress Auction plugin will add a new menu item labeled ‘Ultimate Auction’ in your WordPress admin area. You need to click on it to go to the settings page.

Ultimate Auction plugin settings

You need to start by choosing the currency and the payment method. By default, the plugin supports PayPal, cheque, and wire transfer options. Once you have selected the payment method, you will need to save your changes.

Next, click on the payment tab to configure the payment method you selected.

PayPal Settings in Ultimate Auction plugin for WordPress

For PayPal payments, you will need to enter your PayPal email address. You can also choose Live or Sandbox mode. Sandbox allows you to test your website payment workflow and run test transactions in PayPal.

If you do choose sandbox, make sure to change it to live when your site is ready for general public.

Adding a New Auction

To add a new auction, simply click on the Add Auction tab under Ultimate Auction menu.

Adding a new auction

You will need to provide a title for the auction and a long description. After that you can provide a short description and upload pictures and/or videos.

Below that you can configure your auction options like opening price, minimum bid, buy now price, and auction end time.

Setting auction details

Once you are satisfied, click on the save changes button.

Displaying Auctions on Your WordPress Site

The beauty of creating an auction site in WordPress with a plugin is that you DO NOT need a specific WordPress auction theme.

You can display all your auctions on the front-end of your site fairly easily. Simply create a new WordPress page and enter this shortcode:

[wdm_auction_listing]

After that, just publish the page, and it will display all your auctions.

Auction page in WordPress

If you want to add the auction page to your site’s navigation menus, then you will need to visit Appearance » Menus.

Under the pages section, click on view all and then select your auction page. Next, click on the Add to menu button, and you will notice an Auction page appear as a tab on the right hand column. Click on the Save Menu button to store your settings.

Adding auction to navigation menu

Allowing Users to Create Auctions on Your Site

If you want to build a small community of buyers and sellers in your specific niche, then Ultimate Auction plugin is perfect for that as well, but you will need the Pro version.

The basic free plugin only allows YOU to add auctions on your site. The ability to allow users to create auctions is limited to their pro version.

With pro version you will be able to manage users, allow them to post auctions, and charge them listing fees for each auction.

We hope this article helped you turn WordPress into an online auction site. You may also want to check out our guide on how to create a job board, image rating site, coupon site, and a questions and answers site in WordPress.

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

To leave a comment please visit How to Build an Online Auction Site Using WordPress on WPBeginner.

How to Show Real Time Online Users in WordPress

Do you want to show the number of online users visiting your WordPress site? Online users widgets are fairly common for community sites and forums. In this article, we will show you how to display real time online users widget in WordPress. First thing you… Read More »

To leave a comment please visit How to Show Real Time Online Users in WordPress on WPBeginner.

Do you want to show the number of online users visiting your WordPress site? Online users widgets are fairly common for community sites and forums. In this article, we will show you how to display real time online users widget in WordPress.

Users online right now on a WordPress site

First thing you need to do is install and activate the WP Useronline plugin. Upon activation, you need to visit Settings » UserOnline page to configure the plugin settings.

Users Online plugin settings

On this page, you can change the default plugin settings. These settings include time out, users online page URL, and display settings.

The default settings would work for most sites, so you need to just click on the save settings button at the bottom of the page.

The next step is to create the page where you want to showcase the users who are online right now on your WordPress site. Create a new WordPress page by going to Pages » Add New.

You can use any title for the page, but the page’s URL slug should be the same as you had in the plugin’s settings. Click on the edit button next to the URL slug and change it to useronline.

Edit page slug to useronline

After that you need to add the shortcode [page_useronline] in the content area. You can now publish this page.

Displaying Online Users on the Front-end in WordPress

The plugin provides two ways to display online users on your WordPress site. The first method is recommended for beginners. Simply go to Appearance » Widgets page. Next, drag and drop User Online widget from the list of available widgets to a sidebar.

Users online widget

The other method is to use this code in your theme files where you want to display users online.

<?php if (function_exists('users_online')): ?>
    <p>Users online: <div id="useronline-count"><?php users_online(); ?></div></p>
<?php endif; ?>

Using the second method will allow you to use custom CSS to style it differently.

We hope this article helped you display the number of online users on your WordPress site. You may also want to take a look at out tutorial on how to add a private messaging system to your WordPress site.

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.

To leave a comment please visit How to Show Real Time Online Users in WordPress on WPBeginner.

How to Add Voice Search Capability to your WordPress

If you have a smartphone, then you are probably familiar with voice search using Siri, Google Now, or Cortana. Wouldn’t it be nice if you can bring voice search functionality to your WordPress site? In this article, we will show you how to add voice… Read More »

To leave a comment please visit How to Add Voice Search Capability to your WordPress on WPBeginner.

If you have a smartphone, then you are probably familiar with voice search using Siri, Google Now, or Cortana. Wouldn’t it be nice if you can bring voice search functionality to your WordPress site? In this article, we will show you how to add voice search in WordPress.

First thing you need to do is install and activate the Voice Search plugin.

Upon activation, this plugin works out of the box, and there are no special settings for you to configure.

All you need to do is go to the Appearance » Widgets section in your admin area. Next, add the default WordPress search widget to a sidebar.

If you already have a search widget added to your sidebar, then you don’t need to do anything.

Simply visit your website, and you will be able to see a microphone icon in the WordPress search box. When a user click on the microphone icon, it will display the text ‘Start Talking’ and users can say the words they want to search for.

Preview of voice search in WordPress

How Does Voice Search Plugin Work in WordPress?

The Voice Search plugin uses the web speech API to take the voice input. Currently the plugin only works on Safari and Chrome web browsers for mobile and desktop.

*Firefox is expected to have web speech implemented soon.

The plugin modifies the default WordPress search form and hooks up the voice input javascript into default search. This means if you are using a custom search solution like Google search for WordPress or SearchWP, then this plugin will not work with your search form.

We hope this article helped you add voice search to your WordPress site. You may also want to check out our guide on how to add WordPress widgets in accessibility mode.

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.

To leave a comment please visit How to Add Voice Search Capability to your WordPress on WPBeginner.