如何在AJAX运行的WordPress管理栏上创建自定义按钮链接

时间:2017-01-06 作者:g13

我知道如何使用admin\\u bar\\u菜单操作在管理栏中添加链接。我想运行一个脚本,通过AJAX单击管理栏中的按钮来清除缓存。

function add_item($admin_bar){
    global $pagenow;
    $admin_bar->add_menu(array(\'id\'=>\'cache-purge\',\'title\'=>\'Cache Purge\',\'href\'=>\'http://example.com/purge\'));
}
add_action(\'admin_bar_menu\', \'add_item\', 100);
是否有任何方法可以运行该链接,而不必转到该链接,而是通过AJAX?

1 个回复
最合适的回答,由SO网友:Prasad Nevase 整理而成

下面是有关如何执行此操作的完整代码。有关更多详细信息,请参见how admin ajax work 在codex上。

<?php

/* Your code to add menu on admin bar */

add_action(\'admin_bar_menu\', \'add_item\', 100);

function add_item( $admin_bar ){
  global $pagenow;
  $admin_bar->add_menu( array( \'id\'=>\'cache-purge\',\'title\'=>\'Cache Purge\',\'href\'=>\'#\' ) );
}

/* Here you trigger the ajax handler function using jQuery */

add_action( \'admin_footer\', \'cache_purge_action_js\' );

function cache_purge_action_js() { ?>
  <script type="text/javascript" >
     jQuery("li#wp-admin-bar-cache-purge .ab-item").on( "click", function() {
        var data = {
                      \'action\': \'example_cache_purge\',
                    };

        /* since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php */
        jQuery.post(ajaxurl, data, function(response) {
           alert( response );
        });

      });
  </script> <?php
}

/* Here you hook and define ajax handler function */

add_action( \'wp_ajax_example_cache_purge\', \'example_cache_purge_callback\' );

function example_cache_purge_callback() {
    global $wpdb; /* this is how you get access to the database */
    /* You cache purge logic should go here. */
    $response = "Cache Purged !";
    echo $response;
    wp_die(); /* this is required to terminate immediately and return a proper     response */
} 
?>

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct