piklist控件中的add_more属性,可以让我们创建一个类似如JQ那样动态加入表单行记录,让我们创建settings、post_meta保存数据集。下面实例中,以保存数据集为options。鼠标移到控件上会在右边出现+-号。
1.先在你插件(你也可以写在主题functions.php)主PHP上,添加创建一个settings page,代码如下:
add_filter('piklist_admin_pages', 'piklist_add_more_settings'); function piklist_add_more_settings($pages) { $pages[] = array( 'page_title' => 'add more demo' ,'menu_title' => 'Add More Demo' ,'capability' => 'manage_options' ,'menu_slug' => 'piklist-add-more' ,'setting' => 'add-more-setting' ,'icon' => 'options-general' ,'save' => true ); return $pages; }
2.然后在插件目录parts的settings目录下新建一个add-more-setting.php文件,代码如下:
<?php /* Title: Web Settings Section Setting: add-more-setting */ piklist ('field', array( 'type' => 'text' ,'field' => 'single_add_more' ,'add_more' => true ,'label' => 'Single add more sample' ,'description' => 'This single is demo.' )); /* * 多字段add more */ piklist('field', array( 'type' => 'group' ,'field' => 'advanced_add_more' ,'add_more' => true ,'label' => 'Advanced add more sample' ,'fields' => array( array( 'type' => 'text' ,'field' => 'ad_text' ,'value' => 'default text' ) ,array( 'type' => 'datepicker' ,'field' => 'ad_date' ,'value' => date('Y-M-d') ,'options' => array( 'dateFormat' => 'yy-M-d' ,'firstDay' => 0 ) ) ,array( 'type' => 'timepicker' ,'field' => 'ad_time' ,'value' => date('H:m:s') ) ,array( 'type' => 'colorpicker' ,'field' => 'ad_color' ,'value' => '#c8cd18' ) ) ));
注意:上面演示了两种表单控件的情况,第一种是单个控件应用,和正常控件写法一样,只是add_more属性加上去设置true。而第二种情冲是多控件应用,不但要加入add_more属性设置true值,还要注意type=>group和fields以数组形式加入不同的控件组,’columns’=>6 是组中控件的宽度(其它属性基本相同)
3.登陆你的后台,激活你的插件会看到管理菜单项和右边的窗口,记得添加些数据并保存一下:
4.最后在你的主题适合当位置,输出你的内容:注意一点就是不同的scope中数据结构会有所不同,请先var_dump再环循
<?php /*取出option值为一个关联数组*/ $addMoreObj = get_option('add-more-setting'); /*single add more options值为一级数组输出*/ foreach ($addMoreObj['single_add_more'] as $val) { echo $val.'<br />'; } /*advanced add more options值为三级数组输出*/ foreach($addMoreObj['advanced_add_more'] as $item) { foreach ($item as $key=>$item2) { foreach ($item2 as $val) { echo $val.'<br />'; } } }
你输出的结果类似下面图示:
测试回复3