Zibll附加插件开发精简速查手册(可直接复制查阅)
适配子比 Zibll 主题 WP 插件开发,遵循zib_require_end加载规范、CSF 后台、前端复用主题资源规范
class="heading-2 ace-line old-record-id-NNOTfZ2dhditFOcS467ojlwAAJQ"
class="heading-3 ace-line old-record-id-DCNRf457ldowLXcZdmsiAHNXw6b"
-
插件文件夹名 = 主 PHP 文件名,例:
zib-demo→zib-demo.php - 头部标准插件注释,非 ABSPATH 直接 exit
代码代码
<?php /** * Plugin Name: 子比示例插件 * Plugin URI: https://1z345.cn/ * Version:1.0.0 * Author:小武 * Requires PHP:7.4 */ if(!defined('ABSPATH')) exit; - 主题校验:非 zibll 主题,后台弹窗提示 + 终止加载
代码代码
if(get_stylesheet()!='zibll'){ add_action('admin_notices',function(){echo '<div class="notice notice-error">需安装启用子比Zibll主题</div>';}); return; }
-
目录分层规范代码代码
插件目录/ ├─插件主文件.php #入口:依赖检测+引入子文件 ├─inc/ │ ├─options.php #CSF后台配置(挂载zib_require_end) │ ├─widget.php #CSF侧边小工具(挂载zib_require_end) │ └─ajax.php #ajax业务 └─assets/ ├─css/frontend.css └─js/frontend.js
class="heading-3 ace-line old-record-id-EGGKfXagqdzGSTcX69oorryzDDS"
-
CSF 类、CSF_Widget 必须挂载
zib_require_end,禁止文件顶层直接实例化(主题未加载报错) -
插件全局统一唯一前缀:函数名、option 键、widget 标识、脚本 handle,杜绝命名冲突
-
CSF 配置存储
$options_key全局唯一,不可复用主题 / 其他插件 key -
CSF 优先引用路径:
csf-framework/,废弃codestar-framework/旧目录
class="heading-2 ace-line old-record-id-XNQ4fhvJQdX369cirzJnVW23u8h"
class="heading-3 ace-line old-record-id-OHLWf6amoduHRZcepwLgLRRUu89"
代码
代码
function zb_demo_csf(){
if(!is_admin()) return;
$opt_key='zb_demo_opt';//唯一配置键
CSF::createOptions($opt_key,[
'menu_title'=>'插件设置','menu_slug'=>$opt_key,'show_in_customizer'=>false
]);
CSF::createSection($opt_key,[
'id'=>'base','title'=>'基础配置','icon'=>'fa fa-cog',
'fields'=>[
['id'=>'open','type'=>'switcher','title'=>'启用','default'=>true],
['id'=>'text','type'=>'text','title'=>'文本配置']
]
]);
}
add_action('zib_require_end','zb_demo_csf');class="heading-3 ace-line old-record-id-OHLWf6amoduHRZcepwLgLRRUu89"
class="heading-3 ace-line old-record-id-DyKMfT0cedoAFGcO39fhosENoZ9"
代码
代码
function zb_get_opt($key,$def=false){
static $opt=null;
if($opt===null)$opt=get_option('zb_demo_opt');
return $opt[$key]??$def;
}class="heading-3 ace-line old-record-id-DyKMfT0cedoAFGcO39fhosENoZ9"
class="heading-2 ace-line old-record-id-FMSYf28hjduyLYcZ2gqcvwxFoOX"
代码
代码
//注册小工具
function zb_reg_widget(){
CSF::createWidget('zb_demo_widget',[
'title'=>'插件小工具','classname'=>'zb-demo-widget','width'=>'350px',
'fields'=>[['id'=>'w_title','type'=>'text','title'=>'标题']]
]);
}
add_action('zib_require_end','zb_reg_widget');
//前端渲染【函数名必须=createWidget第一个参数】
function zb_demo_widget($args,$ins){
$title=esc_html($ins['w_title']??'');
echo '<div class="zib-widget padding-10">'.$title.'</div>';
}
class="heading-2 ace-line old-record-id-TJN2fbkxAdEGJScY7egkkstytBK"
代码
代码
function zb_load_asset(){
$url=plugin_dir_url(__FILE__);$v='1.0.0';
//css依赖main,保证在主题样式后加载
wp_enqueue_style('zb-css',$url.'assets/css/frontend.css',['main'],$v);
//js依赖jquery,底部加载
wp_enqueue_script('zb-js',$url.'assets/js/frontend.js',['jquery'],$v,true);
//注入ajax地址+nonce
wp_localize_script('zb-js','ZB_VAR',[
'ajax_url'=>admin_url('admin-ajax.php'),
'nonce'=>wp_create_nonce('zb_ajax_nonce')
]);
}
add_action('wp_enqueue_scripts','zb_load_asset');
class="heading-2 ace-line old-record-id-ROV8fhhwLdU68bcdmmviyAOQlWa"
代码
代码
//仅登录可用,公开接口加nopriv钩子
add_action('wp_ajax_zb_act','zb_ajax_handle');
function zb_ajax_handle(){
check_ajax_referer('zb_ajax_nonce','nonce');//校验令牌
if(!current_user_can('read')) wp_send_json_error('权限不足',403);
$data=sanitize_text_field(wp_unslash($_POST['data']??''));
//业务逻辑
wp_send_json_success(['res'=>$data]);
}class="heading-2 ace-line old-record-id-ROV8fhhwLdU68bcdmmviyAOQlWa"
class="heading-2 ace-line old-record-id-OquxfMSY7dbcqucyKOXk16iikqy"
class="heading-3 ace-line old-record-id-CuINfTWZcdmBCOc12anhrFSZj4g"
-
_pz($name,$def='',$sub=''):读取 zibll 主题配置(带静态缓存) -
_spz($name,$val):修改主题配置字段
class="heading-3 ace-line old-record-id-QMQRf1dpvdyGGOc27kmoppsHzIV"
-
zib_get_user_id($user):ID / 邮箱 / 用户对象→用户 ID -
zib_get_data_avatar($uid,$size):输出头像 HTML -
zib_user_is_ban($uid):判断用户是否封禁 -
zib_user_is_checkined($uid):当日是否签到 -
zib_modal($args):快速生成 bootstrap 弹窗
class="heading-3 ace-line old-record-id-ZDGLfQ2hwdEHTYcbjotfGSZ0l0b"
-
zib_get_current_url():获取当前页面 URL -
zib_get_time_ago($time):人性化时间 -
zib_is_show_sidebar():是否展示侧边栏 -
zib_get_theme_mode():获取亮 / 暗色模式
class="heading-3 ace-line old-record-id-FFNXfY9fpdyJV3c334iewFNQj0d"
-
zibpay_is_paid($post_id,$uid):用户是否购买文章付费内容
class="heading-2 ace-line old-record-id-MAN0f8lqtdFPW1c9fuAfBHJKhS6"
class="heading-3 ace-line old-record-id-TEJTf29htdzIR4cabjmmmtwymGM"
代码
代码
//站点、ajax地址、登录状态、nonce等 _win.www,//网站根地址 _win.ajax_url,//ajax地址 _win.is_signin,//是否登录 _win.post_action_nonce//通用操作令牌class="heading-3 ace-line old-record-id-IDNZfeiuJdLTU7c8isHlOT89wmB"
-
zib_ajax($dom,data,success,is_tip):主题封装 ajax,自动带验证码、loading -
notyf('提示内容','success/danger/warning'):右下角弹窗 -
refresh_modal({remote:'url'}):动态加载弹窗 -
$.fn.serializeObject():表单转 json 对象
class="heading-2 ace-line old-record-id-YGSYfdixHdLMWYc37eknxyzNu19"
class="heading-3 ace-line old-record-id-BuBLfLR37dbftCcQTX8cbcqFiMN"
代码
代码
.box{
background:var(--main-bg-color);
color:var(--main-color);
border:1px solid var(--main-border-color);
border-radius:var(--main-radius);
}class="heading-3 ace-line old-record-id-BuBLfLR37dbftCcQTX8cbcqFiMN"
class="heading-3 ace-line old-record-id-FDGPfX7cgdgmnCcEEPUo8htuowB"
-
卡片:
zib-widget(侧边标准容器)、box-bg、muted-box -
颜色:
.c-theme/.c-red/.c-blue/.c-green文字色;.jb-blue/.jb-green渐变背景 -
布局:
.flex .jc .ac .gap10弹性布局;.padding-10 .mt10 .mb15内外边距 -
圆角:
.radius8、.radius4
class="heading-2 ace-line old-record-id-ZHVafcqrvdzMRVcY5kldmqFPq2d"
代码
代码
function zb_short($attr,$content=null){ $arg=shortcode_atts(['title'=>'默认'], $attr); return '<div class="zib-widget">'.esc_html($arg['title']).'</div>'; } add_shortcode('zb_demo','zb_short');class="heading-2 ace-line old-record-id-ZHVafcqrvdzMRVcY5kldmqFPq2d"
class="heading-2 ace-line old-record-id-OQZ9fehrsdsDNNcW09ejfhinxzD"
class="heading-3 ace-line old-record-id-FRYcfcqzzdGNT8ceoovpEKW2z9f"
-
zib_require_end:主题全加载完毕(CSF 必挂) -
zib_single_before/zib_single_after:文章首尾注入内容 -
payment_order_success:订单支付成功回调 -
zibll_update_notices:主题更新弹窗提示插件
class="heading-3 ace-line old-record-id-WJJMfM1dddknuwcHW59mjmvGyMO"
-
zib_is_show_sidebar:控制侧边栏显示 -
zib_theme_mode:拦截明暗主题 -
zib_user_center_page_sidebar:用户中心侧栏追加内容
class="heading-2 ace-line old-record-id-IBNQfW9bhdqvBDcSXX6mgkuJoO2"
✅ 非 Zibll 主题自动禁用插件 ✅ CSF 全部挂载 zib_require_end ✅ 所有命名使用独立插件前缀 ✅ AJAX 配置 nonce + 权限校验 ✅ 前端样式使用主题变量 / 工具类,无固定色值 ✅ CSS 依赖 main,在主题样式后加载
© 版权声明
本网站部分文件及内容来自互联网,版权归原作者所有。转载需授权,侵权必究。部分内容受《网络出版服务管理规定》保护,未经许可禁止商业使用。
THE END



