ワードプレスエディタにショートコードを追加することはできません。それが示している -
TypeError:window.tinyMCE.execInstanceCommandは関数ではありません
window.tinyMCE.execInstanceCommand(id、 'mceInsertContent'、false、ショートコード)これを解決するために私を助けてください。フルコード: -
function submitData($form) {
try {
$form = $form || jQuery('form');
if(window.tinyMCE) {
var selectedContent = tinyMCE.activeEditor.selection.getContent(),
id = tinyMCE.activeEditor.editorId || 'content',
shortcodeName = $form.attr('name'),
shortcode = ' [' + shortcodeName + ' ';
$form.find('[data-name]').each(function() {
var $this = jQuery(this),
type = $this.data('type'),
value = ($this.attr('type') == 'checkbox')
? ($this.is(':checked')) ? 'on' : ''
: $this.val() || '';
value = fitValue(type, value);
shortcode += $this.data('name') + '="' + value + '" ';
});
shortcode += ']' + selectedContent + '[/' + shortcodeName + '] ';
window.tinyMCE.execInstanceCommand(id, 'mceInsertContent', false, shortcode)
tinyMCEPopup.editor.execCommand('mceRepaint');
tinyMCEPopup.close();
}
} catch (e) {
console.error(e);
}
return;
}
ありがとう Scott B
Wordpress 3.9では、TinyMCEはバージョン4に更新され、TinyMCE 4では、メソッド "execInstanceCommand"がメソッド "execCommand"に置き換えられました。
(古いバージョンのWPとの)互換性の問題のためには、TinyMCEバージョンをチェックして適切な方法を使用しなければなりません。
以下で、私はあなたのコードを変更しました。コメント付きのコード行は私のものです。
function submitData($form) {
try {
$form = $form || jQuery('form');
if(window.tinyMCE) {
/* get the TinyMCE version to account for API diffs */
var tmce_ver=window.tinyMCE.majorVersion;
var selectedContent = tinyMCE.activeEditor.selection.getContent(),
id = tinyMCE.activeEditor.editorId || 'content',
shortcodeName = $form.attr('name'),
shortcode = ' [' + shortcodeName + ' ';
$form.find('[data-name]').each(function() {
var $this = jQuery(this),
type = $this.data('type'),
value = ($this.attr('type') == 'checkbox')
? ($this.is(':checked')) ? 'on' : ''
: $this.val() || '';
value = fitValue(type, value);
shortcode += $this.data('name') + '="' + value + '" ';
});
shortcode += ']' + selectedContent + '[/' + shortcodeName + '] ';
/* Check for TinyMCE version */
if (tmce_ver >= 4) {
/* In TinyMCE 4, we must be use the execCommand */
window.tinyMCE.execCommand('mceInsertContent', false, shortcode);
} else {
/* In TinyMCE 3x and lower, we must be use the execInstanceCommand */
window.tinyMCE.execInstanceCommand(id, 'mceInsertContent', false, shortcode);
}
tinyMCEPopup.editor.execCommand('mceRepaint');
tinyMCEPopup.close();
}
} catch (e) {
console.error(e);
}
return;
}