Bricks Certificate Verification
A comprehensive WordPress plugin for certificate verification with QR code support, customizable templates, and multi-parameter search functionality.
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/eskay243/certverify/archive/refs/heads/main.zipBricks Certificate Verification Plugin
A comprehensive WordPress plugin for certificate verification with QR code support, customizable templates, and multi-parameter search functionality.
Features
- Multi-parameter Certificate Verification: Verify certificates using Certificate ID, Holder Name, or both
- QR Code Support: Generate and scan QR codes for quick verification
- Customizable Certificate Templates: Admin-configurable templates with visual editor
- Bulk Import: Import certificates from CSV files
- WordPress Widget: Display verification form in sidebars and footers
- REST API: Programmatic access to verification system
- Responsive Design: Mobile-first, accessible interface
- Security: Rate limiting, input sanitization, and nonce verification
Installation
- Upload the
bricks-certificate-verifyfolder to your WordPress/wp-content/plugins/directory - Activate the plugin through the 'Plugins' menu in WordPress
- Navigate to 'Certificates' in your WordPress admin to start creating certificates
Usage
Creating Certificates
- Go to Certificates > Add New in your WordPress admin
- Fill in the certificate details:
- Holder Name (required)
- Course/Event Name (required)
- Issue Date (required)
- Completion Date (optional)
- Instructor Name (optional)
- Grade/Score (optional)
- Set the certificate status (Valid/Invalid/Revoked)
- Publish the certificate - a unique Certificate ID and QR code will be automatically generated
Verification Methods
Using Shortcode
Add the verification form to any page or post using the shortcode:
[bricks_certificate_verify]
Shortcode attributes:
show_title="true|false"- Show/hide the title (default: true)title="Custom Title"- Custom title textshow_description="true|false"- Show/hide description (default: true)description="Custom Description"- Custom description text
Using Widget
- Go to Appearance > Widgets in your WordPress admin
- Add the "Certificate Verification" widget to your sidebar or footer
- Configure the widget settings:
- Title and description
- Default verification method
- Show/hide QR scanner
- Show results in widget or redirect
- Custom button color
Direct URL Access
Certificates can be verified directly via URL:
- Certificate page:
yoursite.com/certificate-verify/ - Direct verification:
yoursite.com/certificate-verify/?cert_id=CERTIFICATE_ID
Verification Options
The plugin supports three verification methods:
- Certificate ID Only: Enter just the certificate number
- Holder Name Only: Enter just the certificate holder's name
- Both Parameters: Enter both certificate ID and holder name for enhanced security
QR Code Scanner
- Click the QR scanner button on the verification form
- Point your camera at a certificate QR code
- The certificate ID will be automatically filled and verified
Admin Configuration
Settings
Go to Certificates > Settings to configure:
- Organization Name: Your organization name (appears on certificates)
- Verification Page Title: Title displayed on verification page
- Verification Page Description: Description text for verification page
- Verification Page: Select which page displays the verification form
Certificate Templates
Go to Certificates > Templates to customize certificate appearance:
Template Variables
Use these variables in your certificate template:
{{organization_name}}- Your organization name{{holder_name}}- Certificate holder's name{{course_name}}- Course or event name{{issue_date}}- Date certificate was issued{{completion_date}}- Date course was completed{{instructor_name}}- Instructor or trainer name{{certificate_number}}- Unique certificate ID{{grade_score}}- Grade or score achieved{{qr_code}}- QR code image
Template Settings
- Background Color: Certificate background color
- Text Color: Main text color
- Accent Color: Accent color for highlights
- Background Image: Optional background image
- Template Content: Custom HTML template
Pre-built Templates
Choose from three pre-built templates:
- Classic: Traditional certificate layout
- Modern: Contemporary design with gradients
- Minimal: Clean, minimal design
Bulk Import
Go to Certificates > Bulk Import to import certificates from CSV:
CSV Format
Your CSV file should include these columns:
holder_name,course_name,issue_date,completion_date,instructor_name,grade_score,certificate_number,status
John Doe,Advanced Web Development,2024-01-15,2024-01-15,Jane Smith,95%,BRC20240115001,valid
Import Settings
- File Encoding: UTF-8, ISO-8859-1, or Windows-1252
- Delimiter: Comma, semicolon, or tab
REST API
Verification Endpoint
POST /wp-json/bricks-cert/v1/verify
Parameters:
certificate_id(string, optional) - Certificate IDholder_name(string, optional) - Holder nameverification_type(string, optional) - Verification method: "id", "name", or "both"
Example request:
fetch('/wp-json/bricks-cert/v1/verify', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
certificate_id: 'BRC20240115001',
holder_name: 'John Doe',
verification_type: 'both'
})
})
.then(response => response.json())
.then(data => console.log(data));
GET /wp-json/bricks-cert/v1/verify/{cert_id}
Direct verification by certificate ID.
Response Format
Success response:
{
"id": 123,
"certificate_number": "BRC20240115001",
"holder_name": "John Doe",
"course_name": "Advanced Web Development",
"issue_date": "2024-01-15",
"completion_date": "2024-01-15",
"instructor_name": "Jane Smith",
"grade_score": "95%",
"status": "valid",
"qr_code": "https://yoursite.com/wp-content/uploads/bricks-certificates/qrcodes/qr_BRC20240115001.png",
"verification_url": "https://yoursite.com/certificate-verify/?cert_id=BRC20240115001",
"verified_at": "2024-01-15 10:30:00"
}
Error response:
{
"code": "cert_not_found",
"message": "Certificate not found",
"data": {
"status": 404
}
}
Security Features
- Rate Limiting: 10 verification attempts per hour per IP
- Nonce Verification: All AJAX requests include security nonces
- Input Sanitization: All inputs are sanitized using WordPress functions
- SQL Injection Prevention: Uses WordPress Query and prepared statements
- Capability Checks: Admin functions require proper permissions
- HTTPS Enforcement: Can be configured to enforce HTTPS
Troubleshooting
Common Issues
QR Code Scanner Not Working
- Ensure camera permissions are granted
- Check if the site is served over HTTPS (required for camera access)
- Try refreshing the page and scanning again
Certificates Not Displaying
- Check if the certificate status is set to "Valid"
- Verify the certificate is published (not draft)
- Ensure the verification URL is accessible
Import Errors
- Check CSV file encoding (try UTF-8)
- Verify column headers match exactly
- Ensure required fields are not empty
Template Not Saving
- Check user permissions (admin access required)
- Verify template content is valid HTML
- Try refreshing the page and saving again
Debug Mode
Enable WordPress debug mode to see detailed error messages:
// In wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
Plugin Conflicts
If you experience issues:
- Deactivate other plugins one by one
- Switch to a default WordPress theme temporarily
- Check browser console for JavaScript errors
- Review WordPress error logs
Customization
Hooks and Filters
Actions
bricks_cert_generate_qr- Fires when generating QR codebricks_cert_after_verification- Fires after successful verification
Filters
bricks_cert_verification_result- Modify verification result databricks_cert_template_variables- Add custom template variables
Custom Template Variables
Add custom template variables:
add_filter('bricks_cert_template_variables', function($variables, $certificate_id) {
$variables['{{custom_field}}'] = get_post_meta($certificate_id, '_custom_field', true);
return $variables;
}, 10, 2);
Styling
The plugin includes comprehensive CSS that can be overridden in your theme:
/* Override verification form styles */
.bricks-cert-verification-form {
max-width: 800px; /* Increase form width */
}
.bricks-cert-button-primary {
background: #your-brand-color; /* Custom button color */
}
Requirements
- WordPress 6.0 or higher
- PHP 7.4 or higher
- MySQL 5.6 or higher
- HTTPS (required for QR code scanner)
Support
For support and feature requests:
- Check the troubleshooting section above
- Review WordPress error logs
- Contact your website administrator
Changelog
Version 1.0.0
- Initial release
- Certificate verification system
- QR code generation and scanning
- Customizable templates
- Bulk import functionality
- WordPress widget
- REST API endpoints
- Multi-parameter verification
- Responsive design
- Security features
License
This plugin is licensed under the GPL v2 or later.
Credits
- QR Code scanning powered by html5-qrcode
- Built for WordPress using modern web standards