Wie arbeite ich mit AJAX und WordPress?

Ich arbeite an meinem ersten Plugin. Ich möchte eine Follow-Schaltfläche für die Posts hinzufügen, damit die angemeldeten Benutzer den Autoren folgen können.

Ich habe die folgenden Zeilen in die functions.php eingefügt

function add_query_vars_filter( $vars ){ $vars[] = "userID"; return $vars; } add_filter( 'query_vars', 'add_query_vars_filter' ); // The code to display the button function show_follow_button() { $author_ID = get_the_author_meta('ID'); $current_user = wp_get_current_user(); if ( is_user_logged_in() && $current_user->ID != $author_ID ) { return ''; } } // The update function, I know I have to use array for the ids, it's for only test $userID = (get_query_var('userID')) ? get_query_var('userID') : false; if(is_numeric($userID)) { $current_user = wp_get_current_user(); update_user_meta($current_user->ID, 'following', $userID); } // jQuery $('.follow-user').click(function(e) { e.preventDefault(); var userID = $(this).attr('href').slice(1); $.ajax({ type: "GET", url: "index.php", data: 'userID='+userID, success: function(msg){ $('.follow-user').html('Followed'); } }); }); 

Nachdem ich auf den Folgen-Button geklickt habe, sehe ich auf der Net-Registerkarte: index.php? UserID = X, aber nichts passiert in der database. Wo ist das Problem?

Solutions Collecting From Web of "Wie arbeite ich mit AJAX und WordPress?"

Sie verwenden keinen WordPress-Standard-Ajax-Mechanismus.

Das zu tun:

 jQuery.ajax({ type: "POST", url: "/wp-admin/admin-ajax.php", // Send request to admin-ajax.php data: newcontact, // Can be anything. As per your need action: 'myaction', // Required to send otherwise WordPress AJAX won't authorize your request. success: function(data) { jQuery(".follow-user").html(data); } }); 

AJAX Request Handler

 add_action( 'wp_ajax_myaction', 'so_wp_ajax_function' ); add_action( 'wp_ajax_nopriv_myaction' 'so_wp_ajax_function' ); function so_wp_ajax_function(){ //DO whatever you want with data posted //To send back a response you have to echo the result! echo $_POST['name']; echo $_POST['age']; wp_die(); // ajax call must die to avoid trailing 0 in your response } 

Sie können WordPress Codex beziehen. http://codex.wordpress.org/AJAX_in_Plugins . Es ist ziemlich gut dokumentiert.

Hier ist schon die Frage zu Ihrem Problem. dh https://stackoverflow.com/questions/17855846/using-ajax-in-a-wordpress-plugin