1

カスタム TinyMCE プラグインを作成しました。このボタンをクリックすると、モーダル ウィンドウが開き、アップロードした画像を選択して、投稿にカスタム ギャラリーとして追加できます。つまり、送信ボタンをクリックすると、選択した画像の ID を含むショートコードが投稿のテキストに入力されます。ここまでは順調ですね。それは望みどおりに機能します。現在、ショートコードを入力するだけでなく、「送信」をクリックするときにメタ値を追加しようとしています。基本的に、選択内容の送信は通常の JavaScript メカニズムによって行われます (データベースへの更新はなく、文字列がテキストに追加されるだけです)。php-action が含まれていないので、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 ライブラリは HTML ヘッダーで適切にリンクされています)。

ヒントをありがとう、

ステファン

4

0 に答える 0