我正试图在我的编辑后表单中实现AJAX,以便将自定义wp函数挂接到链接单击中。到目前为止,我已经能够将我的自定义js文件注册到我的管理头中。然而,当测试我的链接时,除非我在jQuery中执行alert(),否则什么都不会发生。
以下是我要挂接到自定义函数的href链接的代码:
<a href="#" id="delete-\' . $field[\'id\'] . \'" class="delete_pdf" title="Delete this PDF." >Delete</a>
这是我函数中的代码。用于注册、排队和本地化脚本的php,以及我的自定义函数(仍在进行中):
//Add AJAX functionality to post.php to delete files
add_action(\'admin_enqueue_scripts\', \'my_admin_enqueue_scripts\');
add_action(\'wp_ajax_delete_meta\', \'delete_pdf_and_metadata\');
//Add my custom JS to the header of admin
function my_admin_enqueue_scripts($hook) {
global $current_screen;
if ( \'post.php\' != $hook )
return;
wp_register_script(\'my-scripts\', get_template_directory_uri() . \'/js/custom/my-scripts.js\' );
wp_enqueue_script(\'my-scripts\');
wp_localize_script(\'my-scripts\', \'wp_ajax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' )));
}
function delete_pdf_and_metadata() {
global $post;
$the_id = intval($_POST[\'the_id\'] );
//echo $the_id . \'<br />\'; //debugging
//echo $key . \'<br />\'; //debugging
wp_die($the_id); //debuggin
//delete_post_meta( $post->ID, $key ); //TODO
}
这是我的jQuery
my-scripts.js
我已成功注册的文件:
jQuery(document).ready(function($) {
$(\'.delete_pdf\').each(function(i,e) { //grab the class delete-pdf
var id = $(this).attr(\'id\').replace(/delete-/, \'\');
$(this).click(function(){
//alert(\'Clicked! \'+ $(this).attr(\'id\')); //THIS WORKS WHEN CLICKED
$.post(wp_ajax.ajaxurl, { action: \'delete_meta\', the_id: id }, function(data){
});
});
});
function replace_pdf_with_file_upload(){
//TODO write to replace PDF link with File Upload
}
});
在我的jQuery中,如果在单击链接时执行alert(),效果会很好。但是,当我尝试测试自定义函数时
delete_pdf_and_metadata()
通过简单地执行
wp_die()
, 我什么也得不到。甚至在我调试javascript的firebug中也没有例外。
我认为这与我本地化脚本的方式有关,但我不确定。这是我第一次在WordPress中使用AJAX。
我错过什么了吗?