studiometa/wp-toolkit

为 Studio Meta 提供的 WordPress 工具。


README

Packagist Version License MIT Codecov

一个 PHP 工具包,可提升您的 WordPress 开发效率!🚀

安装

通过 Composer 安装此包

composer require studiometa/wp-toolkit

要求

  • PHP >=7.3

使用方法

// Create Custom Post Type
use Studiometa\WPToolkit\Builders\PostTypeBuilder;

$cpt = new PostTypeBuilder( 'product' );
$cpt->set_labels( 'Product', 'Products' )
  ->set_has_archive( true )
  ->register();

// Create Custom Taxonomy
use Studiometa\WPToolkit\Builders\TaxonomyBuilder;

$tax = new TaxonomyBuilder( 'product-cat' );
$tax->set_post_types( 'product' )
  ->set_labels( 'Product Category', 'Product Categories' )
  ->register();

// Create a manager
use Studiometa\WPToolkit\Managers\ManagerInterface;

class CustomManager implements ManagerInterface {
  run() {
    add_action( 'init', array( $this, 'some_action' ) );
  }

  some_action() {
    // do something on init
  }
}

// Init all managers
use Studiometa\WPToolkit\Managers\ManagerFactory;
use Studiometa\WPToolkit\Managers\AssetsManager;
use Studiometa\WPToolkit\Managers\CleanupManager;

ManagerFactory::init(
  array(
    new AssetsManager(),
    new CleanupManager(),
    new CustomManager()
  )
);

资产管理器

AssetsManager 管理器为您注册和排队资源执行重负载工作。它使用 YAML 格式的配置文件,如下所示

<template-name-or-all>:
  css:
    <asset-id>: <asset-path-in-theme>
  js:
    <asset-id>: <asset-path-in-theme>

如果与我们的 Webpack 配置包 一起使用,您还可以指定入口点和所有相关依赖项以进行注册和排队。

all:
  entries:
    - css/app.scss
    - js/app.js
new AssetsManager(
  get_template_directory() . '/config/assets.yml',
  get_template_directory() . '/dist/assets-manifest.json',
);

参数

  • $configuration_filepath (string):到 config.yml 文件的路径,默认为您的主题中的 config/assets.yml
  • $webpack_manifest_filepath (string),Webpack 资源清单文件的路径,默认为您的主题中的 dist/assets-manifest.json

辅助工具

与 WordPress 行为交互的函数。

插件辅助工具

use Studiometa\WPToolkit\Helpers\PluginHelper;
// Check if a specified plugin is enable.
use Studiometa\WPToolkit\Helpers\PluginHelper;
PluginHelper::is_plugin_enabled( 'my-plugin/my-plugin.php' );

临时清理器

使用方法

重要 临时密钥必须使用临时清理器前缀 (TransientCleaner::PREFIX) 进行前缀,才能进行跟踪。

use Studiometa\WPToolkit\TransientCleaner;

// 1. Set a transient with transient cleaner prefix.
if ( $my_condition ) {
  set_transient(
    TransientCleaner::PREFIX . 'transient_key',
    'example'
  );
}

// 2. Initialize transient cleaner.
$transient_cleaner = TransientCleaner::get_instance(
  array(
    'post'   => array(
      'all'           => array(
        TransientCleaner::PREFIX . 'transient_key',
      ),
      'post_type_key' => array(
        TransientCleaner::PREFIX . 'transient_key',
        TransientCleaner::PREFIX . 'transient_key_1',
      )
    ),
    'term'   => array(
      'all'                    => array(),
      'your_taxonomy_type_key' => array(),
      'category'               => array(),
    ),
    'option' => array(
      'all'             => array(),
      'option_key'      => array(),
      'blogdescription' => array(),
    ),
  )
);

// Update config if needed.
$transient_cleaner->set_config(array());

// 3. Insert/Update post/term/option to see your transients deleted based on your config.

贡献

运行测试

PHPUnit

# WP-tests must be installed before run PHPUnit (required a test MySQL database).
./bin/install-wp-tests.sh [dbname] [dbuser] [dbpasswd] [dbhost] [test_version]
composer run-script phpunit

可以在 ddev 中运行测试,ddev 在启动时预先配置 WordPress 环境

ddev start
ddev exec phpunit

要针对不同的 PHP 版本进行测试,您可以编辑 .ddev/config.yaml 文件并更改 php_version 属性。