Every extension point is a documented filter or action prefixed jmcl_. The full list ships with the plugin in docs/hooks.md. Hook in on jmcl_loaded.

Most useful hooks

HookUse
jmcl_post_typesAdd post types the plugin works with.
jmcl_field_typesRegister a field type (with jmcl_sanitize_field, jmcl_display_field, jmcl_metabox_input).
jmcl_meta_builtins / jmcl_meta_textAdd an item that can appear in card text and bylines.
jmcl_display_defaults / jmcl_display_sanitizeAdd your own display settings.
jmcl_query_argsAdjust the WP_Query for any display.
jmcl_card_body / jmcl_card_classesChange card markup and classes.
jmcl_presetsAdd your own preset looks.
jmcl_single_layouts / jmcl_single_blockAdd single layouts or blocks.
jmcl_content_imageChoose the image used when a post has no featured image.
add_filter( 'jmcl_presets', function ( $p ) {
	$p['clinic'] = [
		'label' => 'Clinic News', 'note' => 'Our house style', 'pro' => 0,
		'set'   => [ 'style' => 'grid', 'columns' => 2, 'ratio' => '4/3', 'radius' => 12,
		             'captions' => [ 'title', '_date' ], 'badge' => '_cats', 'meta_icons' => 1 ],
	];
	return $p;
} );

CSS custom properties

On .jmcl-display: --jmcl-cols, --jmcl-cols-t, --jmcl-cols-m, --jmcl-gap, --jmcl-radius, --jmcl-ratio, --jmcl-pad, --jmcl-per-view, --jmcl-card-bg, --jmcl-accent, --jmcl-c1-size, --jmcl-c1-color, --jmcl-c2-color, --jmcl-badge-bg, --jmcl-badge-fg. On .jmcl-single: --jmcl-w (text width) and --jmcl-wide (top image width).

Template override

Classic themes: copy templates/single-content.php from the plugin to your-theme/jmarztech-content-layouts/single-content.php. Block themes get a plugin template named “Content Layouts: single” that you can edit in the Site Editor.

JavaScript

REST API

The admin app uses /wp-json/jmarztech/v1/layouts/…, authenticated with the standard WordPress REST nonce and the edit_posts / manage_options capabilities. Add routes with jmcl_rest_routes.