在for循环中创建多个wp_editer()文本字段--文本/视觉切换仅适用于第一个编辑者

时间:2017-01-12 作者:RobBenz

开发一个插件来处理woocommerce产品标签。

在wp admin edit product页面中,我根据一个名为_tab_count. 所以如果_tab_count 设置为2 -- 负载2 编辑等。

我遇到的问题是,只有第一个编辑器可以作为富文本进行编辑,而文本/视觉切换仅适用于第一个编辑器。

文本/视觉按钮显示在其他编辑器中,但单击时,它们都会切换到第一个编辑器。

此外,富文本编辑器按钮仅在第一个编辑器中显示。(参见屏幕截图)

这里是我的php加载编辑器,我试图只粘贴相关的代码片段。

function benz_meta_box_markup($object) {
  wp_nonce_field(basename(__FILE__), "meta-box-nonce");
    global $post;
    $benz_tab_count = get_post_meta( $post->ID, \'_tab_count\', true );
    for ( $x = 0; $x < $benz_tab_count; $x++ ) {
      $y=$x+1;
      $benz_tab_content = get_post_meta( $post->ID, "_tabs_content_$y", true );
      if ( ! $benz_tab_content ) {
        $benz_tab_content = \'\';
       }
      $settings = array( \'textarea_name\' => "benz-product-tabs-details_$y" );
      ?>
      <tr class="form-field">
        <th scope="row" valign="top"><label for="benz-product-tabs-details_<?php echo $y ;?>">Tab <?php echo $y ;?> Content: </label></th>
        <td>
          <?php wp_nonce_field( basename( __FILE__ ), "benz_product_tabs_details_nonce_$y" ); ?>
          <?php wp_editor( wp_kses_post( $benz_tab_content ), \'benz_tab_content\', $settings ); ?>
        </td>
      </tr>
    <?php
  } // end for loop
} //custom_meta_box_markup

Screenshot --

我已经创建了此代码-基于此post

然而,在上面的帖子中,这个字段只添加了一次,并且添加到了一个类别(术语)而不是一个产品(帖子)

如果您有任何意见,请告诉我,谢谢阅读。

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

https://codex.wordpress.org/Function_Reference/wp_editor

wp\\u editor()函数的第二个参数是editorID

在上面的for循环中,所有编辑器都具有相同的ID

正在更改

<?php wp_editor( wp_kses_post( $benz_tab_content ), \'benz_tab_content\', $settings ); ?>

<?php wp_editor( wp_kses_post( $benz_tab_content ), "benz_tab_content_$y", $settings ); ?>
允许我给每个编辑器一个唯一的ID——每个计数变量。

编辑器(根据需要)现在可以正常加载。

将此保留下来,以帮助其他希望动态创建wp_editor() 基于计数循环的字段