pramodjodhani/wp-block-framework

一个PHP框架,用于创建无需JS的Gutenberg块。

1.0.0 2022-09-18 17:12 UTC

This package is auto-updated.

Last update: 2024-09-19 17:02:17 UTC


README

使用WordPress Block Framework,您可以使用PHP创建WordPress块,而无需编写任何JavaScript代码。适用于创建简单的块和将短代码转换为块。将其视为ACF的可插入版本。

实际上,这个仓库是一个可工作的插件,演示了如何在插件中实现块框架。有关详细信息,请参阅 block-framework-example.php。

如何使用

步骤1A - 安装(使用composer)

composer require pramodjodhani/wp-block-framework

步骤1B - 安装(手动)

将整个仓库复制到您的主题或插件中。然后包含 block-framework/class-block-framework.php 文件。

include "./wp-block-framework/block-framework/class-block-framework.php";

步骤2

像调用WordPress函数 register_block_type 一样调用 WP_Block_Framework::register_block_type()

WP_Block_Framework::register_block_type(
	'wpbf-example/team-member',
	array(
		'title'    => 'Team member',
		'icon'     => 'groups',
		'category' => 'widgets',
		'keywords' => array( __( 'team' ), __( 'member' ), __( 'crew' ) ),
	)
);

您只需要包含 wpbf 参数,并在其中包含 templatefields 参数。

WP_Block_Framework::register_block_type(
	'wpbf-example/team-member',
	array(
		'title'    => 'Team member',
		'icon'     => 'groups',
		'category' => 'widgets',
		'keywords' => array( __( 'team' ), __( 'member' ), __( 'crew' ) ),
		'wpbf'     => array(
			'template' => dirname( __FILE__ ) . '/templates/team-member.php',
			'fields'   => array(
				array(
					'id'          => 'name',
					'type'        => 'text',
					'title'       => 'Name',
					'desc'        => 'Team Member name',
					'placeholder' => 'Name',
				),
				array(
					'id'          => 'position',
					'type'        => 'textarea',
					'title'       => 'Bio',
					'desc'        => 'Position in the company',
					'placeholder' => 'Ex. Head of marketing..',
				),
				array(
					'id'    => 'image',
					'type'  => 'image',
					'title' => 'Image',
					'desc'  => 'A nice Headshot.',
				),
			),
		),
	),
);

步骤3 创建模板

WPBF将加载我们在步骤2中提到的 template(/templates/team-member.php)。在您的主题/插件中创建此文件。

数据以 $attributes 变量的形式提供给模板。$attribute 是一个关联值数组,可以使用字段 id 来检索字段值,例如:$attributes['name']

<div class="team-member-wrap">
	<div class="team-member">
		<div class="team-member__photo">
			<?php if ( isset( $attributes['image'][0] ) ) { ?>
			<img src="<?php echo $attributes['image'][0]['sizes']['medium']['url']; ?>" alt="Team member photo">
			<?php } ?>
		</div>
		<div class="team-member__details">
			<h2><?php echo $attributes['name']; ?></h2>
			<small><?php echo $attributes['position']; ?></small>
		</div>
	</div>
</div>

就是这样 🕺

这里是这个块的工作状态

Recording #259

支持的字段类型

  • textarea
  • text
  • Password
  • date
  • select
  • toggle
  • radio
  • checkboxes
  • file
  • image
  • color
  • group(重复字段 🔁 )

即将推出功能

  • 支持 block.json
  • 条件字段
  • 改进UX