WP Manifestindependent plugin directory
manifest / content / fanabyte-certificate

FanaByte - Certificate WP Registry grade D+. High-severity findings · 3 findingsWP RegistryHigh-severity findings · 3 findingsOpen the reportD+

Easily build your certificate or document management system with the Fanabyte Certificate plugin for WordPress. Ideal for educational institutions, companies, or any organization needing to issue and display records. Features custom field definitions and search capabilities.

★ 1stars
85release downloads
≈40active sites
1.3.0latest · 1 year ago

Install

Download fanabyte-certificate.zip From the 1.3.0 release on GitHub, Sep 17, 2025

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/fanabyte/fanabyte-certificate/releases/download/1.3.0/fanabyte-certificate.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

FanaByte Certificate Inquiry Plugin | A comprehensive solution for managing and querying various certificates, diplomas, warranty cards, and similar documents online with advanced features.

Developed by FanaByte Academy.


Description (English)

FanaByte Certificate is a powerful and flexible system for WordPress websites that allows you to manage and provide online inquiry services for various verifiable documents such as educational certificates, diplomas, warranty cards, identification cards, order statuses, and any other type of document requiring online validation.

Users can quickly access the information of their desired certificate or document and verify its validity by using a simple search form on your website and entering key information (like National ID, serial number, certificate code, etc.).

Key Features

  • Easy Certificate Management: Easily add, edit, and manage certificates through a dedicated Custom Post Type (CPT).
  • Unlimited Custom Fields: Define custom fields (text and image) for each certificate type.
  • Customizable Inquiry Form:
    • Select key fields for searching (max 2 text fields).
    • Customize intro text, search button text/color, and placeholders.
  • Certificate Details Display:
    • Dedicated page with unique URL.
    • Optional personal photo/logo display.
    • Shows all custom fields.
    • Optional main file upload (PDF/Image) with customizable download button.
    • Optional custom footer text.
  • Automatic QR Code: Generates and displays QR codes linking to the certificate page.
  • Form Display Shortcode: Embed the form using [fanabyte_certificate_lookup].
  • URL Settings: Set the base slug for certificate permalinks.
  • Settings Import/Export: Backup or transfer settings via JSON.
  • Bilingual Support: Fully translatable (Fa/En included) with RTL support.
  • Template Overridable: Themes can override the single certificate template.
  • Familiar UI: Admin interface aligned with WordPress standards.

Installation

  1. Via WordPress Admin:
    • Go to Plugins > Add New.
    • Search for "FanaByte Certificate".
    • Install and activate.
  2. Manual Upload:
    • Download the latest release .zip file from the GitHub Releases page.
    • Go to Plugins > Add New > Upload Plugin.
    • Choose the zip file and click "Install Now", then activate.
  3. Initial Configuration:
    • Navigate to the new "Certificate Inquiry" -> "Settings" menu.
    • Define your fields under "Field Management" and mark key fields.
    • Important: Go to Settings > Permalinks and click "Save Changes".
    • Start adding certificates via "Certificate Inquiry" -> "Add New".
    • Place the [fanabyte_certificate_lookup] shortcode on a page.

Usage

  1. Define Fields: Set up the necessary fields for your certificates in the settings (Certificate Inquiry > Settings > Field Management).
  2. Add Certificates: Populate the certificates with data using the "Add New" menu (Certificate Inquiry > Add New). Upload personal photos or main files as needed.
  3. Display Form: Use the [fanabyte_certificate_lookup] shortcode on the page where you want the inquiry form to appear. Customize the form's appearance via the settings (Certificate Inquiry > Settings > Form/URL/Buttons Settings).

Frequently Asked Questions (FAQ)

  • Can I use more than two fields for searching?

    Currently, no. The plugin supports up to two text fields as search keys for simplicity.

  • Can I change the appearance?

    Yes, button colors/text are configurable in settings. For more extensive visual changes, use custom CSS in your theme or override the templates/single-fb_certificate.php template file in your theme directory.

  • How does the QR code work?

    It links directly to the certificate's page. The QR generation itself currently uses a placeholder online API in includes/admin-columns.php (function fb_cert_generate_qr_code_html). It is highly recommended to replace this with a server-side PHP library like endroid/qr-code for production use.

  • Can I transfer settings?

    Yes, use the Import/Export feature in Certificate Inquiry > Settings > Import/Export.


