PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 4.7.2
Admin and Site Enhancements (ASE) v4.7.2
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-custom-code.php
admin-site-enhancements / classes Last commit date
class-activation.php 3 years ago class-admin-interface.php 3 years ago class-common-methods.php 3 years ago class-content-management.php 3 years ago class-custom-code.php 3 years ago class-deactivation.php 3 years ago class-disable-components.php 3 years ago class-login-logout.php 3 years ago class-optimizations.php 3 years ago class-security.php 3 years ago class-settings-fields-render.php 3 years ago class-settings-sanitization.php 3 years ago class-settings-sections-fields.php 3 years ago class-utilities.php 3 years ago
class-custom-code.php
274 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class related to Custom Code features
7 *
8 * @since 3.6.0
9 */
10 class Custom_Code {
11
12 /**
13 * Enqueue custom admin CSS
14 *
15 * @since 2.3.0
16 */
17 public function custom_admin_css() {
18
19 $options = get_option( ASENHA_SLUG_U, array() );
20 $custom_admin_css = $options['custom_admin_css'];
21
22 ?>
23 <style type="text/css">
24 <?php echo wp_kses_post( $custom_admin_css ); ?>
25 </style>
26 <?php
27
28 }
29
30 /**
31 * Enqueue custom frontend CSS
32 *
33 * @since 2.3.0
34 */
35 public function custom_frontend_css() {
36
37 $options = get_option( ASENHA_SLUG_U, array() );
38 $custom_frontend_css = $options['custom_frontend_css'];
39
40 ?>
41 <style type="text/css">
42 <?php echo wp_kses_post( $custom_frontend_css ); ?>
43 </style>
44 <?php
45
46 }
47
48 /**
49 * Add Custom Body Class meta box for enabled post types
50 *
51 * @since 3.9.0
52 */
53 public function add_custom_body_class_meta_box( $post_type, $post ) {
54
55 $options = get_option( ASENHA_SLUG_U, array() );
56 $enable_custom_body_class_for = $options['enable_custom_body_class_for'];
57
58 foreach ( $enable_custom_body_class_for as $post_type_slug => $is_custom_body_class_enabled ) {
59 if ( ( get_post_type() == $post_type_slug ) && $is_custom_body_class_enabled ) {
60
61 // Skip adding meta box for post types where Gutenberg is enabled
62 // if (
63 // function_exists( 'use_block_editor_for_post_type' )
64 // && use_block_editor_for_post_type( $post_type_slug )
65 // ) {
66 // continue; // go to the beginning of next iteration
67 // }
68
69 add_meta_box(
70 'asenha-custom-body-class', // ID of meta box
71 'Custom &lt;body&gt; Class', // Title of meta box
72 [ $this, 'output_custom_body_class_meta_box' ], // Callback function
73 $post_type_slug, // The screen on which the meta box should be output to
74 'normal', // context
75 'high', // priority
76 // array(), // $args to pass to callback function. Ref: https://developer.wordpress.org/reference/functions/add_meta_box/#comment-342
77 );
78
79 }
80 }
81
82 }
83
84 /**
85 * Render External Permalink meta box
86 *
87 * @since 3.9.0
88 */
89 public function output_custom_body_class_meta_box( $post ) {
90 ?>
91 <div class="custom-body-class-input">
92 <input name="<?php echo esc_attr( 'custom_body_class' ); ?>" class="large-text" id="<?php echo esc_attr( 'custom_body_class' ); ?>" type="text" value="<?php echo esc_attr( get_post_meta( $post->ID, '_custom_body_class', true ) ); ?>" placeholder="e.g. light-theme new-year-promo" />
93 <div class="custom-body-class-input-description">Use blank space to separate multiple classes, e.g. first-class second-class</div>
94 <?php wp_nonce_field( 'custom_body_class_' . $post->ID, 'custom_body_class_nonce', false, true ); ?>
95 </div>
96 <?php
97 }
98
99 /**
100 * Save custom body class input
101 *
102 * @since 3.9.0
103 */
104 public function save_custom_body_class( $post_id ) {
105
106 // Only proceed if nonce is verified
107 if ( isset( $_POST['custom_body_class_nonce'] ) && wp_verify_nonce( $_POST['custom_body_class_nonce'], 'custom_body_class_' . $post_id ) ) {
108
109 // Get the value of external permalink from input field
110 $custom_body_class = isset( $_POST['custom_body_class'] ) ? sanitize_text_field( trim( $_POST['custom_body_class'] ) ) : '';
111
112 // Update or delete external permalink post meta
113 if ( ! empty( $custom_body_class ) ) {
114 update_post_meta( $post_id, '_custom_body_class', $custom_body_class );
115 } else {
116 delete_post_meta( $post_id, '_custom_body_class' );
117 }
118
119 }
120
121 }
122
123 /**
124 * Append custom body classes to the frontend <body> tag
125 *
126 * @since 4.4.0
127 */
128 public function append_custom_body_class( $classes ) {
129
130 // Only add custom body classes to the singular view of enabled post types
131 if ( is_singular() ) {
132
133 global $post;
134 $custom_body_classes = get_post_meta( $post->ID, '_custom_body_class', true );
135
136 if ( ! empty( $custom_body_classes ) ) {
137
138 $custom_body_classes = explode( ' ', $custom_body_classes );
139
140 foreach( $custom_body_classes as $custom_body_class ) {
141 $classes[] = sanitize_html_class( $custom_body_class );
142 }
143
144 }
145
146 }
147
148 return $classes;
149
150 }
151
152 /**
153 * Show content of ads.txt saved to options
154 *
155 * @since 3.2.0
156 */
157 public function show_ads_appads_txt_content() {
158
159 $options = get_option( ASENHA_SLUG_U, array() );
160
161 $request = isset( $_SERVER['REQUEST_URI'] ) ? esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : false;
162
163 if ( '/ads.txt' === $request ) {
164
165 $ads_txt_content = array_key_exists( 'ads_txt_content', $options ) ? $options['ads_txt_content'] : '';
166
167 header( 'Content-Type: text/plain' );
168 echo esc_textarea( $ads_txt_content );
169 die();
170
171 }
172
173 if ( '/app-ads.txt' === $request ) {
174
175 $app_ads_txt_content = array_key_exists( 'app_ads_txt_content', $options ) ? $options['app_ads_txt_content'] : '';
176
177 header( 'Content-Type: text/plain' );
178 echo esc_textarea( $app_ads_txt_content );
179 die();
180
181 }
182
183 }
184
185 /**
186 * Maybe show custom robots.txt content
187 *
188 * @since 3.5.0
189 */
190 public function maybe_show_custom_robots_txt_content( $output, $public ) {
191
192 $options = get_option( ASENHA_SLUG_U, array() );
193
194 if ( array_key_exists( 'robots_txt_content', $options ) && ! empty( $options['robots_txt_content'] ) ) {
195
196 $output = wp_strip_all_tags( $options['robots_txt_content'] );
197
198 }
199
200 return $output;
201
202 }
203
204 /**
205 * Insert code before </head> tag
206 *
207 * @since 3.3.0
208 */
209 public function insert_head_code() {
210
211 $this->insert_code( 'head' );
212
213 }
214
215 /**
216 * Insert code after <body> tag
217 *
218 * @since 3.3.0
219 */
220 public function insert_body_code() {
221
222 $this->insert_code( 'body' );
223
224 }
225
226 /**
227 * Insert code in footer section before </body> tag
228 *
229 * @since 3.3.0
230 */
231 public function insert_footer_code() {
232
233 $this->insert_code( 'footer' );
234
235 }
236
237 /**
238 * Insert code
239 *
240 * @since 3.3.0
241 */
242 public function insert_code( $location ) {
243
244 // Do not insert code in admin, feed, robots or trackbacks
245 if ( is_admin() || is_feed() || is_robots() || is_trackback() ) {
246 return;
247 }
248
249 // Get option that stores the code
250 $options = get_option( ASENHA_SLUG_U, array() );
251
252 if ( 'head' == $location ) {
253
254 $code = array_key_exists( 'head_code', $options ) ? $options['head_code'] : '';
255
256 }
257
258 if ( 'body' == $location ) {
259
260 $code = array_key_exists( 'body_code', $options ) ? $options['body_code'] : '';
261
262 }
263
264 if ( 'footer' == $location ) {
265
266 $code = array_key_exists( 'footer_code', $options ) ? $options['footer_code'] : '';
267
268 }
269
270 echo wp_unslash( $code ) . PHP_EOL;
271
272 }
273
274 }