Skapa ett default pattern för en custom post type med kod för hybridtema i WP

Skapa en fil som heter inc/pattern.{cpt}-template.php i ditt CPT-tillägg.

Lägg till template till dina $args när du registrerar din CPT:

'template' => array(
		array(
			'core/pattern',
			array(
				'slug' => 'erik/{cpt}-template',
			),
		),
	),

Registrera därefter en custom pattern category och ett block pattern (jag brukar lägga det rakt under register_post_type() ):

/* Register your custom category */
function erik_register_pattern_categories() {
	if ( function_exists( 'register_block_pattern_category' ) ) {
		register_block_pattern_category(
			'template',
			array( 'label' => __( 'template', 'erik-cpt'   ) )
		);
	}
}

/* Register your block Pattern */
function erik_register_patterns() {
	if ( function_exists( 'register_block_pattern' ) ) {

		ob_start();
		include( 'inc/pattern.{cpt}-template.php');
		$pattern_{cpt}_template = ob_get_clean();

		register_block_pattern(
			'erik/{cpt}-template',
			array(
				'title'       => __( '{cpt} template', 'ipm-patterns' ),
				'description' => _x( 'Template blocks setup for {cpt}.', 'Block pattern description', 'erik-cpt' ),
				'categories' => ['template'],
				'content'     => $pattern_{cpt}_template,
			)
		);
	}
}

Lägg till ditt mönster till filen pattern.{cpt}-template.php du skapade tidigare. Använd Gutenberg-redigeraren för att skapa mönstret och välj sedan Kopiera alla block från menyn (tre vertikala prickar) längst uppe till höger. Klistra sedan in detta i filen (exempel nedan). Kopiera inte över PHP-kommentarerna överst.

Glöm inte att byta ut {cpt} till namnet på din posttyp (eller valfritt).

Notera att man bara kan ha ett mönster per posttyp (vad jag vet) och om man ändrar mönstret i efterhand så kommer inte befintliga poster att uppdateras.

<?php
/**
 * Title: A block template for {cpt}
 * Slug: erik/{cpt}-template
 * Inserter: false
 */
?>

<!-- wp:columns {"style":{"spacing":{"margin":{"bottom":"var:preset|spacing|30"}}},"marginBottom":"mb\u002d\u002dx2"} -->
<div class="wp-block-columns" style="margin-bottom:var(--wp--preset--spacing--30)"><!-- wp:column {"width":"33.33%"} -->
	<div class="wp-block-column" style="flex-basis:33.33%"></div>
	<!-- /wp:column -->

	<!-- wp:column {"width":"66.66%"} -->
	<div class="wp-block-column" style="flex-basis:66.66%"><!-- wp:paragraph {"className":"is-style-default"} -->
		<p class="is-style-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sit amet dapibus nibh. Mauris congue gravida velit, quis maximus leo molestie ut. Phasellus non nibh nunc. Donec efficitur leo nec tempor pulvinar. Nulla viverra pellentesque ultrices. Nam malesuada maximus facilisis. Proin felis tellus, lobortis nec pellentesque eu, sagittis non purus. Vivamus porta viverra felis, ut ornare velit. Vestibulum euismod eros lacus, eget posuere leo feugiat vel.</p>
		<!-- /wp:paragraph --></div>
	<!-- /wp:column --></div>
<!-- /wp:columns -->

<!-- wp:columns {"style":{"spacing":{"margin":{"bottom":"var:preset|spacing|30"}}}} -->
<div class="wp-block-columns" style="margin-bottom:var(--wp--preset--spacing--30)"><!-- wp:column -->
	<div class="wp-block-column"><!-- wp:image {"className":"full-width","fullWidth":true} -->
		<figure class="wp-block-image full-width"><img alt=""/></figure>
		<!-- /wp:image --></div>
	<!-- /wp:column -->

	<!-- wp:column -->
	<div class="wp-block-column"><!-- wp:image {"className":"full-width","fullWidth":true} -->
		<figure class="wp-block-image full-width"><img alt=""/></figure>
		<!-- /wp:image --></div>
	<!-- /wp:column --></div>
<!-- /wp:columns -->

<!-- wp:group {"style":{"spacing":{"margin":{"bottom":"var:preset|spacing|40"}}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group" style="margin-bottom:var(--wp--preset--spacing--40)"><!-- wp:image {"className":"full-width","fullWidth":true,"marginBottom":"mb\u002d\u002dx3"} -->
	<figure class="wp-block-image full-width"><img alt=""/></figure>
	<!-- /wp:image --></div>
<!-- /wp:group -->

Om du registrerar din posttyp i en klass så kör du patternfunktionerna i construct med:

public function __construct() {			
	add_action( 'init', array($this, 'erik_register_patterns') );
	add_action( 'init', array($this, 'erik_register_pattern_categories') );
}

Författare: Erik

Erik har jobbat med webb professionellt sedan 2008. Från 2005 till 2008 studerades webb på ING/JTH och dessförinnan skapades webb på all fritid. Första sajten byggdes någon gång mellan 1996-1998.