0

在我的 wp 小部件中,$instance有一个名为的属性order,它将列出库/服务的列表顺序。我想存储一个多维关联数组,它将保存每个位置/服务的 id、它的类型(即,如果它是一个位置或一个服务)和它的名称。我希望它看起来像这样:

 array(
     [0] => ( 'id' => 1, 'type' => 'location', 'name' => 'University Library'),
     [1] => ( 'id' => 7, 'type' => 'service', 'name' => 'Circulation Desk') );

以下是 wp 小部件管理窗格的 html 标记和$instance['order']

<label>
  <?php _e( 'Select ordering', 'olh' ); ?>:
</label>

<select
  name='select-hours-order'
  class='select-hours-order'>
  <!-- dynamically populated by jQuery -->
</select>

<a 
  class='add-location-service'>
  <i>+</i>
</a>

<ul
  name='<?php echo $this->get_field_name( 'order' ) ?>[]'
  id='<?php echo $this->get_field_id( 'order' ) ?>'
  class='location-service-order' >

  <?php 
    foreach ($instance['order'] as $order ) : ?>

    <li
      class="<?php echo $order['class'] ?>"
      value="<?php echo $order['value'] ?>">
      <?php echo $order['name'] ?>
    </li>
  <?php endforeach; ?>

</ul>

用户可以通过多选下拉菜单选择他/她想要显示的位置/服务。每当用户选择一个库/服务时,它都会自动填充select.select-hours-order. 然后,用户可以单击 的+按钮将a.add-location-service其添加到ul.location-service-order.

从那里,我想用我上面指定的属性保存lis 。ul.location-service-order

谢谢姑娘们/伙计们提供的任何和所有信息。

4

1 回答 1

2

我最终使用了一种解决方法来解决这个问题。我没有尝试存储如上所述的多维数组,而是存储了一个简单的值数组,该数组是通过将类型与 id 相结合而创建的。

所以,而不是:

array(
   [0] => ( 'id' => 1, 'type' => 'location', 'name' => 'University Library'),
   [1] => ( 'id' => 7, 'type' => 'service', 'name' => 'Circulation Desk') );

数组变为:

array( 'L1', 'S7' );

对于列表项,我在列表项中嵌套了一个隐藏输入,该输入将附加名称和我要存储的值,如下所示:

  <?php 
    foreach( $instance['order'] as $order ) : 
      if( $order ) : ?>

        <li value='<?php echo $order ?>'>
          <span> Library name. </span>
          <input 
            type='hidden'
            name='<?php echo $this->get_field_name( 'order' ) ?>[]'
            value='<?php echo $order ?>'
          />

          <a class='destroy_parent'>X</a>
        </li>

  <?php 
    endif;
  endforeach; ?>

注意input's 的名称和它的值。名称末尾的[]表示将存储一个值数组。

于 2013-08-28T18:27:36.923 回答