我编写了一个自定义的 TinyMCE 插件,它给了我一个按钮,单击该按钮会打开一个模式窗口,允许我从上传的图像中选择图像,然后可以将其添加为我的帖子中的自定义画廊。即,通过单击提交按钮,将包含所选图像 ID 的短代码输入到我的帖子文本中。到目前为止,一切都很好。这可以按需要工作。现在,我不仅尝试输入简码,还尝试在单击“提交”时添加元值。基本上提交我的选择是通过通常的 JavaScript 机制完成的(不更新数据库 - 只是将一个字符串添加到文本中)。由于没有涉及 php 操作,我认为我可以使用 AJAX 来做到这一点。该函数如下所示:
function ajaxSubmit(id, argstring) {
jQuery.post("../../add_post_meta.php", {
post_id: id,
key: 'bildstrecke',
val: 'true',
unique: 'true',
security: '<?php echo $ajax_nonce ?>'
}).success(function() {
window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, "[bildstrecke imgs=\""+argstring+"\"]");
tinyMCEPopup.editor.execCommand('mceRepaint');
tinyMCEPopup.close();
}).error(function(e, x) {
console.log([e, x])
});
return false;
}
'add_post_meta.php' 包含一些将元值添加到数据库的 php 代码:
<?php
@require('../../../../wp-config.php');
// check for permissions
if( !is_user_logged_in() || !current_user_can('edit_posts') ) {
wp_die(__("You are not allowed to be here"));
}
add_action('wp_ajax_action', 'action_function');
function action_function() {
check_ajax_referer('nonce');
die();
}
add_post_meta((int)$_POST['post_id'], $_POST['key'], $_POST['val'], $_POST['unique']);
?>
但是,执行上述 JavaScript 函数 'ajaxSubmit' 会导致未指定的错误。对“add_post_meta.php”的调用没有正确执行(在控制台中,我看到了对脚本的调用,但没有得到正确的响应——我看到脚本被调用,但只出现了一个永远旋转的进程轮) .
有什么明显的我做错了吗?所需文件的路径都是正确的(当然,jQuery-libs 在 HTML-headers 中正确链接)。
感谢您的任何提示,
斯特凡