WordPress: wie Sie eine plugin-Funktion mit ajax-call?

Schreibe ich eine WordPress MU plugin, enthält es einen link, der mit jeder post, und ich will ajax verwenden, um rufen Sie eine der plugin-Funktionen, wenn der Benutzer auf diesen link klickt, und dann dynamisch zu aktualisieren, die den link-text mit der Ausgabe von dieser Funktion.

Bin ich stecken mit der ajax-Abfrage. Ich habe das zu kompliziert, klar hack-ish, Weg, es zu tun, aber es ist nicht ganz arbeiten. Was ist der 'richtige' oder 'wordpress' mit ajax-Funktionalität in ein plugin?

(Meine aktuellen hack-code ist unten. Wenn ich auf den link habe ich nicht bekommen, die gleiche Ausgabe bekomme ich in der wp-Seite, wie wenn ich direkt zu sample-ajax.php in meinem browser.)

Ich habe meinen code[1] wie folgt festgelegt:

mu-plugins/sample.php:

<?php
/*
Plugin Name: Sample Plugin
*/
if (!class_exists("SamplePlugin")) {
  class SamplePlugin {
    function SamplePlugin() {}
    function addHeaderCode() {
      echo '<link type="text/css"  href="'.get_bloginfo('wpurl').
             '/wp-content/mu-plugins/sample/sample.css" />\n';
      wp_enqueue_script('sample-ajax', get_bloginfo('wpurl') .
             '/wp-content/mu-plugins/sample/sample-ajax.js.php',
             array('jquery'), '1.0');

    }
    //adds the link to post content.
    function addLink($content = '') {
        $content .= "<span class='foobar clicked'><a href='#'>click</a></span>";
        return $content;
    }
    function doAjax() { //
        echo "<a href='#'>AJAX!</a>";
    } 
  }
}
if (class_exists("SamplePlugin")) {
  $sample_plugin = new SamplePlugin();
}
if (isset($sample_plugin)) {
  add_action('wp_head',array(&$sample_plugin,'addHeaderCode'),1);
  add_filter('the_content', array(&$sample_plugin, 'addLink'));
}

mu-plugins/sample/sample-ajax.js.php:

<?php
if (!function_exists('add_action')) {
    require_once("../../../wp-config.php");
}
?>
jQuery(document).ready(function(){
    jQuery(".foobar").bind("click", function() {
        var aref = this;
        jQuery(this).toggleClass('clicked');
        jQuery.ajax({
          url: "http://mysite/wp-content/mu-plugins/sample/sample-ajax.php",
          success: function(value) {
            jQuery(aref).html(value);
          }
        });
    });
});

mu-plugins/sample/sample-ajax.php:

<?php
if (!function_exists('add_action')) {
  require_once("../../../wp-config.php");
}
if (isset($sample_plugin)) {
  $sample_plugin->doAjax();
} else {
  echo "unset";
}
?>

[1] Hinweis: Das folgende tutorial hat mich dies weit, aber ich bin ratlos an dieser Stelle.
http://www.devlounge.net/articles/using-ajax-with-your-wordpress-plugin

InformationsquelleAutor Bee | 2010-05-25

Schreibe einen Kommentar