1

我编写了一个自定义的 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 中正确链接)。

感谢您的任何提示,

斯特凡

4

0 回答 0