{"id":14955176,"url":"https://github.com/studiometa/wp-toolkit","last_synced_at":"2025-10-24T07:30:55.588Z","repository":{"id":48672562,"uuid":"313559048","full_name":"studiometa/wp-toolkit","owner":"studiometa","description":"🚀 A PHP toolkit to boost your WordPress development! ","archived":false,"fork":false,"pushed_at":"2024-11-07T10:58:46.000Z","size":331,"stargazers_count":9,"open_issues_count":3,"forks_count":0,"subscribers_count":11,"default_branch":"develop","last_synced_at":"2025-01-29T08:34:34.596Z","etag":null,"topics":["wordpress","wordpress-development"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/studiometa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-17T08:48:06.000Z","updated_at":"2024-11-07T10:58:23.000Z","dependencies_parsed_at":"2023-10-20T11:01:45.520Z","dependency_job_id":"57c4ad13-e758-4fa7-a409-3f18b35a3d7e","html_url":"https://github.com/studiometa/wp-toolkit","commit_stats":{"total_commits":117,"total_committers":6,"mean_commits":19.5,"dds":0.3504273504273504,"last_synced_commit":"8ebc259cb18e50f694fd556dc78e136c74a3cbb6"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studiometa%2Fwp-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studiometa%2Fwp-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studiometa%2Fwp-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studiometa%2Fwp-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/studiometa","download_url":"https://codeload.github.com/studiometa/wp-toolkit/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237932070,"owners_count":19389560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wordpress","wordpress-development"],"created_at":"2024-09-24T13:10:37.017Z","updated_at":"2025-10-24T07:30:55.165Z","avatar_url":"https://github.com/studiometa.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WordPress toolkit\n\n[![Packagist Version](https://img.shields.io/github/v/release/studiometa/wp-toolkit?include_prereleases\u0026label=packagist\u0026style=flat-square)](https://packagist.org/packages/studiometa/wp-toolkit)\n[![License MIT](https://img.shields.io/packagist/l/studiometa/wp-toolkit?style=flat-square)](https://packagist.org/packages/studiometa/wp-toolkit)\n[![Codecov](https://img.shields.io/codecov/c/github/studiometa/wp-toolkit?style=flat-square)](https://codecov.io/gh/studiometa/wp-toolkit/)\n\n\u003e A PHP toolkit to boost your WordPress development! 🚀\n\n## Installation\n\nInstall the package via Composer:\n\n```bash\ncomposer require studiometa/wp-toolkit\n```\n\n**Requirements**\n\n- PHP \u003e=7.3\n\n## Usage\n\n```php\n// Create Custom Post Type\nuse Studiometa\\WPToolkit\\Builders\\PostTypeBuilder;\n\n$cpt = new PostTypeBuilder( 'product' );\n$cpt-\u003eset_labels( 'Product', 'Products' )\n  -\u003eset_has_archive( true )\n  -\u003eregister();\n\n// Create Custom Taxonomy\nuse Studiometa\\WPToolkit\\Builders\\TaxonomyBuilder;\n\n$tax = new TaxonomyBuilder( 'product-cat' );\n$tax-\u003eset_post_types( 'product' )\n  -\u003eset_labels( 'Product Category', 'Product Categories' )\n  -\u003eregister();\n\n// Create a manager\nuse Studiometa\\WPToolkit\\Managers\\ManagerInterface;\n\nclass CustomManager implements ManagerInterface {\n  run() {\n    add_action( 'init', array( $this, 'some_action' ) );\n  }\n\n  some_action() {\n    // do something on init\n  }\n}\n\n// Init all managers\nuse Studiometa\\WPToolkit\\Managers\\ManagerFactory;\nuse Studiometa\\WPToolkit\\Managers\\AssetsManager;\nuse Studiometa\\WPToolkit\\Managers\\CleanupManager;\n\nManagerFactory::init(\n  array(\n    new AssetsManager(),\n    new CleanupManager(),\n    new CustomManager()\n  )\n);\n```\n\n## AssetsManager\n\nThe `AssetsManager` manager does the heavy lifting of registering and enqueuing assets for you. It works with a configuration file in YAML with the following format:\n\n```yaml\n\u003ctemplate-name-or-all\u003e:\n  css:\n    \u003casset-id\u003e: \u003casset-path-in-theme\u003e\n  js:\n    \u003casset-id\u003e: \u003casset-path-in-theme\u003e\n```\n\nIf used with our [Webpack configuration package](https://github.com/studiometa/webpack-config), you can also specify entrypoints and all their dependencies to be registered and enqueued.\n\n```yaml\nall:\n  entries:\n    - css/app.scss\n    - js/app.js\n```\n\n```php\nnew AssetsManager(\n  get_template_directory() . '/config/assets.yml',\n  get_template_directory() . '/dist/assets-manifest.json',\n);\n```\n\n### Parameters\n\n- `$configuration_filepath` (`string`): path to the `config.yml` file, defaults to `config/assets.yml` in your theme.\n- `$webpack_manifest_filepath` (`string`), path to the Webpack assets manifest file, defaults to `dist/assets-manifest.json` in your theme.\n\n## Helpers\n\nFunctions to interact with WordPress behaviour.\n\n### Plugin helper\n\n```php\nuse Studiometa\\WPToolkit\\Helpers\\PluginHelper;\n// Check if a specified plugin is enable.\nuse Studiometa\\WPToolkit\\Helpers\\PluginHelper;\nPluginHelper::is_plugin_enabled( 'my-plugin/my-plugin.php' );\n```\n\n## Transient Cleaner\n\n### Usage\n\n\u003e **Important** Transients keys must be prefixed with transient cleaner prefix (`TransientCleaner::PREFIX`) to be tracked.\n\n```php\nuse Studiometa\\WPToolkit\\TransientCleaner;\n\n// 1. Set a transient with transient cleaner prefix.\nif ( $my_condition ) {\n  set_transient(\n    TransientCleaner::PREFIX . 'transient_key',\n    'example'\n  );\n}\n\n// 2. Initialize transient cleaner.\n$transient_cleaner = TransientCleaner::get_instance(\n  array(\n    'post'   =\u003e array(\n      'all'           =\u003e array(\n        TransientCleaner::PREFIX . 'transient_key',\n      ),\n      'post_type_key' =\u003e array(\n        TransientCleaner::PREFIX . 'transient_key',\n        TransientCleaner::PREFIX . 'transient_key_1',\n      )\n    ),\n    'term'   =\u003e array(\n      'all'                    =\u003e array(),\n      'your_taxonomy_type_key' =\u003e array(),\n      'category'               =\u003e array(),\n    ),\n    'option' =\u003e array(\n      'all'             =\u003e array(),\n      'option_key'      =\u003e array(),\n      'blogdescription' =\u003e array(),\n    ),\n  )\n);\n\n// Update config if needed.\n$transient_cleaner-\u003eset_config(array());\n\n// 3. Insert/Update post/term/option to see your transients deleted based on your config.\n```\n\n## Contribute\n\n### Run tests\n\n#### PHPUnit\n\n```bash\n# WP-tests must be installed before run PHPUnit (required a test MySQL database).\n./bin/install-wp-tests.sh [dbname] [dbuser] [dbpasswd] [dbhost] [test_version]\ncomposer run-script phpunit\n```\n\nTests can be run in ddev which preconfigures the WordPress environment when starting:\n\n```bash\nddev start\nddev exec phpunit\n```\n\nTo test against different PHP version, you can edit the `.ddev/config.yaml` file and change the `php_version` property.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudiometa%2Fwp-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudiometa%2Fwp-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudiometa%2Fwp-toolkit/lists"}