WordPress中文开发手册

  1. Home
  2. Docs
  3. WordPress中文开发手册
  4. WordPress插件开发
  5. JavaScript
  6. 概要

概要

以下是上述讨论中的所有示例代码段,汇编成两个完整的代码页:一个用于jQuery,另一个用于PHP。

PHP

此代码驻留在您的一个插件页面上。

<?php add_action('admin_enqueue_scripts', 'my_enqueue');
function my_enqueue($hook) {
    if( 'myplugin_settings.php' != $hook) return;
    wp_enqueue_script( 'ajax-script',
        plugins_url( '/js/myjquery.js', __FILE__ ),
        array('jquery')
    );
    $title_nonce = wp_create_nonce('title_example');
    wp_localize_script('ajax-script', 'my_ajax_obj', array(
        'ajax_url' => admin_url( 'admin-ajax.php' ),
        'nonce'    => $title_nonce,
    ));
}
 
add_action('wp_ajax_my_tag_count', 'my_ajax_handler');
function my_ajax_handler() {
    check_ajax_referer('title_example');
    update_user_meta( get_current_user_id(), 'title_preference', $_POST['title']);
    $args = array(
       'tag' => $_POST['title'],
    );
    $the_query = new WP_Query( $args );
    echo $_POST['title'].' ('.$the_query->post_count.') ';
    wp_die(); // all ajax handlers should die when finished
}

##查询

此代码位于您的插件文件夹下面的文件js/myjquery.js中。

jQuery(document).ready(function($) {       //wrapper
    $(".pref").change(function() {         //event
        var this2 = this;                  //use in callback
        $.post(my_ajax_obj.ajax_url, {     //POST request
           _ajax_nonce: my_ajax_obj.nonce, //nonce
            action: "my_tag_count",        //action
            title: this.value              //data
        }, function(data) {                //callback
            this2.nextSibling.remove();    //remove the current title
            $(this2).after(data);          //insert server response
        });
    });
});

在存储首选项之后,将所得的帖子计数添加到所选标题。

更多信息

  • How To Use AJAX In WordPress
  • AJAX for WordPress