WP Manifestindependent plugin directory
manifest / content / certverify

Bricks Certificate Verification

A comprehensive WordPress plugin for certificate verification with QR code support, customizable templates, and multi-parameter search functionality.

by Your Name · github.com/eskay243/certverify · 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/eskay243/certverify/archive/refs/heads/main.zip

Bricks 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

  1. Upload the bricks-certificate-verify folder to your WordPress /wp-content/plugins/ directory
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Navigate to 'Certificates' in your WordPress admin to start creating certificates

Usage

Creating Certificates

  1. Go to Certificates > Add New in your WordPress admin
  2. Fill in the certificate details:
    • Holder Name (required)
    • Course/Event Name (required)
    • Issue Date (required)
    • Completion Date (optional)
    • Instructor Name (optional)
    • Grade/Score (optional)
  3. Set the certificate status (Valid/Invalid/Revoked)
  4. 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 text
  • show_description="true|false" - Show/hide description (default: true)
  • description="Custom Description" - Custom description text

Using Widget

  1. Go to Appearance > Widgets in your WordPress admin
  2. Add the "Certificate Verification" widget to your sidebar or footer
  3. 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:

  1. Certificate ID Only: Enter just the certificate number
  2. Holder Name Only: Enter just the certificate holder's name
  3. 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 ID
  • holder_name (string, optional) - Holder name
  • verification_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:

  1. Deactivate other plugins one by one
  2. Switch to a default WordPress theme temporarily
  3. Check browser console for JavaScript errors
  4. Review WordPress error logs

Customization

Hooks and Filters

Actions

  • bricks_cert_generate_qr - Fires when generating QR code
  • bricks_cert_after_verification - Fires after successful verification

Filters

  • bricks_cert_verification_result - Modify verification result data
  • bricks_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