WP-Polls Plugin
Adds an AJAX poll system to your WordPress blog. You can also easily add a poll into your WordPress's blog post/page.
WP-Polls is extremely customizable via templates and css styles and there are tons of options for you to choose to ensure that WP-Polls runs the way you wanted. It now supports multiple selection of answers.
Development
https://github.com/lesterchan/wp-polls
Credits
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.
Screenshots
Admin - All Poll
Admin - Manage Polls
Admin - Poll Options
Admin - Poll Templates
Admin - Poll Widget
Admin - Uninstall Poll
Poll - Single Poll Answer
Poll - Mutiple Poll Answers
Poll - Results
Poll - Archive
FAQ
General Usage (Without Widget) <?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.
General Usage (With Widget) - Go to
WP-Admin -> Appearance -> Widgets
. - You can add the Polls Widget by clicking on the ‘Add’ link besides it.
- After adding, you can configure the Polls Widget by clicking on the ‘Edit’ link besides it.
- Click ‘Save Changes’.
- Scroll down for instructions on how to create a Polls Archive.
How To Add A Polls Archive? - Go to
WP-Admin -> Pages -> Add New
. - Type any title you like in the post’s title area.
- If you ARE using nice permalinks, after typing the title, WordPress will generate the permalink to the page. You will see an ‘Edit’ link just beside the permalink.
- Click ‘Edit’ and type in
pollsarchive
in the text field and click ‘Save’. - Type
[page_polls]
in the post’s content area. - Click ‘Publish’.
- If you ARE NOT using nice permalinks, you need to go to
WP-Admin -> Polls -> Poll Options
and under Poll Archive -> Polls Archive URL
, you need to fill in the URL to the Polls Archive Page you created above.
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? - WP-Polls will load
polls-css.css
from your theme’s directory if it exists. - If it doesn’t exists, it will just load the default
polls-css.css
that comes with WP-Polls. - This will allow you to upgrade WP-Polls without worrying about overwriting your polls styles that you have created.
Why In Internet Explorer (IE) The poll’s Text Appear Jagged? - To solve this issue, Open poll-css.css
- Find:
/* background-color: #ffffff; */
- Replace:
background-color: #ffffff;
(where #ffffff should be your background color for the poll.)
How Do I Have Individual Colors For Each Poll’s Bar? - Courtesy Of TreedBox.com
- Open poll-css.css
- Add to the end of the file:
.wp-polls-ul li:nth-child(01) .pollbar{ background:#8FA0C5} .wp-polls-ul li:nth-child(02) .pollbar{ background:#FF8} .wp-polls-ul li:nth-child(03) .pollbar{ background:#ff8a3b} .wp-polls-ul li:nth-child(04) .pollbar{ background:#a61e2a} .wp-polls-ul li:nth-child(05) .pollbar{ background:#4ebbff} .wp-polls-ul li:nth-child(06) .pollbar{ background:#fbca54} .wp-polls-ul li:nth-child(07) .pollbar{ background:#aad34f} .wp-polls-ul li:nth-child(08) .pollbar{ background:#66cc9a} .wp-polls-ul li:nth-child(09) .pollbar{ background:#98CBCB} .wp-polls-ul li:nth-child(10) .pollbar{ background:#a67c52} .wp-polls-ul li .pollbar{ transition: background 0.7s ease-in-out } .wp-polls-ul li .pollbar:hover{ background:#F00 }
To Display Total Polls <?php if ( function_exists( 'get_pollquestions' ) ): ?> <?php get_pollquestions(); ?> <?php endif; ?>
To Display Total Poll Answers <?php if ( function_exists( 'get_pollanswers' ) ): ?> <?php get_pollanswers(); ?> <?php endif; ?>
To Display Total Poll Votes <?php if ( function_exists( 'get_pollvotes' ) ): ?> <?php get_pollvotes(); ?> <?php endif; ?>
To Display Poll Votes by ID <?php if ( function_exists( 'get_pollvotes_by_id' ) ): ?> <?php get_pollvotes_by_id($poll_id); ?> <?php endif; ?>
To Display Total Poll Voters <?php if ( function_exists( 'get_pollvoters' ) ): ?> <?php get_pollvoters(); ?> <?php endif; ?>
To Display Poll Time by ID and date format <?php if ( function_exists( 'get_polltime' ) ): ?> <?php get_polltime( $poll_id, $date_format ); ?> <?php endif; ?>
Translating the template The plugin templates can be translated via template variables.
There are these filters for the custom template variables
wp_polls_template_votebody_variables wp_polls_template_votefooter wp_polls_template_resultheader_variables wp_polls_template_resultbody_variables wp_polls_template_resultfooter_variables
Add filter to your theme and register custom variable where you will add your translation.
Good practice is to name them for example with prefix STR_
in the example STR_TOTAL_VOTERS
.
/** * Localize wp_polls_template_resultfooter_variables. * * @param array $variables An array of template variables. * @return array $variables Modified template variables. */ function wp_polls_template_resultfooter_variables( $variables ) { // Add strings. $variables['%STR_TOTAL_VOTERS%'] = __( 'Total voters', 'theme-textdomain' ); return $variables; } // Trigger the filter add_filter( 'wp_polls_template_resultfooter_variables', 'wp_polls_template_resultfooter_variables' , 10, 1 );
In the admin side just call the custom variable like so and the variable has been translated in the front-end.
%STR_TOTAL_VOTERS%’
Changelog
Version 2.77.2
- FIXED: Read from default REMOTE_ADDR unless specified in options
Version 2.77.1
- FIXED: Support mutex lock for multi-site. Props @yrkmann.
Version 2.77.0
- NEW: Use mutex lock to prevent race condition.
Version 2.76.0
- NEW: Supports specifying which header to read the user’s IP from. Props Marc Montpas.
Version 2.75.6
- NEW: New filter for template variables: wp_polls_template_votebody_variables, wp_polls_template_votefooter, wp_polls_template_resultheader_variables, wp_polls_template_resultbody_variables, wp_polls_template_resultfooter_variables. Props @Liblastic.
- NEW: composer.json
- FIXED: Missing space for check_voted_username MySQL query
Version 2.75.5
- NEW: New filter for templates: wp_polls_template_resultheader_markup, wp_polls_template_resultbody_markup, wp_polls_template_resultbody2_markup, wp_polls_template_resultfooter_markup, wp_polls_template_resultfooter2_markup. Props @Jaska.
Version 2.75.4
- FIXED: Unable to edit poll because of class-wp-block-parser.php.
Version 2.75.3
- FIXED: Broken filter for templates
- FIXED: Divison by 0 by totalvoters
- FIXED: Add whitelist to sortby poll answers
Versiob 2.75.2
- FIXED: Missing str_replace for wp_polls_template filter
Version 2.75.1
- FIXED: Use array() instead of [] as a few users are still on < PHP 5.4. Props @bearlydoug.
- FIXED: pollq_expiry is now 0 instead of blank string. Props @hpiirainen.
Version 2.75
- FIXED: Standardize all filters to begin with
wp_polls
rather than poll
- NEW: Added
wp_polls_ipaddress
and wp_polls_hostname
to allow user to overwrite it.
Version 2.74.1
- FIXED: Don’t use PHP 5.4 Short array syntax.
- FIXED: Division by zero
- FIXED: Wrong database column type for pollq_expiry
Version 2.74
- NEW: Hashed IP and anonymize Hostname to make it GDPR compliance
- NEW: If Do Not Log is set in Poll Options, do not log to DB
- NEW: Support %POLL_MULTIPLE_ANSWER_PERCENTAGE%. This is total votes divided by total voters.
Version 2.73.8
- FIXED: Bug fixes and stricter type checking
Version 2.73.7
- FIXED: Unable to save input HTML tags for footer templates
Version 2.73.6
- FIXED: Unable to vote for multiple answers
- FIXED: input HTML tags being removed when saving templates
Version 2.73.5
- FIXED: Parsed error in SERVER variable.
Version 2.73.4
- FIXED: sanitize_key on top of intval.
Version 2.73.3
- NEW: Added sort by votes casted to poll answers.
- NEW: For polls with mutiple answers, we divided by total votes instead of total voters. Props @ljxprime.
- FIXED: Do not display poll option is not respected when poll is closed.
- FIXED: pollip_qid, pollip_aid, pollip_timestamp are now int(10) in pollsip table.
- FIXED: pollq_expiry is now int(10) in pollsq table.
Version 2.73.2
- NEW: Bump WordPress 4.7
- FIXED: Change cron to hourly instead of twice daily.
Version 2.73.1
Version 2.73
- NEW: Display Poll Questions at the top of the Poll Logs table
- FIXED: Remove slashes
Version 2.72
- NEW: Use translate.wordpress.org to translate the plugin
- FIXED: SQL Injection fixes. Props Jay Dansand
- FIXED: Use $wpdb->insert(), $wpdb->update() and $wpdb->delete() as much as possible
- FIXED Remove poll_archive_show option from UI
Version 2.71
- FIXED: Use wp_kses_post() to get filter always bad tags
Version 2.70
- NEW: Add wp_polls_vote_poll_success action hook
- NEW: Add wp_polls_add_poll, wp_polls_update_poll, wp_polls_delete_poll action hooks
- FIXED: PHP Notices
- FIXED: Removed not needed wp_print_scripts
- FIXED: Use esc_attr() and esc_textarea() instead of htmlspecialchars(). Props Govind Singh