web-dev-qa-db-fra.com

Personnaliseur AJAX en utilisant des boutons

J'ai ajouté un nouveau bouton personnalisé au programme de personnalisation wordpress. Mon objectif est de créer un bouton dans le programme de personnalisation qui lance ensuite une fonction spécifique dans un autre fichier .php. J'ai deux problèmes, l'un est que cela ne fonctionnera que lorsque ma fonction que je veux activer est à l'intérieur de functions.php ou du customizer.php personnalisé. Mon deuxième problème est que cela ne fonctionne que lorsque c'est le thème actif. Je suis assez nouveau pour ajax et le personnalisateur, alors merci pour toute aide.

  ////////////////////////////////////////////////////////
  inside my cystom customizer.php
  ////////////////////////////////////////////////////////
  $wp_customize->add_setting( 'ajax_button_settings', array(
  ) );

  $wp_customize->add_control( new ajax_button(
  $wp_customize,
      'pagebuilder', array(
      'section' => 'section',
      'settings' => 'ajax_button_settings',
  ) ) );
 ////////////////////////////////////////////////////////
 if ( class_exists( 'WP_Customize_Control' ) ) {

 class ajax_button extends WP_Customize_Control {

 public function render_content() { ?>

 <script>
 jQuery( document ).on( 'click', '.ajaxbutton', function() {

 jQuery.ajax({
    url : '/wordpress/wp-admin/admin-ajax.php',
    type : 'post',
    data : {
        action : 'my_action',
    },

   });
   })
 </script>

 <button type="button" class="ajaxbutton">CLICK ME</button>

 <?php
    }
  }
 }
 ?>
 ////////////////////////////////////////////////////////
 inside my functions.php
 ////////////////////////////////////////////////////////
 add_action('wp_ajax_my_action','ajaxfuntion');
 add_action('wp_ajax_nopriv_my_action','ajaxfunction');

    function ajaxfunction(){
 //my function//
     die();

    }
1
Dostomatic

Le fait d'avoir AJAX à l'intérieur du personnalisateur annule la raison de son utilisation. L’idée du personnalisateur est qu’il contrôle entièrement l’état des paramètres pendant qu’il est actif, et le fait de mettre à jour tout paramètre sans passer par la logique du personnaliseur peut en réalité créer une discordance entre ce qui est affiché à l’utilisateur et ce que les paramètres vont afficher. effectivement faire lorsque enregistré.

Peut-être que ça peut aller si vous utilisez ajax pour "en lecture seule", mais pour le moment, j’ai du mal à imaginer un scénario dans lequel il peut être utile, et ne peut pas être mis en œuvre simplement en ajoutant les valeurs en tant que paramètres à la code implémentant le contrôle.

1
Mark Kaplun