The SourceHub validation system ensures posts meet all requirements before they can be published or updated. This prevents incomplete posts from being syndicated to spoke sites.
- Requirement: At least one spoke site must be selected for syndication
- Check:
_sourcehub_selected_spokesmeta field must contain array with 1+ items - Warning Message: "select at least one SourceHub Spoke site to syndicate to"
- Requirement: Post must have a featured image set
- Check:
has_post_thumbnail($post_id)must return true - Warning Message: "set a featured image for the post"
- Requirement: Post must have at least one category assigned
- Check:
wp_get_post_categories($post_id)must return non-empty array - Warning Message: "select at least one category for the post"
- Requirement: A post template must be selected
- Check: WordPress page template or Newspaper theme template fields
- Warning Message: "select a post template to use"
- Hook:
transition_post_status(safe, non-blocking) - Trigger: When post status changes to 'publish'
- Action: Posts publish normally, validation issues shown as warnings
- Notice: Admin warning notice shows what should be improved
- Real-time validation: Updates validation status as user makes changes
- No blocking: Publishing proceeds normally regardless of validation
- Visual feedback: Shows validation status in publish box
- User experience: Helpful warnings guide optimization
┌─────────────────────────────┐
│ SourceHub Status: Ready to │
│ publish ✅ │
└─────────────────────────────┘
┌─────────────────────────────┐
│ SourceHub Status: You need │
│ to select a spoke site, │
│ set featured image ❌ │
└─────────────────────────────┘
┌─────────────────────────────────────────┐
│ ⚠️ SourceHub Validation Failed │
│ │
│ You need to: │
│ • select at least one spoke site │
│ • set a featured image │
│ │
│ Please fix these issues before │
│ publishing. │
└─────────────────────────────────────────┘
includes/class-sourcehub-validation.php- Main validation logicassets/js/validation.js- Client-side validation and UI
Returns array of validation error messages for a post.
Returns boolean indicating if post passes all validation checks.
Prevents publication if validation fails.
- Action:
sourcehub_validate_post - Purpose: Real-time validation checks
- Returns:
{valid: boolean, errors: array}
- Has spoke site selected
- Has featured image
- Has template selected
- Result: Publishes successfully
- No spoke sites selected
- Has featured image
- Has template selected
- Result: Blocked with "select at least one SourceHub Spoke site"
- Has spoke site selected
- No featured image
- Has template selected
- Result: Blocked with "set a featured image for the post"
- Has spoke site selected
- Has featured image
- No template selected
- Result: Blocked with "select a post template to use"
- No spoke sites selected
- No featured image
- No template selected
- Result: Blocked with "select at least one SourceHub Spoke site, set a featured image for the post, select a post template to use"
- Ensures all syndicated posts are complete
- Prevents broken or incomplete content on spoke sites
- Clear, actionable error messages
- Real-time feedback prevents frustration
- Guides users to complete required fields
- Extensible validation system
- Easy to add new validation rules
- Comprehensive error handling
- Content length: Minimum word count
- SEO requirements: Meta description, focus keyword
- Category selection: Required categories
- Custom field validation: Site-specific requirements
- Image optimization: Alt text, file size limits
- Validation profiles: Different rules for different post types
- Conditional validation: Rules based on selected spokes
- Batch validation: Check multiple posts at once
- Validation reports: Admin dashboard for validation status