70 lines
2.8 KiB
PHP
70 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Name: Yoone Subscriptions
|
|
* Description: 为 WooCommerce 提供基础订阅能力:为单个产品配置订阅计划(周期、数量、订阅价、一次性购买选项),在前端展示订阅选项,并在购物车/订单中显示订阅摘要与按订阅规则计算价格。
|
|
* Author: Yoone
|
|
* Version: 0.1.0
|
|
* Requires at least: 6.0
|
|
* Requires PHP: 7.4
|
|
* WC requires at least: 6.0
|
|
* WC tested up to: 8.x
|
|
* Text Domain: yoone-subscriptions
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
// 常量
|
|
define('YOONE_SUBS_PATH', plugin_dir_path(__FILE__));
|
|
define('YOONE_SUBS_URL', plugin_dir_url(__FILE__));
|
|
define('YOONE_SUBS_VERSION', '0.1.0');
|
|
|
|
// 加载国际化
|
|
add_action('init', function() {
|
|
load_plugin_textdomain('yoone-subscriptions', false, dirname(plugin_basename(__FILE__)) . '/languages');
|
|
});
|
|
|
|
// 激活与卸载钩子
|
|
register_activation_hook(__FILE__, function() {
|
|
// 预留:如需创建自定义表或初始化选项,可在此处理
|
|
});
|
|
|
|
register_uninstall_hook(__FILE__, function() {
|
|
// 预留:清理选项/自定义表;当前实现使用 postmeta 不做强制清理
|
|
});
|
|
|
|
// WooCommerce 依赖检查
|
|
add_action('plugins_loaded', function() {
|
|
if (! class_exists('WooCommerce')) {
|
|
add_action('admin_notices', function() {
|
|
echo '<div class="notice notice-error"><p>' . esc_html__('Yoone Subscriptions 需要启用 WooCommerce 插件。', 'yoone-subscriptions') . '</p></div>';
|
|
});
|
|
return;
|
|
}
|
|
|
|
// 自动加载
|
|
require_once YOONE_SUBS_PATH . 'includes/class-yoone-subscriptions.php';
|
|
require_once YOONE_SUBS_PATH . 'includes/admin/class-yoone-subscriptions-admin.php';
|
|
require_once YOONE_SUBS_PATH . 'includes/frontend/class-yoone-subscriptions-frontend.php';
|
|
require_once YOONE_SUBS_PATH . 'includes/logging/class-yoone-subscriptions-logger.php';
|
|
|
|
// 引导
|
|
Yoone_Subscriptions::instance();
|
|
Yoone_Subscriptions_Admin::instance();
|
|
Yoone_Subscriptions_Frontend::instance();
|
|
});
|
|
|
|
// 资源
|
|
add_action('wp_enqueue_scripts', function() {
|
|
wp_register_style('yoone-subs-frontend', YOONE_SUBS_URL . 'assets/css/frontend.css', array(), YOONE_SUBS_VERSION);
|
|
wp_register_script('yoone-subs-frontend', YOONE_SUBS_URL . 'assets/js/frontend.js', array('jquery'), YOONE_SUBS_VERSION, true);
|
|
});
|
|
|
|
add_action('admin_enqueue_scripts', function($hook) {
|
|
if (strpos($hook, 'post.php') !== false || strpos($hook, 'post-new.php') !== false) {
|
|
$screen = get_current_screen();
|
|
if ($screen && 'product' === $screen->post_type) {
|
|
wp_enqueue_style('yoone-subs-admin', YOONE_SUBS_URL . 'assets/css/admin.css', array(), YOONE_SUBS_VERSION);
|
|
wp_enqueue_script('yoone-subs-admin', YOONE_SUBS_URL . 'assets/js/admin.js', array('jquery'), YOONE_SUBS_VERSION, true);
|
|
}
|
|
}
|
|
}); |