萬能的WordPress前端開發(fā)框架概述
授權(quán)聲明
使用本插件需遵循:署名-非商業(yè)性使用-相同方式共享 2.5。 以下情況中使用本插件需支付授權(quán)費(fèi)用:
①用戶主體為商業(yè)公司,盈利性組織。
②個(gè)人用戶基于本插件二次開發(fā),且以付費(fèi)形式出售的產(chǎn)品。
情節(jié)嚴(yán)重者,保留追究法律責(zé)任的權(quán)利。
插件配套主題:
聯(lián)系方式
QQ:245484493 網(wǎng)站:https://wndwp.com
核心原理:
1、通過前端表單name前綴自動(dòng)歸類提交的數(shù)據(jù)對(duì)應(yīng)到WordPress文章,文章字段,用戶字段等,從而實(shí)現(xiàn)可拓展的前端表單提交
2、通過生成表單的同時(shí),根據(jù)表單字段name值生成wp nonce,以防止表單字段被前端篡改
3、前端上傳圖片,并按meta_key做存儲(chǔ)在用戶字段,或文章字段(以對(duì)應(yīng)meta_key生成wp nonce,以實(shí)現(xiàn)meta_key校驗(yàn))
4、用戶即文章的增刪改最終底層實(shí)現(xiàn)均采用WordPress原生函數(shù),因此對(duì)應(yīng)操作中WordPress原生的action 及filter均有效
5、相關(guān)ajax操作中,設(shè)置array filter以實(shí)現(xiàn)權(quán)限控制?如未特別說明,字段均指WndWP自定義數(shù)組字段,而非wp原生字段
功能列表
0、基于bulma框架,ajax表單提交,ajax彈窗模塊,ajax嵌入
1、WordPress前端文章增刪改 (含權(quán)限控制filter)
2、WordPress前端注冊(cè)用戶增刪改(含權(quán)限控制filter)
3、WordPress訂單系統(tǒng),預(yù)設(shè)文章付費(fèi)閱讀,付費(fèi)下載(含權(quán)限控制filter)
4、支付,短信模塊
5、前端文件、圖片上傳
6、數(shù)組形式合并存儲(chǔ)多個(gè)user_meta、post_meta、option
7、基于bulma的表單生成類:Wnd_Form、Wnd_Form_WP、Wnd_Form_Post、Wnd_Form_User??煽焖偕筛黝惐韱?/p>
更多詳情文檔參見 /docs
注意事項(xiàng)
用戶角色
- 普通注冊(cè)用戶的角色:author
- editor及以上角色定義為管理員 wnd_is_manager()
- 啟用插件后,會(huì)禁用WordPress原生注冊(cè)及登錄功能,普通用戶無法WordPress后臺(tái),同時(shí)刪除了普通注冊(cè)用戶一些不必要的user meta
- 啟用插件后,會(huì)禁止WordPress原生的rest api
- 啟用插件后,會(huì)定期清理:XXX_tag類型的標(biāo)簽
分類與標(biāo)簽關(guān)聯(lián)
默認(rèn)已支持WordPress原生post分類和標(biāo)簽關(guān)聯(lián)。如需要支持自定義taxonomy,請(qǐng)遵循以下規(guī)則:
$post_type.'_cat';//分類taxonomy
$post_type.'_tag';//標(biāo)簽taxonomy
分類名
在本插件中,如果同一個(gè)分類法(taxonomy)中存在多個(gè)同名分類,通過本插件內(nèi)置的Wnd_Form_Post構(gòu)造文章表單分類選項(xiàng),將僅呈現(xiàn)最后一個(gè)分類。 為避免這種情況,請(qǐng)確保同一個(gè)分類法中,各個(gè)分類名稱唯一。
add_filter / add_action
- priority: 10 為WordPress默認(rèn)值,該值越大,表示越靠后執(zhí)行
- 對(duì)于filter:可理解為值越大,當(dāng)前add_filter的權(quán)重越高
- 對(duì)于action:越早執(zhí)行可能通常理解為權(quán)重更高
自定義文章類型
以下 post_type 并未均為私有屬性(‘public’ => false),因此在WordPress后臺(tái)無法查看到
- 充值:recharge
- 消費(fèi)、訂單:order
- 站內(nèi)信:mail
- 整站月度財(cái)務(wù)統(tǒng)計(jì):stats-re(充值)、stats-ex(消費(fèi))
自定義文章狀態(tài)
success
用于功能型post、(如:充值,訂單等) wp_insert_post 可直接寫入未經(jīng)注冊(cè)的 post_status,但未經(jīng)注冊(cè)的post_status無法通過wp_query進(jìn)行篩選,故此注冊(cè)
close
用于關(guān)閉文章相關(guān)功能,但不刪除文章,保留前端可瀏覽
自定義文章版本
本插件自定義了一個(gè)文章版本功能,假定當(dāng)前 $post ,則該 $post 版本定義:
$revision['post_parent'] = $post->ID
$revision['post_type'] = $post->post_type
// 此外,為區(qū)分常規(guī)child post,在自定義revision中,設(shè)置wp post meta:
update_post_meta($revision_id, '_wnd_revision', 'true');
版本創(chuàng)建條件:
非管理員,編輯已公開發(fā)布過的文章
自定義版本作用:
普通用戶發(fā)布文章,需要審核后才能公開展示,通過審核后的文章,如果用戶需要再次修改,如果設(shè)定為pending狀態(tài),將導(dǎo)致原有post鏈接短暫失效。 在一些用戶投稿較為活躍的站點(diǎn),為避免這種情況,特別引入一個(gè)上述的自定義版本功能:
- 用戶編輯已發(fā)布文章,將創(chuàng)建一個(gè)版本,并提交管理員審核。
- 管理員如果審核通過后,將已發(fā)布的文章平滑替換為版本內(nèi)容,同時(shí)刪除版本。
- 一篇文章,只創(chuàng)建一個(gè)版本。版本審核期間再次修改,原文,或版本,均直接修改現(xiàn)有已創(chuàng)建的版本,而非新建。
文章自定義字段
WordPress原生字段
wp_post_meta: views (瀏覽量) wp_post_meta: price (價(jià)格)
wnd自定義字段
- wnd_meta: file (存儲(chǔ)付費(fèi)附件的id)
- wnd_meta: download_count (下載統(tǒng)計(jì))
- wnd_meta: order_count (訂單統(tǒng)計(jì),含15分鐘以內(nèi)未完成的訂單)
- wnd_meta: total_sales:付費(fèi)內(nèi)容總銷售額
- wnd_meta: total_commission:作者獲得的總傭金
- wnd_meta: attachment_records (累積上傳到當(dāng)前文章的附件總次數(shù),含已刪除,用于給附件自動(dòng)設(shè)置 menu_order)
- wnd_meta:gallery (文章相冊(cè),數(shù)組形式存放附件id)
用戶自定義字段
- wnd_meta: money:余額
- wnd_meta: expense:消費(fèi)
- wnd_meta: commission:傭金
- wnd_meta: avatar:頭像文件
- id wnd_meta: avatar_url:頭像外鏈
- wnd_meta: locale:用戶語言
wnd_meta:gallery (用戶相冊(cè))
wp_meta: status:用戶狀態(tài)[‘ok’,’banned’]
充值、消費(fèi)(自定義文章類型)
- 金額:post_content
- 關(guān)聯(lián):post_parent
- 標(biāo)題:post_title
- 狀態(tài):post_status: pengding / success
- 類型:post_type:recharge / order
- 在線支付平臺(tái):post_excerpt (如 alipay 、wepay)
退款
wnd_meta : refund_count (分批)退款次數(shù)
wnd_meta : refund_records 退款操作記錄
// 退款操作記錄數(shù)據(jù)格式
[
[
'user_id' => get_current_user_id(),
'refund_amount' => $refund_amount,
'time' => time(),
]
];
數(shù)據(jù)庫
wp_users:
如果需要用戶昵稱唯一:建議對(duì)display_name 新增索引
wp_posts:
如需保證標(biāo)題唯一:建議對(duì)post_title添加前綴索引
站內(nèi)信功能
post_type => mail post_status => 未讀:pengding 已讀: private
wp_options
- 插件配置:wnd
- 自定義置頂文章:wnd_sticky_posts
- 置頂文章數(shù)據(jù)格式:二維數(shù)組 wnd_sticky_posts[$post_type][‘post’.$post_id]
多語言設(shè)置
/**
*@since 2020.01.14
*在當(dāng)前任意鏈接中新增 ?lang=xx 參數(shù)即可切換至對(duì)應(yīng)語言
*注意:需要對(duì)應(yīng)語言包支持;暫只支持中英雙語
*/
$_GET['lang']
統(tǒng)計(jì)瀏覽量
<javaScript>
wnd_ajax_update_views(post_id, interval = 3600);
</javaScript>