I ama newbie in WordPress Plugin development in which I have some HTML form on the main plugin page that will get the data from the admin who is logged in and a back page where I have some different functions in PHP like to get information from the database etc. To explain in detail, here is the code…
Main Plugin File:
<?php /* Plugin Name: WP Testing Plugin Plugin URI: http://www.wordpress.org/WP-Testing-Plugin Description: A Detailed Description About This Plugin. Author: Muhammad Hassan Version: 0.1 Author URI: http://www.wordpress.org */ /*____________WP Testing Plugin Admin/Script_____________*/ function wp_testingPlugin_admin() { echo ' <form id="searchForm" onsubmit="return searchData(this)"> <input name="WhatToSearch" type="text" /> <input type="submit" value="Search"/> <input type="reset" value="Reset"/> <div id="showReturnData"></div> </form> '; echo ' <form id="infoForm" onsubmit="return searchInfo(this)"> <input name="WhatToKnow" type="text" /> <input type="submit" value="Search"/> <input type="reset" value="Reset"/> <div id="showReturnInfo"></div> </form> '; echo ' <script type="text/javascript"> function searchData(incomingForm) { // Confirmation To Add A Data var answer = confirm("Are You Sure Want To Search?"); if (answer){ // If User Click Ok Then Execute The Below Code var FD = new FormData(incomingForm); // Get FORM Element Object FD.append("Function", "DataFunction"); // Adding Extra Data In FORM Element Object To Hit Only This Function In Ajax Call File var ajx = new XMLHttpRequest(); ajx.onreadystatechange = function () { if (ajx.readyState == 4 && ajx.status == 200) { document.getElementById("showReturnData").innerHTML = ajx.responseText; } }; ajx.open("POST", "'.plugin_dir_url( __FILE__ ).'my_functions.php", true); ajx.send(FD); document.getElementById("showReturnData").innerHTML = "<div class="error">ERROR: AJAX Did Not Respond.</div>"; } return false; // For Not To Reload Page } function searchInfo(incomingForm) { // Confirmation To Add A Data var answer = confirm("Are You Sure Want To Search?"); if (answer){ // If User Click Ok Then Execute The Below Code var FD = new FormData(incomingForm); // Get FORM Element Object FD.append("Function", "InfoFunction"); // Adding Extra Data In FORM Element Object To Hit Only This Function In Ajax Call File var ajx = new XMLHttpRequest(); ajx.onreadystatechange = function () { if (ajx.readyState == 4 && ajx.status == 200) { document.getElementById("showReturnData").innerHTML = ajx.responseText; } }; ajx.open("POST", "'.plugin_dir_url( __FILE__ ).'my_functions.php", true); ajx.send(FD); document.getElementById("showReturnInfo").innerHTML = "<div class="error">ERROR: AJAX Did Not Respond.</div>"; } return false; // For Not To Reload Page } </script> '; //if you want only logged in users to access this function use this hook add_action('wp_ajax_searchData', 'searchData'); add_action('wp_ajax_searchInfo', 'searchInfo'); //if you want none logged in users to access this function use this hook add_action('wp_ajax_nopriv_searchData', 'searchData'); add_action('wp_ajax_nopriv_searchInfo', 'searchInfo'); } /*__________________________________________________________________*/ /*____________WP Testing Plugin Option_____________*/ //Adding "WP Testing Plugin" Menu To WordPress -> Tools function wp_testingPlugin() { // add_management_page( $ page_title, $ menu_title, $ capability, $ menu_slug, $ function); Menu Under Tools add_management_page("WP Testing Plugin By Hassan", "WP Testing Plugin", 'activate_plugins', "WP-Testing-Plugin", "wp_testingPlugin_admin"); } add_action('admin_menu', 'wp_testingPlugin'); /*__________________________________________________________________*/ ?>
And this is my_functions.php file.
<?php /****************************************************************************/ //Garb The Function Parameter /****************************************************************************/ $ Function = $ _POST['Function']; /****************************************************************************/ // Run Search Function /****************************************************************************/ if ($ Function == "DataFunction"){ if(!isset($ _POST['WhatToSearch'])){ $ WhatToSearch = "Nothing"; } else { $ WhatToSearch = $ _POST['WhatToSearch']; } echo "<div class='success'>SUCCESS: Function Is Working Perfectly And Getting Data ".$ WhatToSearch.".</div>"; } /****************************************************************************/ // Run Another Function /****************************************************************************/ if ($ Function == "InfoFunction"){ if(!isset($ _POST['WhatToKnow'])){ $ WhatToKnow = "Nothing"; } else { $ WhatToKnow = $ _POST['WhatToKnow']; } echo "<div class='success'>SUCCESS: Function Is Working Perfectly And Getting Data ".$ WhatToKnow.".</div>"; } ?>
But my code is not working and not hitting my_functions.php
file even. Whats the problem here? Need basic step only to work in this patteren. Currently, I am not sure I am even implementing this correctly as I never used WP AJAX before. So right now, my objective is just to get a basic example working. I appreciate any suggestions on how to accomplish this.
Thank you!