Changelog

1.3.0 (Your Current Version)

  • Added a new 'Plugin Language' setting to switch between Persian (RTL) and English (LTR).
  • Refactored CSS to support dynamic RTL/LTR switching.
  • Updated plugin version to 1.3.0.

1.2.0

  • Added full internationalization support (i18n) for Persian and English.
  • Added comprehensive Persian and English comments to all code files.
  • Improved code structure and added necessary documentation for release.

1.0.0

  • Initial release.

(Add more versions as you release them)


Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please ensure your code adheres to the WordPress Coding Standards.


License

GPLv2 or later


Support

For bug reports, feature requests, or other issues, please use the GitHub Issues section of this repository.




افزونه استعلام مدرک فنابایت

افزونه استعلام مدرک فنابایت | راهکاری جامع برای مدیریت و استعلام آنلاین انواع مدارک، گواهینامه‌ها، کارت‌های گارانتی و موارد مشابه با قابلیت‌های پیشرفته.

توسعه داده شده توسط آکادمی فنابایت.


توضیحات (فارسی)

افزونه استعلام مدرک فنابایت یک سیستم قدرتمند و انعطاف‌پذیر برای وب‌سایت‌های وردپرسی است که به شما امکان می‌دهد انواع اسناد قابل استعلام مانند مدارک آموزشی، گواهینامه‌ها، کارت‌های گارانتی، کارت‌های شناسایی، وضعیت سفارشات و هر نوع سند دیگری که نیاز به تأیید اعتبار آنلاین دارد را مدیریت و ارائه کنید.

کاربران می‌توانند با استفاده از یک فرم جستجوی ساده در سایت شما و وارد کردن اطلاعات کلیدی (مانند کد ملی، شماره سریال، کد مدرک و...)، به سرعت به اطلاعات مدرک یا سند مورد نظر خود دسترسی پیدا کنند و از اعتبار آن مطمئن شوند.

ویژگی‌های کلیدی

  • مدیریت آسان مدارک: افزودن، ویرایش و مدیریت آسان مدارک از طریق یک پست تایپ سفارشی (CPT).
  • فیلدهای سفارشی نامحدود: تعریف فیلدهای دلخواه (متنی و تصویری) برای هر نوع مدرک.
  • فرم استعلام قابل تنظیم:
    • انتخاب فیلدهای کلیدی برای جستجو (حداکثر ۲ فیلد متنی).
    • شخصی‌سازی متن بالای فرم، متن دکمه جستجو و رنگ آن و Placeholder ها.
  • نمایش جزئیات مدرک:
    • صفحه اختصاصی با URL منحصر به فرد.
    • قابلیت نمایش عکس پرسنلی یا لوگو.
    • نمایش تمام فیلدهای سفارشی.
    • امکان آپلود و نمایش فایل اصلی (PDF/تصویر) با دکمه دانلود قابل تنظیم.
    • قابلیت افزودن متن دلخواه در پایین صفحه.
  • کد QR خودکار: تولید و نمایش کد QR برای هر مدرک.
  • شورت‌کد نمایش فرم: قرار دادن فرم با شورت‌کد [fanabyte_certificate_lookup].
  • تنظیمات URL: قابلیت تنظیم اسلاگ پایه URL.
  • واردات و صادرات تنظیمات: پشتیبان‌گیری یا انتقال تنظیمات با JSON.
  • پشتیبانی از دو زبان: کاملاً قابل ترجمه (فارسی/انگلیسی) با پشتیبانی RTL.
  • قالب قابل بازنویسی: پوسته می‌تواند قالب نمایش تکی را بازنویسی کند.
  • رابط کاربری آشنا: هماهنگ با پیشخوان وردپرس.

نصب

