Overview
The VertiSub theme implements six custom post types to manage different content types beyond WordPress’s standard posts and pages. Each CPT is registered in its own file withininc/cpts/ for modularity.
Services (servicios)
File:inc/cpts/services.php
Manages company services with multimedia support and country relationships.
Registration
Features
- Supports: Title, featured image, editor (description)
- Slug:
/servicios/ - Archive: Disabled
- Menu Icon: Hammer (dashicons-hammer)
Custom Meta Boxes
Multimedia Meta Box
_imagenes_reseña- Array of image URLs_videos_reseña- Array of video file URLs_video_urls_reseña- Array of YouTube/Vimeo URLs
_servicio_paises- Array of related country post IDs
Custom Rewrite Rules
/servicios-vertisub/esp/
Courses (cursos)
File:inc/cpts/courses.php
Manages educational courses with extensive metadata including instructors, modalities, and country-specific pricing.
Registration
Course Meta Fields
Meta Fields Explained
| Field | Type | Description |
|---|---|---|
_curso_imagenes | Array (int) | Course image attachment IDs |
_curso_modalidades | Array (string) | Course modalities (online, presencial, etc.) |
_curso_intro_video | String (URL) | Introduction video URL |
_curso_testimonios | Array (URL) | Testimonial video URLs |
_curso_temario | Array (string) | Course syllabus topics |
_curso_url_inscribir | String (URL) | Enrollment URL |
_curso_url_info | String (URL) | More information URL |
_curso_url_plataforma | String (URL) | Learning platform URL |
_curso_url_oficial | String (URL) | Official page URL |
_curso_paises | Array (int) | Related country IDs |
_curso_paises_urls | Array (URL) | Contact URLs per country |
_curso_instructores | Array (int) | Related instructor IDs |
_curso_convenios | Array (object) | Custom agreements with title and URL |
Convenios (Agreements) Structure
Certifications (certificaciones)
File:inc/cpts/certification.php
Simple CPT for managing certifications and awards.
Registration
Features
- Supports: Title, editor, featured image
- Slug:
/certificaciones/ - Archive: Enabled
- No custom meta boxes - Uses standard WordPress fields and ACF
Countries (paises)
File:inc/cpts/countries.php
Manages country/office information with contact details.
Registration
Country Meta Fields
| Field | Type | Description |
|---|---|---|
_pais_slug | String | Country code (ESP, COL, MEX, etc.) |
_contacto | String | Contact person name |
_direccion | Text | Office address |
_correos | Array | Email addresses |
_telefonos | Array | Phone numbers |
_whatsapps | Array | WhatsApp numbers |
Usage in Location Map
Clients (clientes)
File:inc/cpts/clients.php
Manages client/company logos and information.
Registration
Features
- Supports: Title, editor (description), featured image (logo)
- Slug:
/clientes/ - Archive: Disabled
- Simple structure for client showcase
Documents (documentos_pais)
File:inc/cpts/documents.php
Manages country-specific documents and files.
Registration
Document Meta Fields
| Field | Type | Description |
|---|---|---|
_pais_relacionado | Integer | Related country post ID |
_documentos | Array | Array of document objects |
Document Object Structure
nombre- Document display namearchivo- File URL from media library
Querying Custom Post Types
Basic Query
Filtering by Meta Query
Retrieving Meta Data
Best Practices
1. Always Initialize Arrays
2. Sanitize on Save
3. Use Nonce Verification
4. Prevent Autosave
Related Documentation
- Theme Architecture - Overall theme structure
- Template System - Using CPTs in templates
- ACF Integration - Extending with ACF fields

