标签: wordpress

  • 小型 WordPress 博客网站:Docker 轻装上阵,K8s 是否必要

    WordPress 无疑是一个强大且易用的选择。而随着容器化技术的普及,使用 Docker 或 Kubernetes 来部署 WordPress 成为了现代化的趋势。然而,面对这两种技术,你可能会感到困惑:我的小型博客网站,究竟应该选择轻巧的 Docker,还是功能强大的 Kubernetes 呢?

    容器化为小型 WordPress 博客带来的优势

    在探讨 Docker 和 Kubernetes 的选择之前,我们先来看看将你的小型 WordPress 博客容器化能带来哪些共同的益处:

    • 环境一致性: 容器确保了开发、测试和生产环境的统一,避免了因环境差异导致的问题。
    • 快速部署: 基于容器镜像可以快速部署和启动 WordPress 博客。
    • 资源隔离: 容器将 WordPress 应用及其依赖与宿主机和其他应用隔离开,提高了安全性。
    • 易于管理: 容器化的应用可以更方便地进行启动、停止、重启和删除等操作。

    方案一:简洁高效的选择——Docker (单容器或 Docker Compose)

    Docker 是一种轻量级的容器化技术,能够将应用程序及其所有依赖项打包到一个可移植的镜像中。对于小型 WordPress 博客,你可以选择将 WordPress 应用及其依赖(如 PHP、Web 服务器)打包在一个 Docker 容器中,或者更常见地使用 Docker Compose 来管理 WordPress 应用容器和 MySQL 数据库容器。

    为什么 Docker 更适合小型 WordPress 博客?

    • 学习曲线低: Docker 的概念和基本操作相对简单,容易上手,即使是技术新手也能快速掌握。Docker Compose 的配置也相对直观。
    • 部署快速便捷: 可以直接从 Docker Hub 拉取官方的 WordPress 和 MySQL 镜像,通过简单的命令或 docker-compose up 即可快速启动博客。
    • 资源占用小: 单个或少量的 Docker 容器资源占用非常小,非常适合资源有限的个人服务器或小型云主机。
    • 管理简单: 使用 dockerdocker-compose 命令即可完成日常的启动、停止、重启等管理任务,无需复杂的编排系统。
    • 成本低廉: 部署和运行 Docker 环境的成本相对较低,尤其适合预算有限的个人或小型团队。
    • 备份和恢复方便: 可以通过备份 Docker 卷(存储 WordPress 文件和数据库)来轻松备份和恢复博客数据。

    适用场景: 个人博客、访客量较小的网站、技术初学者、预算有限的场景。

    方案二:功能强大但可能“过度设计”的选择——Kubernetes (K8s)

    Kubernetes 是一个强大的容器编排平台,用于自动化部署、扩展和管理容器化的应用程序。它旨在处理大规模、复杂的容器化应用,提供高可用性、弹性伸缩、服务发现和负载均衡等高级功能。

    为什么 Kubernetes 对于小型 WordPress 博客可能不是最佳选择?

    • 学习曲线陡峭: Kubernetes 的架构和概念非常复杂,需要花费大量时间和精力去学习和理解 Pod、Deployment、Service、Ingress 等核心概念。
    • 部署和配置复杂: 部署一个 WordPress 博客到 Kubernetes 需要编写和管理多个 YAML 配置文件,配置过程相对繁琐。
    • 资源开销大: 即使只运行一个 WordPress 博客,也需要运行整个 Kubernetes 集群的控制平面和节点组件,资源开销远大于 Docker。
    • 运维成本高: 管理和维护 Kubernetes 集群需要专业的知识和技能,对于小型博客的维护成本较高。
    • 过度设计: 小型 WordPress 博客通常不需要 Kubernetes 提供的许多高级功能,例如自动水平伸缩、复杂的负载均衡策略等。这些功能反而会增加系统的复杂性。
    • 初始搭建耗时: 搭建一个可用的 Kubernetes 集群需要一定的时间和技术投入。

    适用场景(通常不适用于小型 WordPress 博客): 预计有极高流量、对高可用性和弹性伸缩有极致要求的 WordPress 站点;需要管理大量容器化应用的复杂系统。

    如何选择?小型博客的明智之选

    对于搭建小型 WordPress 博客网站而言,绝大多数情况下,使用 Docker (尤其是 Docker Compose) 是一个更明智、更经济、更易于管理的选择。 它能够满足小型博客对于环境一致性、快速部署和基本管理的需求,而不会引入 Kubernetes 的高复杂性和资源开销。

    只有在极少数情况下,你才可能考虑为小型 WordPress 博客使用 Kubernetes:

    • 你已经深入了解并熟练掌握 Kubernetes 技术,并且希望将其作为一个学习和实践的案例。
    • 你预见到你的小型博客未来可能会有爆发式的增长,并且希望提前为高可用和弹性伸缩做好准备(但这通常可以通过后期迁移来实现)。

    对于小型 WordPress 博客网站,Docker 就像一位轻便灵活的助手,能够轻松地完成任务。而 Kubernetes 则像一个功能强大的指挥中心,对于小型任务来说显得过于庞大和复杂。 因此,在大多数情况下,选择 Docker,特别是 Docker Compose,将能够让你更快速、更高效、更低成本地搭建并运行你的 WordPress 博客。将 Kubernetes 留给那些真正需要其强大编排能力的大型应用和高流量场景吧。

  • WordPress 博客的 Markdown 写作

    基本文本格式

    • 标题: 使用 # 符号表示不同级别的标题。
    # 一级标题
    ## 二级标题
    ### 三级标题
    • 粗体: 使用两个星号 ** 或两个下划线 __ 包裹文本。
    **这是粗体文本**
    __这也是粗体文本__
    • 斜体: 使用一个星号 * 或一个下划线 _ 包裹文本。
    *这是斜体文本*
    _这也是斜体文本_
    • 粗斜体: 使用三个星号 *** 或三个下划线 ___ 包裹文本。
    ***这是粗斜体文本***
    ___这也是粗斜体文本___
    • 删除线: 使用两个波浪线 ~~ 包裹文本。
    ~~这是删除线文本~~

    列表

    • 无序列表: 使用星号 *、加号 + 或减号 - 作为列表项的标记。
    * 项目一
    * 项目二
    + 另一个项目
    - 还有一个项目
    • 有序列表: 使用数字后跟一个英文句点 . 作为列表项的标记。
    1. 第一项
    2. 第二项
    3. 第三项

    链接

    • 行内链接: 将链接文本放在方括号 [] 中,链接地址放在紧随其后的圆括号 () 中。
    [链接文本](https://www.example.com)
    • 引用链接: 先在文本中定义链接标签,然后在文档的其他地方定义链接地址。
    这是带有[引用链接][ref1]的文本。
    
    [ref1]: https://www.example.com "可选的链接标题"

    图片

    • 图片语法与链接类似,只是在方括号 [] 前面加一个感叹号 !
    ![图片替代文本](https://www.example.com/image.jpg "可选的图片标题")

    引用

    • 使用大于号 > 符号放在每行引用的开头。
    > 这是一段引用文字。
    > 可以有多行。

    代码块

    • 行内代码: 使用反引号 ` 包裹代码。
    这是一个 `inline code` 示例。
    • 块级代码: 使用三个反引号 包裹代码块,可以在第一个 后面指定语言,实现语法高亮(某些 WordPress 插件或主题可能支持)。
    ```python
    def hello():
    print("Hello, world!")
    ```

    JavaScript

    console.log("Hello, world!");

    分隔线

    • 可以使用三个或更多的星号 ***、减号 --- 或下划线 ___ 来创建分隔线。
    ***
    ---
    ___

    在 WordPress 中使用 Markdown

    1. 撰写文章:
    • 使用 Markdown 区块 (Gutenberg): 在区块编辑器中添加一个 “Markdown” 区块,然后在该区块中直接输入 Markdown 语法。
    1. 预览和发布: WordPress 会在预览或发布时将你的 Markdown 转换为 HTML 进行显示。

    一个简单的 WordPress 文章示例

    # 我的第一篇 Markdown WordPress 文章
    
    欢迎来到我的博客!这篇文章将演示如何使用简单的 Markdown 语法在 WordPress 中撰写内容。
    
    ## 这是一个二级标题
    
    在这里,我可以写一些关于这个主题的更多细节。
    
    **这是加粗的文字**,而 *这是倾斜的文字*。你也可以使用 ***粗斜体***。
    
    这是一个无序列表:
    
    * 第一项
    * 第二项
    * 第三项
    
    这是一个有序列表:
    
    1.  步骤一
    2.  步骤二
    3.  步骤三
    
    这是一个链接到 [我的网站](https://www.google.com/search?q=https://www.yourwebsite.com)。
    
    > 这是一段引用。
    
    这是一个行内代码示例:`print("Hello")`。
    
    这是一个代码块:
    
    ```python
    def greet(name):
    print(f"Hello, {name}!")
    
    greet("World")
    ```
  • 在 WordPress 中集成 Cloudflare Turnstile

    在 WordPress 评论中集成 Cloudflare Turnstile
    将密钥存储在 wp-config.php 中,并将验证代码放在 functions.php 中。

    更新内容:
    2025-03-26 第一版发布
    2025-03-30 修复了一些错误,Cloudflare Turnstile 验证将只在 WordPress 前台未登录的用户提交评论时才会出现和进行验证,从而提供更好的用户体验。

    1. wp-config.php 文件

    • 打开你的 WordPress 网站根目录下的 wp-config.php 文件。
    • wp-config.php 文件中,添加以下代码,替换 你的SiteKey你的SecretKey
    // Cloudflare Turnstile
    define('CLOUDFLARE_TURNSTILE_SITE_KEY', '你的SiteKey');
    define('CLOUDFLARE_TURNSTILE_SECRET_KEY', '你的SecretKey');

    2. functions.php 文件

    • 打开你的主题的 functions.php 文件。
    • 将以下代码添加到 functions.php 文件中:
    // Cloudflare Turnstile
    // 向评论表单添加 Turnstile JavaScript
    function add_cloudflare_turnstile_to_comment_form() {
        if (!is_admin() && !is_user_logged_in() && defined('CLOUDFLARE_TURNSTILE_SITE_KEY')) {
            echo '<div class="cf-turnstile" data-sitekey="' . esc_attr(CLOUDFLARE_TURNSTILE_SITE_KEY) . '"></div>';
            echo '<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>';
        }
    }
    add_action('comment_form_after_fields', 'add_cloudflare_turnstile_to_comment_form');
    
    // 验证 Turnstile 响应
    function verify_cloudflare_turnstile($commentdata) {
        // 在后台或已登录用户不进行验证
        if (is_admin() || is_user_logged_in()) {
            return $commentdata;
        }
    
        if (isset($_POST['cf-turnstile-response']) && defined('CLOUDFLARE_TURNSTILE_SECRET_KEY')) {
            $secret = CLOUDFLARE_TURNSTILE_SECRET_KEY;
            $response = sanitize_text_field($_POST['cf-turnstile-response']);
            $remoteip = $_SERVER['REMOTE_ADDR'];
    
            $url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';
            $data = array(
                'secret' => $secret,
                'response' => $response,
                'remoteip' => $remoteip
            );
    
            $options = array(
                'http' => array(
                    'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
                    'method'  => 'POST',
                    'content' => http_build_query($data)
                )
            );
            $context  = stream_context_create($options);
            $result = file_get_contents($url, false, $context);
            $json_result = json_decode($result);
    
            if ($json_result === null || !isset($json_result->success) || $json_result->success !== true) {
                wp_die(__('Turnstile verification failed, please try again.', 'your-text-domain'));
            }
        } else {
            wp_die(__('Turnstile was not submitted, please try again.', 'your-text-domain'));
        }
        return $commentdata;
    }
    add_filter('preprocess_comment', 'verify_cloudflare_turnstile');

    重要说明:

    • 替换密钥: 请务必将 "你的SiteKey""你的SecretKey" 替换为你在 Cloudflare Turnstile 中获得的实际密钥。
    • 备份: 在编辑 wp-config.phpfunctions.php 文件之前,请务必备份你的网站。
    • 测试: 在实际部署之前,请彻底测试 Turnstile 是否正常工作。
    • 主题更新: 如果你更新了主题,请确保将 functions.php 中的代码重新添加。
    • 安全: 妥善保管你的 Secret key.
    • 错误处理: 现在的错误处理是使用 wp_die()函数,用来显示错误。 你可以根据自己的需要,修改错误提示的内容。
  • WordPress限制文章修订版本数量

    1. 为什么要限制文章修订版本?

    WordPress 默认会在每次保存或更新文章时创建一个修订版本。这在编辑过程中可以提供历史记录,方便回滚到之前的版本。然而,如果不加限制,数据库会累积大量的修订版本,可能会影响网站性能。因此,限制修订版本的数量可以减少数据库冗余,提高查询效率。

    2. 通过 wp-config.php 限制修订版本数量

    WordPress 允许通过 wp-config.php 文件限制文章的修订版本数量。

    步骤

    1. 打开 WordPress 安装目录 通过 FTP 或 SSH 访问 WordPress 站点的根目录。
    2. 编辑 wp-config.php 文件 使用文本编辑器打开 wp-config.php 文件。
    3. 添加以下代码wp-config.php 文件中
    // Enable WordPress article revisions, limited to 3
    define( 'WP_POST_REVISIONS', 3 );
    1. 保存并上传 保存修改后的 wp-config.php 文件,并上传回服务器。

    3. 其他可选设置

    • 完全禁用修订版本 如果不想存储任何修订版本,可以使用以下代码:
    // Disable WordPress article revisions
    define( 'WP_POST_REVISIONS', false );

    这将禁止 WordPress 存储任何修订版本,仅保留自动保存的版本。

    • 完全启用修订版本 如果想存储每个修订版本,可以使用以下代码:
    // Enable WordPress article version revision
    define( 'WP_POST_REVISIONS', true );

    这将启用 WordPress 存储存储每个修订版本

    • 设置更高或更低的限制 如果需要更改存储的修订版本数量,只需修改 WP_POST_REVISIONS 的值。例如,存储 5 个修订版本:
    // Enable WordPress article revisions, limited to 5
    define( 'WP_POST_REVISIONS', 5 );
  • 通过关闭第一篇文章评论来防止 WordPress 自动化垃圾评论

    网站刚上线,默认的第一篇文章(“Hello World”)就涌入了大量垃圾评论这并非个例,而是许多WordPress站点初期都会面临的问题,在 WordPress 站点中默认的第一篇文章(通常是“Hello World”)往往会成为垃圾评论的主要目标。许多站长在搭建新站点时,可能会忽略这一点,导致网站在上线初期就受到垃圾评论的侵扰。分析第一篇文章易受攻击的原因,并提供有效的解决方案,帮助您减少垃圾评论,提升网站安全性和用户体验。

    1. 为什么 WordPress 第一篇文章容易受到垃圾评论?

    WordPress 安装完成后,默认会生成一篇标题为 “Hello World” 的示例文章。这篇文章通常具有以下特点,使其成为垃圾评论的高发区域:

    文章 ID 是最小的,容易被机器人扫描

    • WordPress 文章的 ID 号是按顺序分配的,而第一篇文章的 ID 通常是 1。
    • 许多垃圾评论机器人会自动扫描 ID 为 1 的文章,并尝试发送垃圾评论。

    默认文章通常不会删除或修改

    • 许多站长搭建网站后,可能不会立即删除或修改默认文章。
    • 这篇文章往往是公开可见的,容易被垃圾评论者利用。

    WordPress 站点刚建立时安全防护较弱

    • 新站点通常没有安装防垃圾评论插件,如 Akismet 或 CAPTCHA,导致垃圾评论可以轻松提交。
    • 由于管理员可能尚未设置评论审核规则,垃圾评论可能会直接显示在网站上,影响网站的信誉和形象。

    机器人针对默认内容进行批量评论

    • 许多垃圾评论机器人专门针对 WordPress 站点的默认文章,批量发布广告、恶意链接或欺诈信息。
    • 这些垃圾评论不仅影响用户体验,还可能损害网站的 SEO 排名。

    2. 如何手动关闭第一篇文章的评论?

    登录 WordPress 后台

    找到第一篇文章

    1. 在后台左侧菜单栏中,点击 “文章” -> “所有文章”。
    2. 找到 默认的第一篇文章(通常是“Hello World”)
    3. 点击文章标题,进入文章编辑页面。

    关闭评论功能

    1. 在文章编辑页面,找到 “讨论” 选项(如果没有看到“讨论”选项,请点击右上角的“显示选项”,勾选“讨论”)。
    2. 取消勾选 “允许评论” 和 “允许引用通告和通知”。
    3. 点击 “更新” 按钮,保存更改。

    完成以上操作后,该文章的评论功能将被完全禁用,任何访客都无法再对其进行评论。

  • WordPress 站点中添加 Google 搜索功能

    在 WordPress 站点中添加 Google 搜索功能

    尽管 WordPress 本身提供了搜索功能,但 Google 搜索能够提供更强大、更精准的结果,特别是当你希望在站内搜索时能够通过 Google 来过滤信息。这对于提升用户体验非常有用,尤其是在站点内容非常庞大的情况下。

    1. 添加 Google 搜索表单

    要在 WordPress 中添加 Google 搜索框,你只需要一个 HTML 表单,将搜索请求发送到 Google 的搜索页面。以下是实现这一功能的代码:

    <form action="https://www.google.com/search" method="get" target="_blank" style="display: flex; align-items: center; max-width: 500px; width: 100%; margin: 0 auto;">
        <input type="hidden" name="sitesearch" value="www.qixinlee.com"> <!-- 替换为你的网站 -->
        <input type="text" name="q" placeholder="输入搜索关键词" required style="padding: 14px 20px; font-size: 16px; width: 100%; border: 1px solid #ccc; border-radius: 3px; outline: none; margin-right: 10px;"> <!-- 增加右边距 -->
        <button type="submit" style="background-color: #333; border: none; color: white; cursor: pointer; padding: 8px 16px; font-size: 16px; border-radius: 3px;">
            通过 Google 进行搜索
        </button>
    </form>

    2. 将代码嵌入到你的 WordPress 站点

    将这段代码插入到你的 WordPress 站点的合适位置。

    使用自定义 HTML 小工具

    • 登录到 WordPress 后台,进入 外观 -> 编辑
    • 添加一个 自定义 HTML 小工具,并将代码粘贴进去。
    • 保存并发布,你的 Google 搜索框就会出现在页面上。

    通过添加一个简单的 Google 搜索表单,用户可以更方便地在你的 WordPress 站点上进行搜索。与默认的站内搜索相比,Google 搜索能够提供更准确和更快速的结果