カスタム 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 ヘッダーで適切にリンクされています)。
ヒントをありがとう、
ステファン