{"id":18841279,"url":"https://github.com/dmhendricks/wordpress-mu-common-toolkit","last_synced_at":"2026-05-01T17:35:31.848Z","repository":{"id":88694436,"uuid":"163709327","full_name":"dmhendricks/wordpress-mu-common-toolkit","owner":"dmhendricks","description":"A must use (MU) plugin for WordPress that contains helper functions, snippets and a configuration registry.","archived":false,"fork":false,"pushed_at":"2020-07-31T11:39:07.000Z","size":72,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-15T12:56:34.493Z","etag":null,"topics":["configuration-management","emojis","enqueue-scripts","mu-plugin","wordpress","wordpress-amp","wordpress-development","wordpress-mu-plugin"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmhendricks.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":"2019-01-01T02:43:48.000Z","updated_at":"2024-09-24T23:54:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"9aa79bd0-db88-4138-961b-6023e51acb06","html_url":"https://github.com/dmhendricks/wordpress-mu-common-toolkit","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhendricks%2Fwordpress-mu-common-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhendricks%2Fwordpress-mu-common-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhendricks%2Fwordpress-mu-common-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhendricks%2Fwordpress-mu-common-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmhendricks","download_url":"https://codeload.github.com/dmhendricks/wordpress-mu-common-toolkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239780122,"owners_count":19695734,"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":["configuration-management","emojis","enqueue-scripts","mu-plugin","wordpress","wordpress-amp","wordpress-development","wordpress-mu-plugin"],"created_at":"2024-11-08T02:50:38.761Z","updated_at":"2026-01-30T09:30:17.916Z","avatar_url":"https://github.com/dmhendricks.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Author](https://img.shields.io/badge/author-Daniel%20M.%20Hendricks-lightgrey.svg?colorB=9900cc\u0026style=flat-square)](https://www.danhendricks.com/?utm_source=github.com\u0026utm_medium=campaign\u0026utm_content=button\u0026utm_campaign=dmhendricks%2Fwordpress-mu-common-toolkit)\n[![License](https://img.shields.io/github/license/dmhendricks/wordpress-mu-common-toolkit.svg?style=flat-square)](https://github.com/dmhendricks/wordpress-mu-common-toolkit/blob/master/LICENSE)\n[![DigitalOcean](https://img.shields.io/badge/hosting-Digital%20Ocean-green.svg?style=flat-square\u0026label=hosting\u0026colorB=0152FF)](https://m.do.co/t/8a88362f5683?utm_source=github.com\u0026utm_medium=campaign\u0026utm_content=referral\u0026utm_campaign=dmhendricks%2Fwordpress-mu-common-toolkit)\n[![Twitter](https://img.shields.io/twitter/url/https/github.com/dmhendricks/wordpress-mu-common-toolkit.svg?style=social)](https://twitter.com/danielhendricks)\n[![BrowserStack](https://img.shields.io/static/v1?style=social\u0026label=BrowserStack\u0026message=Passed\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzQ5NjEyQzJDMzUxMTFFOTlBNkZDNEVGRUQ3QUI4RDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzQ5NjEyQzNDMzUxMTFFOTlBNkZDNEVGRUQ3QUI4RDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NDk2MTJDMEMzNTExMUU5OUE2RkM0RUZFRDdBQjhEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NDk2MTJDMUMzNTExMUU5OUE2RkM0RUZFRDdBQjhEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhdfVWUAAAGAUExURXjIMP/Rhf/Xn4mHhwpRXnrY8CIXFv41Sk68OACv2QC+6svIAP5oEAC+6H7ToKa3nP9fF//AT/+tfPjVzpTPHf+6Rf1GLcbVAJDd8P/9+v/qyf/EY/+mNXHLidKyF126Mv/26anm8/+8TP/68P1jAFHO8lPAYu+SDqrh7v+xR/0eOgC/rIGvM7SvI9qKjAC+6lG5wf+SM/+2mOGnGf8NMgCcvLLEw5OZOv0yMfvARRfD7v+VSf9lZ/9mOqTs9lvAQ/+EK/+VY7Hr/f+cN0+7Lb2FMuqFG7tuOv9jEOCLLP93JKzj+ZDYwwC9s2LLrQB8k/9wEv+4R/9oD5/g1b3iAACtygCJo//w6MnHyPM5M+h3NuVyfcLPZP9MWKOYXMevu/+Xn5HG06nWAwDG8pzn6//lsZ/l85rik/+def/38fNoILPS3/1tF/+3Zf+sROmuICWPq3edprrG0VTW26jn/EhteD7CN9ibbgC8t/96NPmLQIjPY/9CKSQfIP///////+tAimMAAACAdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AOAVLZwAAAj9JREFUeNpU0vtb0lAYB/CzCTgeDrQpGwyUyzZwwwyBmTRNELwgkYpQZkUXumktyrJ13eFf9z0CZd8ftufZZ9/znPOcFw1HIWezp+u9Xm/9xaw8nASNXsczfNk0c2VJOjGni2fXkRQ1KWeWdxKBSCSS2DuZZslflDepPX76LrS/P/+7343slWfkMRJque+djGXlIcuo301IH+URFjU+Z97ayAAEIfl8NtxN3GUIxWMNS+aTDS/QysHBij8YXOTC3b21N4DkFIrTH95alt/j+nw+z0owmE32A78UdYhS2JZg0aiV9/hc1zc1C7q4hbolgx0ilgd8vuG1HoK5rkxcT/B+kusHDEFGm5ot5b6kvZbnCh9Nua7/R5ILR9piDP3EVxgdowtPPzRR5I7IIpvi7bSeGSPEvzhCBjUp3rjQo5/H6PO8mt8CbCtxuixvPnut695J1f+1wnHhgAG4pmG7vBu6p6ej367O+cALRa7/SQQsahjzJ8kWaPrl+fmy9yIEVgnUBdhQ7BBj+8+uE9KBa7WaTntcf2EgwFHkAlSxtOpkQ61OpxWqUAuXqoKiyIgwUMVHoFtcpcJRclAJG7AqQUN1DlPlt5OO44A4laUFvi4oYgqujLB1qrjxfnv1JmRp54gvgMGowGXL8blDnpYbDfpPg7dpLy6PZkgVjCrW8Cg8rhpggjqZPjUuGoWmDWQ3CwOB9tR/cyuzoqC0B4OBoVASWfn6UJMUo4gAVBQmRf6beGA1xsQVJc7EVDL5dinAAO2UucfjcPEkAAAAAElFTkSuQmCC)](https://browserstack.com/?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=link\u0026utm_campaign=dmhendricks%2Fwordpress-mu-common-toolkit)\n\n# WordPress Common Toolkit MU Plugin\n\nA simple [MU plugin](https://codex.wordpress.org/Must_Use_Plugins) for WordPress that adds functionality that I use on web site projects, including a [configuration registry](#getting-configuration-values).\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n\t- [Sample](#sample)\n\t- [Caching JSON Config File](#caching-json-config-file)\n- [Usage Examples](#usage-examples)\n- [Environment Filter](#environment-filter)\n- [Action Hook](#action-hook)\n- [Shortcodes](#shortcodes)\n\n## Installation\n\nSimply copy the `common-toolkit.php` file to your `wp-content/mu-plugins` directory (create one if it does not exist).\n\n### Requirements\n\n- **PHP 5.4+** (via JSON config file) and **PHP 7.x** (via array _or_ JSON file)\n- WordPress 4.7 or higher\n\n## Configuration\n\nAll variables are optional.\n\n| **Variable**              | **Description**                                                                                                          | **Type**          | **Default**   |\n|---------------------------|--------------------------------------------------------------------------------------------------------------------------|-------------------|---------------|\n| `environment`             | Environment of current instance (ex: 'production', 'development', 'staging')                                             | string            | \"production\"  |\n| `environment_constant`    | Constant used to determine environment, environmental variable name for `getenv()`.                                      | string            | \"WP_ENV\"      |\n| `environment_production`  | The label used to match if production environment.                                                                       | string            | \"production\"  |\n| `admin_bar_color`         | Change admin bar color in current environment                                                                            | string            | _null_        |\n| `disable_emojis`          | Remove support for emojis                                                                                                | bool              | false         |\n| `disable_php_update_nag`  | Removes the \"PHP Update Required\" dashboard widget/notice                                                                | bool              | false         |\n| `disable_search`          | Disable WordPress site search                                                                                            | bool              | false         |\n| `disable_site_health`     | Disable site health notifications, widgets and menu                                                                      | bool              | false         |\n| `disable_updates`         | Disable WordPress core, plugin and/or theme updates. Values: _core_, _plugin_, _theme_; `true` for all                   | bool/string/array | false         |\n| `disable_xmlrpc`          | Disable XML-RPC                                                                                                          | bool              | false         |\n| `feed_links`              | Include RSS feed links in page head                                                                                      | bool              | true          |\n| `heartbeat`               | Modify or disable the WordPress heartbeat. Set to integer to change, `false` to disable                                  | bool/int          | _null_        |\n| `set_login_errors`        | Hide or change login error messages to mitigate brute force attacks and username phishing                                | bool/string       | _null_        |\n| `howdy_message`           | Change (string) or remove (`false`/_null_) Howdy message in WP admin bar                                                 | bool/string/null  | true          |\n| `meta_generator`          | Enable or change meta generator tags in page head and RSS feeds                                                          | bool/string       | false         |\n| `script_attributes`       | Enable support for [additional attributes](#add-attributes-to-enqueued-scripts) to script tags via wp_enqueue_script()   | bool              | flase         |\n| `shortcodes`              | Enable custom [shortcodes](#shortcodes) created by this class                                                            | bool              | false         |\n| `windows_live_writer`     | Enable [Windows Live Writer](https://is.gd/Q6KjEQ) support                                                               | bool              | true          |\n\n### Sample\n\n#### Via Configuration File (PHP 5.6 or higher)\n\nThis is the preferred method if you wish to avoid having a complex array in your `wp-config.php`:\n\n```php\n// Load configuration from a file in webroot.\ndefine( 'CTK_CONFIG', 'sample-config.json' );\n\n// Load configuration from a file off of the parent directory of webroot\ndefine( 'CTK_CONFIG', '../conf/sample-config.json' );\n```\n\nSee [sample-config.json](https://github.com/dmhendricks/wordpress-mu-common-toolkit/blob/master/sample-config.json) for example.\n\n#### Via Array (PHP 7 or higher)\n\nRather than using a JSON file for configuration, you can set `CTK_CONFIG` to an array of valyes in `wp-config.php`:\n\n```php\ndefine( 'CTK_CONFIG', [ 'disable_emojis' =\u003e true, 'admin_bar_color' =\u003e '#336699', 'script_attributes' =\u003e true, 'meta_generator' =\u003e 'Atari 2600' ] );\n```\n\n### Caching JSON Config File\n\nIf your WordPress Instance has caching enabled, you can configure this plugin to cache the contents of your configuration JSON file with a constant in `wp-config.php`:\n\n```php\ndefine( 'CTK_CACHE_EXPIRE', 120 ); // In seconds\n```\n\n### Getting Configuration Values\n\nYou can use the `ctk_config` filter to retrieve values from the config registry (including custom). Using [sample-config.json](https://github.com/dmhendricks/wordpress-mu-common-toolkit/blob/master/sample-config.json) as an example:\n\n```php\n// Get meta generator value\n$meta_generator = apply_filter( 'ctk_config', 'common_toolkit/meta_generator' );\n\n// Get single custom variable\n$ny_var = apply_filter( 'ctk_config', 'my_custom_variable' );\n\n// Get an array of classic books\n$classic_books = apply_filter( 'ctk_config', 'nested_example/books/classics' );\n\n// Get entire config registry as associative array\n$config = apply_filter( 'ctk_config', null );\n```\n\nYou can add any variable you want to make available to your site's themes and plugins.\n\n## Usage Examples\n\n### WordPress Environment\n\nYou can set your instance environment using the following methods (in order of precedence; defaults to \"production\" if not set using any of the following methods):\n\n#### 1. Define a Constant in `wp-config.php`\n\n```php\ndefine( 'WP_ENV', 'staging' );\n```\n\nIf you wish to use a different constant name, you can set the `environment_constant` in the config:\n\n```php\ndefine( 'MY_ENVIRONMENT', 'development' );\ndefine( 'CTK_CONFIG', [ 'environment_constant' =\u003e 'MY_ENVIRONMENT' ] );\n```\n\nThis will also change the name of the environmental variable used to retrieve the environment:\n\n```php\necho getenv( 'MY_ENVIRONMENT' ); // Result: development\n// ...or:\necho apply_filters( 'ctk_environment', null ); // Result: development\n```\n\n#### 2. Define `environment` Variable in Config\n\nSetting:\n\n```php\ndefine( 'CTK_CONFIG', [ 'environment' =\u003e 'staging' ] );\n```\n\nGetting:\n\n```php\necho getenv( 'WP_ENV' ); // Result: staging\n// ...or:\necho apply_filters( 'ctk_environment', null ); // Result: staging\n```\n\nIf not defined, \"production\" is returned.\n\n### Add Attributes to Enqueued Scripts\n\nExamples:\n\n```php\nwp_enqueue_script( 'script-async-with-preload-example', get_template_directory_uri() . '/assets/js/script.js#async,preload' );\nwp_enqueue_script( 'script-defer-example', get_template_directory_uri() . '/assets/js/script.js#defer' );\nwp_enqueue_script( 'script-custom-attributes', 'https://cdn.ampproject.org/v0/amp-audio-0.1.js?custom_attribute[]=custom-element|amp-audio#async' );\n\nwp_enqueue_style( 'stylesheet-with-preload', get_template_directory_uri() . '/assets/css/style.css#preload' );\n```\n\nResult:\n\n```html\n\u003clink href=\"https://example.com/wp-content/themes/my-theme/assets/js/script.js?ver=5.0.0\" rel=\"preload\" as=\"script\" /\u003e\n\u003cscript async src=\"https://example.com/wp-content/themes/my-theme/assets/js/script.js?ver=5.0.0\"\u003e\u003c/script\u003e\n\u003cscript defer src=\"https://example.com/wp-content/themes/my-theme/assets/js/script.js?ver=5.0.0\"\u003e\u003c/script\u003e\n\u003cscript async custom-element=\"amp-audio\" src=\"https://cdn.ampproject.org/v0/amp-audio-0.1.js?ver=5.0.0\"\u003e\u003c/script\u003e\n\n\u003clink href=\"https://example.com/wp-content/themes/my-theme/assets/css/style.css?ver=5.0.0\" rel=\"preload\" as=\"style\" /\u003e\n\u003clink rel=\"stylesheet\" id=\"stylesheet-with-preload-css\" href=\"https://example.com/wp-content/themes/my-theme/assets/css/style.css?ver=5.0.0\" type=\"text/css\" /\u003e\n```\n\n### Change Admin Bar Color\n\nUseful for distinguishing browser windows among different environments. Defined in `wp-config.php`:\n\n```php\ndefine( 'CTK_CONFIG', [ 'admin_bar_color' =\u003e '#336699' ] );\n```\n\n### Build URL Parsed With parsed_url()\n\nThis function reverses the result of [`parse_url()`](http://php.net/manual/en/function.parse-url.php):\n\n```php\n$parse_uri = parse_url( 'https://example.com/?hello=world#hash );\n$parse_uri['fragment'] = 'newhash';\n$uri = \\MU_Plugins\\CommonToolkit::build_url( $parse_uri );\n```\n\n### Disable WordPress Core, Plugin and/or Theme Updates\n\nYou can disable any of the update notifications or specific. It accepts string, boolean or an array of values. Examples:\n\n```php\n// Disable all update notifications\ndefine( 'CTK_CONFIG', [ 'disable_updates' =\u003e true ] ); // boolean\n\n// Disable WordPress core and theme updates only (not plugins)\ndefine( 'CTK_CONFIG', [ 'disable_updates' =\u003e [ 'core', 'theme' ] ] ); // array\n\n// Disable only plugin updates updates\ndefine( 'CTK_CONFIG', [ 'disable_updates' =\u003e 'plugin' ] ); // string\n```\n\n## Hide or Change Login Errors\n\nTo help prevent user enumeration/phishing for brute for attacks, you can change the WordPress login errors to something more generic by defining `set_login_errors`. This value can be a string or boolean:\n\n| **Value**  | **Result**                                                                                                 |\n|---------------------------|---------------------------------------------------------------------------------------------|\n| _null_     | Leaves the default WordPress messages in place                                                             |\n| `false`    | Hide/disables login error messages completely                                                              |\n| `true`     | Changes the login messages to a generic \"Login failed.\" (English only)                                     |\n| _string_   | Changes the login message to your own string, particularly useful if your default language is not English. |\n\n:pushpin: You can use `%s` in your string, which will be replaced with the reset password URL. Example:\n\n```php\ndefine( 'CTK_CONFIG', [ 'set_login_errors' =\u003e '\u003cstrong\u003eERROR\u003c/strong\u003e: Invalid credentials. \u003ca href=\"%s\"\u003eLost your password\u003c/a\u003e?' ] );\n```\n\n## Environment Filter\n\nYou can alternately retrieve the current environment using the `ctk_environment` filter:\n\n```php\necho apply_filters( 'ctk_environment', null ); // 'production', 'staging', etc\n```\n\nYou can also pass `is_production` to determine if we're currently in production more. It compares the value of your environment (defined above) with the value of `common_toolkit/environment_production` (which defaults to \"production\"). In this way, you can set your production label/string value to whatever you like.\n\nDetermining if in production mode using **defaults**:\n\n```php\nif( apply_filters( 'ctk_environment', 'is_production' ) ) {\n   // Do something intended only for production\n} else {\n   // Do something else\n}\n```\n\nAs noted above, you can change the string comparison of what is considered production in config. For example, if you wanted to use \"live\" instead of \"production\":\n\n```php\ndefine( 'CTK_CONFIG', [ 'environment_production' =\u003e 'live' ] );\n\n// Result: true\ndefine( 'WP_ENV', 'live' ); // wp-config.php\nvar_dump( apply_filters( 'ctk_environment', 'is_production' ) );\n\n// Result: false\ndefine( 'WP_ENV', 'staging' ); // wp-config.php\nvar_dump( apply_filters( 'ctk_environment', 'is_production' ) );\n```\n\nThis special filter value is provided solely for convenience. You may, of course, do a manual comparison:\n\n```php\nif( getenv( 'WP_ENV' ) == 'production' ) { // Replace variable with value of `environment_constant`, if set\n   // Do something intended only for production\n} else {\n   // Do something else\n}\n```\n\n\n## Action Hook\n\nIf you want to perform some logic only if this script is loaded, you can use the `common_toolkit_loaded` action hook (which executes during the [init](https://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_a_Typical_Request) phase).\n\n```php\nadd_action( 'common_toolkit_loaded', function() {\n\t// Do something if common toolkit is loaded ...\n\tvar_dump( apply_filters( 'ctk_config', null ) );\n});\n```\n\n## Shortcodes\n\n### `[get_datetime]`\n\nReturns a formatted date in WordPress configured timezone. Defaults to current date/time in MySQL format. Enabling:\n\n```php\ndefine( 'CTK_CONFIG', [ 'shortcodes' =\u003e true ] );\n```\n\nUsage:\n\n```\nCopyright \u0026copy;[get_datetime format=\"Y\"] Your Company\nCurrent date/time: [get_datetime]\n```\n\nSee PHP's [`date()`](https://php.net/date) function for formatting options.\n\n[![Analytics](https://ga-beacon.appspot.com/UA-67333102-2/dmhendricks/wordpress-mu-common-toolkit?flat)](https://github.com/igrigorik/ga-beacon/?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=button\u0026utm_campaign=dmhendricks%2Fwordpress-mu-common-toolkit)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmhendricks%2Fwordpress-mu-common-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmhendricks%2Fwordpress-mu-common-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmhendricks%2Fwordpress-mu-common-toolkit/lists"}