[WordPress] Ajax php ファイルをワードプレスの組み込み関数として認識できません。

スポンサーリンク

Question

ワードプレスとワードプレスのajaxで苦労している。

ajax を使用して、プラグインをビルドしようとしています。私の php ファイル

(xxxecommerce.ajax.php)

内関数で

get_option('xxx-ecommerce-admin2-email');

のようなワードプレスと WP_Widget  にも拡張できません

wp_enqueue_script(

    'xxxecommerce1',
    plugins_url( '/script.js', __FILE__ ),
    array( 'jquery' )
);

wp_localize_script(
    'xxxecommerce1', 
    'the_ajax_script', 
    array( 'ajaxurl' => plugins_url( '/xxxecommerce.ajax.php', __FILE__ ) ) 
    );

これは私の

script.js

jQuery(document).ready(function() { 
    jQuery('.xxx-ecommerce-prod-opt').click(function() {

        var data = {
            action: 'test_response',
            post_var: 'this will be echoed back'
        };

        jQuery.post(the_ajax_script.ajaxurl, data, function(response) {
            alert(response);
        });

    });
});

これは私の

xxxecommerce.ajax.php

$x = new xxxecommerceAjax();
$x->getEmail();

class xxxecommerceAjax extends WP_Widget 
{
    function getEmail() {
        $email = get_option('xxx-ecommerce-admin2-email');
        echo $email;
    }
}

答え

このような ajax を呼び出すことはできません、管理者 ajax.php ajax url からファイルを呼び出すし、アクションを見てこの例で定義する必要がある:

$.ajax({
    url: 'admin-ajax.php', 
    type: 'post', 
    data: {action: 'my_action'}, 
    dataType: 'json'
});

管理者 ajax.php ファイルに要求を送信するアクションを定義しましたが、今、ワードプレスではある ajax リクエストを処理する 2 つのフックが組み込まれて

  1. wp_ajax_YOUR_AJAX_ACTION – wp_ajax_my_action
  2. wp_ajax_nopriv_YOUR_AJAX_ACTION – wp_ajax_nopriv_my_action

おり、このように呼び出すことができます:

// Call it in your themes functions.php file or in your plugin
add_action( 'wp_ajax_my_action', 'my_action_callback' );
function my_action_callback() {
    // Access more data through ajax request
    // any php method here to send the response

    // include your xxxecommerce.ajax.php file here and send response

    die();
}

 

http://stackoverflow.com/questions/27699425/wordpress-built-in-functions-cant-be-recognize-on-ajax-php-file

スポンサーリンク

Leave a Reply