# IGNY8 Custom Content Template

## Overview

The IGNY8 WordPress Bridge plugin now includes a custom post template that automatically applies to IGNY8-generated content, providing a beautiful, magazine-style layout that mirrors the IGNY8 app's content view.

## Features

✅ **Automatic Detection** - Only activates for posts with `_igny8_content_id` meta field
✅ **Theme Compatible** - Inherits all theme colors and fonts
✅ **Responsive Design** - Works beautifully on all devices
✅ **Section-Based Layout** - Content parsed into introduction + H2 sections
✅ **Image Prompts** - Displays AI image generation prompts
✅ **SEO Metadata** - Shows meta title and description
✅ **Content Metadata** - Displays clusters, keywords, content type
✅ **Professional Typography** - Clean, readable prose styles

## How It Works

### Detection

The template automatically detects IGNY8-generated content by checking for the `_igny8_content_id` post meta field. If found, the custom template is loaded instead of the theme's default `single.php`.

### Template Structure

```
templates/
├── single-igny8-content.php          # Main template
├── parts/
│   ├── igny8-header.php              # Title, status, metadata
│   ├── igny8-featured-image.php      # Featured image with prompt
│   ├── igny8-content-sections.php    # Parsed content sections
│   └── igny8-metadata.php            # IGNY8 metadata footer
└── assets/
    ├── css/
    │   └── igny8-content-template.css # Styles
    └── js/
        └── igny8-content-template.js  # Optional enhancements
```

### Content Parsing

The template automatically parses your content HTML:

1. **Introduction** - All content before the first H2 heading
2. **Sections** - Each H2 creates a new section with:
   - Section number badge
   - Heading
   - Content
   - In-article image (if available)

### Image Display

- **Featured Image** - Displayed prominently with AI prompt
- **In-Article Images** - Positioned next to sections (side-by-side on desktop)
- **Image Prompts** - AI generation prompts shown below images

## Metadata Display

### Header Section
- Post title
- Status badge (Draft/Published/etc.)
- Posted date
- Word count
- Author
- Categories
- Tags
- SEO metadata (if different from post title)
- Content info (type, structure, cluster, keywords)

### Footer Section
- Collapsible IGNY8 metadata
- Content ID, Task ID
- Content type and structure
- Source
- Cluster and Sector IDs
- Secondary keywords
- Last sync time

## Theme Compatibility

The template is designed to work with ANY WordPress theme by:

### 1. Color Inheritance
```css
color: inherit;                    /* Uses theme's text color */
background: var(--wp--preset--color--base, #ffffff);  /* Uses theme's background */
```

### 2. Font Inheritance
```css
font-family: inherit;              /* Uses theme's font */
```

### 3. Minimal Overrides
Only structural styles are applied (spacing, borders, etc.)
Colors use opacity overlays: `rgba(0, 0, 0, 0.08)` for neutrals

### 4. CSS Custom Properties
Respects theme's CSS custom properties when available

## Customization

### Disable Template

To disable the custom template and use your theme's default:

```php
// Add to your theme's functions.php
add_filter('single_template', function($template) {
    // Remove IGNY8 template filter
    remove_filter('single_template', [Igny8_Template_Loader::class, 'load_igny8_template'], 99);
    return $template;
}, 98);
```

### Customize Styles

You can override styles by adding to your theme's CSS:

```css
/* Override max width */
.igny8-content-container {
    max-width: 1400px;
}

/* Customize section number badge */
.igny8-section-number {
    background: your-theme-color;
    color: white;
}
```

### Modify Template Parts

You can copy template parts to your theme and modify:

```
your-theme/
└── igny8-templates/
    └── parts/
        └── igny8-header.php  # Your custom header
```

Then filter the template part location:

```php
add_filter('igny8_template_part_path', function($path, $part) {
    $theme_path = get_stylesheet_directory() . '/igny8-templates/parts/' . $part . '.php';
    if (file_exists($theme_path)) {
        return $theme_path;
    }
    return $path;
}, 10, 2);
```

## Developer Reference

### Template Detection

```php
// Check if post is IGNY8 content
$template_loader = new Igny8_Template_Loader();
if ($template_loader->is_igny8_content($post_id)) {
    // This is IGNY8 content
}
```

### Helper Functions

```php
// Parse content into sections
$parsed = igny8_parse_content_sections($content_html);
// Returns: ['intro' => string, 'sections' => array]

// Get in-article images
$images = igny8_get_in_article_images($post_id);
// Returns: array indexed by position

// Get featured image prompt
$prompt = igny8_get_featured_image_prompt($post_id);
// Returns: string|null

// Calculate word count
$words = igny8_calculate_word_count($content);
// Returns: int

// Parse keywords
$keywords = igny8_parse_keywords($keywords_string);
// Returns: array
```

### Hooks & Filters

```php
// Modify template path
add_filter('igny8_template_path', function($path) {
    return $custom_path;
});

// Modify CSS enqueue
add_filter('igny8_template_css_url', function($url) {
    return $custom_url;
});

// Add custom body class
add_filter('body_class', function($classes) {
    if (is_igny8_content()) {
        $classes[] = 'my-custom-class';
    }
    return $classes;
});
```

## Troubleshooting

### Template Not Loading

1. **Check post meta**: Verify `_igny8_content_id` exists
   ```php
   $content_id = get_post_meta($post_id, '_igny8_content_id', true);
   var_dump($content_id); // Should not be empty
   ```

2. **Check file permissions**: Ensure template files are readable

3. **Clear cache**: Clear WordPress cache and browser cache

### Styles Not Applied

1. **Check enqueue**: Verify CSS is loading in page source
2. **Check theme conflicts**: Look for `!important` overrides in theme
3. **Check CSS specificity**: IGNY8 styles use minimal specificity

### Images Not Displaying

1. **Check meta field**: Verify `_igny8_imported_images` exists and is valid array
2. **Check attachment IDs**: Ensure image attachment IDs are valid
3. **Check image URLs**: Verify images are accessible

### Sections Not Parsing

1. **Check H2 tags**: Content must use `<h2>` for section headings
2. **Check HTML structure**: Ensure valid HTML
3. **Enable debug**: Add to wp-config.php:
   ```php
   define('WP_DEBUG', true);
   define('WP_DEBUG_LOG', true);
   ```

## Performance

- **Minimal overhead**: Template only loads for IGNY8 content
- **CSS/JS loaded conditionally**: Assets only enqueued when needed
- **Efficient parsing**: DOMDocument used for reliable HTML parsing
- **No database queries**: All data from post meta (already cached)

## Browser Support

- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers (iOS Safari, Chrome Mobile)

## Accessibility

- Semantic HTML5 elements
- Proper heading hierarchy
- Alt text for images
- Keyboard navigation support
- Print styles included

## License

GPL v2 or later - Same as WordPress

## Support

For issues or questions:
1. Check troubleshooting section above
2. Review implementation plan in `/docs/WP-CONTENT-TEMPLATE-IMPLEMENTATION-PLAN.md`
3. Check IGNY8 logs in WordPress admin

## Version History

### 1.0.0 (December 2025)
- Initial release
- Custom template for IGNY8 content
- Theme-compatible styling
- Section-based layout
- Image prompt display
- SEO metadata display
