wordpress如何在数组中添加wp_editor

wordpress how to add wp_editor in an array

我的 wordpress 代码有一个小问题,我需要在我的页面中显示一个 wordpress wp_editor,其中包含 values.the 值的数组,定义如下

    $fields[] = array(
        'name' => __('Class', 'my-theme'),
        'desc' => __('', 'my-theme'),
        'id' => 'class'.$n,
        'std' => ( ( isset($class_text[$n]['class']) ) ? $class_text[$n]['class'] : '' ),
        'type' => 'text');

当我像上面的数组一样定义我的 wp_editor 时,它不会显示在我想要的位置。相反,所有编辑器都显示在所有页面中任何内容之前的顶部。

我为编辑器尝试了如下一组数组:

    $fields[] = array(
        'name' => __('My Content', 'my-theme'),
        'id' => 'sectioncontent'.$n,
        'std' => ( ( isset($class_text[$n]['content']) ) ? $class_text[$n]['content'] : '' ),
        'type' => wp_editor( '', 'sectioncontent'.$n ));

附上我的问题图片:

Cause

默认情况下 wp_editor 打印文本区域,这就是为什么您不能将其分配给任何变量或数组的原因。

Solution

您可以使用 php 的 output buffering 来获取变量中的打印数据,如下所示:

ob_start(); // Start output buffer

// Print the editor
wp_editor( '', 'sectioncontent'.$n );

// Store the printed data in $editor variable
$editor = ob_get_clean();

// And then you can assign that wp_editor to your array.

$fields[] = array(
        'name' => __('My Content', 'my-theme'),
        'id' => 'sectioncontent'.$n,
        'std' => ( ( isset($class_text[$n]['content']) ) ? $class_text[$n]['content'] : '' ),
        'type' => $editor); // <-- HERE

在我看来你正在使用 Redux Framework 来设置你的 theme/plugin 选项页面 - 如果你想添加默认的 Wordpress WYSIWYG(所见即所得 -来自后端编辑 post 页面的相同编辑器)在那里你需要使用类型的编辑器:'editor'.

这可能会造成混淆 - 如果您是从头开始设置此选项页面,那么您正在使用的 wp_editor() 函数是正确的起点,但您需要做很多工作才能让它显示您想要的位置和方式。 Redux 等人通过为您生成编辑器使这对您来说变得相当容易,因此您根本不用 wp_editor 函数,您只需告诉 Redux 您想要一个名为 'My Content' 的编辑器字段页面上的字段之一。

编辑器字段的文档在这里:https://docs.reduxframework.com/core/fields/editor/

如果我认为您使用的是 redux 是正确的,那么替换您现有内容的正确代码是:

 $fields[] = array(
        'name' => __('My Content', 'my-theme'),
        'id' => 'sectioncontent'.$n,
        'std' => ( ( isset($class_text[$n]['content']) ) ? $class_text[$n]['content'] : '' ),
        'type' => 'editor');

解释一下这个字段数组的其他部分:

  • 'Name' 将显示在此字段的标签中。在这种情况下,您使用 wordpress (__()) 中的本地化功能从 'my-theme' 域中的本地词典中获取短语。
  • 'id' 是您将用来检索已输入到该字段中的内容的方法。它还将影响分配给选项页面中 HTML 元素的 ID 属性。
  • 'std'是该字段的默认值,这将是选项页面首次显示时该字段的值,在用户设置任何选项之前

在上面链接的编辑器文档页面上,您将看到可以定义的各种其他选项的详细信息,例如是否显示媒体上传按钮,以及是否 运行 通过 wpautop 的输入来替换行使用 <p> 标签在编辑器中中断(默认情况下这两个都是真的)。​​