Skip to content

mikefreemantn/wordpress-social-voting

Repository files navigation

Social Voting WordPress Plugin

A modern, Google Material Design-inspired WordPress plugin for creating engaging social voting campaigns. Perfect for photo contests, idea submissions, community polls, and any content that benefits from public voting.

🌟 Features

Core Functionality

  • Custom Post Types: Dedicated submission management system
  • Campaign System: Organize submissions into themed campaigns
  • AJAX Voting: Real-time voting without page refreshes
  • Shareable Links: Individual URLs for each submission
  • Mobile-First Design: Responsive layouts optimized for all devices
  • Google Material Design: Clean, modern UI following Material Design principles

Security & Anti-Abuse

  • Rate Limiting: Prevents spam voting and submissions
  • Email Verification: Optional email verification for votes
  • reCAPTCHA Integration: Spam protection for forms
  • Honeypot & Time Traps: Additional anti-bot measures
  • IP Tracking: Monitor voting patterns
  • Nonce Protection: CSRF protection on all forms

Admin Features

  • Comprehensive Dashboard: Analytics and recent activity overview
  • Submission Moderation: Approve/reject submissions with reasons
  • Campaign Management: Create and manage voting campaigns
  • Settings Panel: Extensive configuration options
  • Export Tools: CSV export of submissions and votes
  • Audit Logging: Track all system activities

Frontend Components

  • Submission Forms: Beautiful, validated submission forms
  • Voting Galleries: Grid and list view layouts with filtering
  • Leaderboards: Ranked displays with progress indicators
  • Search & Filtering: Find submissions easily
  • Load More Pagination: Smooth infinite scroll experience

Email Notifications

  • Submission Status: Notify submitters of approval/rejection
  • Vote Milestones: Celebrate achievement notifications
  • Campaign Results: End-of-campaign summaries
  • Email Verification: Secure vote confirmation emails

🚀 Installation

  1. Upload the plugin files to /wp-content/plugins/socialvoting/
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Configure settings in Social Voting > Settings
  4. Create your first campaign in Social Voting > Campaigns

📖 Usage

Creating a Campaign

  1. Go to Social Voting > Campaigns
  2. Click Add New Campaign
  3. Configure campaign settings:
    • Name and description
    • Start/end dates
    • Submission requirements
    • Voting rules

Shortcodes

Submission Form

[sv_submit campaign="photo-contest"]

Attributes:

  • campaign (required): Campaign slug
  • redirect: URL to redirect after submission
  • hide_title: Hide the form title (true/false)

Voting Display

[sv_votes campaign="photo-contest" layout="grid" per_page="12"]

Attributes:

  • campaign (required): Campaign slug
  • layout: "grid" or "list" (default: grid)
  • per_page: Number of submissions per page (default: 24)
  • sort: "top", "recent", "oldest", "random" (default: top)
  • show_search: Enable search box (default: true)
  • pagination: "load_more" or "pages" (default: load_more)

Leaderboard

[sv_leaderboard campaign="photo-contest" limit="10"]

Attributes:

  • campaign (required): Campaign slug
  • limit: Number of top entries to show (default: 10)

Single Entry

[sv_entry id="123"]

Attributes:

  • id (required): Submission ID

Template Customization

Override plugin templates by copying them to your theme:

your-theme/
└── social-voting/
    ├── submission-form.php
    ├── vote-card.php
    ├── single-submission.php
    ├── votes-archive.php
    └── leaderboard.php

Hooks & Filters

Actions

// Submission events
do_action('sv_submission_created', $submission_id);
do_action('sv_submission_approved', $submission_id);
do_action('sv_submission_rejected', $submission_id);

// Vote events
do_action('sv_vote_cast', $vote_id, $submission_id, $user_data);
do_action('sv_vote_milestone', $submission_id, $milestone);

// Campaign events
do_action('sv_campaign_started', $campaign_id);
do_action('sv_campaign_ended', $campaign_id);

Filters

// Customize vote validation
add_filter('sv_can_user_vote', function($can_vote, $submission_id, $campaign_id) {
    // Custom voting logic
    return $can_vote;
}, 10, 3);

