本页目录
万能的 WordPress 前端开发框架概述
授权声明
使用本插件需遵循:署名-非商业性使用-相同方式共享 2.5。 以下情况中使用本插件需支付授权费用:
①用户主体为商业公司,盈利性组织。
②个人用户基于本插件二次开发,且以付费形式出售的产品。
情节严重者,保留追究法律责任的权利。
插件配套主题:
联系方式
QQ:245484493 网站:https://wndwp.com
核心原理:
1、通过前端表单 name 前缀自动归类提交的数据对应到 WordPress 文章,文章字段,用户字段等,从而实现可拓展的前端表单提交
2、通过生成表单的同时,根据表单字段 name 值生成 wp nonce,以防止表单字段被前端篡改
3、前端上传图片,并按 meta_key 做存储在用户字段,或文章字段(以对应 meta_key 生成 wp nonce,以实现 meta_key 校验)
4、用户即文章的增删改最终底层实现均采用 WordPress 原生函数,因此对应操作中 WordPress 原生的 action 及 filter 均有效
5、相关 ajax 操作中,设置 array filter 以实现权限控制 如未特别说明,字段均指 WndWP 自定义数组字段,而非 wp 原生字段
功能列表
0、基于 bulma 框架,ajax 表单提交,ajax 弹窗模块,ajax 嵌入
1、WordPress 前端文章增删改 (含权限控制 filter)
2、WordPress 前端注册用户增删改(含权限控制 filter)
3、WordPress 订单系统,预设文章付费阅读,付费下载(含权限控制 filter)
4、支付,短信模块
5、前端文件、图片上传
6、数组形式合并存储多个 user_meta、post_meta、option
7、基于 bulma 的表单生成类:Wnd_Form、Wnd_Form_WP、Wnd_Form_Post、Wnd_Form_User。可快速生成各类表单
更多详情文档参见 /docs
注意事项
用户角色
- 普通注册用户的角色:author
- editor 及以上角色定义为管理员 wnd_is_manager()
- 启用插件后,会禁用 WordPress 原生注册及登录功能,普通用户无法 WordPress 后台,同时删除了普通注册用户一些不必要的 user meta
- 启用插件后,会禁止 WordPress 原生的 rest api
- 启用插件后,会定期清理:XXX_tag 类型的标签
分类与标签关联
默认已支持 WordPress 原生 post 分类和标签关联。如需要支持自定义 taxonomy,请遵循以下规则:
$post_type.'_cat';//分类taxonomy$post_type.'_tag';//标签taxonomy分类名
在本插件中,如果同一个分类法(taxonomy)中存在多个同名分类,通过本插件内置的 Wnd_Form_Post 构造文章表单分类选项,将仅呈现最后一个分类。 为避免这种情况,请确保同一个分类法中,各个分类名称唯一。
add_filter / add_action
- priority: 10 为 WordPress 默认值,该值越大,表示越靠后执行
- 对于 filter:可理解为值越大,当前 add_filter 的权重越高
- 对于 action:越早执行可能通常理解为权重更高
自定义文章类型
以下 post_type 并未均为私有属性('public' => false),因此在 WordPress 后台无法查看到
- 充值:recharge
- 消费、订单:order
- 站内信:mail
- 整站月度财务统计:stats-re(充值)、stats-ex(消费)
自定义文章状态
success
用于功能型 post、(如:充值,订单等) wp_insert_post 可直接写入未经注册的 post_status,但未经注册的 post_status 无法通过 wp_query 进行筛选,故此注册
close
用于关闭文章相关功能,但不删除文章,保留前端可浏览
自定义文章版本
本插件自定义了一个文章版本功能,假定当前 $post ,则该 $post 版本定义:
$revision['post_parent'] = $post->ID$revision['post_type'] = $post->post_type
// 此外,为区分常规child post,在自定义revision中,设置wp post meta:update_post_meta($revision_id, '_wnd_revision', 'true');版本创建条件:
非管理员,编辑已公开发布过的文章
自定义版本作用:
普通用户发布文章,需要审核后才能公开展示,通过审核后的文章,如果用户需要再次修改,如果设定为 pending 状态,将导致原有 post 链接短暂失效。 在一些用户投稿较为活跃的站点,为避免这种情况,特别引入一个上述的自定义版本功能:
- 用户编辑已发布文章,将创建一个版本,并提交管理员审核。
- 管理员如果审核通过后,将已发布的文章平滑替换为版本内容,同时删除版本。
- 一篇文章,只创建一个版本。版本审核期间再次修改,原文,或版本,均直接修改现有已创建的版本,而非新建。
文章自定义字段
WordPress 原生字段
wp_post_meta: views (浏览量) wp_post_meta: price (价格)
wnd 自定义字段
- wnd_meta: file (存储付费附件的 id)
- wnd_meta: download_count (下载统计)
- wnd_meta: order_count (订单统计,含 15 分钟以内未完成的订单)
- wnd_meta: total_sales:付费内容总销售额
- wnd_meta: total_commission:作者获得的总佣金
- wnd_meta: attachment_records (累积上传到当前文章的附件总次数,含已删除,用于给附件自动设置 menu_order)
- wnd_meta:gallery (文章相册,数组形式存放附件 id)
用户自定义字段
- wnd_meta: money:余额
- wnd_meta: expense:消费
- wnd_meta: commission:佣金
- wnd_meta: avatar:头像文件
- id wnd_meta: avatar_url:头像外链
- wnd_meta: locale:用户语言
wnd_meta:gallery (用户相册)
wp_meta: status:用户状态['ok','banned']
充值、消费(自定义文章类型)
- 金额:post_content
- 关联:post_parent
- 标题:post_title
- 状态:post_status: pengding / success
- 类型:post_type:recharge / order
- 在线支付平台:post_excerpt (如 alipay 、wepay)
退款
wnd_meta : refund_count (分批)退款次数
wnd_meta : refund_records 退款操作记录
// 退款操作记录数据格式 [ [ 'user_id' => get_current_user_id(), 'refund_amount' => $refund_amount, 'time' => time(), ]];数据库
wp_users:
如果需要用户昵称唯一:建议对 display_name 新增索引
wp_posts:
如需保证标题唯一:建议对 post_title 添加前缀索引
站内信功能
post_type => mail post_status => 未读:pengding 已读: private
wp_options
- 插件配置:wnd
- 自定义置顶文章:wnd_sticky_posts
- 置顶文章数据格式:二维数组 wnd_sticky_posts[$post_type]['post'.$post_id]
多语言设置
/***@since 2020.01.14*在当前任意链接中新增 ?lang=xx 参数即可切换至对应语言*注意:需要对应语言包支持;暂只支持中英双语*/$_GET['lang']统计浏览量
<javaScript>wnd_ajax_update_views(post_id, interval = 3600);</javaScript>