Php 添加新的输入框

Php 添加新的输入框,php,wordpress,Php,Wordpress,我找到了这段代码,只是想知道如何插入具有不同名称和值的新输入框 这是我当前编辑的代码:[已编辑] public function form( $instance ) { $user_id = isset ( $instance['user_id'] ) ? $instance['user_id'] : array(); $user_id_num = count( $user_id ); $user_id[ $user_id_num + 1 ] = ''; $use

我找到了这段代码,只是想知道如何插入具有不同名称和值的新输入框

这是我当前编辑的代码:[已编辑]

public function form( $instance )
{
    $user_id = isset ( $instance['user_id'] ) ? $instance['user_id'] : array();
    $user_id_num = count( $user_id );
    $user_id[ $user_id_num + 1 ] = '';
    $user_loc = isset ( $instance['user_loc'] ) ? $instance['user_loc'] : array();
    $user_loc_num = count( $user_loc );
    $user_loc[ $user_loc_num + 1 ] = '';
    $user_html = array();
    $user_id_counter = 0;
    $user_loc_counter = 0;

    foreach ( $user_id as $name => $value )
    {
        $user_html[] = sprintf(
            'User ID<br/><input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat">Location<br/><input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat">',
            $this->get_field_name( 'user_id' ),
            $user_id_counter,
            esc_attr( $value ),
            $this->get_field_name( 'user_loc' ),
            $user_loc_counter,
            esc_attr( $value )
        );
        $user_id_counter += 1;
        $user_loc_counter += 1;
    }

    print 'New User' . join( '<br />', $user_id_html );
}
挨着

User ID<br/><input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat">
用户ID

如果你想让它们并排出现,那么你必须将它们包装在一个div中(以使提示与使用CSS调整的每个输入广告保持一致(否则使用表格)。然后你需要调整php代码:

$user_id_html[] = sprintf(
   '<div>User ID<br/><input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat"></div><div>Location<br/> <input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat">',
   $this->get_field_name( 'user_id' ),
   $user_id_counter,
   esc_attr( $value ),
   //--- add the extra parameters for the location
);
$user\u id\u html[]=sprintf(
“用户ID
位置
”, $this->get_field_name('user_id'), $user\u id\u计数器, esc_属性(价值), //---为位置添加额外的参数 );
好的,我想我现在明白了。我编辑了上面的代码,现在显示位置的新输入字段,但用户ID上的值显示了位置的值:(查看页面的源代码,并将相关代码发布回此处。我在widget admin上,这是源代码
新用户ID
位置
上显示的内容。好的,html是正确的,可以清楚地看到这两个值是相同的。我不确定发生这种情况的原因。您需要调试代码。将var\u转储($this->get_field_name('user_id'),$this->get_field_name('user_loc')),就在$user_html[]语句之前。这可能有助于找到问题。对于应该显示
name=“[user_id][0]
的位置,
name=“[user_loc 0]
我认为问题在于
foreach($user_id as$name=>$value){
你不这么认为吗?
$user_id_html[] = sprintf(
   '<div>User ID<br/><input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat"></div><div>Location<br/> <input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat">',
   $this->get_field_name( 'user_id' ),
   $user_id_counter,
   esc_attr( $value ),
   //--- add the extra parameters for the location
);