// Modify submission data before save
add_filter('sv_submission_data', function($data, $campaign_id) {
    // Modify submission data
    return $data;
}, 10, 2);

// Customize email templates
add_filter('sv_email_template_data', function($data, $template_name) {
    // Add custom template variables
    return $data;
}, 10, 2);

⚙️ Configuration

General Settings

  • Privacy Mode: Hide submitter names
  • Require Moderation: All submissions need approval
  • Anonymous Voting: Allow voting without registration
  • Email Verification: Require email verification for votes

Security Settings

  • reCAPTCHA: Configure Google reCAPTCHA keys
  • Rate Limiting: Set voting and submission limits
  • File Upload: Configure allowed file types and sizes
  • Anti-Spam: Enable honeypot and time trap protection

Email Settings

  • SMTP Configuration: Email server settings
  • Notification Types: Choose which emails to send
  • Template Customization: Modify email templates
  • Sender Information: From name and address

Advanced Settings

  • Database Cleanup: Automatic cleanup schedules
  • Performance: Caching and optimization options
  • Debug Mode: Enable logging for troubleshooting
  • Data Retention: Configure data retention policies

🎨 Styling

The plugin uses CSS custom properties for easy theming:

:root {
    --sv-primary: #1976d2;
    --sv-primary-light: #42a5f5;
    --sv-primary-dark: #1565c0;
    --sv-secondary: #dc004e;
    --sv-success: #4caf50;
    --sv-warning: #ff9800;
    --sv-error: #f44336;
    --sv-surface: #ffffff;
    --sv-background: #fafafa;
    --sv-text-primary: #212121;
    --sv-text-secondary: #757575;
    --sv-divider: #e0e0e0;
    --sv-border-radius: 8px;
    --sv-shadow-1: 0 2px 4px rgba(0,0,0,0.1);
    --sv-transition: all 0.3s ease;
}

📱 Mobile Optimization

The plugin is built mobile-first with:

  • Touch-friendly interfaces
  • Responsive grid layouts
  • Optimized image loading
  • Swipe gestures support
  • Progressive enhancement

🔒 Security Features

Data Protection

  • Input sanitization and validation
  • SQL injection prevention
  • XSS protection
  • CSRF token verification
  • Secure file uploads

Privacy Compliance

  • GDPR-ready data handling
  • User consent management
  • Data export/deletion tools
  • Privacy mode options
  • Audit trail logging

🚀 Performance

Optimization Features

  • Lazy loading images
  • AJAX pagination
  • Database query optimization
  • Caching integration
  • Minified assets

Scalability

  • Efficient database schema
  • Indexed queries
  • Background processing
  • Rate limiting
  • Resource management

🛠️ Development

Requirements

  • WordPress 5.0+
  • PHP 7.4+
  • MySQL 5.6+

File Structure

socialvoting/
├── assets/
│   ├── css/
│   │   ├── admin.css
│   │   └── public.css
│   └── js/
├── includes/
│   ├── class-admin.php
│   ├── class-cpt.php
│   ├── class-database.php
│   ├── class-email.php
│   ├── class-rest.php
│   ├── class-security.php
│   ├── class-taxonomy.php
│   ├── class-votes.php
│   └── helpers.php
├── public/
│   └── class-shortcodes.php
├── templates/
│   ├── leaderboard.php
│   ├── single-submission.php
│   ├── submission-form.php
│   ├── vote-card.php
│   └── votes-archive.php
├── social-voting.php
├── uninstall.php
└── README.md

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

📄 License

This plugin is licensed under the GPL v2 or later.

🆘 Support

For support and documentation:

  • Check the plugin settings for configuration help
  • Review the built-in tooltips and help text
  • Enable debug mode for troubleshooting
  • Check the audit log for system events

🔄 Changelog

Version 1.0.0

  • Initial release
  • Complete voting system implementation
  • Google Material Design UI
  • Mobile-first responsive design
  • Comprehensive admin interface
  • Email notification system
  • Security and anti-abuse measures
  • REST API endpoints
  • Template system
  • Shortcode functionality

Built with ❤️ for the WordPress community

About

A modern WordPress plugin for social voting contests with multiple image uploads, AJAX voting, and Google Material Design UI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors