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.

★ 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/eskay243/certverify/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.

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