Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dwnload/wpsettingsapi
A PHP class abstraction that removes all the headaches of the WordPress settings API under the hood and builds a nice options panel on the fly.
https://github.com/dwnload/wpsettingsapi
package php php80 php81 wordpress wordpress-api wordpress-php-library wordpress-settings-api
Last synced: about 1 month ago
JSON representation
A PHP class abstraction that removes all the headaches of the WordPress settings API under the hood and builds a nice options panel on the fly.
- Host: GitHub
- URL: https://github.com/dwnload/wpsettingsapi
- Owner: dwnload
- Created: 2017-07-22T17:08:17.000Z (over 7 years ago)
- Default Branch: develop
- Last Pushed: 2024-04-25T16:14:00.000Z (7 months ago)
- Last Synced: 2024-04-25T20:17:25.195Z (7 months ago)
- Topics: package, php, php80, php81, wordpress, wordpress-api, wordpress-php-library, wordpress-settings-api
- Language: PHP
- Homepage: https://frosty.media/plugins/wp-settings-api/
- Size: 349 KB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Dwnload WordPress Settings Api
[![PHP from Packagist](https://img.shields.io/packagist/php-v/dwnload/wp-settings-api.svg)]()
[![Latest Stable Version](https://img.shields.io/packagist/v/dwnload/wp-settings-api.svg)](https://packagist.org/packages/dwnload/wp-settings-api)
[![Total Downloads](https://img.shields.io/packagist/dt/dwnload/wp-settings-api.svg)](https://packagist.org/packages/dwnload/wp-settings-api)
[![License](https://img.shields.io/packagist/l/dwnload/wp-settings-api.svg)](https://packagist.org/packages/dwnload/wp-settings-api)
![Build Status](https://github.com/dwnload/WpSettingsApi/actions/workflows/main.yml/badge.svg)
[![codecov](https://codecov.io/gh/dwnload/WpSettingsApi//branch/develop/graph/badge.svg)](https://codecov.io/gh/dwnload/WpSettingsApi/)It's a PHP class wrapper for handling WordPress [Settings API](http://codex.wordpress.org/Settings_API).
## Package Installation (via Composer)
To install this package, edit your `composer.json` file:
```json
{
"require": {
"dwnload/wp-settings-api": "^3.8"
}
}
```Now run:
`$ composer install dwnload/wp-settings-api`
Usage Example
---------------@see [examples/Example.php](https://github.com/dwnload/WpSettingsApi/tree/master/examples/Example.php)
#### Suggested package
⭐️ `frontpack/composer-assets-plugin`
**As of v3.2.1**, this shouldn't be needed any more (unless you are filtering local assets only). Assets will now
be loaded via the jsdelivr CDN.**Otherwise**, since this is a PHP package and not a WordPress plugin the assets included can't be loaded properly.
In order to have the settings page inherit the styles and use the proper JS, you've got to copy the
`/assets` directory to your plugin or theme. Then add the following to filter the asset src to your
directory:```php
getHandle()) {
case WpSettingsApi::ADMIN_SCRIPT_HANDLE:
/**
* If you're not using the `TheFrosty\WpUtilities\Plugin\AbstractHookProvider`
* use `plugins_url()` in place of the `$this->getPlugin()->getUrl` or any other WP
* function that will point to the asset.
* (Should match `frontpack/composer-assets-plugin configs`)
*/
$scripts[$key]->setSrc($this->getPlugin()->getUrl('assets/js/admin.js'));
break;
case WpSettingsApi::ADMIN_MEDIA_HANDLE:
/**
* If you're not using the `TheFrosty\WpUtilities\Plugin\AbstractHookProvider`
* use `plugins_url()` in place of the `$this->getPlugin()->getUrl` or any other WP
* function that will point to the asset.
* (Should match `frontpack/composer-assets-plugin configs`)
*/
$scripts[$key]->setSrc($this->getPlugin()->getUrl('assets/js/wp-media-uploader.js'));
break;
}
$this->registerScript($script);
});
return $scripts;
}
/**
* The default style needs to be moved from the vendor directory somewhere into our app since the
* vendor directory is outside of the doc root.
* @param Style[] $styles
* @return array
*/
public function adminStyles(array $styles): array
{
\array_walk($styles, function (Style $style, int $key) use (&$styles) {
if ($style->getHandle() === WpSettingsApi::ADMIN_STYLE_HANDLE) {
/**
* If you're not using the `TheFrosty\WpUtilities\Plugin\AbstractHookProvider`
* use `plugins_url()` in place of the `$this->getPlugin()->getUrl` or any other WP
* function that will point to the asset.
*/
$styles[$key]->setSrc($this->getPlugin()->getUrl('assets/css/admin.css'));
$this->registerStyle($style);
}
});
return $styles;
}
/**
* If the script is not registered before being returned back to the filter the src still uses
* the vendor directory file path.
* @param Script $script
*/
private function registerScript(Script $script): void
{
\wp_register_script(
$script->getHandle(),
$script->getSrc(),
$script->getDependencies(),
$script->getVersion(),
$script->getInFooter()
);
}
/**
* If the style is not registered before being returned back to the filter the src still uses
* the vendor directory file path.
* @param Style $style
*/
private function registerStyle(Style $style): void
{
\wp_register_style(
$style->getHandle(),
$style->getSrc(),
$style->getDependencies(),
$style->getVersion(),
$style->getMedia()
);
}
}
```