1. Go to this page and download the library: Download grottopress/wordpress-suv library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
grottopress / wordpress-suv example snippets
// @ wp-content/plugins/my-plugin/app/MyPlugin.php
declare (strict_types = 1);
namespace Vendor;
use Vendor\MyPlugin\Setups;
use Vendor\MyPlugin\Utilities;
use GrottoPress\WordPress\SUV\AbstractPlugin;
final class MyPlugin extends AbstractPlugin
{
/**
* @var Utilities
*/
private $utilities;
protected function __construct()
{
$this->setups['Footer'] = new Setups\Footer($this);
// ...
}
protected function getUtilities(): Utilities
{
return $this->utilities = $this->utilities ?: new Utilities($this);
}
}
// @ wp-content/plugins/my-plugin/app/MyPlugin/Setups/Footer.php
declare (strict_types = 1);
namespace Vendor\MyPlugin\Setups;
use GrottoPress\WordPress\SUV\Setups\AbstractSetup;
final class Footer extends AbstractSetup
{
public function run()
{
\add_action('wp_footer', [$this, 'renderText']);
}
/**
* @action wp_footer
*/
public function renderText()
{
echo '<div class="useless-text">'.
$this->app->utilities->text->render().
'</div>';
}
}
// @ wp-content/plugins/my-plugin/app/MyPlugin/Utilities.php
declare (strict_types = 1);
namespace Vendor\MyPlugin;
use Vendor\MyPlugin;
use GrottoPress\Getter\GetterTrait;
class Utilities
{
use GetterTrait;
/**
* @var MyPlugin
*/
private $app;
/**
* @var Utilities\Text
*/
private $text;
public function __construct(MyPlugin $plugin)
{
$this->app = $plugin;
}
private function getApp(): MyPlugin
{
return $this->app;
}
private function getText(): Utilities\Text
{
return $this->text = $this->text ?: new Utilities\Text($this);
}
}
// @ wp-content/plugins/my-plugin/app/MyPlugin/Utilities/Text.php
declare (strict_types = 1);
namespace Vendor\MyPlugin\Utilities;
use Vendor\MyPlugin\Utilities;
use GrottoPress\Getter\GetterTrait;
class Text
{
use GetterTrait;
/**
* @var Utilities
*/
private $utilities;
public function __construct(Utilities $utilities)
{
$this->utilities = $utilities;
}
/**
* This is obviously a very trivial example. We could
* have just printed this directly in the footer setup's
* `renderText()` method.
*
* It is done here only for the purpose of demonstration,
* if you know what I mean.
*/
public function render(): string
{
return \esc_html__('Useless text', 'my-plugin');
}
}
// @ wp-content/plugins/my-plugin/app/helpers.php
declare (strict_types = 1);
use Vendor\MyPlugin;
function MyPlugin(): MyPlugin
{
return MyPlugin::getInstance();
}
\add_action('init', function () {
\remove_action('wp_footer', [\MyPlugin()->setups['Footer'], 'renderText']);
});