۱. از طریق پیشخوان وردپرس:

  • به افزونه‌ها > افزودن بروید.
  • "FanaByte Certificate" را جستجو کنید.
  • نصب و فعال کنید. ۲. بارگذاری دستی:
  • آخرین نسخه فایل .zip را از صفحه GitHub Releases دانلود کنید.
  • به افزونه‌ها > افزودن > بارگذاری افزونه بروید.
  • فایل zip را انتخاب و نصب کنید، سپس فعال نمایید. ۳. پیکربندی اولیه:
  • به منوی جدید استعلام مدرک > تنظیمات بروید.
  • فیلدهای خود را در تب مدیریت فیلدها تعریف کرده و فیلدهای کلیدی را مشخص کنید.
  • مهم: به تنظیمات > پیوندهای یکتا رفته و روی ذخیره تغییرات کلیک کنید.
  • مدارک را از منوی استعلام مدرک > افزودن جدید اضافه کنید.
  • شورت‌کد [fanabyte_certificate_lookup] را در یک برگه قرار دهید.

نحوه استفاده

۱. تعریف فیلدها: فیلدهای لازم را در تنظیمات افزونه تعریف کنید (استعلام مدرک > تنظیمات > مدیریت فیلدها). ۲. افزودن مدرک: مدارک را با داده‌های مربوطه از طریق منوی افزودن جدید وارد کنید. ۳. نمایش فرم: از شورت‌کد [fanabyte_certificate_lookup] در برگه مورد نظر برای نمایش فرم استفاده کنید. ظاهر فرم را از تنظیمات تغییر دهید.


پرسش‌های متداول (FAQ)

  • آیا می‌توانم بیش از دو فیلد برای جستجو استفاده کنم؟

    در حال حاضر خیر. افزونه حداکثر از دو فیلد متنی به عنوان کلید جستجو پشتیبانی می‌کند.

  • آیا می‌توانم ظاهر را تغییر دهم؟

    بله، رنگ/متن دکمه‌ها قابل تنظیم است. برای تغییرات بیشتر از CSS سفارشی استفاده کنید یا فایل قالب templates/single-fb_certificate.php را در پوسته خود بازنویسی کنید.

  • کد QR چگونه کار می‌کند؟

    به صفحه مدرک لینک می‌دهد. تولید کد QR در حال حاضر از یک API آنلاین موقت در includes/admin-columns.php (تابع fb_cert_generate_qr_code_html) استفاده می‌کند. اکیداً توصیه می‌شود این بخش با یک کتابخانه PHP سمت سرور مانند endroid/qr-code جایگزین شود.

  • آیا می‌توانم تنظیمات را منتقل کنم؟

    بله، از بخش واردات/صادرات در تنظیمات استفاده کنید.


لیست تغییرات (Changelog)

نسخه ۱.۳.۰ (نسخه فعلی شما)

  • افزودن تنظیم جدید «زبان افزونه» برای جابجایی بین فارسی (RTL) و انگلیسی (LTR).
  • اصلاح CSS برای پشتیبانی از جابجایی پویای RTL/LTR.
  • به‌روزرسانی نسخه افزونه به ۱.۳.۰.

نسخه ۱.۲.۰

  • افزودن پشتیبانی کامل از دو زبان فارسی و انگلیسی (i18n).
  • افزودن کامنت‌گذاری جامع فارسی و انگلیسی به تمام فایل‌های کد.
  • بهبود ساختار کد و افزودن توضیحات لازم برای انتشار.

نسخه ۱.۰.۰

  • انتشار اولیه.

(نسخه‌های بعدی را اینجا اضافه کنید)


مشارکت

Pull request ها پذیرفته می‌شوند. برای تغییرات بزرگ، لطفاً ابتدا یک Issue باز کنید تا در مورد آنچه می‌خواهید تغییر دهید بحث کنیم. لطفاً اطمینان حاصل کنید که کد شما با استانداردهای کدنویسی وردپرس مطابقت دارد.


لایسنس

GPLv2 or later


پشتیبانی

برای گزارش باگ، درخواست ویژگی جدید یا سایر مسائل، لطفاً از بخش GitHub Issues این مخزن استفاده کنید.

