文章归档

自定义Post Type 实例二 – By piklist

      接上次实例,因为lanegie 项目中的category和tags都是自定义的,所以也用piklist来实现,当中的用到piklist的add_more属性,在新版本中还存在问题(有待解决) 过程中,我们用到settings保存category和tags,然后整合到上次教程中的新建的Make UP Series metabox 并设置为多选和选取相应的series 而category即与settings的category相挂勾,当setting保存时,更新post type中的category(这样不用自己手工添加category。 setting效果图一: 上图根据lanegie项目经验,通过piklist的add_more可以添加category和series,然后两个seletc选项中,就是勾选相应的series,然后在post type的Make UP series metabox中显示。 category效果图: 上图中就是setting保存后,自动加进的category一共3个。这里运用的技巧就是:要勾一个action hook,来实现添加! add_action( 'update_option_series-setting', 'add_new_category'); function add_new_category(){ $catArr = array(); $seriesObj = get_option('series-setting'); foreach($seriesObj['categorys'] as $cat){ if(is_string($cat['en_cat'])) { $catArr[] = $cat['en_cat']; } else

文章分类 Piklist, 经验分享 标签: ,

自定义Post Type 实例一 – By piklist

    主要是结合Piklist做个post type实例,当中用到了新版本0.8.0 beta4加进来的功能,还用metabox中的布局templates,自定义列表显示的字段(这里有点不完善,我修改了下原码,到时再向作者反应情况)。      以laneige项目中三大系列Make up为例,建个post type,这样的好处是可以让大分类,层次清晰方便管理。 将要生成的菜单图: 效果图一:       上图一共加进两个metabox,右上角Make UP Image是新版本加入来的metabox,而编辑器下的Make UP Info是普通的metabox,不过它用到了布局,要想达到上面效果,这奇芭写法实在是坑爹。 效果图二: 上图完成重定义显示列表字段名,这样显示比较直观,缩略图、描述、和其他单位、价格信息都显示了。这里改了下原码位于piklist目录下的includes\class-piklist-cpt.php中的328行: return array_merge($columns, self::$post_types[$post_type]['edit_columns']); 改为: return self::$post_types[$post_type]['edit_columns']; 之所以这样改,是因为本身是自定义字段例显示,就不需要原来的存在。原码合并数组中,会造成布局达不到自己想要输出的顺序(也许是我写法问题,有待求证) 代码就不贴了,打包插件下载,传送门: post-type-demo

文章分类 经验分享 标签: ,

Piklist 入门教程十六:Media中的Meta Box

先在你的插件parts目录下创建一个media目录,然后新建一个demo-media.php文件,然后跟其他settings时建控件方法一样:代码如下 <?php /* Title: My Media MetaBox Capability: manage_options */ piklist('field', array( 'type' => 'text' ,'scope' => 'post_meta' ,'field' => 'field_name' ,'label' => 'Example Field' ,'description' => 'Field Description' )); piklist('field', array( 'type' => 'colorpicker' ,'scope' => 'post_meta' ,'field' =>

文章分类 Piklist, 经验分享 标签: ,

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; }

文章分类 Piklist, 经验分享 标签: ,

Piklist入门教程十五:checkbox,dropdowns,radio控件显示Taxonomies

我们可以在Piklist的checkbox、dropdowns、radio控件显示分类信息,可以在Piklist创建的Metabox、Settings、Widget中显示,这些控件中的’choices’属性用到wordpress函数的 get_terms() 注意:get_terms()中参数,默认post的用的是category,而之前教程开始那是Product用product_taxonomy命名,该函数将所有用户返回为数组对象来处理,代码如下:(记得是自定义Post Type添加几个category) piklist('field', array( 'type' => 'select' ,'scope' => 'taxonomy' ,'field' => 'piklist_demo_type' ,'label' => 'Demo Types' ,'description' => 'Terms will appear when they are added to this taxonomy.' ,'choices' => piklist( get_terms('product_taxonomy', array( 'hide_empty' => false ))

文章分类 Piklist, 经验分享 标签: ,

Piklist入门教程十四:checkbox,dropdowns,radio控件显示Post Type

我们可以在Piklist的checkbox、dropdowns、radio控件显示Post type,可以在Piklist创建的Metabox、Settings、Widget中显示,这些控件中的’choices’属性用到wordpress函数的 get_post_types() 该函数将所有用户返回为数组对象来处理,代码如下: piklist('field', array( 'type' => 'select' ,'field' => 'my_post_types' ,'label' => 'Choose a Type' ,'choices' => piklist( get_post_types( array( 'public' => true ) ,'objects' ) ,array( 'name' ,'label' ) ) )); 预览效果:(记得把type改改其他radio checkbox控件,前三个是wordpress默认,Products是本教程开端创建的) checkbox: radio:

文章分类 Piklist, 经验分享 标签: ,

Piklist入门教程十三:checkbox,dropdowns,radio控件显示用户信息

我们可以在Piklist的checkbox、dropdowns、radio控件显示用户信息,可以在Piklist创建的Metabox、Settings、Widget中显示,这些控件中的’choices’属性用到wordpress函数的 get_user() 该函数将所有用户返回为数组对象来处理,代码如下: piklist('field', array( 'type' => 'select' ,'field' => 'my_users' ,'label' => 'Choose a user' ,'choices' => piklist( get_users( array( 'orderby' => 'display_name' ,'order' => 'asc' ) ,'objects' ) ,array( 'ID' ,'display_name' ) ) )); 预览效果:(记得把type改改其他radio checkbox控件) radio: checkbox:

文章分类 Piklist, 经验分享 标签: ,

Piklist入门教程十二:Widgets应用

用Piklist做个widgets小工具是很方便快捷,你在WordPress写少量代码就可以制作出强大的widgets。本教程,我们创建一个widgets,包含select,text和colorpiker控件。 1.首先,在piklist parts中的widgets目录下新建两个php文件,注意文件名要:输出页为widgetName.php,设置页为widgetName-form.php,记住widgetName名一定要对应,这样两个输出和设置页才会关联! 2.假如你的是自己开发的主题,请在functions.php里看看注册了widgets没有,如果没以请拷贝下面代码到你的主题的functions.php中,要是你安装的主题已经有,就可以直接把widget拖到右边的sidebar中,当然可以自己注册一个来区分管理,更多详细的请参考wordpress手册 http://codex.wordpress.org/Widgets_API function my_widgets_init() { register_sidebar( array( 'name' => 'My Sidebar', 'id' => 'my_sidebar', 'before_widget' => '<div>', 'after_widget' => '</div>', 'before_title' => '<h2 class="test">', 'after_title' => '</h2>', ) ); } add_action( 'widgets_init', 'my_widgets_init' ); 3.登陆你的后台,打开appearance->widgets,顺便把piklist开发的插件的widget也拖到这个sidebar上,如下图: 4.设置页加上所要的控件,widget-demo-form.php全部代码:(此文件不是必须) <?php piklist('field',

文章分类 Piklist, 经验分享 标签: ,

Piklist入门教程十一:不同权限或用户角色显示MetaBox和Fields

在功能强大的Web应用中,你想在不同的权限或者不同的用户中显示不同的Meta Box 或Meta Field。例如,一个订单系统中,可以让用户看到某些fields,或者某些fields,只有管理员才能看到。Piklist可以很容易做到这一点。 在本教程,我们可以很灵活的去控制谁要显示的数据。 1.首先,我们先在meta-boxes目录下建一个user-metabox.php 根据Capability 或 Role 显示MetaBox 我们的Post Type用page再注释属性里加入Capability参数 Capability: editor 上面注释参数就能让Metabox只在用户是editor上显示,我们把更改它为’administrator’,刷新page的编辑页这样管理员就能显示MetaBox。 如果想在用户是editor和administrator上显示metabox,我们可以用有edit_pages权限的显示,下面是完整注释属性代码: <?php /* Title: My Pages Meta Box Post Type: page Capability: edit_pages */ 根据Capability 或 Role 显示Meta Fields 我们只需要要在控件的属性加上’capability’=>’editor’如上述一样设置 完整的user-metabox.php代码 <?php /* Title: My Pages Meta Box Post

文章分类 Piklist, 经验分享 标签: ,

Piklist入门教程十:不同的Post Status锁定Meta Fields

Piklist 允许我们可以锁定field的编辑(就是指只读),打个比方,我们可以在Product自定义Post Type的estimate状态下不锁定可以编辑,而在complete状态时锁定编辑。so easy! 1.在meta-boxes目录新建一个lock_metabox.php 2.写上常规的text控件,照样用教程九中的on_post_status,这里的参数就是用’value’=> ‘complete’,应用到多个不连续状态就用逗号区分,连续多个就用–两个中划线。注意被锁定的field是看不到描述的,看下面代码,切换你不同的post的状态理解一下它吧 lock-metabox.php全部代码: <?php /* Title: My Lock Meta Box Post Type: product */ piklist('field', array( 'type' => 'text' ,'scope' => 'post_meta' ,'field' => 'lock_text' ,'label' => 'Text box' ,'description' => 'lock by complete' ,'value'

文章分类 Piklist, 经验分享 标签: ,