萬能的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>