Kehitän WordPress-sivustoa käyttämällä mukautettuja malleja / teemoja, mutta minulla on ongelmia. Haluan käyttää Ajaxia kutsumaan toiminnon, kun käyttäjä napsauttaa painiketta. Yhdellä sivulla minulla on tällainen painike:

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

Ja minulla on tällainen jQuery / Ajax-toiminto:

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); } }); }); }); 

Yllä oleva toiminto asuu wp-content/themes/my-theme/js/wp_ajax_calls.js -kohdassa. Lisäsin komentosarjan sivustolle näin:

1) Lisäsin tämän toiminnot.php-tiedostooni:

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

2) Lisäsin käsikirjoituksen otsikkoon.

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

Kun napsautan painiketta sellaisenaan, console.log-käsky tulee näkyviin. Ymmärtääkseni haluan ajax-funktioni kutsuvan php-toimintoa, joka antaa minun käyttää $ wpdb. Minulla on tämä funktioissa.php:

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

Tässä olen hämmentynyt. Minulla on kaksi pääkysymystä:

1) Luulen, että minulla pitäisi olla joitain add_action () -merkkejä, mutta en tiedä minne laita ne ja en myöskään tiedä mitä koukkua minun pitäisi käyttää.

2) Lisäksi, Haluan pystyä välittämään tietoja (viestin tunnus) db-kyselyni php-funktiolle. Kuinka välitän argumentin tälle funktiolle?

En halua käyttää jotain if( isset($_POST["message_whatever"]) ) twentyfifteen_message_whatever();, koska olen määrittänyt viestejä.

Annan mielelläni lisätietoja tarvittaessa. Kiitos etukäteen avustasi!

Kommentit

Vastaa

  1. Luo lapsiteema, jotta et sotkeisi olemassa olevan teeman koodi, koska seuraavan kerran kun päivität teeman, saatat menettää kaikki muutokset (katso Lapsiteemat )

  2. Näin välität arvot ajax-pyyntösi:

    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); } }); }); }); 

Voit tehdä jonkin verran tutkimusta myös Nonces-sovelluksessa lisätä suojaustaso sovellukseesi: https://codex.wordpress.org/WordPress_Nonces

  1. Lopuksi PHP-koodi pyynnön käsittelemiseksi (myös tässä sinun tulee käsitellä nonce-tosielämän koodi):

    // 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 */]); } 

Kommentit

  • Paljon kiitoksia! ' Tarkastelen ehdottomasti myös ei-muita. : D

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *