Files
friend-links-manager/friend-links-manager.php
LinRuiqi 4299b8de55 commit
2025-08-03 10:16:48 +08:00

99 lines
2.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
Plugin Name: 友情链接管理器
Description: 管理并展示友情链接,支持导入导出
Version: 1.1.1
Author: 林海草原
Author URI: https://lhcy.org
Text Domain: friend-links-manager
*/
defined('ABSPATH') or die('无权访问');
// 定义插件常量
define('FLM_VERSION', '1.0');
define('FLM_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('FLM_PLUGIN_URL', plugin_dir_url(__FILE__));
// 创建数据库表
register_activation_hook(__FILE__, 'flm_create_table');
function flm_create_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'friend_links';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
url varchar(255) NOT NULL,
icon varchar(255) DEFAULT '',
sort_order int(11) DEFAULT 0,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
// 初始化插件版本
update_option('flm_version', FLM_VERSION);
}
// 动态卸载逻辑(替代 register_uninstall_hook
register_deactivation_hook(__FILE__, 'flm_cleanup');
function flm_cleanup() {
global $wpdb;
// 删除数据库表
$table_name = $wpdb->prefix . 'friend_links';
if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
$wpdb->query("DROP TABLE IF EXISTS $table_name");
}
// 清理插件选项
delete_option('flm_version');
// 强制刷新缓存(针对某些缓存插件)
wp_cache_flush();
}
// 加载插件功能文件
require_once FLM_PLUGIN_DIR . 'includes/admin-page.php';
require_once FLM_PLUGIN_DIR . 'includes/shortcode.php';
// 加载样式和脚本
add_action('wp_enqueue_scripts', 'flm_enqueue_scripts');
function flm_enqueue_scripts() {
wp_enqueue_style(
'flm-style',
FLM_PLUGIN_URL . 'assets/css/style.css',
array(),
FLM_VERSION
);
}
// 后台脚本和样式
add_action('admin_enqueue_scripts', 'flm_admin_enqueue_scripts');
function flm_admin_enqueue_scripts($hook) {
if ('toplevel_page_friend-links-manager' === $hook) {
wp_enqueue_style(
'flm-admin-style',
FLM_PLUGIN_URL . 'assets/css/style.css',
array(),
FLM_VERSION
);
wp_enqueue_script(
'flm-admin-js',
FLM_PLUGIN_URL . 'assets/js/admin.js',
array('jquery', 'jquery-ui-sortable'),
FLM_VERSION,
true
);
wp_localize_script('flm-admin-js', 'flm_vars', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('flm_nonce')
));
}
}