TinyMCE编辑器-前端未呈现新行

时间:2014-08-14 作者:Phill Healey

我一直在使用一个插件进行各种调整并添加其他功能。

它使用自定义帖子类型创建包含相关下载的页面。在允许您创建这些新下载的管理区域中,有一个框,允许您添加/编辑下载的描述。这将用作呈现页面的正文内容。

然而,管理页面只有一个标准,它是由以下代码创建的;

    public function display_sdm_description_meta_box($post) {  // Description metabox
_e(\'Add a description for this download item.\', \'sdm_lang\');
echo \'<br /><br />\';

$old_description = get_post_meta($post->ID, \'sdm_description\', true);
?>
<textarea id="sdm_description" name="sdm_description" style="width:60%;height:100px;"><?php echo $old_description; ?></textarea>
<?php
wp_nonce_field(\'sdm_description_box_nonce\', \'sdm_description_box_nonce_check\');
}

我需要它来提供典型的WP编辑器功能,以便最终用户可以创建与普通页面或帖子上几乎相同的页面/正文内容。因此,通过我在SO上发布的另一个问题,我得到了以下代码。

$old_description = get_post_meta($post->ID, \'sdm_description\', true); 
$editor_id = \'sdm_description\';
$settings = array( \'media_buttons\' => false );
wp\\u editor($old\\u description,$editor\\u id,$settings);

所以我现在有了;

public function display_sdm_description_meta_box($post) {  // Description metabox
    _e(\'Add a description for this download item.\', \'sdm_lang\');
    echo \'<br /><br />\';

    $old_description = get_post_meta($post->ID, \'sdm_description\', true);

    //adds TinyMCE capabilities
    $editor_id = \'sdm_description\';
    $settings = array( \'media_buttons\' => false );
    wp_editor( $old_description , $editor_id, $settings );

    ?>
    <!--<textarea id="sdm_description" name="sdm_description" style="width:60%;height:500px;"><?php echo $old_description; ?></textarea>-->
    <?php
    wp_nonce_field(\'sdm_description_box_nonce\', \'sdm_description_box_nonce_check\');
}
这将在管理部分呈现tinyMCE编辑器。但是,如果我按enter键向内容中添加新行,则仅呈现为&nbsp; 在前端。多次“输入”只会产生更多的空间,但不会产生新行或等效的<br/>

为什么内容输出不符合预期?如何修复?

提前感谢!

-额外信息

如果单击TinyMCE编辑器上的“Tools”(工具)>“Source”(源)按钮,会出现一个弹出窗口,显示我创建的内容:<p>This is a test</p><p>Another line of testing!!!</p>

然而,在前端(如网站)上,源代码显示为:`这是一个测试

另一条测试线`

如果我进入数据库,我可以看到数据是这样存储的:

This is a test

&nbsp;

&nbsp;

Another line of testing!!!

1 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

如评论中所述,这是缺乏wp_autop() 以及应用于the_content 滤器编辑器不保存<p> 标记,但稍后换行符会通过wp_autop().

对于元内容,我喜欢重新创建默认过滤器。我这样做是因为一些插件通过the_content 过滤器,我曾经apply_filters(\'the_content\', $your_meta_content); 对于我所有的元字段,最终有20组社交共享按钮。

/* 
 * Recreate the default filters on the_content
 * this will make it much easier to output the meta content with proper/expected formatting
*/
add_filter( \'meta_content\', \'wptexturize\'        );
add_filter( \'meta_content\', \'convert_smilies\'    );
add_filter( \'meta_content\', \'convert_chars\'      );
add_filter( \'meta_content\', \'wpautop\'            );
add_filter( \'meta_content\', \'shortcode_unautop\'  );
add_filter( \'meta_content\', \'prepend_attachment\' );
add_filter( \'meta_content\', \'do_shortcode\');
然后,在实际希望显示新数据的地方,应编写以下内容:

$description = get_post_meta($post->ID, \'sdm_description\', true);
echo apply_filters( \'meta_content\', $description );

结束

相关推荐

多个具有不同$设置[‘Drag_Drop_Upload’]值的TinyMCE(Wp_EDITOR)中断

当我有两个+分开的wp_editors 具有不同的值drag_drop_upload 它们都被建造成drag_drop_upload 设置为true。如果我将它们全部设置为false,它们会按照预期的方式工作,但如果它们具有不同的值,则不会。下面是要演示的代码:add_action( \'add_meta_boxes\', function() { add_meta_box( \'asdf123_editors\', \'Editors\', function() { &