Releases

2 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
1.3.0 latest
Sep 17, 2025 1 year ago
fanabyte-certificate.zip
46
May 6, 2025 1 year ago
fanabyte-certificate.zip
39

Active-site estimate ≈40 comes from the median of recent superseded releases. Method.

D+ grade

Security

FanaByte - Certificate 1.3.0 · audited by WP Registry

High-severity findings.

1 high 2 medium
Audited release
1.3.0
Findings
3
Worst severity
high
Content hash
d89b59b7b86d37992eadbb35…

Findings

  • high Unauthenticated certificate PII enumeration via public CPT, REST, sitemaps, and view_cert_id

    information_disclosure

    fb_certificate is registered public, publicly_queryable, and show_in_rest true with capability_type post, while has_archive is false — the plugin's own access model is 'enter National ID/serial in the lookup form' or 'scan the unique QR permalink'. WordPress still exposes the full catalog: unauthenticated GET /wp-json/wp/v2/fb_certificate returns id, title, slug, link, and content.rendered for every published certificate; /wp-sitemap-posts-fb_certificate-1.xml lists every permalink; ?s= and ?post_type=fb_certificate also surface titles. The lookup shortcode additionally accepts ?view_cert_id={n} with only an absint + post_type/publish check, so sequential IDs skip the key-field search entirely. Each of those URLs is rendered by templates/single-fb_certificate.php and fb_cert_render_certificate_details(), which print every custom field (_fb_cert_*), the personal photo, footer text, and a download link for the main PDF/image. Result: an unauthenticated visitor can dump an institution's entire diploma/warranty database including PII without knowing any search key. REST content.rendered is an extra leak because the public template never calls the_content().

    includes/cpt-register.php:64-90

    Recommendation

    Keep unique permalinks for QR if needed, but stop listing. Set show_in_rest so only users who can edit certificates read the collection (or add a rest_pre_dispatch / permission callback that denies uid 0), exclude fb_certificate from wp_sitemaps_post_types, set exclude_from_search true, and remove or gate view_cert_id behind a successful lookup (token/session) rather than a raw sequential post ID. Consider a non-guessable rewrite slug (unguessable token) instead of sequential IDs plus title slugs.

  • medium Certificate permalinks sent to third-party QR API on public and admin pages

    information_disclosure

    fb_cert_generate_qr_code_html() builds an <img> whose src is https://api.qrserver.com/v1/create-qr-code/ with the certificate permalink in the data query argument. That helper is echoed on the public single template, the lookup shortcode details view, and every row of the admin All Certificates list. Each page view causes the visitor's (or administrator's) browser to send the certificate URL — often containing a person's name in the slug — to a third-party service. The plugin's own comments and README state this API is for testing only and must not ship in a final product. This is not server-side SSRF, but it is a production PII/URL leak and an availability dependency on qrserver.com.

    includes/admin-columns.php:126-159

    Recommendation

    Generate QR codes server-side with a local library (the file already sketches endroid/qr-code) or a same-origin endpoint, and never put certificate permalinks in a third-party image URL.

  • medium Stored XSS via unescaped certificate title on lookup results and single template

    xss_stored

    On a single lookup match the shortcode does sprintf(esc_html__('Certificate Details: %s'), get_the_title()) inside an <h2>. esc_html__() escapes only the translation string; get_the_title() is inserted raw. The sibling view_cert_id branch correctly wraps the title in esc_html(), which shows this was an oversight. templates/single-fb_certificate.php also calls the_title() with no escaping. fb_certificate uses capability_type 'post', so an Author can publish a certificate whose title is HTML/event-handler markup; a Contributor can plant it in a draft. Visitors who open the lookup result or the public permalink then execute that markup in the site origin. Post titles are not run through kses on save.

    public/shortcode-lookup.php:268-272

    Recommendation

    Always echo titles with esc_html(get_the_title()) (or the_title_attribute() in attributes). Align the single-match branch with the already-escaped view_cert_id branch. Optionally restrict fb_certificate to manage_options / a custom capability so Authors cannot publish verification records.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.