私は自分の投稿でMarkdownを使用しています。そのために使用しているプラグインはビジュアルエディタを無効にする必要があります。
HTMLエディタは単なるテキストボックスです。書きやすくするために、キーの組み合わせが押されたときにマークダウンでテキストをフォーマットできるようにするカスタムキーボードショートカットを有効にします(以下のように)。 Ctrl + B)どうやってこれをするの?
基本的には、Wordpress.StackExchange.comの投稿エディタで機能するキーボードショートカットがいくつか欲しいだけです。そして彼らは...
Ctrl + B →**太字**
Ctrl + I →_イタリック体のテキスト_
Ctrl + Q →ブロック見積もり
Ctrl + K →
インラインテキストを `で囲む
複数の行がある場合は、各行を4つのスペースでインデントします。
PS: JavaScriptやPHPがわからないので、できるだけ明確にしてください。ありがとう。
Stack Exchange Webサイト(および私のプラグイン WP-MarkDown )で使用されるツールバー/エディターは PageDown です。
これには3つのJavaScriptファイルが付属しています。
後者には、あなたが言及したMarkDownキーボードショートカットが含まれています。
以下はテストされていませんが、あなたがする必要があることの概要を示すことを目的としています。
これをWordPressエディターで動作させるには、まず上記のスクリプトを登録してキューに入れます(プラグインの正しい場所をポイントします)。 (スクリプトをエンキューする前に依存関係があるときにスクリプトを登録する必要があるかどうかわかりません)
これは管理者専用であるため、admin_enqueue_scripts
を使用します。あなたもチェックしたいでしょう
また、関数が管理フッターにフックされます。これにより、JavaScriptがフッターに出力されます。 (別のファイルに入れて登録し、ここでキューに入れることができますが、沼地標準のスクリプトの後にafterロードする必要がありますWordPressツールバーがロードされます)。したがって、優先順位番号は100です。
add_action('admin_enqueue_scripts', 'wpse49449_admin_scripts',10,1);
function wpse49449_admin_scripts($hook){
$screen = get_current_screen();
$post_type = $screen->post_type;
//Enqueue only on page needed and only for the relevant post type
if ( ('post-new.php' == $hook || 'post.php' == $hook) && $post_type == 'post' ){
$plugin_dir = plugin_dir_url(__FILE__);
wp_register_script('my_md_convert', $plugin_dir. 'js/pagedown/Markdown.Converter.js',array(),'1.1' );
wp_register_script('my_md_sanit', $plugin_dir.'js/pagedown/Markdown.Sanitizer.js',array(),'1.1' );
wp_register_script('my_md_edit',$plugin_dir. 'js/pagedown/Markdown.Editor.js',array('my_md_convert','my_md_sanit'),'1.1' );
wp_enqueue_script('my_md_edit');
wp_enqueue_script('jquery');
wp_enqueue_style('my_md_style',$plugin_dir.'css/demo.css');
add_action( 'admin_print_footer_scripts', 'wpse49449_admin_footers_script',100 );
}
}
TinyMCEを無効にする必要があります。ただし、MarkDownエディターを使用している投稿タイプに対してのみ無効にしてください。 TinyMCEエディターを無効にするには:
add_filter( 'user_can_richedit', 'wpse49449_disable_tinymce_editor'), 99 );
function wpse49449_disable_tinymce_editor(){
//Get post type
$screen = get_current_screen();
$post_type = $screen->post_type;
//Disable depending on post type
//Return 'false' to disable TinyMCE, 'true' otherwise.
return false;
}
上記のように、関数wpse49449_admin_footers_script
はフッターにJavaScriptを出力します。それ
#wp-content-editor-container
#ed_toolbar
をMarkDownツールバーに置き換えます。関数:
function wpse49449_admin_footers_script(){
?> <script>
jQuery(document).ready(function($) {
$('#wp-content-editor-container').after("<div id='wmd-previewcontent' class='wmd-panel wmd-preview prettyprint'></div>");
$('#ed_toolbar').html("<div id='wmd-button-barcontent'></div>");
var converter = new Markdown.getSanitizingConverter();
var editor = new Markdown.Editor(converter, 'content');
editor.run();
});
</script>
<?php
}
これで開始できます:)。
JavaScriptファイルMarkdown.Editor.js
は、テキスト領域IDが"wmd-input" + postfix
であると想定しています。ここで、postfix
は、ステップ3のこの行で 'content'として設定された変数です。
var editor = new Markdown.Editor(converter, 'content');
問題は、textareaのIDがwmd-input
ではなくcontent
であることです。 textareaのIDは変更したくないので、代わりに、MarkDownエディターにツールバー、プレビュー、テキストエリアのIDを伝える機能を変更できます(249行目あたり)。これを変更します。
function PanelCollection(postfix) {
this.buttonBar = doc.getElementById("wmd-button-bar" + postfix);
this.preview = doc.getElementById("wmd-preview" + postfix);
this.input = doc.getElementById("wmd-input" + postfix);
};
これに:
function PanelCollection(postfix) {
this.buttonBar = doc.getElementById("wmd-button-bar" + postfix);
this.preview = doc.getElementById("wmd-preview" + postfix);
this.input = doc.getElementById(postfix);
};