Skip to content

PHP backend

Core PHP classes under CoverKit\ in includes/. Registration helpers live in includes/functions.php.

coverkit.php defines COVERKIT_PLUGIN_DIR, COVERKIT_PLUGIN_URL, PSR-4-style autoloading (CoverKit\includes/class-coverkit-*.php; CoverKit\Use_Cases\*includes/use-cases/class-coverkit-*.php), and init() on plugins_loaded.

File: includes/class-coverkit-post-type.php

  • Registers coverkit CPT and template meta (width, height, background, gradient, _coverkit_use_cases, _coverkit_active_use_cases).
  • Registers blocks from build/blocks/*; restricts allowed blocks to coverkit/* in the template editor.
  • Renders coverkit/canvas on the front end via Renderer::generate_from_content().
  • List-table preview column, per-template cache clear, duplicate/reload row actions.
  • Imports starter templates from assets/templates/ on activation.

File: includes/class-coverkit-rest.php

Registers coverkit/v1 routes and handles coverkit_generate_image async queue. See rest-api.md.

File: includes/class-coverkit-renderer.php

  • generate( string $generation_key, $template_id, ?int $post_id = null, array $options = array() ) — use-case generation; honors coverkit_pre_generate / coverkit_after_generate.
  • generate_from_content( $content, ?int $post_id = null, array $meta = array(), array $options = array() ) — editor preview and canvas rendering.

Default options include format (png), width, quality, force.

CoverKit\Use_Case / Use_Case_Registry / Use_Case_Storage

Section titled “CoverKit\Use_Case / Use_Case_Registry / Use_Case_Storage”

Files:

  • includes/class-coverkit-use-case.php
  • includes/class-coverkit-use-case-registry.php
  • includes/class-coverkit-use-case-storage.php

Registrycoverkit_register_use_case( $slug, $args ) on coverkit_init (priority < 10); boot() at priority 10 reads coverkit_active_use_case_classes and instantiates active use case classes.

Storage — canonical assignments in post meta _coverkit_use_cases; rebuilds loader manifest when meta changes.

See use-cases-and-output-profiles.md.

File: includes/class-coverkit-template.php

  • Parses coverkit posts or block content into canvas + elements.
  • apply_data( ?int $post_id = null, string $use_case_id = '' ) — resolves {field_key} tokens in shape text and runs apply_use_case_mappings() when a use case slug is provided.
  • apply_use_case_mappings() loads mappings from _coverkit_use_cases and delegates to Mapping_Applicator::apply().
ClassFileRole
Field_Resolverclass-coverkit-field-resolver.phpcollect_raw( $field_name, $post_id ) — built-ins, post_meta:*, acf:*; filter coverkit_collect_field_raw
Field_Formatterclass-coverkit-field-formatter.phpApplies formatter names (date, image, …) after use-case-specific filters
Mapping_Applicatorclass-coverkit-mapping-applicator.phpWrites mapped values onto shape element attributes

Use_Case::format_field_value() collects via Field_Resolver, then Field_Formatter and filters coverkit_use_case_{$slug}_format_field_value / coverkit_format_field_value.

Built-in resolver keys include: post_title, post_excerpt, post_content, post_date, post_url, author, site_name, site_description, site_url, site_logo, featured_image, categories, tags, post_meta:{key}, acf:{name} when ACF is available.

File: includes/class-coverkit-generator.php plus traits in includes/generator/.

Imagick-based rendering, caching under get_coverkit_path( '_cache/generator/' ), format conversion, responsive derivatives. Filter: coverkit_generation_options, coverkit_max_canvas_dimension.

  • Open_Graph_Image_Use_Casewp_head meta; image URL via /opengraph/... REST route.
  • Sidebar_Image_Use_Case — sidebar preview in the template editor.

File: includes/class-coverkit-settings.php

Settings → CoverKit admin page; registers coverkit_options and coverkit_presets; enqueues build/settings/.

  • Patterns — block patterns from patterns/.
  • Examples — dev admin page for examples/ PHP scripts (see examples.md).

Notable helpers in includes/functions.php:

  • coverkit_register_use_case( string $slug, array $args ): bool
  • get_coverkit_path(), clear_cache(), get_coverkit_rest_url(), get_coverkit_resize()
  • get_coverkit_responsive_sizes(), is_coverkit_allowed_width()
  • get_screenshot(), save_image_to_media_library()
  • get_templates(), get_template_by_context()
add_action(
'coverkit_init',
static function (): void {
\CoverKit\coverkit_register_use_case(
'my_packaging',
array(
'label' => __( 'Packaging shot', 'my-plugin' ),
'class' => \MyPlugin\Packaging_Use_Case::class,
)
);
},
5
);