1. Go to this page and download the library: Download brightnucleus/shortcodes 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/ */
brightnucleus / shortcodes example snippets
use BrightNucleus\Config\ConfigFactory;
use BrightNucleus\Shortcode\ShortcodeManager;
$config = ConfigFactory::create( __DIR__ . '/../config/example_config.php');
$shortcode_manager = new ShortcodeManager(
$config->getSubConfig( 'ShortcodeManager' )
);
$shortcode_manager->register();
$shortcodes_config = [
/* For each shortcode you wish to define, you'll need one separate entry at
* the root config entry passed in to ShortcodeManager. The name of that
* entry is used as the shortcode tag.
*/
'shortcode_tag' => [
/* Path to a template that is used to render the shortcode.
* The path is relative to the configuration file.
*/
'view' => __DIR__ . '/../views/shortcodes/view_file.php',
/* Customised ShortcodeInterface implementation. (optional)
* You can use this to completely customize the standard shortcode
* class behavior.
* Omit to use default `Shortcode` class.
* This can be either a fully qualified class name or a callable.
*/
'custom_class' => '\BrightNucleus\Shortcodes\Shortcode',
/* Customised ShortcodeAttsParserInterface implementation. (optional)
* You can use this to completely customize the way shortcode attributes
* are parsed.
* Omit to use default `ShortcodeAttsParser` class.
* This can be either a fully qualified class name or a callable.
*/
'custom_atts_parser' => '\BrightNucleus\Shortcodes\ShortcodeAttsParser',
/* Collection of attributes that can be used with the shortcode.
* These attributes will be processed by the
* `ShortcodeAttsParserInterface` implementation that is being used.
*/
'atts' => [
/* Shortcode attribute name.
* These are the optional attributes that you can append to your
* shortcode within the WP editor: [shortcode att_name='value'].
* NB: lower-cased by WP, so no camelCase or UPPER_CASE.
*/
'attribute_name' => [
/* Provided that you use the default `ShortcodeAttsParser`
* implementation, you can define a `default` value for each
* attribute, as well as an optional `validate` callable that
* gets evaluated to a boolean.
*/
'default' => 'default_value',
'validate' => function ( $att ) {
return some_validation_function( $att );
},
],
],
/* Customised ShortcodeUIInterface implementation. (optional)
* You can use this to completely customize the standard shortcode
* user interface class behavior.
* Omit to use default `ShortcodeUI` class.
* This can be either a fully qualified class name or a callable.
*/
'custom_ui' => '\BrightNucleus\Shortcodes\ShortcodeUI',
/* Besides one additional keys that ShortcodeManager recognizes, the
* 'ui' subkey gets passed as is to the Shortcake UI plugin.
* Refer to the Shortcake documentation for details about the syntax:
* https://github.com/wp-shortcake/shortcake/wiki/Registering-Shortcode-UI
*/
'ui' => [
/* Whether the shortcode UI (along with its dependencies) is needed
* within the current context or not. If this is a callable, it gets
* executed and its result evaluated to boolean.
*/
'is_needed' => function ( $context ) {
return true;
},
// [ Shortcake configuration keys. ]
],
]
];
namespace Example\Plugin;
/* ShortcodeManager configuration.
*/
$shortcodes = [
// Let's define a new button.
'button' => [
'view' => __DIR__ . '/../views/shortcodes/button.php',
'atts' => [
// It will accept a caption...
'caption' => [
'validate' => function ( $att ) {
return ( null !== $att )
? esc_attr( $att )
: null;
},
'default' => 'Straight to Google!',
],
// ...and a URL.
'url' => [
'validate' => function ( $att ) {
return ( null !== $att )
? esc_attr( $att )
: null;
},
'default' => 'https://www.google.com/',
],
],
// We also want a user interface for that button.
'ui' => [
// Let's call it "Example Button".
'label' => esc_html__(
'Example Button',
'example-plugin'
),
'listItemImage' => 'dashicons-search',
// We only want to make it available when editing a "page".
'post_type' => [ 'page' ],
// It is always needed, so no extra checks to load it conditionally.
'is_needed' => function ( $context ) { return true; },
// We also need to configure the Shortcake input fields.
'attrs' => [
[
'label' => esc_html__(
'Caption',
'example-plugin'
),
'description' => esc_html__(
'The caption that is shown on the button.',
'example-plugin'
),
'attr' => 'caption',
'type' => 'text',
'value' => 'Straight to Google!',
],
[
'label' => esc_html__(
'URL',
'example-plugin'
),
'description' => esc_html__(
'Target URL where the button will lead to when pressed.',
'example-plugin'
),
'attr' => 'url',
'type' => 'url',
'value' => 'https://www.google.com/',
],
],
],
],
];
/* Plugin settings.
*/
$plugin_settings = [
'ShortcodeManager' => $shortcodes,
];
/* Return with Vendor/Package prefix.
*/
return [
'Example' => [
'Plugin' => $plugin_settings,
],
];
namespace Example\Plugin;
/**
* Button Shortcode Template
*/
// The `$atts` array (as well as the inner `$content` variable) will be
// available from within this template.
namespace Example\Plugin;
use BrightNucleus\Config\ConfigFactory;
use BrightNucleus\Shortcode\ShortcodeManager;
const PLUGIN_PREFIX = 'Example\Plugin';
const SHORTCODE_MANAGER_PREFIX = 'ShortcodeManager';
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
// Load Composer autoloader.
if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.