jmucak / wp-helpers-pack
wp主题的组件打包
v1.0.0
2024-10-03 09:54 UTC
Requires
- php: >=8.0
README
目录
项目信息
WordPress辅助包,用于自定义主题和插件开发
- 仓库:
https://github.com/jmucak/wp-helpers-pack
要求
- PHP > 8.1
- composer v2
安装
- 在您的自定义主题或插件文件夹中运行
composer require jmucak/wp-helpers-pack
功能
- 模板加载助手
- 资源提供者 => 注册CSS和JS
- 块提供者 => 注册自定义acf gutenberg块
- 文章类型提供者 => 注册自定义文章类型和分类法
- 文件助手
使用
模板加载助手
- 用于获取或加载主题或插件中的文件
- 它类似于WordPress load_template() 函数
function get_partial( string $path, array $data = array(), bool $html = false ): bool|string|null {
$file_path = TEMPLATE_PATH . 'partials/' . $path . '.php';
return TemplateLoaderHelper::get_instance()->get_partial( $file_path, $data, $html );
}
资源提供者
$config = array(
'assets' => array(
'wp_enqueue_scripts' => array(
'js' => array(
'jsHandle' => array(
'path' => '{PATH_TO_BUNDLE_JS}',
'version' => '1.0.0',
'localize' => array(
'object' => '{OBJECT_NAME}',
'data' => array(),
),
'timestamp_bust' => true, // dynamic version change
)
),
'css' => array(
'cssHandle' => array(
'path' => '{PATH_TO_BUNDLE_CSS}',
'in_footer' => false,
'version' => '1.0.0',
'timestamp_bust' => true, // dynamic version change
),
),
'admin_enqueue_scripts' => array(
'js' => array(
'jsHandle' => array(
'path' => '{PATH_TO_BUNDLE_JS}',
'version' => '1.0.0',
'localize' => array(
'object' => '{OBJECT_NAME}',
'data' => array(),
),
'timestamp_bust' => true, // dynamic version change
)
),
'css' => array(
'cssHandle' => array(
'path' => '{PATH_TO_BUNDLE_CSS}',
'in_footer' => false,
'version' => '1.0.0',
'timestamp_bust' => true, // dynamic version change
),
),
'enqueue_block_editor_assets' => array(
'js' => array(
'jsHandle' => array(
'path' => '{PATH_TO_BUNDLE_JS}',
'version' => '1.0.0',
'localize' => array(
'object' => '{OBJECT_NAME}',
'data' => array(),
),
'timestamp_bust' => true, // dynamic version change
)
),
'css' => array(
'cssHandle' => array(
'path' => '{PATH_TO_BUNDLE_CSS}',
'in_footer' => false,
'version' => '1.0.0',
'timestamp_bust' => true, // dynamic version change
),
),
)
),
'base_url' => get_template_directory_uri() . '/{ASSETS_FOLDER}/',
'base_path' => get_theme_file_path( '/{ASSETS_FOLDER}/' ),
);
add_action( 'wp_enqueue_scripts', array( new AssetProvider( $config ), 'register' ) );
注册块
$config = array(
'blocks' => array(
array(), // Block settings
)
'default_blocks' => array(
'core/paragraph',
'core/heading',
'core/image',
...
),
'categories' => array(
array(
'slug' => 'category-slug',
'title' => 'Category name'
)
),
);
ServiceProvider::register_blocks( $config );
注册文章类型和分类法
$service_provider = new ServiceProvider();
$service_provider->register_post_types( array(
'movie' => array() //CPT settings
) );
$service_provider->register_taxonomies( array(
'genre' => array() // Taxonomies settings
) );
注册REST路由
add_action( 'rest_api_init', array( $this, 'register_rest_route' ) );
public function register_rest_route(): void {
$config_data = array(
array(
'namespace' => {NAMESPACE},
'route' => {ROUTE},
'args' => array()
),
);
ServiceProvider::register_rest_routes( $config_data );
}