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

Messenger Polls

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/mktapphub/wordpress-voting-system-plugin/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

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.