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.
- 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
- 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
- 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
- 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
- Submission Status: Notify submitters of approval/rejection
- Vote Milestones: Celebrate achievement notifications
- Campaign Results: End-of-campaign summaries
- Email Verification: Secure vote confirmation emails
- Upload the plugin files to
/wp-content/plugins/socialvoting/ - Activate the plugin through the 'Plugins' menu in WordPress
- Configure settings in Social Voting > Settings
- Create your first campaign in Social Voting > Campaigns
- Go to Social Voting > Campaigns
- Click Add New Campaign
- Configure campaign settings:
- Name and description
- Start/end dates
- Submission requirements
- Voting rules
[sv_submit campaign="photo-contest"]Attributes:
campaign(required): Campaign slugredirect: URL to redirect after submissionhide_title: Hide the form title (true/false)
[sv_votes campaign="photo-contest" layout="grid" per_page="12"]Attributes:
campaign(required): Campaign sluglayout: "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)
[sv_leaderboard campaign="photo-contest" limit="10"]Attributes:
campaign(required): Campaign sluglimit: Number of top entries to show (default: 10)
[sv_entry id="123"]Attributes:
id(required): Submission ID
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
// 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);// 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);- Privacy Mode: Hide submitter names
- Require Moderation: All submissions need approval
- Anonymous Voting: Allow voting without registration
- Email Verification: Require email verification for votes
- 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
- SMTP Configuration: Email server settings
- Notification Types: Choose which emails to send
- Template Customization: Modify email templates
- Sender Information: From name and address
- Database Cleanup: Automatic cleanup schedules
- Performance: Caching and optimization options
- Debug Mode: Enable logging for troubleshooting
- Data Retention: Configure data retention policies
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;
}The plugin is built mobile-first with:
- Touch-friendly interfaces
- Responsive grid layouts
- Optimized image loading
- Swipe gestures support
- Progressive enhancement
- Input sanitization and validation
- SQL injection prevention
- XSS protection
- CSRF token verification
- Secure file uploads
- GDPR-ready data handling
- User consent management
- Data export/deletion tools
- Privacy mode options
- Audit trail logging
- Lazy loading images
- AJAX pagination
- Database query optimization
- Caching integration
- Minified assets
- Efficient database schema
- Indexed queries
- Background processing
- Rate limiting
- Resource management
- WordPress 5.0+
- PHP 7.4+
- MySQL 5.6+
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
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This plugin is licensed under the GPL v2 or later.
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
- 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