PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.17.21
Shortcodes and extra features for Phlox theme v2.17.21
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / admin / includes / admin-ajax.php
auxin-elements / admin / includes Last commit date
classes 5 months ago compatibility 1 year ago metaboxes 5 months ago admin-ajax.php 3 days ago admin-hooks.php 1 year ago admin-the-functions.php 1 year ago index.php 2 years ago
admin-ajax.php
528 lines
1 <?php
2
3 function auxin_ajax_send_feedback(){
4
5 // skip if the form data is not receiced
6 if( empty( $_POST['form'] ) ){
7 wp_send_json_error( __( 'Data cannot be delivered, please try again.', 'auxin-elements' ) );
8 }
9
10
11 // extract the form data
12 $rate = ( ! empty( $_POST['form']['theme_rate'] ) || $_POST['form']['theme_rate'] === '0' ) ? sanitize_text_field( $_POST['form']['theme_rate'] ) : '';
13 $feedback = ! empty( $_POST['form']['feedback'] ) ? sanitize_text_field( $_POST['form']['feedback'] ) : '';
14 $email = ! empty( $_POST['form']['email'] ) ? sanitize_email( $_POST['form']['email'] ) : '';
15 $nonce = ! empty( $_POST['form']['_wpnonce'] ) ? sanitize_text_field( $_POST['form']['_wpnonce'] ) : '';
16
17 if( ! wp_verify_nonce( $nonce, 'phlox_feedback' ) ){
18 wp_send_json_error( __( 'Authorization failed!', 'auxin-elements' ) );
19 }
20
21 if ( ! current_user_can('manage_options') ) {
22 wp_send_json_error( __( "Access Denied: You don't have the required permissions!", 'auxin-elements' ) );
23 }
24
25 if( $rate || $rate === '0' ){
26
27 global $wp_version;
28
29 $passed_diff_time = auxin_get_passed_installed_time();
30 $installed_days = isset( $passed_diff_time->days ) ? $passed_diff_time->days : 1;
31
32 $args = array(
33 'user-agent' => 'WordPress/'.$wp_version.'; '. get_home_url(),
34 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 5),
35 'body' => array(
36 'cat' => 'rating',
37 'action' => 'submit',
38 'item-slug' => 'phlox',
39 'rate' => $rate,
40 'client_key' => get_theme_mod( 'client_key', ''),
41 'item_version'=> THEME_VERSION,
42 'theme_slug' => THEME_ID,
43 'feedback' => $feedback,
44 'is_active' => function_exists('auxin_is_activated') && auxin_is_activated(),
45 'installed_days' => $installed_days
46 )
47 );
48 // send the rating through the api
49 $request = wp_remote_post( 'https://api.averta.net/envato/items/', $args );
50 update_option( 'auxin_show_rate_scale_notice', 0 );
51 set_theme_mod( 'rate_scale_notice_remind_later_date', 0 );
52 // if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) {}
53
54 // store the user rating on the website
55 auxin_update_option( 'user_rating', $rate );
56
57 // send the feedback via email
58 $message = 'Rate: '. $rate . "\r\n" . 'Email: <' . $email . ">\r\n\r\n" . $feedback;
59 wp_mail( 'feedbacks@averta.net', 'Feedback from phlox dashboard:', $message );
60
61 wp_send_json_success( __( 'Sent Successfully. Thanks for your feedback!', 'auxin-elements' ) );
62
63 } else{
64 wp_send_json_error( __( 'An error occurred. Feedback could not be delivered, please try again.', 'auxin-elements' ) );
65 }
66
67 }
68
69 add_action( 'wp_ajax_send_feedback', 'auxin_ajax_send_feedback' );
70
71 /**
72 * Hide Feedback notice
73 */
74 function auxin_remove_feedback_notice() {
75 // skip if the form data is not receiced
76 if( empty( $_POST['form'] ) ){
77 wp_send_json_error( __( 'Data cannot be delivered, please try again.', 'auxin-elements' ) );
78 }
79
80 $nonce = ! empty( $_POST['form']['_wpnonce'] ) ? sanitize_text_field( $_POST['form']['_wpnonce'] ) : '';
81
82 if( ! wp_verify_nonce( $nonce, 'phlox_feedback' ) ){
83 wp_send_json_error( __( 'Authorization failed!', 'auxin-elements' ) );
84 }
85
86 if ( ! current_user_can('manage_options') ) {
87 wp_send_json_error( __( "Access Denied: You don't have the required permissions!", 'auxin-elements' ) );
88 }
89
90 update_option( 'auxin_show_rate_scale_notice', 0 );
91 set_theme_mod( 'rate_scale_notice_remind_later_date', 0 );
92
93 wp_send_json_success();
94 }
95
96 add_action( 'wp_ajax_aux-remove-feedback-notice', 'auxin_remove_feedback_notice' );
97
98
99 /**
100 * Remind feedback
101 */
102 function auxin_ajax_remind_feedback() {
103 // skip if the form data is not receiced
104 if( empty( $_POST['form'] ) ){
105 wp_send_json_error( __( 'Data cannot be delivered, please try again.', 'auxin-elements' ) );
106 }
107
108 $nonce = ! empty( $_POST['form']['_wpnonce'] ) ? sanitize_text_field( $_POST['form']['_wpnonce'] ) : '';
109
110 if( ! wp_verify_nonce( $nonce, 'phlox_feedback' ) || ! current_user_can('manage_options') ){
111 wp_send_json_error( __( 'Authorization failed!', 'auxin-elements' ) );
112 }
113
114 // reset feedback notice viewer
115 update_option( 'auxin_show_rate_scale_notice', 0 );
116 set_theme_mod( 'rate_scale_notice_remind_later_date', time() + DAY_IN_SECONDS * 3 );
117
118 wp_send_json_success();
119 }
120
121 add_action( 'wp_ajax_remind_feedback', 'auxin_ajax_remind_feedback' );
122
123
124
125 function auxin_ajax_isotope_filter_group(){
126 // Check nonce
127 if ( ! isset( $_POST['group'] ) ||! isset( $_POST['key'] ) || ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'aux-iso-group' ) ) {
128 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
129 }
130
131 if ( ! current_user_can('manage_options') ) {
132 wp_send_json_error( __( "Access Denied: You don't have the required permissions!", 'auxin-elements' ) );
133 }
134
135 if( false !== update_option( 'aux_isotope_group_' . auxin_sanitize_input( $_POST['key'] ) , auxin_sanitize_input( $_POST['group'] ) ) ) {
136 wp_send_json_success( __( 'It\'s Done.', 'auxin-elements' ) );
137 }
138
139 wp_send_json_error( __( 'An error occurred.', 'auxin-elements' ) );
140 }
141 add_action( 'wp_ajax_aux_isotope_group', 'auxin_ajax_isotope_filter_group' );
142
143
144 function auxin_ajax_filter_get_content() {
145
146 // Check nonce
147 if ( ! isset( $_POST['n'] ) || ! wp_verify_nonce( $_POST['n'], 'aux_ajax_filter_request' ) ) {
148 wp_send_json_error( 'Nonce check failed!', 403 );
149 }
150
151 $num = sanitize_text_field( $_POST['num'] );
152 $post_type = 'product';
153 $tax = sanitize_text_field( $_POST['taxonomy'] );
154 $term = sanitize_text_field( $_POST['term'] );
155 $image_class = 'aux-img-dynamic-dropshadow';
156 $width = sanitize_text_field( $_POST['width'] );
157 $height = sanitize_text_field( $_POST['height'] );
158 $order = sanitize_text_field( $_POST['order'] );
159 $orderby = sanitize_text_field( $_POST['orderby'] );
160 $size = array( 'width' => $width, 'height' => $height );
161
162 /*
163 * The WordPress Query class.
164 *
165 * @link http://codex.wordpress.org/Function_Reference/WP_Query
166 */
167 $args = array(
168 // Type & Status Parameters
169 'post_type' => $post_type,
170 'post_status' => 'publish',
171 // Pagination Parameters
172 'posts_per_page' => $num,
173 'nopaging' => false,
174 'order' => $order,
175 'orderby' => $orderby,
176 );
177
178 if ( 'all' !== $term ) {
179 // Taxonomy Parameters
180 $args['tax_query'] = array(
181 array(
182 'taxonomy' => $tax,
183 'field' => 'slug',
184 'terms' => $term,
185 'include_children' => true,
186 'operator' => 'IN',
187 )
188 );
189 }
190
191 $posts = get_posts( $args );
192
193 foreach ( $posts as $post ) {
194
195 $image_id = get_post_thumbnail_id( $post );
196 $product = wc_get_product( $post->ID );
197
198 $post->thumb = auxin_get_the_responsive_attachment(
199 $image_id,
200 array(
201 'quality' => 100,
202 'upscale' => true,
203 'crop' => true,
204 'add_hw' => true, // whether add width and height attr or not
205 'attr' => array(
206 'class' => 'auxshp-product-image auxshp-attachment ' . $image_class,
207 'data-original-width' => $width,
208 'data-original-height' => $height,
209 'data-original-src' => wp_get_attachment_image_src( $image_id, 'full' )[0]
210 ),
211 'size' => $size,
212 'image_sizes' => 'auto',
213 'srcset_sizes' => 'auto',
214 'original_src' => true
215 )
216 );
217
218 $post->price = $product->get_price_html();
219 $post->meta = wc_get_product_category_list( $product->get_id(), ', ', '<em class="auxshp-meta-terms">', '</em>' );
220 $post->badge = $product->is_on_sale() ? true : false;
221
222 $isAjaxEnabled = class_exists( 'AUXSHP' ) ? auxin_is_true( auxin_get_option( 'product_index_ajax_add_to_cart', '1' ) ) : auxin_is_true( get_option( 'woocommerce_enable_ajax_add_to_cart' ) );
223 if( $isAjaxEnabled ) {
224 $class = 'button aux-ajax-add-to-cart add_to_cart_button';
225 }
226
227 $post->cart = apply_filters( 'woocommerce_loop_add_to_cart_link',
228 sprintf( '<a rel="nofollow" href="%s" data-quantity="1" data-product_id="%s" data-product_sku="%s" data-verify_nonce="%s" class="%s"><i class="aux-ico auxicon-handbag"></i><span>%s</span></a>',
229 esc_url( $product->add_to_cart_url() ),
230 esc_attr( $product->get_id() ),
231 esc_attr( $product->get_sku() ),
232 esc_attr( wp_create_nonce( 'aux_add_to_cart-' . $product->get_id() ) ),
233 esc_attr( isset( $class ) ? $class : 'button add_to_cart_button' ),
234 esc_html( $product->add_to_cart_text() )
235 ),
236 $product );
237 }
238
239 wp_send_json_success( $posts );
240
241 }
242
243 add_action( 'wp_ajax_filter_get_content', 'auxin_ajax_filter_get_content' );
244 add_action( 'wp_ajax_noprive_filter_get_content', 'auxin_ajax_filter_get_content' );
245
246 /**
247 * wordpress ajax for dismissed notice
248 *
249 * @return json
250 */
251 function auxin_dismissed_notice(){
252 // Store it in the options table
253 if ( ! isset( $_POST['id'] ) || ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], '_notice_nonce' ) || ! current_user_can('manage_options') ) {
254 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
255 } else {
256 auxin_set_transient( sanitize_text_field( 'auxin-notice-' . $_POST['id'] ), 1, sanitize_text_field( $_POST['expiration'] ) );
257 wp_send_json_success( __( 'It\'s OK.', 'auxin-elements' ) );
258 }
259 }
260 add_action( 'wp_ajax_auxin_dismissed_notice', 'auxin_dismissed_notice' );
261
262 /**
263 * WordPress ajax to display activation form
264 *
265 * @return html
266 */
267 function auxin_display_actvation_form(){
268 if ( ! current_user_can( 'manage_options' ) ) {
269 wp_send_json_error( esc_html__( 'You do not have permission to perform this action.', 'auxin-elements' ) );
270 }
271
272 if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( $_GET['nonce'], 'aux-activation-form' ) ) {
273 // This nonce is not valid.
274 wp_die( esc_html__( 'Security Token Error!', 'auxin-elements' ) );
275 }
276 ob_start();
277 ?>
278 <div class="aux-license-popup">
279 <button class="featherlight-close-icon featherlight-close" aria-label="Close"></button>
280 <img class="aux-popup-image" src="<?php echo esc_url( AUXELS_ADMIN_URL . '/assets/images/welcome/activation.svg' ); ?>" />
281 <h2 class="aux-popup-title"><?php esc_html_e( 'License Activation', 'auxin-elements' ); ?></h2>
282 <p class="aux-popup-desc"><?php esc_html_e( 'Please activate your license to get automatic updates, premium support, and unlimited access to the template library and demo importer.', 'auxin-elements' ); printf('&nbsp;<a href="https://help.market.envato.com/hc/en-us/articles/202822600-Where-Is-My-Purchase-Code-" target="_blank">%s</a>', esc_html( 'how to find purchase code?', 'auxin-elements' ) ); ?></p>
283 <form class="auxin-form auxin-check-purchase" action="<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>" method="post">
284 <div class="form-group">
285 <label class="form-label" for="aux-usermail"><?php esc_html_e( 'E-mail address', 'auxin-elements' ); ?></label>
286 <input class="form-control" type="text" name="usermail" value="<?php echo esc_attr( get_option('admin_email') ); ?>" required>
287 </div>
288
289 <div class="form-group">
290 <label class="form-label" for="aux-purchase"><?php esc_html_e( 'Purchase code', 'auxin-elements' ); ?></label>
291 <input class="form-control" type="text" name="purchase" required>
292 </div>
293
294 <?php wp_nonce_field( 'auxin-purchase-activation', 'security' ); ?>
295 <input type="hidden" name="action" value="auxin_purchase_activation">
296 <div class="button-group">
297 <button type="submit" class="aux-button aux-primary aux-medium aux-activate-license" value="submit">
298 <span><?php esc_html_e( 'Activate', 'auxin-elements' ); ?></span>
299 </button>
300 </div>
301 </form>
302 </div>
303 <?php
304 wp_die( ob_get_clean() );
305 }
306 add_action( 'wp_ajax_auxin_display_actvation_form', 'auxin_display_actvation_form' );
307
308 /**
309 * wordpress ajax for auxin purchase activation
310 *
311 * @return json
312 */
313 function auxin_purchase_activation(){
314
315 if ( ! current_user_can( 'manage_options') ) {
316 wp_send_json_error( array(
317 'message' => __( 'Persmission Error.', 'auxin-elements' ),
318 'buttonText' => __( 'Close', 'auxin-elements' ),
319 ) );
320 }
321
322 if ( ! isset( $_POST['usermail'] ) || ! isset( $_POST['purchase'] ) || ! isset( $_POST['security'] ) || ! wp_verify_nonce( $_POST['security'], 'auxin-purchase-activation' ) ) {
323 wp_send_json_error( array(
324 'message' => __( 'Token Error.', 'auxin-elements' ),
325 'buttonText' => __( 'Retry', 'auxin-elements' ),
326 ) );
327 }
328
329 $usermail = sanitize_email( $_POST['usermail'] );
330 $purchase_code = auxin_sanitize_input( $_POST['purchase'] );
331 $action = 'activate';
332
333 $result = Auxin_License_Activation::get_instance()->license_action( $usermail, $purchase_code, $action );
334
335 if( isset( $result['success'] ) && $result['success'] ){
336 $result['buttonText'] = __( 'Close', 'auxin-elements' );
337 wp_send_json_success( $result );
338 }
339
340 $result['buttonText'] = __( 'Retry', 'auxin-elements' );
341 wp_send_json_error( $result );
342
343 }
344 add_action( 'wp_ajax_auxin_purchase_activation', 'auxin_purchase_activation' );
345
346 /**
347 * wordpress ajax for auxin upgrader
348 *
349 * @return json
350 */
351 function auxin_ajax_upgrader(){
352 // Check ajax nonce field
353 check_ajax_referer( 'auxin-start-upgrading', 'nonce' );
354
355 if ( ! isset( $_POST['key'] ) || ! isset( $_POST['type'] ) ) {
356 wp_send_json_error( array(
357 'slug' => '',
358 'errorCode' => 'no_token_specified',
359 'errorMessage' => __( 'Token Error.', 'auxin-elements' )
360 ) );
361 }
362
363 if ( ! current_user_can( 'manage_options' ) ) {
364 wp_send_json_error( array(
365 'slug' => '',
366 'errorCode' => 'permission_error',
367 'errorMessage' => __( 'Permission Error.', 'auxin-elements' )
368 ) );
369 }
370
371 $handler = new Auxin_Upgrader_Ajax_Handlers;
372 $handler->run( sanitize_text_field( $_POST['key'] ), sanitize_text_field( $_POST['type'] ) );
373 }
374 add_action( 'wp_ajax_auxin_start_upgrading', 'auxin_ajax_upgrader' );
375
376
377 /**
378 * wordpress ajax for auxin customizer export
379 *
380 * @return json
381 */
382 function auxin_customizer_export(){
383
384 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'auxin-export-control' ) ) {
385 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
386 }
387
388 if ( ! current_user_can( 'manage_options' ) ) {
389 wp_send_json_error( __('Permission Error.', 'auxin-elements' ) );
390 }
391
392 // Get theme options
393 $theme_options = auxin_options();
394
395 // Get theme mods
396 $theme_mods = get_theme_mods();
397 $filters = array( 0, 'nav_menu_locations', 'custom_css_post_id', 'last_checked_version' );
398 foreach ( $filters as $filter ) {
399 if ( isset( $theme_mods[ $filter ] ) ) {
400 unset( $theme_mods[ $filter ] );
401 }
402 }
403
404 if( empty( $theme_options ) && empty( $theme_mods ) ){
405 wp_send_json_error( __( 'No data found!', 'auxin-elements' ) );
406 }
407
408 $b64_content = base64_encode( wp_json_encode( array(
409 'theme_options' => $theme_options,
410 'theme_mods' => $theme_mods
411 ) ) );
412
413 wp_send_json_success( array(
414 'content' => $b64_content,
415 'fileName' => THEME_ID . '_export_' . current_time('timestamp') . '.txt'
416 ) );
417
418 }
419 add_action( 'wp_ajax_auxin_customizer_export', 'auxin_customizer_export' );
420
421
422 /**
423 * wordpress ajax for auxin customizer import
424 *
425 * @return json
426 */
427 function auxin_customizer_import(){
428 // Check security
429 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'auxin-import-control' ) ) {
430 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
431 }
432
433 if ( ! current_user_can('manage_options') ) {
434 wp_send_json_error( __( "Access Denied: You don't have the required permissions!", 'auxin-elements' ) );
435 }
436
437 // Check input file
438 if ( ! isset( $_FILES['file'] ) || 0 < $_FILES['file']['error'] ) {
439 wp_send_json_error( __( 'Please upload a valid file.', 'auxin-elements' ) );
440 }
441
442 // Get and decode file content
443 global $wp_filesystem;
444 if ( empty($wp_filesystem) ) {
445 require_once( ABSPATH . '/wp-admin/includes/file.php' );
446 WP_Filesystem();
447 }
448 $json_content = $wp_filesystem->get_contents( $_FILES['file']['tmp_name'] );
449 $array_content = json_decode( base64_decode( $json_content ), true );
450 $array_content = auxin_sanitize_input( $array_content );
451
452 // Check array empty
453 if ( empty( $array_content ) || ! is_array( $array_content ) ) {
454 wp_send_json_error( __( 'Invalid or Empty Data.', 'auxin-elements' ) );
455 }
456
457 if( isset( $array_content['theme_options'] ) ){
458 // Get image options names
459 $get_options = auxin_get_defined_options();
460 $custom_images = array();
461 foreach ( $get_options['fields'] as $key => $value ) {
462 if ( ! array_search( 'image', $value ) ) {
463 continue;
464 }
465 $custom_images[] = $value['id'];
466 }
467 // Update options
468 foreach ( $array_content['theme_options'] as $auxin_key => $auxin_value ) {
469 if ( in_array( $auxin_key, $custom_images ) && ! empty( $auxin_value ) ) {
470 continue;
471 }
472 // Update exclusive auxin options
473 auxin_update_option( $auxin_key , $auxin_value );
474 }
475 }
476
477 if( isset( $array_content['theme_mods'] ) ){
478 foreach ( $array_content['theme_mods'] as $theme_mods_key => $theme_mods_value ) {
479 // Start theme mods loop:
480 if( $theme_mods_key === 'custom_logo' ) {
481 continue;
482 }
483 // Update theme mods
484 set_theme_mod( $theme_mods_key , $theme_mods_value );
485 }
486 }
487
488 // force to flush dynamic asset files
489 delete_transient( 'auxin_' . AUXELS_SLUG . '_version' );
490
491 wp_send_json_success( __( 'Successfully Imported.', 'auxin-elements' ) );
492
493 }
494 add_action( 'wp_ajax_auxin_customizer_import', 'auxin_customizer_import' );
495
496
497 /**
498 * Ajax handler for auxin_template_library control to import template
499 *
500 * @return json
501 */
502 function auxin_template_control_importer() {
503 $template_type = isset( $_POST['template_type'] ) ? sanitize_text_field( wp_unslash( $_POST['template_type'] ) ) : '';
504 if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'customizer-template-library-' . $template_type ) ) {
505 wp_send_json_error([
506 'message' => __( 'Authorization failed!', 'auxin-elements')
507 ]);
508 }
509
510 if ( ! current_user_can('manage_options') ) {
511 wp_send_json_error( [
512 'message' => __( "Access Denied: You don't have the required permissions!", 'auxin-elements' )
513 ]);
514 }
515
516 // Strict validation for ID
517 if ( ! isset( $_POST['id'] ) || ! ctype_digit( $_POST['id'] ) ) {
518 wp_send_json_error([
519 'message' => __('Invalid template ID.', 'auxin-elements')
520 ]);
521 }
522
523 $template_id = absint($_POST['id']);
524
525 wp_send_json( auxin_template_importer( $template_id, $template_type, 'update_menu' ) );
526 }
527 add_action( 'wp_ajax_auxin_template_control_importer', 'auxin_template_control_importer' );
528