Developer Resources
Technical documentation for developers integrating with the plugin
Overview
This guide provides technical information for developers who want to extend, customize, or integrate with Submittal & Spec Sheet Builder. It covers the REST API, WordPress hooks, template overrides, and advanced customization options.
Target Audience:
- Theme developers
- Plugin developers
- Technical implementers
- Advanced users with coding experience
REST API
The plugin exposes a comprehensive REST API for accessing and managing product data.
API Base URL
https://yoursite.com/wp-json/sfb/v1
Authentication
Public Endpoints:
- Product retrieval (GET requests)
- No authentication required
Protected Endpoints:
- Product creation/editing (POST, PUT, DELETE)
- Requires authentication via nonce or OAuth
Available Endpoints
Get All Nodes (Product Tree)
GET /wp-json/sfb/v1/nodes
Returns complete product hierarchy with all categories, products, types, and models.
Get Single Product
GET /wp-json/sfb/v1/nodes/{composite_key}
Example: GET /wp-json/sfb/v1/nodes/c-studs:steel-studs:20-gauge:362s162-20
Create Node
POST /wp-json/sfb/v1/nodes
Create new product, type, product, or category with POST request containing name, type, parent, and specs.
Update Node
PUT /wp-json/sfb/v1/nodes/{composite_key}
Update existing node with new name, specs, or other properties.
Delete Node
DELETE /wp-json/sfb/v1/nodes/{composite_key}
Delete product or node from hierarchy.
Search Products
GET /wp-json/sfb/v1/search?q={query}
Example: GET /wp-json/sfb/v1/search?q=362
Returns all products matching search query.
Get Field Definitions
GET /wp-json/sfb/v1/field-definitions
Returns current specification field names and types.
Using the API
Example: Fetch All Products
Fetch all products and log them to console.
Example: Search Products
Search for products matching a query string.
Example: Create Product
Create new product with POST request, including nonce for security.
WordPress Hooks
The plugin provides numerous hooks for customization.
Action Hooks
After PDF Generated
do_action('sfb_pdf_generated', $pdf_path, $product_ids, $project_name);
Fires after PDF is successfully generated. Use to send notifications, log data, or trigger workflows.
Before Product Created
do_action('sfb_before_product_create', $product_data);
Fires before new product added to catalog. Use to validate or modify product data.
After Product Created
do_action('sfb_after_product_create', $product_id, $product_data);
Fires after product successfully added to database.
Before Settings Saved
do_action('sfb_before_settings_save', $settings);
Fires before settings saved to database.
Filter Hooks
Modify PDF Output
apply_filters('sfb_pdf_html', $html, $products, $branding);
Use to add watermarks, modify layout, insert custom content into PDFs.
Modify Product Data
apply_filters('sfb_product_data', $product, $composite_key);
Use to add custom fields or modify product information displayed to users.
Modify Search Results
apply_filters('sfb_search_results', $results, $query);
Use to boost certain products, reorder results, or filter search output.
Modify Branding Settings
apply_filters('sfb_branding_settings', $branding);
Use to dynamically change logo, colors, or company info based on conditions.
Customize PDF Filename
apply_filters('sfb_pdf_filename', $filename, $project_name, $timestamp);
Use to customize PDF filename format or add prefixes/suffixes.
Template Overrides
Customize the frontend builder appearance by overriding templates in your theme.
Template Hierarchy
Plugin templates located in:
wp-content/plugins/submittal-spec-sheet-builder/templates/
Override in your theme:
wp-content/themes/your-theme/submittal-builder/
Available Templates
Main Builder Template – templates/builder.php
Override in: your-theme/submittal-builder/builder.php
Product Card – templates/partials/product-card.php
Override in: your-theme/submittal-builder/partials/product-card.php
Product List Row – templates/partials/product-row.php
Review Panel – templates/partials/review-panel.php
PDF Cover Page – templates/pdf/cover.php
PDF Table of Contents – templates/pdf/toc.php
PDF Spec Sheet – templates/pdf/spec-sheet.php
Example Template Override
Create a custom product card by overriding the template with your own HTML and PHP markup.
Extending Functionality
Add Custom Product Fields
Example: Add “Manufacturer” field
Use filter hook to add custom fields to product data structure.
Custom PDF Sections
Example: Add compliance section
Insert custom HTML content into PDF by modifying PDF HTML filter.
Integrate with Third-Party Services
Example: Send data to CRM
After PDF generation, send product data to external CRM or API endpoint using wp_remote_post.
JavaScript API
Interact with the builder via JavaScript on frontend pages.
Global Objects
sfbData
Localized script data available on frontend builder pages with AJAX URL, nonce, REST URL, settings, and branding info.
Events
Product Selected
document.addEventListener('sfb:product-selected', function(event) { ... });
Fired when user selects a product.
Product Deselected
document.addEventListener('sfb:product-deselected', function(event) { ... });
Fired when user deselects a product.
PDF Generation Started
document.addEventListener('sfb:pdf-generating', function(event) { ... });
Fired when PDF generation begins.
PDF Generation Complete
document.addEventListener('sfb:pdf-complete', function(event) { ... });
Fired when PDF is ready for download.
Methods
Get Selected Products – window.SFB.getSelected();
Select Product Programmatically – window.SFB.selectProduct('composite-key');
Deselect Product – window.SFB.deselectProduct('composite-key');
Clear All Selections – window.SFB.clearSelections();
Generate PDF – window.SFB.generatePDF({products: ['key1', 'key2'], project: 'Project Name'});
CSS Customization
Override default styles for complete design control.
CSS Classes
.sfb-builder – Main builder wrapper
.sfb-product-grid – Product card container
.sfb-product-card – Individual product card (with .selected state)
.sfb-search – Search input
.sfb-filters – Filter container
Example: Custom Styling
Add custom CSS to your theme’s style.css to override default product card styles, search box, and other UI elements.
Code Examples
Example 1: Automatic Email After PDF Generation
Send notification email to sales team when PDF is generated with project name and product count.
Example 2: Add Custom Data to Products
Fetch stock status from external API and add it to product data for display in frontend.
Example 3: Custom PDF Watermark (Pro Users Only)
Add “SAMPLE” watermark to PDFs for non-logged-in users using CSS and HTML modification.
Example 4: Integrate with Google Analytics
Track product selections and PDF generations in Google Analytics using custom events.
Security Considerations
Sanitization
Always sanitize data when extending the plugin using sanitize_text_field(), sanitize_email(), and esc_url_raw().
Nonce Verification
Verify nonces for all form submissions and AJAX requests using wp_verify_nonce().
Capability Checks
Check user capabilities before allowing actions using current_user_can() with appropriate capability string.
Performance Optimization
Caching
Use WordPress transients for expensive operations like fetching product data to improve performance.
Lazy Loading
Lazy load product images using HTML5 loading attribute or JavaScript to improve page load times.
Additional Resources
Official Documentation
- Complete API Reference
- WordPress Hooks Reference
- UI Customization Guide
External Resources
- WordPress Plugin Handbook: https://developer.wordpress.org/plugins/
- REST API Handbook: https://developer.wordpress.org/rest-api/
- WordPress Coding Standards: https://developer.wordpress.org/coding-standards/
Still stuck?
Questions about the free plugin go to the WordPress.org support forum. Pro licence holders can email support@webstuffguylabs.com directly. See Support for what to include.