在我的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
.
从那里,我想保存li
第页,共页ul.location-service-order
使用我上面指定的属性。
谢谢你们提供的所有信息。
SO网友:Kurt
我最终使用了一种变通方法来解决这个问题。我没有像上面所描述的那样尝试存储多维数组,而是存储通过将类型与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名称及其值。这个
[]
名称末尾表示将存储一个值数组。