Type to search.

#898 by installs

WP-Polls

by Lester ChanVersion 3.0.2

Adds an AJAX poll system to your WordPress blog. You can also easily add a poll into your WordPress's blog post/page.

Active installs
40,000+
#898 of 1,000
Downloads, all time
3.7M
3,732,395
Downloads, 30 days
7.5K
2.1K in the last 7
Rating
4.2 / 5
136 reviews
Last updated
2 months ago
Sep 1, 2026
Version
3.0.2
54 releases

Upkeep and compatibility

Last updatedSeptember 1, 2026Updated in the last 3 months
Tested up toWordPress 7.1.4Covers WordPress 7.1.4, the current release
Needs WordPress6.8 or newer
Needs PHP8.2 or newer
First publishedJanuary 3, 2006
Support, last two months2 of 2 threads resolved (100%)

Reviews

4.2 / 5 from 136 reviews

Reviews by star rating
5 stars93
4 stars15
3 stars4
2 stars4
1 star20

Downloads, last 30 days

Low 117 a dayHigh 711 a day

What the author says it does

WP-Polls adds a poll to your site: a question, its answers, and a result bar that replaces the voting form once a visitor has voted, without a page reload. A poll can go in a post with a shortcode or a block, in a sidebar with the widget, or anywhere in your theme with a template tag.

A poll can accept one answer or several, close on a date you set, and be shown as a form or as its result. The markup of every part of it is a template you can edit, and the bars are styled with CSS custom properties your theme can override.

Donations

I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.

Usage

Showing A Poll From A Theme

<?php if ( function_exists( 'vote_poll' ) && ! in_pollarchive() ): ?> <li> <h2>Polls</h2> <ul> <li><?php get_poll();?></li> </ul> <?php display_polls_archive_link(); ?> </li> <?php endif; ?>

  • To show specific poll, use <?php get_poll(2); ?> where 2 is your poll id.
  • To show random poll, use <?php get_poll(-2); ?>
  • To embed a specific poll in your post, use [poll id="2"] where 2 is your poll id.
  • To embed a random poll in your post, use [poll id="-2"]
  • To embed a specific poll’s result in your post, use [poll id="2" type="result"] where 2 is your poll id.

The opening of the plugin's own description. The full text, installation notes and changelog are on its WordPress.org page.

Questions the author answers

Everyone can vote as many times as they like

Check Settings -> Header That Contains The IP. If it names a header such as

HTTP_X_FORWARDED_FOR, make sure the proxy in front of WordPress always overwrites

that header. Anything a visitor can set themselves can be changed on every request,

and WP-Polls has no way to tell a real proxy from a forged header.

Before 3.0.0 WP-Polls also used the entire header value as the voter’s identity.

Every voter is logged with the same IP, or the wrong one

WordPress is behind a proxy or a CDN and every request reaches it from the proxy’s

address. Name the header your proxy sets under Settings -> Header That Contains

The IP — HTTP_CF_CONNECTING_IP for Cloudflare — or, to trust the usual set of

proxy headers without naming one, add this to wp-config.php:

define( 'WP_POLLS_TRUST_PROXY', true );

Poll logs show a hashed IP rather than an address

That is deliberate and unchanged: WP-Polls stores wp_hash() of the address, so the

logs can tell two voters apart without keeping their IP addresses.

My poll bars lost their styling, or my customised result template came back

3.0.0 rebuilt the poll bar. It used to be one <div class="pollbar"> sized by an

inline width; it is now a track holding a fill:

<div class="wp-polls-bar" aria-hidden="true"><div class="wp-polls-bar-fill" style="width: 42%;"></div></div>

The Result Body and Result Body (Voted) templates are rewritten to that markup

on upgrade, including customised ones. There was no way to keep them: the class names

Why doesn’t my poll’s answers add up to 100%?
  • It is because of rounding issues. To make it always round up to 100%, the last poll’s answer will get the remainding percentage added to it. To enable this feature, add this to your theme’s functions.php: add_filter( 'wp_polls_round_percentage', '__return_true' );
How Does WP-Polls Load CSS?
  • The stylesheet and the voting script load only on pages that show a poll, a polls archive or the poll widget; a page without one carries neither.
  • WP-Polls will load wp-polls.css from your theme’s directory if it exists.
  • If it does not exist, it loads the css/wp-polls.css that ships with WP-Polls.

Latest changelog entry

3.0.2

  • NEW: A wp_polls_needs_assets filter, for code that renders a poll where WP-Polls cannot see it coming. 3.0.1 loads the stylesheet and the voting script only where it finds the poll widget, a [poll] or [page_polls] shortcode, one of the two blocks, or a poll rendering during the page itself. Poll markup fetched over admin-ajax.php or the REST API into a page that shows no poll of its own is none of those, and got neither file — leaving the poll unable to vote, under a “Loading …” that never cleared. Returning true from the filter is how such a page asks for them.

Screenshots

First 4 of 7, from WordPress.org.

Tagged

Plugins that share its tags

#267 by installs

Crowdsignal Forms

by Automattic

The Crowdsignal Forms plugin allows you to create and manage polls right from within the block editor.

Installs
200,000+
Rating
5.0 (3)
Updated
23 days ago

#709 by installs

zipaddr-jp

by ta_terunuma

zipaddr-jp is a collaborative tool that automatically inputs addresses from postal codes.

Installs
50,000+
Rating
5.0 (6)
Updated
3 months ago

#793 by installs

SearchWP Live Ajax Search

by Syed Balkhi

Template powered live search for any WordPress theme. Does not require SearchWP, but will utilize it if available.

Installs
40,000+
Rating
4.7 (36)
Updated
3 months ago

Where this page's numbers come from

Read from the WordPress.org plugin API on , when WordPress 7.1.4 was the current release. WordPress.org rounds active installs into buckets. These are the directory's figures, not my verdict, and I haven't tested this plugin. The author takes donations at their donate page.