Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShortcodeTrait.php
More file actions
Latest commit
127 lines (114 loc) · 2.85 KB
/
Copy pathShortcodeTrait.php
File metadata and controls
127 lines (114 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
* Shortcode Trait
*
* @author Whizark <devaloka@whizark.com>
* @see http://whizark.com
* @copyright Copyright (C) 2015 Whizark.
* @license MIT
* @license GPL-2.0
* @license GPL-3.0
*/
namespaceDevaloka\Component\Shortcode;
/**
* Trait ShortcodeTrait
*
* @package Devaloka\Component\Shortcode
*/
trait ShortcodeTrait
{
/**
* Gets the string representation of the Shortcode.
*
* @return string The string representation.
*/
publicfunction__toString()
{
return$this->generate();
}
/**
* Gets the Shortcode tag name.
*
* @return string The Shortcode tag name.
*/
abstractpublicfunctiongetName();
/**
* Gets the callable for the Shortcode processing.
*
* @return callable The callable.
*/
publicfunctiongetCallable()
{
returnfunction () {
return'';
};
}
/**
* Gets the default attributes.
*
* @return mixed[] The default attributes.
*/
publicfunctiongetDefaultAttributes()
{
return [];
}
/**
* Generates the Shortcode string with the given attributes and content.
*
* @param mixed[] $attributes The attributes.
* @param string|null $content The enclosed content.
*
* @return string The generated Shortcode string.
*/
publicfunctiongenerate(array$attributes = [], $content = null)
{
$name = $this->getName();
$attributes = shortcode_atts($this->getDefaultAttributes(), $attributes, $this->getName());
$attributesString = implode(
'',
array_map(
function ($value, $key) {
return !is_int($key) ? $key . '="' . $value . '"' : $value;
},
$attributes,
array_keys($attributes)
)
);
$shortcode = '[' . trim($name . '' . $attributesString);
if ($content === null) {
$shortcode .= ' /]';
} else {
$shortcode .= ']';
$shortcode .= $content;
$shortcode .= '[/' . $name . ']';
}
return$shortcode;
}
/**
* Invokes the Shortcode.
*
* @param mixed[] $attributes The attributes.
* @param string|null $content The enclosed content.
*
* @return string The processed content.
*/
publicfunctioninvoke(array$attributes = [], $content = null)
{
$shortcode = $this->generate($attributes, $content);
returndo_shortcode($shortcode);
}
/**
* Registers the Shortcode.
*/
publicfunctionregister()
{
add_shortcode($this->getName(), $this->getCallable());
}
/**
* Unregisters the Shortcode.
*/
publicfunctionunregister()
{
remove_shortcode($this->getName());
}
}