在任何文本区域上使用快速标签工具栏

时间:2012-03-09 作者:helgatheviking

读取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编辑器。(我在代谢箱中工作)。

但是,如果我在代码中输入以下内容:

try { quicktags( \'_repeating_textareas_meta[repeating_textareas][0][textarea]\'); } catch(e){}
我基本上是从源代码中的javascript中复制了它,并添加了我的metabox ID。

它打印出quicktags工具栏应该位于的div,但不制作任何按钮

<div id="qt__repeating_textareas_meta[repeating_textareas][0][textarea]_toolbar" class="quicktags-toolbar"></div> 
控制台。日志未显示任何错误。我发誓这次我已经撤销了所有可能对源代码的篡改。

EDIT:

我已将问题隔离到源代码中脚本出现的位置。。。如果Fred Rocha的函数在admin\\u print\\u footer\\u脚本上运行,而不是在after\\u wp\\u tiny\\u mce上运行,那么使用Fred Rocha的函数会非常有效(就像我预期的那样)。。。结果是我得到了同样的空工具栏。

我的jquery插件的其他部分需要在tinymce设置初始化后运行(因为我直接借用了现有的设置),那么为什么它可以在一个钩子上正常工作,而不能在以后的钩子上正常工作呢?

2 个回复
最合适的回答,由SO网友:Fred Rocha 整理而成

我偶然发现了同样的问题,并让quicktags开始工作。

下面是要添加到函数的代码。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 } ?>
这是应该让quicktags工作的基本代码。

如果要遍历所有(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\\u 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\\u admin\\u print\\u footer\\u scripts方法的优先级是阻塞问题。

祝你好运

SO网友:S-B

我已经能够在我的评论表单中显示Alex King的quicktag脚本。

我已经记录了这些步骤和代码here.

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脚本并将其排队即可。:-)

结束

相关推荐

More quicktag driving me nuts

我有点困惑。我有自己的定制贴子类型产品。我在产品页面上列出了所有产品。php。每个产品都有自己的页面-单个产品。php。奇怪的是。。。我正在使用更多quicktag:<!-- more --> 而且它不适用于单一产品和页面产品!我不在乎单页,但我喜欢在页面上使用产品列表。但我不能。文件说明:MORE quicktag将不起作用,在模板(如single)中会被忽略。php,其中只显示一篇文章。http://codex.wordpress.org/Function_Reference/t