Fejlesztök egy WordPress webhelyet egyedi sablonok / témák használatával, de nekem baj. Az Ajax használatával szeretnék függvényt hívni, amikor a felhasználó egy gombra kattint. Az egyik oldalon van egy ilyen gombom:

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

És van egy ilyen jQuery / Ajax funkcióm:

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

A fenti függvény wp-content/themes/my-theme/js/wp_ajax_calls.js -ban él. A szkriptet hozzáadtam a webhelyhez így:

1) Ezt hozzáadtam a functions.php fájlomhoz:

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

2) A fejlécbe felvettem a szkriptet.

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

Amikor a gombra kattintok, a console.log utasítás megjelenik. Megértésem szerint azt akarom, hogy az ajax függvényem hívjon egy php függvényt, amely lehetővé teszi a $ wpdb használatát. Ez megvan a függvények.php fájlban:

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

Itt zavarosodok. Két fő kérdésem van:

1) Azt hiszem, állítólag van valahol néhány add_action () “s, de nem tudom, hova tedd őket, és azt sem tudom, hogy milyen horgot kellene használnom.

2) Ezenkívül Szeretnék tudni adatokat (az üzenetazonosítót) továbbítani a db lekérdezésem php függvényéhez. Hogyan adhatok át argumentumot ennek a függvénynek?

Az üzenetek beállítása miatt nem akarok if( isset($_POST["message_whatever"]) ) twentyfifteen_message_whatever(); -t használni.

Szükség esetén szívesen adok további információkat. Előre is köszönöm a segítséget !!

Megjegyzések

Válasz

  1. Hozzon létre egy gyermek témát, hogy ne kavarjon vele egy meglévő téma kódja, mert ha legközelebb frissíti a témát, elveszítheti az összes változtatást (lásd: Gyermektémák )

  2. Az alábbiak szerint adhatja át az értékeket az ajax kérelemnek:

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

Végezhet néhány kutatást a Nonces rendszeren is, hogy adjon hozzá egy biztonsági szintet alkalmazásához: https://codex.wordpress.org/WordPress_Nonces

  1. Végül a PHP-kód a kérés kezeléséhez (itt is kezelnie kell a valós élet kódját):

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

megjegyzések

  • nagyon köszönöm! ' mindenképpen megnézem a nonces-eket is. : D

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük