0

特定のデータをプルしたいテスト環境で、パーマリンク /test/ で使用する [フック] があります。これは、私が開発しているプラ​​グインに配置されています。これが私がやっていることの例です:

www.website.com/test/?step=9

ボタン押したらお願いします

<a href="#ajaxthing" class="myajax" data-id="600">

AJAX 呼び出しが具体的にクラスに送られること。このようにして、私のプラグインは他のプラグインと競合しません。

JavaScript/JQUERY POST を配置するより良い方法があれば教えてください。

これは私がこれまでに試したことです:

class step9
{

    public function __construct()
    {
        add_action('init', array($this, 'init'));
        add_shortcode('custom_form', array($this, 'shortcode_handler'));
        add_action('wp_ajax_custom_action', array($this,'custom_action_callback_wp'));
        add_action( 'wp_ajax_nopriv_custom_action', array($this,'custom_action_callback_wp' ));

    }

    public function init()
    {
        if (!empty($_POST['step']))
        {
            function custom_action_callback_wp() {
                global $wpdb; // this is how you get access to the database
                $getid = 'ID=> '. $_POST['id'];
                echo $getid;
                exit(); // this is required to return a proper result
            }
        }
    }
        function shortcode_handler($atts)
        {
        echo '<a href="#ajaxthing" class="myajax" data-id="600">Click On this</a>
        <div id="wpajaxdisplay">Ajax Result will display here</div>';

    }
}

$url      = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url_path = parse_url( $url, PHP_URL_PATH );
$slug = pathinfo( $url_path, PATHINFO_BASENAME );
if($slug == "test"){

    if(isset($_GET['step'])&& ($_GET['step'] ==9)|| (isset($_POST['step']==9) &&($_POST['step']==9))){
        $step = new step9();
    }
}

// javascript ajax call with click event
add_action('wp_head', 'ajx_action_javascript_wp');
function ajx_action_javascript_wp() {
    ?>
    <script type="text/javascript" >
    jQuery(document).ready(function($) {
        $('.myajax').click(function(){
            var mydata = $(this).data();
            $('#wpajaxdisplay').html('<div style="text-align:center;">Loading...</div>');
            //console.log(mydata);
            var data = {
                action: 'custom_action',
                step: 9,
                //whatever: 1234,
                id: mydata.id
            };
            $.post('<?php echo esc_url( home_url() ); ?>/wp-admin/admin-ajax.php', data, function(response) {
                $('#wpajaxdisplay').html(response);
            });
        });
    });
    </script>
    <?php
}
4

0 に答える 0