我一直在使用一个插件进行各种调整并添加其他功能。
它使用自定义帖子类型创建包含相关下载的页面。在允许您创建这些新下载的管理区域中,有一个框,允许您添加/编辑下载的描述。这将用作呈现页面的正文内容。
然而,管理页面只有一个标准,它是由以下代码创建的;
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键向内容中添加新行,则仅呈现为
在前端。多次“输入”只会产生更多的空间,但不会产生新行或等效的
<br/>
为什么内容输出不符合预期?如何修复?
提前感谢!
-额外信息
如果单击TinyMCE编辑器上的“Tools”(工具)>“Source”(源)按钮,会出现一个弹出窗口,显示我创建的内容:<p>This is a test</p><p>Another line of testing!!!</p>
然而,在前端(如网站)上,源代码显示为:`这是一个测试
另一条测试线`
如果我进入数据库,我可以看到数据是这样存储的:
This is a test
Another line of testing!!!
最合适的回答,由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 );