PluginProbe
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts / 2.7.1
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts v2.7.1
2.7.7 2.7.6 2.7.5 2.7.4 trunk 1.3 2.0.4 2.0.6 2.1.91 2.2.4 2.2.7 2.2.9 2.3.1 2.3.10 2.4.10 2.4.2 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.6.0 2.6.1 2.7.0 All 28 releases
← All changes | includes/shortcodes/shortcodes.php +102 -34 2.4.42.7.1 View file →
@@ -1,7 +1,7 @@
1 1 <?php
2 2 /**
3 - * A base shortcode for all lockers
3 + * A base shortcode for all snippets
4 4 *
5 5 * @since 1.0.0
6 6 */
7 7
@@ -9,27 +9,94 @@
9 9 if ( ! defined( 'ABSPATH' ) ) {
10 10 exit;
11 11 }
12 12
13 -class WINP_SnippetShortcode extends Wbcr_FactoryShortcodes329_Shortcode {
13 +/**
14 + * Base shortcode class for all snippet shortcodes
15 + */
16 +class WINP_SnippetShortcode {
14 17
18 + /**
19 + * Plugin instance
20 + *
21 + * @var WINP_Plugin
22 + */
23 + public $plugin;
24 +
25 + /**
26 + * Shortcode name(s)
27 + *
28 + * @var string|array<string>
29 + */
15 30 public $shortcode_name = 'wbcr_php_snippet';
16 31
17 32 /**
18 - * Includes assets
33 + * Includes assets in header
34 + *
19 35 * @var bool
20 36 */
21 37 public $assets_in_header = true;
22 38
23 39 /**
40 + * Constructor
41 + *
42 + * @param WINP_Plugin $plugin Plugin instance.
43 + */
44 + public function __construct( $plugin ) {
45 + $this->plugin = $plugin;
46 +
47 + // Ensure shortcode_name is an array.
48 + if ( ! is_array( $this->shortcode_name ) ) {
49 + $this->shortcode_name = [ $this->shortcode_name ];
50 + }
51 +
52 + // Register shortcode(s) with WordPress.
53 + foreach ( $this->shortcode_name as $name ) {
54 + if ( ! empty( $name ) ) {
55 + add_shortcode( $name, [ $this, 'render' ] );
56 + }
57 + }
58 +
59 + // Enqueue assets in header if needed.
60 + if ( $this->assets_in_header ) {
61 + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_assets' ] );
62 + }
63 + }
64 +
65 + /**
66 + * Enqueue assets if needed.
67 + *
68 + * @return void
69 + */
70 + public function enqueue_assets() {
71 + // Override in child classes if needed.
72 + }
73 +
74 + /**
75 + * Shortcode render callback.
76 + *
77 + * @param array<string, mixed> $attr Shortcode attributes.
78 + * @param string|null $content Shortcode content.
79 + * @param string $tag Shortcode tag.
80 + *
81 + * @return string
82 + */
83 + public function render( $attr, $content, $tag ) {
84 + ob_start();
85 + $this->html( $attr, $content ?? '', $tag );
86 + $html = ob_get_clean();
87 + return false !== $html ? $html : '';
88 + }
89 +
90 + /**
24 91 * Filter attributes
25 92 *
26 - * @param $attr
27 - * @param $post_id
93 + * @param array<string, mixed> $attr Shortcode attributes.
94 + * @param int $post_id Post ID.
28 95 *
29 - * @return mixed
96 + * @return array<string, mixed>
30 97 */
31 - public function filterAttributes( $attr, $post_id ) {
98 + public function filter_attributes( $attr, $post_id ) {
32 99 if ( ! empty( $attr ) ) {
33 100 $available_tags = WINP_Helper::getMetaOption( $post_id, 'snippet_tags', null );
34 101
35 102 if ( ! empty( $available_tags ) ) {
@@ -37,9 +104,9 @@
37 104 $available_tags = array_map( 'trim', $available_tags );
38 105 }
39 106
40 107 foreach ( $attr as $name => $value ) {
41 - $is_allow_attr = in_array( $name, array( 'id', 'title' ) );
108 + $is_allow_attr = in_array( $name, [ 'id', 'title' ] );
42 109 $validate_name = preg_match( '/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $name );
43 110
44 111 if ( ! $is_allow_attr && ( ( ! empty( $available_tags ) && ! in_array( $name, $available_tags ) ) || ! $validate_name ) ) {
45 112 unset( $attr[ $name ] );
@@ -76,16 +143,17 @@
76 143
77 144 /**
78 145 * Get snippet id
79 146 *
80 - * @param $attr
81 - * @param $type
147 + * @param array<string, mixed> $attr Shortcode attributes.
148 + * @param string $type Snippet type.
82 149 *
83 150 * @return int|null
84 151 */
85 - public function getSnippetId( $attr, $type ) {
152 + public function get_snippet_id( $attr, $type ) {
86 153 $id = isset( $attr['id'] ) ? (int) $attr['id'] : null;
87 - if ( $id && $type != WINP_Helper::get_snippet_type( $id ) ) {
154 +
155 + if ( $id && WINP_Helper::get_snippet_type( $id ) !== $type ) {
88 156 $id = 0;
89 157 }
90 158
91 159 return $id;
@@ -93,16 +161,16 @@
93 161
94 162 /**
95 163 * Get snippet activate
96 164 *
97 - * @param $snippet_meta
165 + * @param array<string, mixed> $snippet_meta Snippet metadata.
98 166 *
99 167 * @return bool
100 168 */
101 - public function getSnippetActivate( $snippet_meta ) {
102 - // WPML Compatibility
169 + public function get_snippet_activate( $snippet_meta ) {
170 + // WPML Compatibility.
103 171 if ( defined( 'WPML_PLUGIN_FILE' ) ) {
104 - $wpml_langs = isset( $snippet_meta[ $this->plugin->getPrefix() . 'snippet_wpml_lang' ][0] ) ? $snippet_meta[ $this->plugin->getPrefix() . 'snippet_wpml_lang' ][0] : '';
172 + $wpml_langs = isset( $snippet_meta['wbcr_inp_snippet_wpml_lang'][0] ) ? $snippet_meta['wbcr_inp_snippet_wpml_lang'][0] : '';
105 173 if ( $wpml_langs !== '' && defined( 'ICL_LANGUAGE_CODE' ) ) {
106 174 if ( ! in_array( ICL_LANGUAGE_CODE, explode( ',', $wpml_langs ) ) ) {
107 175 return false;
108 176 }
@@ -108,49 +176,49 @@
108 176 }
109 177 }
110 178 }
111 179
112 - return isset( $snippet_meta[ $this->plugin->getPrefix() . 'snippet_activate' ] ) && $snippet_meta[ $this->plugin->getPrefix() . 'snippet_activate' ][0];
180 + return isset( $snippet_meta['wbcr_inp_snippet_activate'] ) && $snippet_meta['wbcr_inp_snippet_activate'][0];
113 181 }
114 182
115 183 /**
116 184 * Get snippet scope
117 185 *
118 - * @param $snippet_meta
186 + * @param array<string, mixed> $snippet_meta Snippet metadata.
119 187 *
120 - * @return null
188 + * @return string|null
121 189 */
122 - public function getSnippetScope( $snippet_meta ) {
123 - return isset( $snippet_meta[ $this->plugin->getPrefix() . 'snippet_scope' ] ) ? $snippet_meta[ $this->plugin->getPrefix() . 'snippet_scope' ][0] : null;
190 + public function get_snippet_scope( $snippet_meta ) {
191 + return isset( $snippet_meta['wbcr_inp_snippet_scope'] ) ? $snippet_meta['wbcr_inp_snippet_scope'][0] : null;
124 192 }
125 193
126 194 /**
127 195 * Get snippet content
128 196 *
129 - * @param WP_Post $snippet
130 - * @param array $snippet_meta
131 - * @param int $id
197 + * @param WP_Post $snippet Snippet post object.
198 + * @param array<string, mixed> $snippet_meta Snippet metadata.
199 + * @param int $id Snippet ID.
132 200 *
133 - * @return null|string
201 + * @return string|null
134 202 */
135 - public function getSnippetContent( $snippet, $snippet_meta, $id ) {
203 + public function get_snippet_content( $snippet, $snippet_meta, $id ) {
136 204 $snippet_code = WINP_Helper::get_snippet_code( $snippet );
137 205
138 - if ( WINP_Plugin::app()->getOption( 'execute_shortcode' ) ) {
206 + if ( get_option( 'wbcr_inp_execute_shortcode' ) ) {
139 207 $snippet_code = do_shortcode( $snippet_code );
140 208 }
141 209
142 - return WINP_Plugin::app()->getExecuteObject()->prepareCode( $snippet_code, $id );
210 + return WINP_Plugin::app()->get_execute_object()->prepareCode( $snippet_code, $id );
143 211 }
144 212
145 213 /**
146 214 * Content render
147 215 *
148 - * @param array $attr
149 - * @param string $content
150 - * @param string $tag
216 + * @param array<string, mixed> $attr Shortcode attributes.
217 + * @param string $content Shortcode content.
218 + * @param string $tag Shortcode tag.
219 + *
220 + * @return void
151 221 */
152 222 public function html( $attr, $content, $tag ) {
153 -
154 223 }
155 -
156 -}
224 +}