主题与插件
WordPress 主题
什么是主题?
主题控制网站的外观和视觉设计,包括布局、颜色、字体等。
安装主题
方式一:从官方库安装
- 进入 外观 → 主题
- 点击 添加
- 搜索或浏览主题
- 点击 安装 → 启用
方式二:上传主题文件
bash
# 主题应打包为 ZIP 文件
# 上传到 wp-content/themes/ 目录并解压
wp-content/themes/
├── twenty-twentyfour/
├── your-theme/
│ ├── style.css # 必须:主题样式表
│ ├── index.php # 必须:主模板文件
│ ├── functions.php # 可选:主题函数
│ ├── header.php # 页头
│ ├── footer.php # 页脚
│ └── screenshot.png # 主题预览图主题样式表(style.css)
每个主题必须包含 style.css 文件头:
css
/*
Theme Name: 我的自定义主题
Theme URI: https://example.com/my-theme
Author: 开发者名称
Author URI: https://example.com
Description: 这是一个简洁、现代化的 WordPress 主题
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.4
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: my-theme
Tags: blog, one-column, two-columns, custom-colors, custom-menu,
custom-logo, editor-style, featured-images, footer-widgets,
block-patterns, block-styles, wide-blocks, accessibility-ready
*/
/* 主题样式从这里开始 */
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
color: #333;
}热门免费主题
| 主题 | 特点 | 适合场景 |
|---|---|---|
| Twenty Twenty-Four | 最新默认主题,多用途 | 各类网站 |
| Hello Elementor | 配合 Elementor 使用 | 页面构建 |
| GeneratePress | 轻量、快速 | 企业/博客 |
| Astra | 高性能、多功能 | 各类网站 |
| Storefront | WooCommerce 官方主题 | 电商网站 |
热门付费主题
| 主题 | 类型 | 价格区间 |
|---|---|---|
| Flatsome | 多功能商城 | $59 |
| Divi | 可视化构建器 | $89/年 |
| Avada | 销量最高 | $59 |
| Jupiter X | 多功能 | $59 |
WordPress 插件
什么是插件?
插件用于扩展 WordPress 功能,可以添加任何你想要的功能而无需修改核心代码。
安装插件
方式一:从官方库安装
- 进入 插件 → 安装插件
- 搜索插件名称或关键词
- 点击 现在安装 → 启用
方式二:上传插件
bash
# 上传 ZIP 文件或解压到插件目录
wp-content/plugins/
├── akismet/ # 反垃圾评论
├── hello dolly/ # 示例插件
└── my-plugin/ # 你的插件
├── my-plugin.php # 主文件
└── readme.txt # 说明文档必须安装的插件
Essential Plugins
以下插件是强烈推荐安装的:
安全类
| 插件 | 功能 | 评分 |
|---|---|---|
| Wordfence Security | 防火墙、安全扫描 | ⭐ 4.8 |
| Sucuri Security | 网站安全 | ⭐ 4.7 |
| Loginizer | 登录安全 | ⭐ 4.9 |
性能类
| 插件 | 功能 | 评分 |
|---|---|---|
| WP Super Cache | 页面缓存 | ⭐ 4.3 |
| W3 Total Cache | 综合缓存 | ⭐ 4.5 |
| LiteSpeed Cache | 服务器缓存 | ⭐ 4.8 |
| Smush | 图片优化 | ⭐ 4.8 |
SEO 类
| 插件 | 功能 | 评分 |
|---|---|---|
| Yoast SEO | 综合 SEO | ⭐ 4.8 |
| Rank Math | 新兴 SEO | ⭐ 4.9 |
| All in One SEO | 综合 SEO | ⭐ 4.6 |
备份类
| 插件 | 功能 | 评分 |
|---|---|---|
| UpdraftPlus | 备份恢复 | ⭐ 4.8 |
| Duplicator | 迁移复制 | ⭐ 4.7 |
| BackWPup | 定时备份 | ⭐ 4.4 |
插件开发基础
最简单的插件结构
php
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个示例插件,用于演示插件开发
* Version: 1.0.0
* Author: 开发者名称
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/
// 防止直接访问
defined('ABSPATH') or die('直接访问被禁止!');
// 定义插件常量
define('MFP_VERSION', '1.0.0');
define('MFP_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('MFP_PLUGIN_URL', plugin_dir_url(__FILE__));
// 加载插件文件
require_once MFP_PLUGIN_DIR . 'includes/functions.php';
require_once MFP_PLUGIN_DIR . 'includes/shortcodes.php';
// 激活钩子
register_activation_hook(__FILE__, 'mfp_activate');
register_deactivation_hook(__FILE__, 'mfp_deactivate');
/**
* 插件激活时执行
*/
function mfp_activate() {
// 创建选项
add_option('mfp_version', MFP_VERSION);
// 刷新永久链接
flush_rewrite_rules();
}
/**
* 插件停用时执行
*/
function mfp_deactivate() {
// 清理工作
flush_rewrite_rules();
}插件目录结构(推荐)
my-plugin/
├── my-plugin.php # 主文件
├── uninstall.php # 卸载时清理
├── readme.txt # WordPress.org 说明
├── languages/ # 翻译文件
├── includes/ # 核心功能
│ ├── class-plugin.php # 主类
│ ├── functions.php # 公共函数
│ └── shortcodes.php # 短代码
├── admin/ # 后台文件
│ ├── css/
│ ├── js/
│ └── partials/
├── public/ # 前台文件
│ ├── css/
│ ├── js/
│ └── partials/
└── assets/ # 静态资源
├── images/
└── icons/插件最佳实践
1. 命名约定
php
// 函数前缀避免冲突
function my_plugin_unique_function_name() { }
// 类名使用 CamelCase
class MyPluginSettingsPage { }
// 过滤器/动作名称使用插件前缀
add_filter('my_plugin_content_filter', 'my_filter_function');
add_action('my_plugin_init', 'my_action_function');2. 安全检查
php
<?php
// 始终检查权限
if (!current_user_can('manage_options')) {
wp_die('权限不足!');
}
// 使用 Nonce 验证
if (!wp_verify_nonce($_POST['my_nonce'], 'my_action')) {
wp_die('安全验证失败!');
}
// 转义输出
echo esc_html($user_input);
echo esc_attr($class_name);
echo esc_url($url);
echo wp_kses_post($html_content);3. 国际化
php
<?php
// 加载文本域
function my_plugin_load_textdomain() {
load_plugin_textdomain(
'my-plugin',
false,
dirname(plugin_basename(__FILE__)) . '/languages/'
);
}
add_action('init', 'my_plugin_load_textdomain');
// 使用翻译函数
__('Hello World', 'my-plugin');
_e('Welcome to my plugin', 'my-plugin');主题与插件的关系
┌─────────────────────────────────────────────┐
│ WordPress 核心 │
├─────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌──────────────────────┐ │
│ │ 主题 │ ←→ │ 插件 │ │
│ │ 控制外观 │ │ 扩展功能 │ │
│ └─────────┘ └──────────────────────┘ │
│ │
│ ┌─────────────────────┐ │
│ │ 主题功能 (functions.php) │
│ │ 可以添加一些基础功能 │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────┘重要提示
- 主题切换:停用主题会失去主题添加的自定义功能
- 插件独立:插件可以在任何主题下工作
- 长期项目:建议重要功能做成插件,避免主题锁定
