web-dev-qa-db-ja.com

任意のテキストエリアでクイックタグツールバーを使用する

私はコメントに見るquicktags.dev.jsを読んで

 * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties:
 * settings = {
 *   id : 'my_id',          the HTML ID of the textarea, required
 *   buttons: ''            Comma separated list of the names of the default buttons to show. Optional.
 *                          Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close';
 * }
 *
 * The settings can also be a string quicktags_id.
 *
 * quicktags_id string The ID of the textarea that will be the editor canvas
 * buttons string Comma separated list of the default buttons names that will be shown in that instance.

javaScript関数quicktags()を呼び出して、少なくともテキスト領域のIDを渡すことができるようにする必要があるように見えます。そして、私はquicktagsエディタをtextareaの直前に作成する必要があります。 (私はメタボックスで働いています)。

しかし、私が自分のコードに次のコードを追加したとします。

try { quicktags( '_repeating_textareas_meta[repeating_textareas][0][textarea]'); } catch(e){}

WPがソースに含まれていることをjavascriptの一部から基本的にコピーし、メタボックスのIDを追加しました。

クイックタグツールバーがあるべき位置にdivを表示しますが、ボタンは作成しません。

<div id="qt__repeating_textareas_meta[repeating_textareas][0][textarea]_toolbar" class="quicktags-toolbar"></div> 

console.logにエラーが表示されません。そして今回はソースコードの改ざんの可能性をすべて元に戻したことを誓います。

編集:

それがadmin_print_footer_scripts上で実行されるがafter_wp_tiny_mce上で実行されない場合、Fred Rochaの関数を使用することは(そして私が予想していたのと同じように)うまく機能する...それは同じ空になるツールバーを手に入れました。

私のjqueryプラグインの他の部分はTinymce設定が初期化された後に実行する必要がある(私は既存の設定を直接借りているので)、それでなぜそれはワンフックではなく後でフックでは正しく動作するでしょうか?

2
helgatheviking

私はこの同じ問題に遭遇し、クイックタグを機能させることができました。

これはfunctions.phpに追加するコードです:

<?php
add_action('admin_print_footer_scripts','my_admin_print_footer_scripts');
function my_admin_print_footer_scripts()
{
?>
<script type="text/javascript">/* <![CDATA[ */

    var id = "myID"; // this is your metabox's textarea id

    settings = {
        id : id,
        buttons: 'strong,em,link' 
    }

    quicktags(settings);

/* ]]> */</script>
<?php } ?>

これは、クイックタグを機能させるための基本コードです。

すべての(Verve)メタボックスを調べてツールバーを割り当てたい場合は、次のコードを使用してください。

add_action('admin_print_footer_scripts','my_admin_print_footer_scripts');
function my_admin_print_footer_scripts()
{
    ?><script type="text/javascript">/* <![CDATA[ */
    jQuery(function($)
    {
        var i = 1;
        $('.verve_meta_box_content textarea').each(function(e)
    {
        var id = $(this).attr('id');
            if (!id)
    {
        id = 'customEditor-' + i++;
        $(this).attr('id',id);
        }

            settings = {
                id : id,
                buttons: 'strong,em,link' // Comma separated list of the names of the default buttons to show. Optional.
            }

            quicktags(settings);
         });

  });
/* ]]> */</script>
<?php } ?>

また、フロントエンドの改行を防ぐために、textareaの内容を出力するときは必ず "the_content"フィルタを使用してください。

// schedule is the slug of the custom meta field
$schedule_juice = get_post_meta($current_post_ID, "schedule", false);
// preserve line breaks     
$content = apply_filters('the_content', $schedule_juice[0]);
echo $content; 

My_admin_print_footer_scriptsメソッドが呼び出されていたときの優先順位がブロックの問題でした。

がんばろう!

4
Fred Rocha

私は自分のコメントフォームにAlex Kingのquicktagスクリプトを表示することができました。

ここで手順とコード を文書化しました

add_filter( 'comment_form_defaults', 'pc_comment_form_args' );

function pc_comment_form_args( $args ) { 
$args['comment_field'] = '<p class="comment-form-comment">' .
                         '<label for="comment">Comment</label>' .
                         '<script type="text/javascript">edToolbar("comment");</script>' .
                         '<textarea id="comment" name="comment" cols="45" rows="8" aria-required="true">' .
                         '</textarea>' .
                         '</p>';
 return $args;
 }

Alex Kings QuickTagスクリプトをダウンロードしてエンキューするだけです。 :-)

0
S-B