piklist控件中的add_more属性实例

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.登陆你的后台,激活你的插件会看到管理菜单项和右边的窗口,记得添加些数据并保存一下:
add_more_menu
add_more
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 />';
        }
    }
}

你输出的结果类似下面图示:
add_more_result

文章分类 Piklist, 经验分享 标签: ,
One comment on “piklist控件中的add_more属性实例

发表评论