web-dev-qa-db-ja.com

カスタマイザ AJAX ボタンを使う

私はWordpressカスタマイザに新しいカスタムボタンを追加しました。私の目標はカスタマイザの中にボタンを作成し、それが次に別の.phpファイルの中の特定の機能を起動することです。私は2つの問題を抱えています、1つはそれが私が起動したい私の機能がfunctions.phpかカスタムcustomizer.phpのどちらかの中にあるときだけ働くということです。私の2番目の問題は、それがアクティブなテーマである場合にのみ機能するということです。私はajaxとカスタマイザにまったく慣れていないので、どうもありがとう。

  ////////////////////////////////////////////////////////
  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

カスタマイザ内にAJAXがあると、そもそもカスタマイザを使用する理由が無効になります。カスタマイザの考え方は、アクティブになっている間に設定の状態を完全に制御することです。カスタマイザロジックを経由せずに設定を更新すると、実際にはユーザに表示される内容と設定内容が一致しなくなります実際に保存されたときに行います。

「読み取り専用」の方法でajaxを使用しても大丈夫かもしれませんが、現在のところ便利であり、値をパラメーターとして追加するだけでは実装できないシナリオを想像するのは困難です。コントロールを実装するコード.

1
Mark Kaplun