Jeg udvikler et wordpress-site ved hjælp af brugerdefinerede skabeloner / temaer, men jeg har problemer. Jeg vil bruge Ajax til at ringe til en funktion, når en bruger klikker på en knap. På den ene side har jeg en sådan knap:

<p class="form-submit"> <input name="message_read" type="submit" class="submit button mark-as-read" value= "Mark as read" /> </p> 

Og jeg har en jQuery / Ajax-funktion som denne:

jQuery(document).ready(function() { jQuery(".mark-as-read").click(function () { console.log("The function is hooked up"); jQuery.ajax({ type: "POST", url: "/wp-admin/admin-ajax.php", data: { action: "mark_message_as_read", }, success: function (output) { console.log(output); } }); }); }); 

Funktionen ovenfor lever i wp-content/themes/my-theme/js/wp_ajax_calls.js. Jeg tilføjede scriptet til webstedet sådan:

1) Jeg føjede dette til mine funktioner. Php-fil:

wp_enqueue_script( "ajax calls", get_template_directory_uri() ."/js/wp_ajax_calls.js", array("jquery"), "1.0", true); 

2) Jeg inkluderede scriptet i overskriften.

<script type="text/javascript" src="https://mysite//wp-content/themes/twentyfifteen/js/wp_ajax_calls.js"></script> 

Når jeg klikker på knappen som den er, vises console.log-sætningen. Efter min forståelse vil jeg have min ajax-funktion til at kalde en php-funktion, der giver mig mulighed for at bruge $ wpdb. Jeg har dette i funktioner. Php:

function mark_message_as_read() { global $wpdb; // do stuff. } 

Det er her, jeg bliver forvirret. Jeg har to hovedspørgsmål:

1) Jeg tror, jeg formodes at have nogle tilføjelseshandlinger () et eller andet sted, men jeg ved ikke, hvor jeg skal læg dem, og jeg ved heller ikke, hvilken krog jeg skal bruge.

2) Derudover Jeg vil være i stand til at videregive data (meddelelses-idet) til php-funktionen til min db-forespørgsel. Hvordan sender jeg et argument til den funktion?

Jeg vil ikke bruge noget som if( isset($_POST["message_whatever"]) ) twentyfifteen_message_whatever(); på grund af den måde, jeg har konfigureret beskeder på.

Glad for at give flere oplysninger, hvis det er nødvendigt. På forhånd tak for din hjælp !!

Kommentarer

Svar

  1. Opret et underordnet tema, så du ikke roder med koden for et eksisterende tema, fordi du næste gang du opdaterer temaet, kan du miste alle dine ændringer (se Børnetemaer )

  2. Sådan overføres værdier til din ajax-anmodning:

    jQuery(document).ready(function() { jQuery(".mark-as-read").click(function () { console.log("The function is hooked up"); jQuery.ajax({ type: "POST", url: "/wp-admin/admin-ajax.php", data: { action: "mark_message_as_read", // add your parameters here message_id: $(".your-selector").val() }, success: function (output) { console.log(output); } }); }); }); 

Du kan undersøge noget på Nonces også for at tilføje et lag af sikkerhed til din app: https://codex.wordpress.org/WordPress_Nonces

  1. Endelig, PHP-koden til at håndtere anmodningen (også her skal du håndtere nonce i det virkelige livskode):

    // register the ajax action for authenticated users add_action("wp_ajax_mark_message_as_read", "mark_message_as_read"); // register the ajax action for unauthenticated users add_action("wp_ajax_nopriv_mark_message_as_read", "mark_message_as_read"); // handle the ajax request function mark_message_as_read() { $message_id = $_REQUEST["message_id"]; // add your logic here... // in the end, returns success json data wp_send_json_success([/* some data here */]); // or, on error, return error json data wp_send_json_error([/* some data here */]); } 

Kommentarer

  • Mange tak! Jeg ' Jeg vil bestemt også se på nonces. : D

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *