<p> </p>缺少wp_editor(get_option());

时间:2014-12-16 15:34:19

标签: wordpress

我正在尝试为我的主题添加一些选项,我添加了一个wysiwyg textarea,这个textarea的值将转到选项表(wp-options)。

所以这是我使用的代码:

$settings = array(
  'textarea_name' => 'options[content]',
  'quicktags' => true,
  'tinymce'=> true,
);
wp_editor( get_option('content','default_value'), 'content', $settings );

这项工作还不错,但这显然会删除内容中的所有<p>标签,我完全不知道为什么......

例如,当我写这样的东西时:

Level 1 title
  Level 2 title
    a paragraph
    another paragraph

这是发送到数据库的代码,名为&#39; content&#39;:

<h1>Level 1 title</h1>
  <h2>Level 2 title</h2>
    a paragraph another paragraph

而不是:

<h1>Level 1 title</h1>
  <h2>Level 2 title</h2>
    <p>a paragraph</p>
    <p>another paragraph</p>

你知道我能做什么吗?所有标签的价值都保持不变?

ps:当我手动将<p>标签添加到文本端时,它会一直有效,直到我回到可视端并重新保存。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

在您的内容上使用wpautop功能,在您的段落周围添加<p>标记。

wp_editor( wpautop(get_option('content','default_value')), 'content', $settings );

答案 1 :(得分:1)

我知道这是一个古老的问题,已经有一段时间接受了答案,但是该答案对我没有用,所以我添加了可以对其他人有帮助的解决方案。

我应该解释一下,我的问题略有不同,因为它是在插件的“管理设置”页面中,而不是主题,但原理应该相同。也就是说,在两种情况下,wp_editor的输出都需要存储在一个选项中,然后再使用完整的段落标签进行检索。

对我来说,解决方案基于Codex description of the wp_editor,涉及将wpautop作为参数添加到wp_editor调用中。有点违反直觉,需要将其设置为false以便自动添加段落标签。但是,还要求对wpautop的原始调用在管理页面中包含段落标签。

$args = array(
  'wpautop' => false
);
wp_editor( wpautop( $content ), $editor_id, $args );