jmucak/wp-helpers-pack

wp主题的组件打包

v1.0.0 2024-10-03 09:54 UTC

This package is auto-updated.

Last update: 2024-10-03 09:55:34 UTC


README

目录

  1. 项目信息
  2. 要求
  3. 安装
  4. 功能
  5. 使用

项目信息

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 );
}