ajax调用wordpress

时间:2016-04-20 05:17:43

标签: php ajax wordpress

我是wordpress的新用户,我需要调用ajax来获取wordpress中下拉选项的json对象。我无法调用同一目录中的php文件,因此我使用<?php echo admin_url('custom-file.php'); ?>并将php文件放在wp-admin中,我可以使用它获取结果但更新会在我更新时被删除wordpress。我很困惑如何在与调用php文件

相同的目录中调用php文件

AJAX call in wordpress template Ajax call add current url in wordpress

我找到了这两个链接,但没有理解它是如何工作的。任何帮助都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:3)

这是带有WordPress的自定义AJAX的演示..

Bellow脚本是HTML

    <div class="ajax-column">
  <div class="options">
    <select id="custom-change">
        <option value="val1">Val 1</option>
        <option value="val2">Val 2</option>
        <option value="val3">Val 3</option>
        <option value="val4">Val 4</option>
    </select>
  </div>

  <div id="ajax_result_form">
    <div id="ajax_text_result"></div>
    <div class="row">
      <div class="" id="ajax_result"> </div>
    </div>
  </div>
</div>

这是JS Script as my-ajax-script.js

jQuery(document).ready(function(e) {


jQuery('#custom-change').change(function(e) {

        var text = jQuery('#custom-change').val();        
        jQuery.ajax({
                type: "POST",
                url: admin_url,
                dataType:"json",
                data: { 
                    action: 'data_custom_ajax',
                    text: text,
                },
                cache: false,
                success: function(data){                    
                    if(data['data_result']==''){
                        jQuery('#ajax_result').hide();                        
                    }
                    else{
                        jQuery('#ajax_result').css('display','block');
                        jQuery('#ajax_result').html(data['data_result']);                            
                    }
                }
        });
    });
});

这是WordPress脚本作为主题的functions.php文件。

function my_enqueue() {

    wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );

    wp_localize_script( 'ajax-script', 'my_ajax_object',    array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue' );

    /* Custom Ajax */
    function data_custom_ajax(){    
        $custom_val = $_POST['text'];

        $testdomin_query = new WP_Query($testdomin_args_search);
        $testdomin_result='';   
        if(!empty($custom_val)){
            $testdomin_result = _e('Your Action hear','textdomin');
        }
        else
            $testdomin_result = _e('Not found','textdomin');

        echo json_encode(array("data_result"=>$testdomin_result));
        die;
    }
    add_action('wp_ajax_nopriv_data_custom_ajax', 'data_custom_ajax');
    add_action('wp_ajax_data_custom_ajax', 'data_custom_ajax');