WP Manifestindependent plugin directory
manifest / social / wordpress-voting-system-plugin

Messenger Polls

A premium, Messenger-style polling plugin. Create polls, vote instantly and watch animated results.

by Minhajul Khan · github.com/mktapphub/wordpress-voting-system-plugin · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/mktapphub/wordpress-voting-system-plugin/archive/refs/heads/main.zip

Readme

=== Messenger Polls === Contributors: Minhajul Khan Tags: polls, voting, ajax, messenger, ui Requires at least: 5.8 Tested up to: 6.6 Requires PHP: 7.4 Stable tag: 1.0.0

A premium, Messenger-style polling plugin. Create polls, vote instantly. just clean, secure, prepared-statement SQL against custom tables.

== Description ==

Messenger Polls lets you drop beautiful, chat-app-style voting cards anywhere on your WordPress site with a single shortcode.

Features

  • Create polls with 2+ options, single- or multi-select
  • Instant AJAX voting — zero page reloads (uses admin-ajax.php, not the REST API)
  • Animated, Messenger-inspired results bars
  • Toast notifications, loading spinners, smooth transitions
  • One vote per person, enforced at the database level (unique constraint), plus rate limiting
  • Fully responsive, mobile-first, rounded-card UI
  • Optional poll expiry / auto-close
  • Optional "view results before voting"
  • Simple, dependency-free admin screen for creating and managing polls
  • Custom database tables — no bloating wp_postmeta

Shortcode

Security

  • All SQL uses $wpdb->prepare() / insert() / update() with explicit format specifiers — no string-concatenated queries
  • Every AJAX request is nonce-verified, scoped to the specific poll ID
  • Option IDs are re-validated server-side against the poll they're submitted for (prevents cross-poll vote injection)
  • Duplicate votes are blocked by a database UNIQUE constraint (race-condition safe), not just client-side checks
  • Guest voters are identified by a salted, one-way hash — raw IP addresses are never stored
  • All admin actions require manage_options (filterable) plus a scoped nonce
  • All output is escaped with esc_html() / esc_attr() / esc_url()

== Installation ==

  1. Upload the messenger-polls folder to /wp-content/plugins/.
  2. Activate the plugin through the "Plugins" menu in WordPress.
  3. Go to the new "Polls" menu item to create your first poll.
  4. Copy the generated shortcode into any post, page, or widget.

== Frequently Asked Questions ==

= Does this call any external APIs? = No. Everything runs through WordPress's own admin-ajax.php endpoint against your own database.

= Can a user vote twice? = No — voting is enforced by a unique database constraint per poll + voter fingerprint (logged-in user ID, or a salted hash for guests), so it holds up even under concurrent requests.

= What happens to poll data if I delete the plugin? = By default, poll data is preserved even if you delete the plugin, to prevent accidental data loss. Define MP_REMOVE_DATA_ON_UNINSTALL as true in wp-config.php if you want full cleanup on uninstall.

== Changelog ==

= 1.0.0 =

  • Initial release.

Read the full README on GitHub →