一、概述
子比主题(zibll)是一款功能丰富的WordPress主题,提供了强大的API接口和钩子系统,支持灵活的二次开发。本指南将详细介绍如何创建与zibll主题兼容的插件或子主题,以及如何正确调用主题核心功能。
二、开发环境准备
2.1 开发方式选择
您可以根据需求选择以下任意一种方式进行开发:
| 开发方式 | 优点 | 适用场景 |
|---|---|---|
| 子主题开发 | 主题更新时自定义代码不会被覆盖;便于修改样式和模板。 | 修改主题外观、布局、样式,添加简单功能。 |
| 自定义插件开发 | 与主题完全解耦,可独立启用/禁用;便于功能复用和分发。 | 开发独立的功能模块,需要兼容多个主题。 |
使用 func.php |
最简单快捷,无需创建子主题或插件。 | 添加少量自定义代码片段、函数。 |
2.2 方式一:创建子主题(推荐)
-
创建子主题文件夹:在
/wp-content/themes/目录下创建一个新文件夹,例如zibll-child。 -
创建
style.css文件:在子主题文件夹中创建此文件,并添加以下头部信息:
/* Theme Name: Zibll Child Theme Theme URI: https://zibll.com Description: 子比主题的子主题 Author: Your Name Author URI: https://yourwebsite.com Template: zibll Version: 1.0.0 */
- 创建
functions.php文件:在子主题文件夹中创建此文件,用于加载父主题样式并添加自定义功能。
<?php
// 子主题的functions.php
add_action('wp_enqueue_scripts', 'zibll_child_enqueue_styles');
function zibll_child_enqueue_styles() {
wp_enqueue_style('zibll-child-style',
get_stylesheet_directory_uri() . '/style.css',
array('zibll-style'), // 依赖父主题样式
wp_get_theme()->get('Version')
);
}
// 在此处添加您的自定义PHP代码
?>
2.3 方式二:创建自定义插件
-
在
/wp-content/plugins/目录下创建一个新文件夹,例如zibll-custom-extension。 -
在该文件夹中创建主插件文件
zibll-custom-extension.php,内容如下:
<?php
/*
Plugin Name: Zibll Custom Extension
Plugin URI: https://www.sucaiyaa.com
Description: 子比主题自定义扩展插件
Version: 1.0.0
Author: sucaiyaa
*/
// 检查zibll主题是否激活
if (!function_exists('zib_get_option')) {
add_action('admin_notices', 'zibll_extension_theme_notice');
function zibll_extension_theme_notice() {
echo '<div class="error"><p>请先安装并激活子比主题</p></div>';
}
return; // 如果主题未激活,则停止加载插件
}
// 在此处添加您的插件核心代码
?>2.4 方式三:使用 func.php(简单自定义)
在子比主题的根目录下创建一个名为 func.php 的文件。您在此文件添加的代码在主题更新时不会被覆盖。
<?php // func.php – 主题更新时不会被覆盖 // 您的自定义代码写在这里 ?>
三、核心钩子 (Hooks) 速查表
子比主题提供了丰富的钩子,方便您在不修改核心文件的情况下扩展功能。
3.1 常用动作钩子 (Action Hooks)
| 分类 | 钩子名称 | 触发时机 |
|---|---|---|
| 支付相关 | payment_order_success |
支付成功时 |
order_created |
订单创建时 | |
order_closed |
订单关闭时 | |
| 用户相关 | user_register |
用户注册时 |
user_checkined |
用户签到完成时 | |
like-posts |
用户点赞文章时 | |
| 内容相关 | save_post |
保存文章时 |
comment_post |
发表评论时 | |
| 社区论坛 | bbs_posts_essence_set |
帖子设为精华时 |
answer_adopted |
回答被采纳时 | |
| 其他 | wp_footer |
页面底部输出时 |
wp_login |
用户登录时 |
3.2 常用过滤器钩子 (Filter Hooks)
| 分类 | 钩子名称 | 用途 |
|---|---|---|
| 支付相关 | zibpay_payment_methods |
过滤可用的支付方式 |
zibpay_is_allow_balance_pay |
过滤是否允许余额支付 | |
| 用户中心 | user_center_page_sidebar |
过滤用户中心侧边栏内容 |
user_ctnter_main_tabs_array |
过滤用户中心主标签页 | |
| 内容显示 | zibpay_posts_paid_box |
过滤已付费文章的显示框 |
zibpay_is_show_paybutton |
过滤是否显示支付按钮 |
钩子使用示例:
// 在支付成功后执行自定义操作
add_action('payment_order_success', 'my_custom_payment_success_action', 10, 1);
function my_custom_payment_success_action($order_data) {
// $order_data 包含订单信息
$order_num = $order_data['order_num'];
// 发送邮件、增加积分等操作...
}
// 添加一个新的支付方式
add_filter('zibpay_payment_methods', 'my_custom_payment_method');
function my_custom_payment_method($methods) {
$methods['my_gateway'] = array(
'name' => '我的支付',
'icon' => 'my-icon.png',
);
return $methods;
}
(未完待续,下一部分将介绍核心函数、类与数据库结构)