So the AJAX action defined in Myplugin::define_admin_hooks()
has been corrected (it's just a typo in the question).
But there's another issue in your code, also in the above function, where the second parameter for $this->loader->add_action()
should actually be $plugin_admin
(which is an object and an instance of the Myplugin_Admin
class) and not wp_ajax
:
Incorrect:
$this->loader->add_action( 'wp_ajax_myplugin_ajax_function', 'wp_ajax', 'myplugin_ajax_function' );
Correct:
$this->loader->add_action( 'wp_ajax_myplugin_ajax_function', $plugin_admin, 'myplugin_ajax_function' );
And I actually noticed another issue — in Myplugin_Admin::myplugin_ajax_function()
, I believe you wanted to call the myplugin_do_magic()
method/function in the Myplugin_Admin
class, so you should use $result = $this->myplugin_do_magic($url);
(note the $this->
) because otherwise, then you would end up with a 500 internal server error!
Unless of course if for example there's a function named myplugin_do_magic
defined in the global scope.
So make sure that you call a class method properly. =)