Функция плагина Jquery wordpress

#php #jquery #wordpress

#php #jquery #wordpress

Вопрос:

Я создаю свой собственный плагин, но у меня возникает проблема, когда я пытаюсь передать свою функцию с помощью кнопки. Когда я перезагружаю страницу, моя функция проходит, но когда я нажимаю кнопку, функция не работает. ошибка Generate_coupon_woo не определена. Я пытался сделать это, когда пользователь пытался сгенерировать код одним щелчком мыши.

Я создаю свой собственный плагин, но у меня возникает проблема, когда я пытаюсь передать свою функцию с помощью кнопки. Когда я перезагружаю страницу, моя функция проходит, но когда я нажимаю кнопку, функция не работает. ошибка Generate_coupon_woo не определена. Я пытался сделать это, когда пользователь пытался сгенерировать код одним щелчком мыши.

 <?php
/**
 * Plugin Name: Demo remote post
 * Description: connectd
 * Version:     1.0.0
 * Author:      Digital Studio
 */
defined('ABSPATH') or die('Unauthorized Access !');



add_shortcode('nouveauShortcode', 'gererShortcode');




function gererShortcode(){
  ?>
 
  <div class="wrap">
    <h2>Digital Studio Plugin</h2>
    <button class="btn btn-primary" type="but" id="submit">code Promo</button>
    </div>
    <script>
      jQuery(document).ready(function($) {
        $("#submit").on('click', Generate_coupon_woo);
      });
    </script>
  <?php
  } 
  






    function Generate_coupon_woo(){
        $url='localhost:3306';
     
        $coupon_code = substr( "abcdefghijklmnopqrstuvwxyz123456789", mt_rand(0, 50) , 1) .substr( md5( time() ), 1); // Code
        $coupon_code = substr( $coupon_code, 0,10); // create 10 letters coupon
        $amount = '15'; // Amount
        $discount_type = 'fixed_cart'; // Type: fixed_cart, percent, fixed_product, percent_product // ici le type soit fixé sur le panier à la fin, soit en pourcentage sur le panier , soit fixé sur le produit, soit en pourcentage sur le produit
        
        $coupon = array(
            'post_title'   => $coupon_code,
            'post_content' => '€15 off coupon',
            'post_excerpt' => '€15 off coupon',
            'post_status'  => 'publish',
            'post_author'  => 1,
            'post_type'    => 'shop_coupon'
        );
     
     
        $username = "*******";
        $password = "********";
        $database = "******";
        
        $mydb = new wpdb($username, $password, $database, $url);
        $rows = $mydb->get_results("SELECT comment_author FROM VWfBb8z7_comments");
        //$new_coupon_id = $mydb->wp_insert_post( $coupon );
        $insert_test = $mydb->insert( 'VWfBb8z7_posts', $coupon );
          
        update_post_meta( $insert_test, 'discount_type', $discount_type );
        update_post_meta( $insert_test, 'coupon_amount', $amount );
        update_post_meta( $insert_test, 'individual_use', 'yes' );
        update_post_meta( $insert_test, 'product_ids', '' );
        update_post_meta( $insert_test, 'exclude_product_ids', '' );
        update_post_meta( $insert_test, 'usage_limit', '1' );
        update_post_meta( $insert_test, 'expiry_date', '' );
        update_post_meta( $insert_test, 'apply_before_tax', 'no' );
        update_post_meta( $insert_test, 'free_shipping', 'no' );      
        update_post_meta( $insert_test, 'exclude_sale_items', 'no' );     
        update_post_meta( $insert_test, 'free_shipping', 'no' );      
        update_post_meta( $insert_test, 'product_categories', '' );       
        update_post_meta( $insert_test, 'exclude_product_categories', '' );       
        update_post_meta( $insert_test, 'minimum_amount', '' );       
        update_post_meta( $insert_test, 'customer_email', '' ); 
      }
      

  ?>
 

Ответ №1:

Согласно документации для add_shortcode: https://developer.wordpress.org/reference/functions/add_shortcode /

«Обратите внимание, что функция, вызываемая коротким кодом, никогда не должна выдавать какой-либо вывод. Функции шорткода должны возвращать текст, который будет использоваться для замены шорткода. Прямое получение выходных данных приведет к неожиданным результатам. Это похоже на то, как должны вести себя функции фильтра, поскольку они не должны вызывать ожидаемые побочные эффекты от вызова, поскольку вы не можете контролировать, когда и откуда они вызываются. »

Возможно, вы захотите изменить свою стратегию в отношении того, как вы хотите реализовать этот код и где вы хотите, чтобы он был реализован.

Если вы хотите пойти по этому пути. Попробуйте добавить это. Добавление в init дает время WordPress для его инициализации.

 add_action( 'init', 'wpdocs_add_custom_shortcode' );
 
function gerer_add_custom_shortcode() {
    add_shortcode('nouveauShortcode', 'gererShortcode');
}