标签: wordpress

  • 利用Query Monitor插件调试WordPress并提高网站性能

    Query Monitor

    想象一下这种情况:您正在处理WordPress开发项目并安装了十几个或更多插件。但是,您的网站并没有像您希望的那样嗡嗡作响。您已经排除了所有常见的疑点:托管已经足够,没有明显的JavaScript或PHP错误,也没有其他明显的错误。您怀疑您安装的一个或多个插件是罪魁祸首,但您如何确定是哪个插件导致了问题?

    识别麻烦插件的常用方法是逐个停用插件,直到您尝试解决的行为停止。但是,安装正确的插件后,您可以更快、更准确地查明和调试WordPress问题。这是Query Monitor旨在解决的那种场景。

    什么是Query Monitor?

    Query Monitor是一个免费的WordPress调试和开发插件。您可以使用它来识别和调试缓慢的数据库查询、AJAX调用、REST API请求等等。此外,该插件还会报告网站详细信息,例如脚本依赖项和依赖项、在页面生成期间触发的WordPress钩子、托管环境详细信息、当前页面满足的条件查询标签等等。

    WordPress插件-Query Monitor

    WordPress插件-Query Monitor

    该插件由John Blackbourn开发,他是WordPress的核心提交者,目前是Human Made的一名开发人员,之前受雇于WordPress.com VIP — 换句话说,他是真正了解WordPress的人。Query Monitor于2013年被添加到WordPress插件目录中,目前拥有超过10,000次活动安装——对于开发插件来说,这是一个令人印象深刻的总数。该插件的用户评分为五颗星,这有助于解释它在开发人员中的受欢迎程度。

    Query Monitor有什么作用?

    很多。

    我们不会花时间列出Query Monitor提供的每个功能,但如果您想深入了解细节,请查看GitHub上的Query Monitor。在高层次上,Query Monitor所做的是在生成WordPress网页的同时监视服务器上或服务器与访问者浏览器之间发生的每个WordPress事务。然后,它将报告附加到网页的页脚,详细说明它收集的所有信息。它适用于每个页面,包括 /wp-admin/ 页面,因此您可以使用它调试任何前端或后端页面。

    该插件以核心功能命名:数据库查询监控。每个查询都受到监控、计时,并绑定到生成它的函数。因此,您可以根据查询的处理时间对查询进行排序,并查明有问题、加载缓慢的查询。

    Query Monitor还跟踪并列出生成页面的WordPress钩子和条件标签应用程序。作为开发人员,您可以使用此信息来确定添加新插件或主题功能时要使用的正确挂钩或条件标签。

    Query Monitor提供了很多附加信息。处理Query Monitor生成的所有内容的最佳方法是将其安装在测试站点上并查看报告。

    如何使用Query Monitor

    使用您喜欢的方法安装Query Monitor:它位于GitHub上,也可从WordPress插件目录获得。安装插件后,您会注意到的第一件事是管理栏中添加了一个新菜单项:

    Query Monitor管理栏

    Query Monitor管理栏

    新项目上的标签显示了一些指标:

    • 页面生成时间,
    • PHP内存使用高峰,
    • 数据库查询时间,以及
    • 进行的数据库查询总数。

    将鼠标悬停在管理栏上,将出现一个下拉菜单。Query Monitor生成的所有数据都包含在添加到页面底部并分为多个部分的单个报告中。单击下拉菜单中的任何项目以转到查询监视器报告的相应部分。例如,下面是页面上运行的整体“queries”的屏幕截图。

    Query Monitor查询

    Query Monitor查询

    如果发生任何PHP错误,或者任何查询花费的时间过长,其他项目将添加到下拉菜单中,突出显示这些问题。单击它们以查看更多详细信息。

    您可能会注意到列表中的最后几项从一页更改为下一页。这些以绿色显示的项目是当前页面满足的条件查询标签。

    滚动整个报告以查看Query Monitor生成的大量数据。花点时间尝试可用于过滤报告中包含的数据的下拉菜单以及包含“+”符号的框,可用于查看有关许多报告详细信息的更多数据。

    如果您想从Query Monitor中获取更多数据,请查看第三方Query Monitor附加组件,以查看是否存在可生成所需调试信息的插件。

    如何以注销用户的身份查看查询监控数据

    当您以管理员身份登录时查看WordPress网站时,该网站包含一个管理栏和其他脚本,注销的访问者看不到这些。Query Monitor可以在注销时查看站点并且仍然可以访问调试信息。但是,第一次使用此功能可能会有些棘手。

    要以注销的访问者身份查看Query Monitor数据,请执行以下步骤:

    • 以管理员身份登录时转到WordPress管理区域,然后单击管理栏中的查询监视器项。
    • 滚动报告数据的最底部并查找显示Set authentication cookie的链接。请注意,您必须在管理区域才能看到链接。如果您在前端页面上查找链接,您将找不到它。
    • 单击该链接会将身份验证cookie添加到您的浏览器。这样,即使您未登录,Query Monitor也会知道显示测试结果。
    • 设置身份验证cookie后,退出站点或使用User Switching等插件切换到非管理员用户配置文件。
    • 导航到要查看调试信息的页面并滚动到页面底部。在那里,您将看到Query Monitor报告的精简版本。单击任何项​​目以展开报告。

    小结

    作为WordPress开发人员,拥有合适的工具可以让您的工作更轻松。Query Monitor是一款免费工具,有可能为您节省大量时间。您可以将其用于:

    • 查明慢查询和触发它们的函数,
    • 生成WordPress生成页面时遇到的WordPress钩子列表,
    • 确认哪些条件标签适用于当前页面或帖子,
    • 识别JavaScript资源之间的关系,
    • 查看服务器配置详细信息,以及
    • 更多

    如果您尝试使用Query Monitor,它很有可能会立即成为您的WordPress开发环境的永久补充。

  • 如何使用Vue创建无头WordPress网站

    了解如何使用Vue创建无头WordPress网站

    WordPress一直是开发者和非开发者快速构建和创建惊人网站的内容管理系统。

    使用内容管理后端与前端分离的微服务体系结构,可以最大限度地控制两个“端”。这种分离问题正是无头内容管理系统(包括无头WordPress解决方案)试图解决的问题。

    通过无头方法,企业可以对内容管理后端进行更精细的控制。他们还可以自由使用自己选择的任何前端,包括React、Vue、Angular等。

    本指南将详细探讨无头WordPress,以及它的全部内容、何时以及为什么应该考虑使用它。最后,我们将探索创建无头WordPress环境,使用Vue.js构建前端,并部署无头WordPress。

    1. 什么是无头WordPress
    2. 无头WordPress的利弊
    3. 何时无头WordPress可能不是最好的选择
    4. 谁应该使用无头WordPress
    5. 谁应该避免使用无头WordPress
    6. 如何搭建无头WordPress(构建应用程序)

    什么是无头WordPress

    WordPress是一个整体式应用程序,后端和前端部分紧密地缠绕在一起。后端是进行管理的地方,在这里您可以创建、编辑、添加和删除内容,包括更改外观配置。相反,前端负责向用户显示内容。

    无头WordPress是用来描述解耦WordPress的术语。后台(管理)部分与WordPress CMS的前端部分是分开的。您可以使用您选择的任何前端框架作为独立应用程序开发和管理前端。

    无头WordPress的利弊

    接下来,我们将探讨无头WordPress的优缺点,让您更好地理解这个概念。

    优点

    (1)超高速性能-在这个应用程序运行速度极快的时代,您的网站加载时间不应超过几秒钟,以免失去访问者。由于前端与WordPress分离,并且可以使用现代前端工具开发高性能和可扩展性,因此采用无头WordPress方法对网站的整体用户体验非常有益。

    (2)粒度控制-选择无头架构可以让您更好地控制设计布局、内容展示以及用户与应用程序前端的交互方式。它还允许从中心位置保护和访问后端内容。

    (3)增强的可扩展性-扩展WordPress有时可能会很复杂,因为您无法完全控制驱动WordPress的所有组件和代码,主要是在您不是开发人员的情况下。但是通过WordPress的解耦,可以轻松地单独缩放每个部分,并且您可以轻松地检测出需要缩放的部分。

    (4)更严密的安全-我们无法充分强调无头WordPress的安全优势,因为解耦WordPress在抵御黑客和DDoS攻击方面具有很高的安全优势。无头WordPress方法使得黑客很难访问您的敏感后端数据,因为它与您的前端(面向用户的网站)是分开的。

    (5)轻量化设计-您将可以更好地控制前端设计的结构和布局。此外,您还可以在前端进行更自由的定制设计;由于RESTAPI调用,您将能够利用现代web工具并在前端部署它们。

    (6)多渠道内容发布-由于无头WordPress使用基于API的系统将您的内容传送到前端,因此您可以在任何位置和任何平台上显示您的内容,包括桌面、网站、移动应用程序和触摸屏信息亭。还可以充分利用增强现实、虚拟现实和物联网设备来显示和呈现来自基于API的系统的内容。

    缺点

    我们将更深入地探讨无头的缺点,但其主要缺点是:

    1. 在管理不同的网站实例时,分离后端和前端会给您带来额外的负载。
    2. 由于它需要团队中的额外成员和运行不同实例的额外资金,因此实施起来可能会很昂贵。
    3. 如果内容在所有平台上呈现不一致,则在不同平台上提供内容可能会导致用户体验不一致。

    何时无头WordPress可能不是最好的选择

    由于无头WordPress是一项具有巨大优势的难以置信的创新,因此在决定是否使用它时,您需要记住一些事情。

    • 无头WordPress的维护费用非常昂贵。从基础设施到多个开发人员,您将维护一个网站的两个不同实例。
    • 无头WordPress不支持WordPress的所有功能。例如,WordPress的强大功能,如所见即所得编辑器和live preview,在使用单独的前端时无法工作。
    • 设置无头WordPress的成本更高。因此,始终牢记其增加的成本。

    谁应该使用无头WordPress

    以下是您可能需要无头WordPress的最佳情况:

    1. 如果你的网站的安全性是你最关心的,也是对你的公司最重要的,那么你应该使用无头WordPress。
    2. 接下来,如果您的网站不需要定期升级和更新,这将是一个很好的迹象,表明您需要使用无头设置。
    3. 接下来,如果你想有一个WordPress主题不容易实现的定制设计,你需要用一个独特的设计来增加网站前端的趣味。那么,无头WordPress是你的下一个选择。
    4. 最后,如果你正在为演示和教程建立一个寿命很短的网站或演示网站,那么你可以尝试无头方法。

    谁应该避免使用无头WordPress

    以下几种情况下,使用无头WordPress不是一个好的选择:

    1. 当你的网站仅仅依赖于特定的插件和功能来控制应用程序的前端并与之协同工作时,你应该坚持使用WordPress,除非插件提供基于API的选项来使用数据。
    2. 假设您对编写网站代码不感兴趣,或者您的网站需要日常维护,并且由于预算较低,您没有雇佣专业人员进行日常维护。在这种情况下,WordPress是一个适合您的选项。
    3. 如果你不是一个经验丰富的开发人员,想单独创建和管理你的网站,你应该使用WordPress。

    如何搭建无头WordPress(构建应用程序)

    本节将探讨如何构建和开发一个新闻博客,其后端为无头WordPress,前端为Vue 3。

    使用Devkinsta设置无头WordPress

    我们将使用DevKinsta开发无头WordPress,DevKinsta是一个流行的WordPress本地开发环境,用于设计、开发和部署WordPress站点,使您的本地机器舒适。

    DevKinsta是永远免费的,它为您开发和构建WordPress提供了巨大的好处和舒适。

    您可以从官方网站下载并安装DevKinsta,并按照文档中的说明开始。

    由于我们已经安装了DevKinsta,我们将打开它并按照下面的步骤设置我们的第一个无头WordPress。

    在DevKinsta仪表板上,使用Nginx、MySQL和任何可用的WordPress版本创建一个新的WordPress站点。此外,您还可以从仪表板导入现有WordPress实例或创建自定义WordPress实例。

    接下来,为新创建的WordPress实例提供一个名称、管理员用户名和密码,然后单击Create并复制详细信息,同时DevKinsta在本地计算机中创建一个新的WordPress实例。

    接下来,单击“Open Site”,在默认浏览器上打开新创建的WordPress实例。

    最后,您可以通过访问 http://headless-wordpress-news-blog.local/wp-admin 链接并键入创建新实例时输入的管理员登录凭据。

    注意,我们已经在本地主机 http://news-blog.local使用URL  http://headless-wordpress-news-blog.local 设置了无头WordPress,我们将在整个教程中使用它。

    配置我们的无头WordPress

    接下来,在成功登录到WordPress仪表板之后,您可以继续安装您选择的任何插件和配置。

    我们将在本教程中完全禁用该主题,通过安装简单的网站重定向插件并进行设置,仅通过基于WordPress REST API的端点访问内容。

    转到Plugins > 安装插件并搜索Simple Website Redirect,安装并启用:

    WordPress插件安装

    WordPress插件安装

    接下来,单击插件Settings并输入基于前端的URL (e.g. http://news-blog.local),,单击Advanced setting options并将以下路径 — /wp-admin/wp-login.php/wp-json 添加到Exclude Paths。

    最后,通过在Redirect Status下拉列表中选择Enabled 来启用插件:

    Simple Website Redirect插件设置

    Simple Website Redirect插件设置

    此外,如果在默认情况下访问 http://headless-wordpress-news-blog.local/wp-json 时未启用JSON API,您可以通过在WordPress设置下打开固定链接并选择文章名Post Name或您选择的任何其他选项来启用该功能(但朴素Plain除外):

    WordPress固定链接

    WordPress固定链接

    现在当你访问你的http://headless-wordpress-news-blog.local/wp-json,它应该向您提供JSON数据,如下所示:

    {
    “name”: “Headless WordPress News Blog”,
    “description”: “Just another WordPress site”,
    “url”: “http://headless-wordpress-news-blog.local”,
    “home”: “http://headless-wordpress-news-blog.local”,
    “gmt_offset”: “0”,
    “timezone_string”: “”,
    “namespaces”: [
    “oembed/1.0”,
    “wp/v2”,
    “wp-site-health/v1”
    ],
    “authentication”: [
    ],
    “routes”: {
    “/”: {
    “namespace”: “”,
    “methods”: [
    “GET”
    ],
    “endpoints”: [
    {
    “methods”: [
    “GET”
    ],
    “args”: {
    “context”: {
    “default”: “view”,
    “required”: false
    }
    }
    }
    ],
    {
    “name”: “Headless WordPress News Blog”,
    “description”: “Just another WordPress site”,
    “url”: “http://headless-wordpress-news-blog.local”,
    “home”: “http://headless-wordpress-news-blog.local”,
    “gmt_offset”: “0”,
    “timezone_string”: “”,
    “namespaces”: [
    “oembed/1.0”,
    “wp/v2”,
    “wp-site-health/v1”
    ],
    “authentication”: [

    ],
    “routes”: {
    “/”: {
    “namespace”: “”,
    “methods”: [
    “GET”
    ],
    “endpoints”: [
    {
    “methods”: [
    “GET”
    ],
    “args”: {
    “context”: {
    “default”: “view”,
    “required”: false
    }
    }
    }
    ],

    {
      "name": "Headless WordPress News Blog",
      "description": "Just another WordPress site",
      "url": "http://headless-wordpress-news-blog.local",
      "home": "http://headless-wordpress-news-blog.local",
      "gmt_offset": "0",
      "timezone_string": "",
      "namespaces": [
        "oembed/1.0",
        "wp/v2",
        "wp-site-health/v1"
      ],
      "authentication": [
        
      ],
      "routes": {
        "/": {
          "namespace": "",
          "methods": [
            "GET"
          ],
          "endpoints": [
            {
              "methods": [
                "GET"
              ],
              "args": {
                "context": {
                  "default": "view",
                  "required": false
                }
              }
            }
          ],
    ...

    设置Vue.js(前端)

    我们将使用Vite web开发工具创建Vue 3应用程序,以连接无头WordPress。您可以阅读有关Vue 3Vite开发工具的更多信息。

    在本文中,我们将构建一个新闻博客。该项目的所有后端内容管理都将使用Devkinsta由我们的无头WordPress开发和托管。

    键入以下简单命令:

    npm init @vitejs/app news-blog
    cd news-blog
    npm install
    npm run dev
    npm init @vitejs/app news-blog
    cd news-blog
    npm install
    npm run dev
    npm init @vitejs/app news-blog
    cd news-blog
    npm install
    npm run dev

    如果您的用户名中存在空格问题,请尝试使用:

    npx create-vite-app news-blog
    npx create-vite-app news-blog
    npx create-vite-app news-blog

    最后,使用您选择的任何代码编辑器打开Vue 3代码库。我们将使用VSCode,下面让我们继续努力码字。

    使用WordPress API

    我们已经着手开发Vue应用程序的其余部分,以节省您的阅读时间,但您可以继续从我的GitHub克隆存储库

    显示文章列表组成部分

    下面的代码片段显示了我们如何使用Vue实例实现WordPress REST API,以显示来自无头WordPress的所有文章:

    <template>
    <section>
    <div class=“padding-top”>
    <div class=“container inner-padding-top”>
    <div class=“row”>
    <div class=“col-md-12 col-sm-12-col-xs-12 text-center”>
    <h2 class=“lead-title text-uppercase”>
    Latest Backend Dev. Articles
    </h2>
    <h3 class=“article-subtitle”>
    Latest Backend Dev. Articles curated daily by the community.
    </h3>
    </div>
    </div>
    <div class=“row mb-1 mt-5”>
    <post v-for=“(post, i) in posts” :key=“i” :post=“post” />
    </div>
    </div>
    </div>
    <div class=“col-md-12 col-sm-12-col-xs-12 text-center mb-5”>
    <Button link=“/posts” class=“col p-3”>More Articles</Button>
    </div>
    </section>
    </template>
    <script>
    import { mapState } from ‘vuex’
    export default {
    computed: {
    mapState({
    posts: (state) => {
    return […state.post.posts].slice(0, 22)
    },
    }),
    },
    }
    </script>
    <template>
    <section>
    <div class=”padding-top”>
    <div class=”container inner-padding-top”>
    <div class=”row”>
    <div class=”col-md-12 col-sm-12-col-xs-12 text-center”>
    <h2 class=”lead-title text-uppercase”>
    Latest Backend Dev. Articles
    </h2>
    <h3 class=”article-subtitle”>
    Latest Backend Dev. Articles curated daily by the community.
    </h3>
    </div>
    </div>
    <div class=”row mb-1 mt-5″>
    <post v-for=”(post, i) in posts” :key=”i” :post=”post” />
    </div>
    </div>
    </div>
    <div class=”col-md-12 col-sm-12-col-xs-12 text-center mb-5″>
    <Button link=”/posts” class=”col p-3″>More Articles</Button>
    </div>
    </section>
    </template>

    <script>
    import { mapState } from ‘vuex’
    export default {
    computed: {
    …mapState({
    posts: (state) => {
    return […state.post.posts].slice(0, 22)
    },
    }),
    },
    }
    </script>

  • WordPress代码生成器如何加快开发速度

    WordPress代码生成器如何加快开发速度

    对于刚开始学习WordPress的来龙去脉的新开发人员来说,代码生成器可以非常方便地加快开发速度。与任何平台一样,通常存在需要大量代码块的任务,并且每个任务都有自己的语法。记住所有这些可能需要很多时间,其中一些只能通过练习来完成。

    如果没有生成器,您唯一的选择就是筛选WordPress Codex或Stack Overflow以找到正确的代码或功能。即使对于经验丰富的开发人员,WordPress代码生成器也可以是一个很好的捷径,只需点击几下即可生成您已经知道需要的内容。或者防止你不得不一遍又一遍地写同样的东西。

    什么是WordPress代码生成器?

    WordPress代码生成器是一组工具,旨在为您的WordPress项目快速创建自定义和高质量的代码。使用生成器的一个优势,尤其是当您刚刚学习编码时,是它们遵循官方WordPress Codex中推荐的最新编码标准以及 API

    有时,将您从Stack Overflow帖子中找到的信息拼凑起来可能并不总是最好的,并且可能会造成不良习惯或混乱的代码。代码生成器可以帮助你养成良好的习惯,使用干净的代码,和正确的功能。除此之外,他们还可以帮助对您的代码进行评论,这在与多个开发人员合作或稍后移交项目时非常重要。

    以下是您可以使用WordPress代码生成器执行的一些常见任务和操作:

    • 为文章类型、简码、分类、帖子状态和元框创建自定义代码
    • 生成仪表板小部件和快速标签
    • 输出菜单、侧边栏和小部件
    • 使用wp_query、 wp_user_query 、 wp_term_query 、 wp_comment_query等生成参数数组。
    • 注册或排队CSS和JavaScript文件
    • 为列表样式、光标、列、文本等创建自定义 CSS。

    只需点击几下即可立即生成各种代码块。可能性真的是无穷无尽的。

    以下是一些热门的WordPress代码生成器,我们强烈建议您查看它们。其中大多数是免费的,而有些则有高级选项。

    1. Nimbus Themes Code Generator

    Nimbus Themes目前有20种不同的免费WordPress代码生成器可用。每个都分为不同的类别:Loop、UI 和设计、WP核心、管理、内容、CSS和片段。他们还有很多关于每个生成器及其工作原理的文档。有时阅读另一位开发人员关于如何使用WP_Query与Codex可用内容的解释会非常有帮助。

    Nimbus主题WordPress代码生成器

    Nimbus主题WordPress代码生成器

    例如,您可以使用他们的WP_Query生成器为WP_Query类构建复杂的参数数组。您可以定义诸如自定义文章类型、菜单顺序、分页等内容。您所做的只是根据您的偏好设置所需参数的值,该工具将为您生成特定于主题的自定义代码片段。只需将代码复制到剪贴板即可。

    wp_query片段生成器

    wp_query片段生成器

    2. GenerateWP

    第二个热门的WordPress代码生成器-GenerateWP已经存在了很长一段时间。这是由一个小团队开发的,该团队有助于为WordPress 核心、Codex 和元团队做出贡献。因此,他们了解WordPress编码标准和最佳实践。GenerateWP上的绝大多数工具都是免费的,但是,您可以付费并访问更多生成器、公共和私人代码段,以及能够保存您的代码段。

    WordPress代码生成器-GenerateWP

    WordPress代码生成器-GenerateWP

    除了有很多生成器之外,他们网站的一件非常巧妙的事情是您可以浏览 其他用户创建的公共WordPress片段。如果您正在为自己的项目寻找已经完成的查询、代码块或示例,这可能会非常方便。

    公共WordPress代码片段

    公共WordPress代码片段

    3. Hasty

    正如他们所说,Hasty可以帮助您神奇地生成WordPress代码。虽然它可能没有像上面那样多的功能或生成器,但开发人员创建它的唯一目的是快速和简单。它也是完全免费的。

    WordPress代码生成器-Hasty

    WordPress代码生成器-Hasty

    UI看起来也很漂亮!一切都在一页上,无需浏览标签或步骤。只需输入您的选项,代码就会立即出现在右侧。

    WordPress分类生成器

    WordPress分类生成器

  • 关于WordPress文件及其使用方法的综合指南

    关于WordPress文件及其使用方法的综合指南

    WordPress文件构成了WordPress网站的基础。文件目录驻留在服务器上——无论该服务器是拥有并存储在您自己的办公室中,还是由托管公司管理。在这些目录中有各种文件夹和文件,每个文件夹和文件都用于向最终用户传递命令和提供内容。好消息是所有新的WordPress网站的WordPress文件结构都保持不变,这使得很容易理解所有内容的配置方式。但是,文件本身以及属于每个文件的代码乍一看似乎令人困惑。

    这就是为什么我们将深入研究WordPress文件及其用途。从WordPress配置文件到wp-content存储和交付所有图像的文件夹。主题和插件,了解WordPress文件的内部工作原理对于未来的管理和网站修改非常重要。

    1. 了解WordPress文件的重要性
    2. WordPress文件存储在哪里?
    3. 如何访问WordPress文件?
    4. WordPress文件和目录结构
    5. 关于WordPress文件权限
    6. 管理和审核您的WordPress文件

    了解WordPress文件的重要性

    您可能想知道,学习WordPress文件和目录结构有什么意义?

    这是一个很好的问题;在某些情况下,根本没有理由了解它们。如果您是一名非技术网站所有者,并且宁愿将这一责任转嫁给您的托管公司或开发人员,那么您可能不需要了解有关该wp-includes文件夹的任何信息或.htaccess含义。

    如果您愿意将这种类型的管理交给其他专家,例如您选择托管托管计划,那么您将有更多时间和精力专注于日常业务任务。

    但是,有抱负的高级开发人员和设计师,以及真正与网站打交道的任何人,都需要了解 WordPress 文件结构的复杂工作原理。此外,即使是技术含量较低的网站所有者也可以学习一两件事来帮助他们处理诸如文件上传或将来保护他们的数据库之类的事情。

    以下是了解WordPress文件的一些主要原因:

    • 了解WordPress文件结构有助于普通WordPress用户自己解决问题,而不是联系托管公司或开发人员,从而节省金钱和时间。
    • 您可以了解帮助WordPress发挥其魔力的核心文件。
    • 可以更好地了解图像和媒体上传的存储方式,让您可以选择SFTP等替代上传方法,并弄清楚如何在需要时共享和保护它们。
    • 您可以看到主题和插件的存储位置和方式,为其他上传方法打开了选项,并有可能找出插件或主题出现的问题。
    • 可以调整语言文件以接触世界各地的新客户。
    • 您可以对您的网站进行简单的修改而不会造成损坏,看看如何不推荐在仪表板中编辑代码,并且当您至少在某种程度上舒适地筛选文件时进行正确的编辑要容易得多。
    • 有一些选项可以设置文件权限和限制某些用户的内容,从而提高您的整体安全性。
    • 您可以使用多种方法之一来上传和下载WordPress文件。您最终可能会偶然发现一个更简单或更实用的解决方案。
    • 您可以为您的网站生成备份并保护您的网站文件,从而消除有关您的网站究竟有多安全的问题。
    • 具有强大 WordPress 文件知识的开发人员能够成功地将文件访问权转移给网站所有者,并解决网站带来的任何问题。
    • 如果网站被黑客入侵或发生使网站崩溃的冲突,通常需要访问 WordPress 文件。例如,有时您需要移除或更换损坏的。
    • 当您可以轻松浏览WordPress文件时,对WordPress错误进行故障排除会容易得多。

    WordPress文件存储在哪里?

    正如您的计算机软件和媒体文件存储在内部硬盘驱动器上一样,WordPress 网站文件也放置在服务器上,以确保它们能够提供各种各样的内容、设计调用和操作,这些内容、设计调用和操作共同呈现完整的网站体验给用户。

    该服务器有时称为机器或计算机,位于某个物理位置。这主要是托管服务器,一台外观和功能与您的计算机相似的机器。

    物理位置取决于您计划如何托管您的网站。可以从您自己的家中或办公室运行服务器。许多公司运行自己的服务器系统以保持对其数据的完全控制。另一方面,许多网站存储在远程服务器上,通常由托管公司管理。

    您的 WordPress 站点文件会上传到连接 Internet 的服务器,该服务器能够在正确的时间保护和提供正确的文件。此外,主机服务器使您能够通过数字接口访问文件,即使文件本身位于数据中心服务器上的其他位置。

    有许多类型的服务器和托管选项,但其中一些包括以下内容:

    • 共享主机。
    • 基于云的托管。
    • 虚拟专用服务器。
    • 专用网络服务器。
    • WordPress托管服务器。

    您决定的托管最终取决于您希望对站点文件进行多少访问和控制。

    本地存储

    也可以将WordPress文件存储在本地机器上。例如,您可以访问WordPress.org网站并下载包含最新版本的WordPress及其zip文件。

    许多开发人员出于不同的原因将他们的站点文件存储在本地计算机上。首先,在发布网站供公众查看之前,您可能希望在不太公开的环境中开发和设计网站。沿着这条路线走意味着您将添加到原始文件并使用开发沙箱和桌面服务器,如XAMPPWAMP

    单击此处了解如何安装本地版本的WordPress。

    本地安装背后的目标是模仿托管公司提供的配置。您将获得一个类似的托管堆栈来提供您的文件并从您的本地文件生成站点功能。可以在浏览器中呈现您正在进行的网站以测试进展情况。利用临时环境或沙箱工具也很常见,这有助于开发和测试,提供更改预览和比文件目录中看到的更友好的用户体验。

    如何访问WordPress文件?

    现在我们知道WordPress文件位于服务器或本地环境中。太好了,但是您如何访问文件以向您的网站设计添加更多内容、上传新主题以及组织诸如核心文件或媒体项目之类的项目?

    以下是几个可供选择的选项,用于访问、查看和管理 WordPress 文件:

    • 本地访问文件。
    • 通过FTP客户端。
    • 通过cPanel仪表板。
    • 通过WordPress仪表板。

    这些方法中的每一种都可以用于查找和管理您的WordPress文件。但是,有些比其他的要好,并且通常不推荐一些。

    继续阅读下文以了解有关如何通过提到的各种方法访问文件的更多信息。

    本地访问WordPress文件

    查找存储在本地计算机上的WordPress文件相当简单。

    第一个选项是下载WordPress的空白副本并使用这些文件来了解它们并在将它们上传到服务器之前可能管理您的网站。

    在这种情况下,唯一的要求是初始WordPress文件目录下载。之后,访问文件与单击计算机上的其他文件没有什么不同。

    首先,将最新的WordPress副本下载到您的计算机上。

    单击获取WordPress按钮。

    WordPress Core可以从WordPress.org网站下载

    WordPress Core可以从WordPress.org网站下载

    然后,单击最近的下载按钮。WordPress已经显示了当前版本,所以这通常是最好的选择。

    下载WordPress核心

    下载WordPress核心

    将文件放在您会记住的本地驱动器上。解压缩该文件以显示WordPress文件。它应该命名为“wordpress-[version]”。

    单击该文件并将压缩版本保存在同一位置。

    下载后解压WordPress包

    下载后解压WordPress包

    所有WordPress文件都存储在一个名为“WordPress”的文件夹中。

    包含核心文件的“wordpress”目录

    包含核心文件的“wordpress”目录

    现在您应该会看到一系列文件夹和文件,例如wp-content、wp-admin和wp-login.php文件。

    这就是文件和文件夹目录在WordPress中的样子。它很少改变,除非整个内容管理系统有更新。

    您可以打开每个文件夹以查看内容,同时还可以打开和编辑(如果需要)主文件夹下的WordPress文件。

    WordPress核心文件

    WordPress核心文件

    在这种情况下,本地WordPress文件没有到Internet或服务器的链接。因此,您可以在没有任何公众影响的情况下进行更改。但是,在某些时候,您需要将文件添加到开发环境,并最终将它们传输到实时托管服务器。

    使用FTP客户端访问WordPress文件

    查看和重新组织 WordPress 文件的另一种方法是借助 FTP(文件传输协议)客户端。文件传输协议将您的本地文件环境链接到托管服务器上的实时网站。通过这种方式,您可以立即将文件从您的计算机拖到您的网站文件中,而没有太多限制,也无需进入您的托管仪表板。

    有几个FTP客户端可供您使用,诸如FileZilla、Cyberduck、CuteFTP和Free FTP等。以下是使用FileZilla作为FTP客户端的该过程的简化版本:

    首先,你需要访问您的服务器提供商网站获取SFTP/SSH的登录信息,它们包括“主机”、“用户名”、“密码”和“端口”。

    MyKinsta服务器的SFTP/SSH凭据

    MyKinsta服务器的SFTP/SSH凭据

    每个FTP Client都有点不同,但一般都能找到通过FTP连接站点服务器的对应字段。

    例如,在FileZilla中,Quickconnect字段位于窗口顶部,将这些SFTP凭据粘贴到主机、用户名、密码和端口字段中。单击“快速连接”按钮继续。

    使用FileZilla连接到服务器

    使用FileZilla连接到服务器

    如果您遇到错误,很可能是因为FileZilla默认使用FTP连接,而主机要求使用SFTP连接。

    要在FileZilla中解决此问题,请转到“文件 > 站点管理器”,并将“协议”字段从FTP更改为SFTP。

    单击“连接”按钮,一切正常。

    在FileZilla中配置SFTP连接

    在FileZilla中配置SFTP连接

    FTP客户端通常只需要一点时间来处理凭据并同步到您的本地文件和服务器上的文件。

    看到服务器上的文件后,找到根文件;单击“公共”文件夹以显示当前安装在您网站上的所有WordPress文件。

    像往常一样,我们会看到像wp-admin和wp-content这样的文件夹,这样可以很容易地识别出您在正确的位置。

    服务器上的WordPress核心文件

    服务器上的WordPress核心文件

    通过FTP客户端访问WordPress文件只是一个开始。您现在可以上传文件、复制文件夹以及拖入主题和插件等项目。它也是添加您自己的自定义编码的好地方,只要您不编辑不应该触及的核心文件。

    在所有访问WordPress文件的方法中,推荐FTP客户端进程作为最佳解决方案。在某些情况下唯一有意义的替代方法是将本地环境用于暂存或测试目的。

    在cPanel中访问WordPress文件

    总体而言,cPanel是一些托管公司提供的控制面板,用于访问托管帐户中所谓的文件管理器。

    如果您使用使用 cPanel 的主机,请按照以下步骤访问WordPress文件:

    1. 登录您的主机cPanel。
    2. 找到文件管理器按钮。点击那个。
    3. 使用“上传”、“移动文件”和“新建文件夹”等各种按钮来管理和修改WordPress文件中已有的内容。

    您通常还可以选择通过cPanel通过FTP连接。此cPanel功能通常称为FTP帐户或FTP会话控制,通常位于文件管理器附近。

    在WordPress仪表盘中访问WordPress文件

    从技术上讲,WordPress提供了对仪表盘中某些文件的访问,尤其是主题文件。

    原因是因为主题设置显示在仪表盘中,并且仪表盘中需要这些文件以确保正常功能。

    但是,强烈建议您跳过在仪表盘中编辑这些文件的过程。

    这就是为什么您应该避免使用WordPress仪表板编辑主题文件的原因:

    • 当未来的 WordPress 或主题更新出现时,更改可能会被覆盖。
    • 您的网站主题文件没有备份,以确保更改不会造成任何损害。
    • 直接编辑您的主题可能会破坏您的网站,因此最好通过主题设置或使用在开发环境中编辑然后通过 FTP 客户端传输的副本进行编辑。

    话虽如此,我们知道有些人无论如何都会继续编辑仪表板中的主题文件。此外,如果您只是弄乱模板或测试网站,这也不是一件坏事。但是,我们鼓励您在使用重要网站时完全避免这种情况。

    如果您计划继续直接编辑主题文件,请考虑使用文件管理器来生成具有新名称的文件副本。保留原始版本,仅编辑重复版本。这些备份主题文件可确保您在遇到问题时能够重新启用以前的功能。

    访问仪表板中的主题文件。转到“外观>主题编辑器”。

    访问WordPress主题编辑器

    访问WordPress主题编辑器

    您将收到关于直接通过仪表板修改这些文件的危险的警告,因此这是一个很好的提醒,不要弄乱这个区域!

    总体而言,此仪表板部分包含以下文件及其内容:

    • style.css
    • functions.php
    • footer.php
    • header.php
    • index.php
    • sidebar.php

    在WordPress主题编辑器中编辑style.css文件

    在WordPress主题编辑器中编辑style.css文件

    所有这些文件都存储在您网站的主题文件夹(位于wp-content目录中)中,因此您可以选择通过更安全的途径管理文件。此外,它们都是设计文件,可以通过WordPress可视化定制工具轻松坚持替代编辑解决方案。

    虽然这不会让您直接访问您的文件,但定制器提供了一个安全的环境来调整您的WordPress网站的外观。此外,您可以选择添加自己的CSS代码,然后在保存后将其写入站点文件。

    要遵循此路线,请转到仪表盘中的“外观 > 自定义”。

    自定义WordPress网站的外观

    自定义WordPress网站的外观

    现在您拥有主题的完整视觉视图,并在您修改设置时实时更新预览。优点是预览不会立即更改您的实时网站。相反,您可以检查新设计,然后在准备就绪时按“发布”按钮。

    如您所见,各种模块可用于间接编辑具有站点标识、颜色、菜单、小部件和主页设置设置的样式文件。

    在WordPress中自定义站点Logo、颜色、菜单等

    在WordPress中自定义站点Logo、颜色、菜单等

    如前所述,“额外CSS”选项卡是将样式添加到站点文件的理想部分,而无需直接编辑文件。此外,您还可以在保存之前预览您的修改。只需将所需的代码粘贴或输入到CSS模块中即可。

    向您的WordPress网站添加额外的CSS

    向您的WordPress网站添加额外的CSS

    WordPress文件和目录结构

    第一次查看WordPress文件和目录结构可能会让一些用户感到不知所措。但是,很快就会识别这些文件夹和文件以及熟悉的工具,它们可以在您身边快速修改网站元素并合并独特的代码更改以对您的网站进行高级改进。

    既然您拥有对文件的完全访问权限,下一步是什么?

    我们建议浏览以下默认WordPress文件列表,以便全面了解每个文件对您的网站的作用以及它们在WordPress文件夹目录中的位置。

    更重要的是,文件目录的结构被很好地组织成类别,因此您只需要在一个区域中工作来调整设计元素或查看核心文件等内容。

    尽管乍一看似乎令人生畏,但请继续阅读以更清楚地了解每个文件以及如何将它们用作开发过程中的宝贵工具。

    WordPress核心文件

    如果您已经在文章中做到了这一点,那么您已经大致了解了WordPress核心文件。

    通常被称为干净或空白的WordPress安装,您最初下载用于首次安装 WordPress 的文件组构成了所谓的“WordPress核心”。

    这些核心文件最终会形成您网站的管理界面,并共同向前端提供正确的内容。

    存在相当多的核心文件,但一些主要文件包括:

    • wp-admin
    • wp-includes
    • index.php
    • license.txt
    • readme.html
    • wp-activate.php
    • wp-blog-header.php
    • wp-comments-post.php
    • wp-config-sample.php
    • wp-cron.php
    • wp-links-opml.php
    • wp-load.php
    • wp-login.php
    • wp-mail.php
    • wp-settings.php
    • wp-signup.php
    • wp-trackback.php
    • xmlrpc.php

    下面是一个示例,让您了解一些核心文件的外观。这是wp-config.php文件(由WordPress提供,根据安装过程wp-config-sample.php手动更改或自动转换为wp-config.php文件)。

    wp-config.php文件

    wp-config.php文件

    大多数WordPress核心文件都带有注释,告诉您每个功能的作用,或者有时直接解释整个文件对您的网站的作用。

    如果您计划对常见的 WordPress 错误进行故障排除并以知识渊博的洞察力在网站的后端移动,那么了解核心文件是必不可少的。更不用说,核心文件真正向您展示了WordPress如何作为一个统一的生态系统工作。

    注:核心文件构成了WordPress基础的构建块。这意味着,如果您弄乱了核心文件中的某些内容,可能会导致严重错误或损坏整个网站的运行方式。因此,我们始终建议您在调整或添加站点文件之前对其进行备份,尤其是在处理核心文件时。

    了解WordPress核心文件

    之前列出的核心文件列表是您每次下载新的WordPress时都会得到的。可以通过解压缩WordPress安装文件或通过FTP客户端或主机仪表板访问当前文件站点文件来找到它们。

    WordPress核心文件

    WordPress核心文件

    每个文件都有其用途。有些文件比其他文件更重要,而您不必过多考虑某些文件。在以下部分中,我们将详细介绍基本核心文件,概述每个文件对您的网站的作用以及您是否有任何理由编辑这些文件。不会涵盖每个WordPress文件,只会涵盖值得注意的文件。

    .htaccess文件

    .htaccess文件是WordPress顶级目录的一部分,用作Apache Web服务器上的基本配置文件。您可能会注意到部分服务器找不到.htaccess文件,那是因为有些服务器使用Nginx Web服务器,它提供了比Apache更好的性能。

    总的来说,Apache和Nginx都提供了类似的选项来添加特殊规则和配置重定向。

    Apache Web 服务器最常用于预算共享主机,它提供配置设置来告诉您的Web服务器如何工作。在WordPress中,.htaccess文件对于控制您网站的固定链接并使它们在整个网站上看起来干净和标准化尤为重要。

    NG服务器没有 .htaccess文件 NG服务器没有 .htaccess文件

    但是,对于其他主机,.htaccess文件列在顶级目录中,靠近index.php等基本要素,并在wp-admin、wp-content和wp-includes文件夹下方。

    Apache服务器上的.htaccess文件 Apache服务器上的.htaccess文件

    何时使用 .htaccess 文件?

    大多数情况下,.htaccess文件应该保持不变。但是,您可以通过添加或更改文件来激活多种操作和重定向。

    例如,您可以在仪表板中设置重定向规则、拦截IP地址并在您的站点上设置密码,所有这些通常都可以使用标准.htaccess文件完成。

    总体而言,.htaccess当您需要制定以下规则或完成这些操作时,该文件是最好的:

    • 增加媒体项目和文件的最大上传大小。
    • 阻止对特定IP地址的访问。
    • 设置从一个URL到另一个URL的重定向。
    • 向文件添加规则,以便以更有效的方式提供缓存内容。
    • 将HTTP重定向到HTTPS。

    wp-config.php文件

    wp-config.php文件对所有WordPress用户来说都是必不可少的,而且非常有用,因为它包含所有基本的WordPress设置。这意味着wp-config.php文件可让您编辑WordPress网站的各个区域,从数据库到自动更新WordPress版本。wp-config.php如此重要的另一个原因是它提供了激活WordPress调试功能的选项,这对于将来的故障排除至关重要。

    可通过FTP客户端访问,wp-config.php文件可通过转至根目录下的公共(有时称为public_html或www)文件找到。

    您可以在一些主要WordPress文件夹附近找到wp-config.php文件,例如wp-cron.phpwp-comments.php.

    wp-config.php文件包含WordPress的全局设置

    wp-config.php文件包含WordPress的全局设置

    以下是wp-config.php文件的默认内容:

    <?php
    /**
    * The base configuration for WordPress
    *
    * The wp-config.php creation script uses this file during the
    * installation. You don’t have to use the web site, you can
    * copy this file to “wp-config.php” and fill in the values.
    *
    * This file contains the following configurations:
    *
    * * MySQL settings
    * * Secret keys
    * * Database table prefix
    * * ABSPATH
    *
    * @link https://wordpress.org/support/article/editing-wp-config-php/
    *
    * @package WordPress
    */
    // ** MySQL settings – You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define( ‘DB_NAME’, ‘database_name_here’ );
    /** MySQL database username */
    define( ‘DB_USER’, ‘username_here’ );
    /** MySQL database password */
    define( ‘DB_PASSWORD’, ‘password_here’ );
    /** MySQL hostname */
    define( ‘DB_HOST’, ‘localhost’
  • wp-config.php文件——深入探讨如何配置WordPress

    wp-config.php文件——深入探讨如何配置WordPress-1

    WordPress安装最重要的文件之一是配置文件。它驻留在根目录中,包含常量定义和PHP指令,使WordPress按您想要的方式工作。WP-config.php文件如数据库连接细节,表前缀,路径对特定目录和很多相关的特定设置文件存储数据功能。

    基本的wp-config.php文件

    首次安装WordPress时,系统会要求您输入所需信息,例如数据库详细信息和表前缀。有时您的主机会为您设置WordPress,您不需要手动运行设置。但是,当您手动运行5分钟安装时,系统会要求您输入一些存储在wp-config中的最相关数据。

    wp-config.php文件中的数据

    当您运行设置时,您将需要输入存储在wp-config.php文件中的数据

    这是一个基本的wp-config.php文件:

    // ** MySQL settings – You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define(‘DB_NAME’, ‘database_name_here’);
    /** MySQL database username */
    define(‘DB_USER’, ‘username_here’);
    /** MySQL database password */
    define(‘DB_PASSWORD’, ‘password_here’);
    /** MySQL hostname */
    define(‘DB_HOST’, ‘localhost’);
    /** Database Charset to use in creating database tables. */
    define(‘DB_CHARSET’, ‘utf8’);
    /** The Database Collate type. Don’t change this if in doubt. */
    define(‘DB_COLLATE’, );
    define(‘AUTH_KEY’,‘put your unique phrase here’);
    define(‘SECURE_AUTH_KEY’,‘put your unique phrase here’);
    define(‘LOGGED_IN_KEY’,‘put your unique phrase here’);
    define(‘NONCE_KEY’,‘put your unique phrase here’);
    define(‘AUTH_SALT’,‘put your unique phrase here’);
    define(‘SECURE_AUTH_SALT’,‘put your unique phrase here’);
    define(‘LOGGED_IN_SALT’,‘put your unique phrase here’);
    define(‘NONCE_SALT’,‘put your unique phrase here’);
    $table_prefix = ‘wp_’;
    /* That’s all, stop editing! Happy blogging. */
    // ** MySQL settings – You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define(‘DB_NAME’, ‘database_name_here’);

    /** MySQL database username */
    define(‘DB_USER’, ‘username_here’);

    /** MySQL database password */
    define(‘DB_PASSWORD’, ‘password_here’);

    /** MySQL hostname */
    define(‘DB_HOST’, ‘localhost’);

    /** Database Charset to use in creating database tables. */
    define(‘DB_CHARSET’, ‘utf8’);

    /** The Database Collate type. Don’t change this if in doubt. */
    define(‘DB_COLLATE’, ”);

    define(‘AUTH_KEY’,’put your unique phrase here’);
    define(‘SECURE_AUTH_KEY’,’put your unique phrase here’);
    define(‘LOGGED_IN_KEY’,’put your unique phrase here’);
    define(‘NONCE_KEY’,’put your unique phrase here’);
    define(‘AUTH_SALT’,’put your unique phrase here’);
    define(‘SECURE_AUTH_SALT’,’put your unique phrase here’);
    define(‘LOGGED_IN_SALT’,’put your unique phrase here’);
    define(‘NONCE_SALT’,’put your unique phrase here’);

    $table_prefix = ‘wp_’;

    /* That’s all, stop editing! Happy blogging. */

    // ** MySQL settings - You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define('DB_NAME', 'database_name_here');
    
    /** MySQL database username */
    define('DB_USER', 'username_here');
    
    /** MySQL database password */
    define('DB_PASSWORD', 'password_here');
    
    /** MySQL hostname */
    define('DB_HOST', 'localhost');
    
    /** Database Charset to use in creating database tables. */
    define('DB_CHARSET', 'utf8');
    
    /** The Database Collate type. Don't change this if in doubt. */
    define('DB_COLLATE', '');
    
    define('AUTH_KEY','put your unique phrase here');
    define('SECURE_AUTH_KEY','put your unique phrase here');
    define('LOGGED_IN_KEY','put your unique phrase here');
    define('NONCE_KEY','put your unique phrase here');
    define('AUTH_SALT','put your unique phrase here');
    define('SECURE_AUTH_SALT','put your unique phrase here');
    define('LOGGED_IN_SALT','put your unique phrase here');
    define('NONCE_SALT','put your unique phrase here');
    
    $table_prefix  = 'wp_';
    
    /* That's all, stop editing! Happy blogging. */

    通常,这个文件会在你运行安装程序时自动生成,但偶尔WordPress没有权限写入安装文件夹。在这种情况下,您应该创建一个空的wp-config.php文件,从wp-config-sample.php复制和粘贴内容,并将正确的值设置为所有定义的常量。完成后,将文件上传到根文件夹并运行WordPress。

    注意:常量定义和PHP指令以特定的顺序出现,我们永远不应该改变。我们永远不应该在以下注释行下添加内容:

    /* That’s all, stop editing! Happy blogging. */
    /* That’s all, stop editing! Happy blogging. */
    /* That's all, stop editing! Happy blogging. */

    首先,是您应该从主机收到的数据库常量的定义:

    • DB_NAME
    • DB_USER
    • DB_PASSWORD
    • DB_HOST
    • DB_CHARSET
    • DB_COLLATE

    根据数据库详细信息,八个安全密钥将使站点更安全地抵御黑客。当您运行安装WordPress将自动生成安全和盐密钥,但您可以随时更改它们,添加任意字符串。为了更好的安全性,请考虑使用在线生成器

    $table_prefix变量存储所有WordPress表的前缀。不幸的是,任何人都知道它的默认值,这可能会导致WordPress数据库出现漏洞,可以通过$table_prefix在运行设置时设置自定义值来轻松修复。要更改工作网站中的表前缀,您应该对数据库运行多个查询,然后手动编辑wp-config.php文件。如果您无权访问数据库或者您没有构建自定义查询所需的知识,那么您可以安装一个像Change Table Prefix这样的插件来重命名数据库表和字段名称,并更新配置文件风险。

    注意:即使您将使用插件更改表前缀,备份WordPress文件和数据库也是一个好习惯。

    到目前为止,分析仅限于基本配置。但是我们可以使用许多常量来定义以启用功能、自定义和保护安装。

    基本配置:编辑文件系统

    WordPress文件系统为用户和黑客所熟知。为此,您可以考虑通过将特定文件夹移动到任意位置并在wp-config文件中设置相应的URL和路径来更改内置文件结构。首先,我们可以通过定义两个常量来移动内容文件夹。第一个设置完整目录路径:

    define( ‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/site/wp-content’ );
    define( ‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/site/wp-content’ );
    define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/site/wp-content' );

    第二个设置新目录URL:

    define( ‘WP_CONTENT_URL’, ‘http://example.com/site/wp-content’ );
    define( ‘WP_CONTENT_URL’, ‘http://example.com/site/wp-content’ );
    define( 'WP_CONTENT_URL', 'http://example.com/site/wp-content' );

    我们可以通过定义以下常量来移动插件文件夹:

    define( ‘WP_PLUGIN_DIR’, dirname(__FILE__) . ‘/wp-content/mydir/plugins’ );
    define( ‘WP_PLUGIN_URL’, ‘http://example.com/wp-content/mydir/plugins’ );
    define( ‘WP_PLUGIN_DIR’, dirname(__FILE__) . ‘/wp-content/mydir/plugins’ );
    define( ‘WP_PLUGIN_URL’, ‘http://example.com/wp-content/mydir/plugins’ );
    define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/wp-content/mydir/plugins' );
    define( 'WP_PLUGIN_URL', 'http://example.com/wp-content/mydir/plugins' );

    同样,我们可以通过设置新的目录路径来移动uploads文件夹:

    define( ‘UPLOADS’, ‘wp-content/mydir/uploads’ );
    define( ‘UPLOADS’, ‘wp-content/mydir/uploads’ );
    define( 'UPLOADS', 'wp-content/mydir/uploads' );

    注意:所有路径都相对于ABSPATH,并且它们不应包含前导斜杠。

    完成后,排列文件夹并重新加载WordPress。

    该图显示了与自定义结构相比的内置文件结构

    该图显示了与自定义结构相比的内置文件结构

    不可能从wp-config文件中移动/wp-content/themes文件夹,但我们可以在插件或主题的功能文件中注册一个新的主题目录。

    开发人员功能:调试模式和保存查询

    如果您是开发人员,您可以强制WordPress显示错误和警告,以帮助您进行主题和插件调试。要启用调试模式,您只需将WP_DEBUG值设置为true,如下所示:

    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG’, true );
    define( 'WP_DEBUG', true );

    WP_DEBUG默认设置为false。如果您需要禁用调试模式,您可以删除定义,或将常量的值设置为 false。当您在实时站点上工作时,您应该禁用调试模式。错误和警告不应显示给站点查看者,因为它可以为黑客提供有价值的信息。但是,如果您无论如何都必须进行调试怎么办?在这种情况下,您可以强制WordPress在/wp-content文件夹中的debug.log文件中保留错误和警告的内存。要启用此功能,请将以下代码复制并粘贴到wp-config.php文件中:

    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( ‘WP_DEBUG_DISPLAY’, false );
    @ini_set( ‘display_errors’, 0 );
    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( ‘WP_DEBUG_DISPLAY’, false );
    @ini_set( ‘display_errors’, 0 );
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    @ini_set( 'display_errors', 0 );

    要使此功能起作用,我们首先需要启用调试模式。然后,设置WP_DEBUG_LOG为true我们会强制WordPress将消息存储到debug.log文件中,而定义WP_DEBUG_DISPLAY为false即不会在屏幕上直接输出这些信息。最后,我们将PHP变量的值设置为0,display_errors这样错误消息就不会打印到屏幕上。wp-config永远不会从缓存中加载。因此,这是覆盖php.ini设置的好地方。

    注意:这是一个很棒的功能,您可以利用它来注册WordPress不会在屏幕上打印的消息。例如,当publish_post触发操作时,WordPress会加载一个保存数据的脚本,然后将用户重定向到文章编辑页面。在这种情况下,您可以注册消息,但不能将它们打印在屏幕上。

    另一个调试常量确定要加载的脚本和样式的版本。SCRIPT_DEBUG如果要加载未压缩版本,请设置为true:

    define( ‘SCRIPT_DEBUG’, true );
    define( ‘SCRIPT_DEBUG’, true );
    define( 'SCRIPT_DEBUG', true );

    如果您的主题或插件显示从数据库检索的数据,您可能需要存储查询详细信息以供后续查看。SAVEQUERIES常量强制WordPress将查询信息存储到$wpdb->queries数组中。将打印这些详细信息,将以下代码添加到页脚模板:

    if ( current_user_can( ‘administrator’ ) ) {
    global $wpdb;
    echo ‘<pre>’;
    print_r( $wpdb->queries );
    echo ‘</pre>’;
    }
    if ( current_user_can( ‘administrator’ ) ) {
    global $wpdb;
    echo ‘<pre>’;
    print_r( $wpdb->queries );
    echo ‘</pre>’;
    }
    if ( current_user_can( 'administrator' ) ) {
            global $wpdb;
            echo '<pre>';
            print_r( $wpdb->queries );
            echo '</pre>';
    }

    有关此功能的更深入分析,请参阅如何在WordPress中构建高效查询

    当您的网站长大后,您可能希望减少文章修订的数量。默认情况下,WordPress每60秒自动保存一次修订。我们可以通过在wp-config中设置自定义间隔来更改此值,如下所示:

    define( ‘AUTOSAVE_INTERVAL’, 160 );
    define( ‘AUTOSAVE_INTERVAL’, 160 );
    define( 'AUTOSAVE_INTERVAL', 160 );

    当然,您也可以减少自动保存间隔。每次我们保存我们的编辑时,WordPress都会在文章表中添加一行,以便我们可以恢复文章和页面的先前修订。这是一个有用的功能,当我们的网站变大时,它可能会变成一个问题。幸运的是,我们可以减少要存储的最大发布修订数量,或者完全禁用该功能。如果您想禁用后期修订,请定义以下常量:

    define( ‘WP_POST_REVISIONS’, false );
    define( ‘WP_POST_REVISIONS’, false );
  • 如何开发一款WordPress子主题

    如何开发一款WordPress子主题

    您已经运行WordPress网站一段时间了,它一直在做您需要做的事情。但是现在,您决定需要对其进行自定义。

    或者,您可能正在使用从主题目录下载的主题或已购买的主题创建站点,但您意识到它不能完全按照您的需要运行。

    那你怎么办呢?

    您可以找到一个插件来提供您需要的自定义或切换到新主题。但是,如果您对当前的主题感到满意并且找不到可以添加您需要的功能的插件怎么办?

    答:您需要自定义您的主题。最佳实践说:您通过(WordPress)子主题来做到这一点。

    在本教程中,我们将更多地讨论子主题是什么以及它是如何工作的。我们还将带您完成从头开始创建主题的过程,并向您展示如何将修改后的主题变成子主题。

    修改现有主题是开始WordPress开发的好方法。更改的结果将很容易看到和理解。但是,直接对活动主题进行编辑可能会导致问题,因为即使是一个小错误也可能导致主题无法使用。每当主题更新时,您所做的所有更改也将丢失。

    然而,有一种方法可以避免这些问题,那就是创建“子主题”。子主题的工作方式与任何其他WordPress主题大致相同,不同之处在于它使用现有主题作为基础(或“父”)。您对子主题所做的更改将反映在您的站点上,而无需直接更改父主题。

    1. 自定义WordPress的方法
    2. 什么是WordPress子主题?
    3. 何时在WordPress中使用子主题(优点)
    4. 何时不使用WordPress子主题(缺点)
    5. 如何创建WordPress子主题
    6. 如何激活WordPress子主题
    7. 如何在WordPress中自定义您的子主题
    8. 如何对子主题和父主题进行故障排除
    9. 使用WordPress子主题时的有用提示

    自定义WordPress的方法

    自定义主题有风险。如果您在第三方主题(例如您从市场上购买的主题)中编辑代码,那么当您下次更新主题时,您所做的所有更改都将丢失。这意味着您的网站不仅会恢复原状,而且您的所有工作都被浪费了。

    可以通过三种方式自定义您的WordPress网站:

    • 直接编辑您的主题。
    • 安装插件。
    • 创建当前主题的子主题。

    让我们依次来看看其中的每一个。

    编辑您的主题

    如果您的网站运行自定义WordPress主题,这意味着它是专门为您的网站开发的,您可以选择安全地编辑它,因为下次更新主题时不会丢失您的自定义设置。

    相反,如果您或您的开发人员将来对主题进行更改,您将编辑的是主题的自定义版本,而不是更改之前的原始版本。

    这并不意味着编辑您的主题并非没有风险。如果您没有编写主题的经验,创建子主题可能仍然更安全(我们稍后会看到如何)。这是我做的事情:我有一个基本主题,我在我所有的网站上使用,具有标准布局、钩子和函数,然后我在每个网站上使用子主题对其进行自定义。

    如果您直接编辑主题,请确保保留原始主题的备份,不要在实时站点中编辑主题(改用开发或临时站点),并使用版本控制来跟踪您的更改。

    如果您使用的是第三方主题,则永远不要直接编辑它。相反,使用插件或创建子主题。

    添加插件

    自定义WordPress主题的第二个选项是安装或编写插件。

    如果您要进行的自定义是功能性的而不是与设计相关的,那么插件是一种更合适的方法。所以如果你想添加额外的代码,最好还是创建一个插件。

    插件不必很大或很复杂:如果您需要向主题中的functions.php文件添加额外的代码,请创建一个简单的插件来向您的站点添加几行代码。一个很好的例子是注册自定义文章类型

    将代码添加到主题的functions.php可能很诱人,但添加帖子类型是对网站的功能更改,而不是设计更改。如果您以后要切换主题,您不会希望丢失这些帖子类型以及您使用它们创建的所有帖子。这就是为什么您应该安装或创建插件的原因。

    有时您可以找到一个现有的插件来满足您的需求,但有时您可能需要自己编写插件代码。

    WordPress插件库

    WordPress插件库

    如果对是否应该创建插件或自定义主题(或子主题)有疑问,请问自己:如果我想在将来更改网站的设计并安装新的WordPress主题,我是否希望保留此更改? 如果答案是肯定的,这意味着更改是功能性的而不是美学的,它应该包含在插件中。

    创建子主题

    自定义WordPress主题的第三个选项是创建子主题

    以下是您使用子主题的一些场景:

    • 您希望更改网站的设计,而不是功能。
    • 您的网站正在运行第三方主题或您想在当前状态下再次使用的主题。
    • 您不想直接编辑现有主题,以防它引起问题(可能您不是经验丰富的主题开发人员)。
    • 您的站点正在运行一个设计为父主题的主题,例如框架主题。这些主题具有许多自定义选项,例如hooks,专为您添加到您自己的子主题而设计。

    因此,子主题是一种向您的网站添加自定义内容的有效且安全的方式。因此,让我们更深入地了解它们。

    什么是WordPress子主题?

    WordPress主题目录

    那么,WordPress中的子主题究竟是什么?它是如何工作的?

    子主题是与另一个主题协同工作的主题,称为父主题

    它包含一些特定的说明来告诉WordPress这是一个子主题以及父主题是什么。WordPress 然后在大多数情况下使用来自父主题的代码,但会使用来自子主题的代码(如有必要)覆盖它。

    在许多方面,子主题的功能就像一个“正常”的WordPress主题。它以相同的方式安装、启用和配置。子主题的独特之处在于它依赖于另一个主题来确定其大部分内容。另一个主题被称为“父主题”。

    WordPress将始终优先考虑子主题的设置。因此,你能想到的子主题为坐在前面的家长。如果子主题中的设置覆盖了父主题中的匹配设置,则子主题优先。这使您可以仅更改要更改的主题部分,其他所有内容都由现有父级处理。

    例如,大多数父主题包含定义不同标题文本级别的样式,例如h1、h2、h3、h4等。假设父主题将h1字体大小定义为20px,但子主题指定与32px相同的标题。在这种情况下,WordPress会将后一种样式应用于所有h1文本。但是,如果同一个子主题不包含h2、h3 和 h4 的特殊样式说明,则仍将应用父主题定义的样式。

    如果您可以直接编辑主题,您可能想知道为什么子主题值得麻烦。使用子主题实际上有很多优点,因为它:

    • 使您能够更新父主题。您应该始终保持网站的各个方面都是最新的。但是,如果您编辑了父主题,则更新后所有更改都将丢失。
    • 可以轻松找到您所做的更改。发现您进行更改的每个实例可能很困难。使用子主题使您的添加内容更加清晰。
    • 避免直接编辑父主题的风险。如果您在处理主题时出错,或者您对所做的修改不满意,您可以轻松回滚到原始主题。

    WordPress子主题中的文件

    每个WordPress子主题必须至少有两个文件:样式表和函数文件。样式表将在顶部包含注释掉的文本,告诉WordPress这是一个子主题以及父主题是什么。函数文件将包含一个函数,该函数将来自父主题的样式表排入队列

    注意:您可能会遇到一些指南,告诉您从子主题的样式表调用父主题样式表。这不再是正确的方法,您应该在函数文件中使用排队。我很快就会告诉你如何做到这一点。

    你的子主题并不必须 包含的任何其他文件。与父主题不同,如果主题中没有更多特定文件,它不需要index.php文件作为后备。这是因为如果子主题中不存在模板文件,WordPress将使用父主题中的文件。

    因此,根据您希望子主题执行的操作,您可以向样式表、函数文件中添加额外的代码,或者在子主题中创建额外的文件以覆盖父主题。这些可能包括以下一项或多项:

    • 模板文件覆盖父主题中的相同文件,例如page.php当您要自定义静态页面的显示时。
    • 当您想要自定义站点设计的这些部分时,模板部分例如header.php或footer.php。
    • 您从子主题中的模板文件调用的额外模板部分。因此,如果您想在显示静态页面时自定义页眉,您可以在子主题中创建一个名为header-page.php的文件和一个名为page.php的模板文件,该文件将覆盖父主题中的page.php . 这个模板文件将与父主题中的模板文件相同,除了头文件的调用,它会调用header-page.php 而不是header.php。
    • 用于功能的额外包含文件。如果您想添加大量函数代码并对其进行组织,您可以为每组函数创建包含文件,然后在您的子主题的functions.php文件中调用它们。因此,例如,如果您想添加额外的定制器选项,您可以在您的子主题中添加一个名为customr.php的包含文件,然后从您的子主题中的函数文件中调用该文件。

    但是,如果您确实添加了额外的文件和功能,WordPress怎么知道该使用哪个呢?来自父主题的那些还是来自子主题的那些?这就是我们接下来要讲的。

    WordPress如何选择模板文件

    WordPress在您的站点上显示内容时从您的主题中选择模板文件的方式是参考模板层次结构

    WordPress模板层次结构

    WordPress模板层次结构

    WordPress使用此层次结构来处理主题中的模板文件,并在显示给定类型的内容时找到要使用的正确模板文件。它将从顶部开始(在上图中的左侧)并依次查找给定内容类型的每个文件。当它找到将显示该内容的文件时,它将使用它。

    假设您的主题有一个archive.php文件和一个category.php文件,但没有tag.php文件。显示类别档案时,WordPress将使用category.php,因为它更特定于内容类型。当显示标签档案时,它将使用archive.php代替。

    如果WordPress没有为给定的内容类型找到模板文件,它会默认为包罗万象的index.php文件,这就是为什么每个独立主题(即不是子主题)都必须有一个index.php文件的原因.

    这同样适用于单个文章和页面。假设您的主题有一个single.php文件,它是任何文章类型(包括页面和自定义帖子类型)的单个帖子的统称。它还有一个page.php文件。当显示单个页面时,它将使用page.php。显示文章时,它将使用singular.php。如果您注册自定义文章类型并且不为该帖子类型添加模板文件,它将再次使用singular.php。

    当您使用子主题时,WordPress仍然使用模板层次结构来决定在您的站点上输出内容时使用哪个文件。它查看父主题和子主题中的文件并使用它遇到的第一个文件。

    所以想象你的子主题有singular.php和post.php,你的父主题有page.php和index.php。输出单个文章时,WordPress将使用子主题中的post.php。输出页面时,它将使用父主题中的page.php。当输出自定义帖子类型的单个帖子时,它将使用来自子主题的single.php。

    但是,如果您的子主题和父主题都有相同文件的实例怎么办?

    假设您将page.php文件添加到上一个示例中的子主题。因为该主题位于子主题中,所以它会覆盖父主题中的相同文件。因此,当显示单个页面时,WordPress将使用来自子主题的新page.php文件。

    这就是为什么创建子主题可以让您自定义父主题。如果您将父主题中的模板文件副本添加到子主题,然后对其进行编辑以包含您要进行的自定义,WordPress将使用这个新模板文件,而不是来自父主题的模板文件。这意味着您的自定义将在显示内容时使用,而无需您编辑父主题。好的!

    WordPress如何从父主题和子主题运行函数

    如果您不想对主题中的模板文件进行自定义,而是对功能进行自定义,该怎么办?

    你也可以这样做。首先,您需要让自己满意,这样做的正确方法是通过子主题而不是插件。一个示例可能是您想要编辑父主题中已有的函数,例如,在页脚中输出版权页的函数。

    然后将新函数添加到子主题中的函数文件,或添加到从函数文件调用的包含文件。

    为确保您的新函数覆盖父主题的功能,您需要了解如何覆盖函数。有三种方法可以做到这一点:

    • 通过在父主题中编写一个与可插入函数同名的新函数。
    • 通过将父主题中的函数从它所附加的钩子中解开,然后编写一个新函数来替换它。
    • 通过编写一个比原始函数具有更高优先级的新函数并通过相同的钩子调用它,这意味着它在原始函数之后被调用,因此可以覆盖或增加它。

    我们将在本文稍后介绍您如何执行所有这些操作。但首先,让我们看一下您何时会使用和不会使用子主题的场景。

    何时在WordPress中使用子主题(优点)

    您现在知道什么是子主题以及如何使用它们来覆盖父主题中的模板文件或函数。

    简要回顾一下,如果您在网站上运行主题并且想要执行以下一项或多项操作,则应使用子主题:

    • 编辑一个或多个模板文件。
    • 添加与显示而非功能相关的额外功能。
    • 覆盖父主题中的一个或多个函数。
    • 添加额外的模板文件。

    一些优点包括:

    • 易于扩展和定制:很明显,子主题扩展了其父主题的功能。您已经有一个父主题形式的现成模板,您需要做的就是为您的子主题创建一个单独的style.css文件,并根据您的需要添加自定义调整。
    • 轻松更新:随着 WordPress 的发展,主题和插件需要经常更新。如果您对主要主题进行自定义调整和更改,如果您更新主题,最终可能会丢失所有更改。因此,建议对子主题进行此类更改,这样即使您需要更新父主题,也不必担心丢失更改。

    当您不使用子主题时呢?

    何时不使用WordPress子主题(缺点)

    有时您不会使用子主题,而应该使用不同的方法来自定义您的网站。这些是:

    • 如果您的主题是您自己开发的(或其他人为您编写的)并且不需要在其他任何地方使用它。只需编辑主题,确保使用版本控制。
    • 如果您要进行的自定义具有功能性,例如添加自定义帖子类型,并且您希望在将来更改主题时保留它们。改用插件。

    一些缺点包括:

    • 选择理想的父主题:并非所有主题都可以作为好父主题!例如,某些WordPress主题可能不会定期更新,因此往往缺乏最新的功能。同样,并非所有WordPress主题都是在考虑子主题的情况下创建的,因此可能不适合父主题。您需要选择完美的父主题,以便正确扩展它并使其成为您子主题的基础。
    • 定制工作:子主题基本上寻求扩展和定制现有模板设计。因此,如果您已经围绕父主题创建了一个网站,则在移动到子主题时,您可能需要重新考虑自定义元素,例如菜单、主题选项、侧边栏、标题等。

    现在您知道何时(以及何时不)使用子主题,是时候开始工作并学习如何在WordPress中创建子主题了。

    现在您知道为什么应该使用子主题,现在是创建一个的时候了。这个过程有点复杂,但我们将引导您完成每一步。

    如何创建WordPress子主题

    在创建子主题之前,您需要做一些准备工作。首先,在执行任何其他操作之前创建站点备份非常重要。这样,您就可以处理您的主题,而不必担心破坏您的网站或丢失其任何内容。事实上,最好使用临时站点来编辑和测试您的主题,而不是您的实时站点。

    我们还建议您在开始之前熟悉CSS和PHP。虽然您不需要任何使用这些语言创建子主题的经验,但它肯定有助于编辑主题的过程。花时间了解这些关键语言的基础知识将使您有一个良好的开端。

    在WordPress中设置一个基本的子主题涉及创建两个文件:样式表函数文件

    Step 1:为您的子主题创建一个文件夹

    您需要的第一件事是为您的孩子主题生活的地方。但是,在此之前,您需要一种直接处理站点文件的方法。这通常意味着使用像FileZilla这样的SFTP解决方案来访问您的站点。

    FileZilla界面

    一旦你安装和设置FileZilla中,您可以使用登录你的虚拟主机提供的凭据。完成后,您将看到整个站点组织成一系列文件夹和文件。从这里,您需要导航到/wp-content/themes/,这是所有主题所在的位置。

    WordPress主题目录

    右键单击此文件夹内的任意位置,然后选择创建目录。此文件夹将保存您的子主题,因此我们建议您以其父主题命名。例如,一个二〇一七的子主题可能被称为twentyseventeen-child。

    WordPress子主题目录

    保存文件夹后,就可以开始向子主题添加内容了。

    Step 2:创建样式表

    层叠样式表 (CSS)是一种定义HTML内容外观的语言。主题的CSS文件控制您网站上的文本、图像、超链接和大多数其他内容的外观。当我们谈论更改主题的外观时,我们通常谈论的是编辑其CSS。

    这听起来可能很复杂,而且CSS确实为您提供了很多自定义选项。但是,现在您无需担心具体细节。您需要做的就是创建CSS文件本身。您将在刚刚创建的子主题文件夹中执行此操作。只需打开文件夹,右键单击其中的任意位置,然后选择创建新文件。

    主题CSS样式

    当您被要求命名文件时,将其命名为style.css,注意使用确切的大小写和拼写(因为WordPress否则将无法识别该文件)。

    创建子主题CSS样式文件

    该文件自然是空的,因此您需要为其提供一些内容。要开始编辑文件,请右键单击它并选择查看/编辑。这将在您的默认文本编辑程序中打开文件,例如TextEdit或记事本。

    空白CSS文件

    在创建文件之前,您需要创建一个文件夹来保存您的主题。这在WordPress安装的wp-content/themes文件中。

    在新主题的文件夹中,创建一个名为style.css的文件。添加以下内容:

    /*
    Theme Name: My Child Theme. Child for Twenty Nineteen.
    Theme URI: https://rachelmccollin.com
    Description: Theme to support tutsplus tutorial. Child theme for the Twenty Nineteen theme.
    Author: Rachel McCollin
    Textdomain: mccollin
    Author URI: https://rachelmccollin.com/
    Template: twentynineteen
    Version: 1.0
    License: GNU General Public License v2 or later
    License URI: https://www.gnu.org/licenses/gpl-2.0.html
    */
    /*
    Theme Name: My Child Theme. Child for Twenty Nineteen.
    Theme URI: https://rachelmccollin.com
    Description: Theme to support tutsplus tutorial. Child theme for the Twenty Nineteen theme.
    Author: Rachel McCollin
    Textdomain: mccollin
    Author URI: https://rachelmccollin.com/
    Template: twentynineteen
    Version: 1.0
    License: GNU General Public License v2 or later
    License URI: https://www.gnu.org/licenses/gpl-2.0.html
    */
    /*
    Theme Name:  My Child Theme. Child for Twenty Nineteen.
    Theme URI:  https://rachelmccollin.com
    Description:  Theme to support tutsplus tutorial. Child theme for the Twenty Nineteen theme.
    Author:  Rachel McCollin
    Textdomain:  mccollin
    Author URI:  https://rachelmccollin.com/
    Template:  twentynineteen
    Version:  1.0
    License:  GNU General Public License v2 or later
    License URI: https://www.gnu.org/licenses/gpl-2.0.html                 
    */

    这段文字被注释掉了。它不是在您的网站上运行任何东西或提供任何功能的代码。相反,它会告诉WordPress主题。每个主题中都需要这样的文本,否则WordPress无法将其识别为主题。

    让我们通过每一行来确定它们的作用:

    • Theme Name:主题的唯一名称。
    • Theme URI:用户可以在其中找到主题的代码或文档。
    • Description:帮助用户理解主题的描述性文字。
    • Author:你的名字
    • Textdomain:用于国际化。在任何国际化函数中使用文本域作为第二个参数。
    • Author URI:作者的网站。
    • Template:存储父主题的文件夹。使用文件夹名称而不是主题名称。没有这一行,您的主题将无法作为子主题使用。
    • Version:版本号
    • License:许可证,必须是GNU。[关联]
    • License URI:许可证信息的链接。

    子主题最重要的一行是Template: 行。没有这个,主题将不能作为子主题工作。只有子主题将包含此行。

    将此添加到您主题的样式表中,对其进行编辑以添加您自己的详细信息而不是我的。您需要编辑Template: 行以添加存储现有主题的文件夹,因为这将是您的父主题。

    现在保存文件。如果您现在查看站点中的主题详细信息屏幕,您会看到显示的所有内容:

    WordPress中没有截图的主题页面

    WordPress中没有截图的主题页面

    这看起来不太好,因为没有截屏。这是一张图像,可以让您了解主题的外观。除非您的主题看起来与父主题非常不同,否则只需将screenshot.png文件从您的父主题复制到您的子主题。

    带有屏幕截图的WordPress中的主题页面

    带有屏幕截图的WordPress中的主题页面

    Step 3:引用父主题

    到目前为止,您的主题已经有了一个主页和一些基本信息。现在,是时候给它一些功能了。您可以通过创建一个函数文件来做到这一点。除其他外,此文件决定了主题的独特功能。这是一个功能强大的工具,用途广泛,但现在,您只需要创建它。

    下一步是将函数文件添加到您的子主题。您需要它,以便您可以将来自父主题的样式表排入队列。没有它,您的网站将根本没有样式,看起来像这样:

    我们的主页没有CSS

    我们的主页没有CSS

    不好,我相信你会同意的!因此,让我们添加样式以使其看起来应该如此。

    在您的子主题文件夹中,添加一个名为functions.php的文件。打开它并添加以下代码:

    <?php
    /* enqueue script for parent theme stylesheeet */
    function childtheme_parent_styles() {
    // enqueue style
    wp_enqueue_style( ‘parent’, get_template_directory_uri().‘/style.css’ );
    }
    add_action( ‘wp_enqueue_scripts’, ‘childtheme_parent_styles’);
    <?php
    /* enqueue script for parent theme stylesheeet */
    function childtheme_parent_styles() {
    // enqueue style
    wp_enqueue_style( ‘parent’, get_template_directory_uri().’/style.css’ );
    }
    add_action( ‘wp_enqueue_scripts’, ‘childtheme_parent_styles’);
    <?php
    /* enqueue script for parent theme stylesheeet */        
    function childtheme_parent_styles() {
    // enqueue style
    wp_enqueue_style( 'parent', get_template_directory_uri().'/style.css' );                       
    }
    add_action( 'wp_enqueue_scripts', 'childtheme_parent_styles');

    它使用wp_enqueue_style()函数将来自父主题的样式表排入队列,get_template_directory_uri()函数定位该文件的存储位置。该函数位于我创建的一个名为wbolt_parent_styles()的函数中,与wp_enqueue_scripts钩子挂钩。

    您可能想知道为什么它使用名为wp_enqueue_scripts而不是的函数wp_enqueue_styles。这是因为wp_enqueue_scripts用于脚本和样式,并且没有像wp_enqueue_styles.

    随意编辑我的代码,将您自己的前缀添加到您的函数名称中。我使用“childtheme”作为前缀,以确保我的函数不会与来自父主题或任何插件的任何其他函数发生冲突。

    现在保存您的文件。

    Step 4:启用子主题

    您的子主题现在可以使用了,所以您需要做的就是启用它。最简单的方法是通过WordPress管理界面。只需登录,然后访问外观>主题。您应该已经在此处看到您的子主题:

    启用子主题

    此时,您只需要单击“启用”即可启用您的主题。当然,此时您可能不会注意到您的站点有任何差异。这是因为您实际上还没有添加任何自定义。子主题仍然是一张白纸,等着你把它变成特别的东西。

    正如我们之前提到的,您现在应该花一些时间来了解有关CSSPHP的更多信息。这将使您能够使用内置主题编辑器通过子主题向您的站点添加新样式和功能。如果你想扩展您的主题的功能,它也是一个聪明的想法,详细了解functions.php的文件。只需稍加努力,您就可以使用全新的子主题对 WordPress 网站进行任何您想要的更改!

    如何激活WordPress子主题

    一旦您的子主题准备就绪,您就需要激活它。如果您担心激活子主题会关闭父主题,请不要担心:WordPress会知道使用父主题中的文件,除非您向子主题添加新文件来覆盖它们。到目前为止,您还没有向子主题添加任何额外的文件或功能,因此您的站点的工作方式与激活父主题时完全相同。

    请记住:首先在您的开发或临时站点上执行此操作。在您测试之前,不要在您的实时站点上激活您的子主题。

    在WordPress管理中,转到外观 > 主题。您会发现您的子主题列在您网站上安装的主题中。

    将鼠标悬停在主题上,然后单击“激活” 按钮。这将激活您的子主题。现在,当您访问您的实时站点时,它看起来和以前一样:

    网站首页

    网站首页

    它看起来相同,因为您尚未添加任何自定义。但是你现在有一个工作子主题。做得好!

    如何在WordPress中自定义子主题

    现在您的WordPress网站有了一个可用的子主题,是时候添加您的自定义设置了。在这里,我将向您展示如何添加模板文件以覆盖父主题上的模板文件、如何为子主题添加样式以及如何添加新功能。

    让我们从模板文件开始。

    如何将模板文件添加到您的WordPress子主题

    我们已经了解了WordPress在您的网站上显示内容时如何选择要使用的模板文件。有两件事要记住:

    • WordPress将使用层次结构中最先出现的文件,无论是来自子主题还是父主题。
    • 如果父主题和子主题中都存在同名的模板文件(或模板部分,例如header.php),WordPress将使用子主题中的一个。

    要添加自定义,我发现首先从父主题制作相关文件的副本,将其添加到子主题,然后编辑它更容易。

    这适用于您的子主题中的文件是否与父主题中的命名文件相同,或者它是用于显示不同内容类型的新文件,还是层次结构中更高的文件。

    因此,如果我将新版本的page.php添加到我的子主题中,这将覆盖我父主题中的page.php,我会将page.php从我的父主题复制到我的子主题,然后对其进行编辑。确保复制文件:不要移动它,因为您不想对父主题进行任何更改。

    例如,如果我想要在我的子主题中使用自定义页面模板,我会将page.php复制到我的子主题,重命名它,然后对其进行编辑。

    这样,您可以确保不需要自定义的文件的所有方面仍然可以正常工作。这同样适用于模板部件。

    如何为您的WordPress子主题添加样式

    您还可以向子主题的style.css文件添加样式,这将增强或覆盖父主题样式表中的样式。

    WordPress将首先从父主题调用样式表,然后从子主题调用样式表。这意味着如果您将样式添加到与父主题中的样式相同的元素的子主题,只要您使用相同的选择器,它就会覆盖父主题的样式。

    因此,假设您想更改站点标题的颜色。在父主题中,这可能是这样的:

    h1.site-title {
    color: #000;
    }
    h1.site-title {
    color: #000;
    }
    h1.site-title {
    color: #000;
    }

    要在您的子主题中覆盖它,您可以添加以下内容:

    h1.site-title {
    color: #303030;
    }
    h1.site-title {
    color: #303030;
    }
    h1.site-title {
    color: #303030;
    }

    由于浏览器会在父主题中的样式之后遇到这个,它将覆盖它并被使用。

    如何为WordPress子主题添加函数

    因此,您在WordPress中创建了子主题并不是因为您想要编辑任何模板文件,而是因为您想要添加额外的功能或覆盖父主题中的一个或多个功能。

    在子主题中编写函数比添加模板文件要复杂一些,但这是可能的。

    如果您想添加一个不与父主题中的任何功能交互的新功能,您可以继续这样做。只需将该函数添加到子主题中的functions.php文件中,将其挂接到相关的操作或过滤器挂钩上,就可以了。

    但是,如果您计划覆盖或编辑父主题中的函数,则需要了解可用于执行此操作的方法。您可以通过三种方式覆盖子主题中的父主题功能:

    • 如果父主题中的主题是可插入的,您只需在子主题中编写另一个具有相同名称的函数,WordPress将运行该函数而不是父主题中的函数。
    • 如果你想完全停止父主题中的函数运行,你可以在你的子主题中编写一个函数,将它从它所附加的钩子中解开。
    • 如果您想扩充一个函数,您可以在您的子主题中添加另一个函数(具有不同的名称),并确保它在父主题中的函数之后运行。

    让我们仔细看看你是如何做到的。

    覆盖可插入函数

    可插拔函数由环绕在它周围的条件检查标识。这将检查是否有另一个同名的函数已经被触发。如果是这样,它不会运行该功能。

    WordPress将在来自父主题的函数之前触发来自您的子主题的函数。如果它在父主题中遇到一个可插拔函数,并且您已向子主题添加了一个同名的函数,则该可插拔函数将不会运行。

    一个示例是在WooCommerce站点的Storefront主题中输出版权页的函数。这是没有内容的函数:

    if ( ! function_exists( ‘storefront_credit’ ) ) {
    function storefront_credit() {
  • WordPress钩子详解:如何使用动作、过滤器和自定义钩子

    WordPress钩子详解:如何使用动作、过滤器和自定义钩子

    WordPress钩子(Hook)是WordPress开发人员的武器库中最重要的工具之一。它们是WordPress插件和主题开发的基础。您可以使用WordPress的许多内置钩子将自定义代码“连接到”WordPress核心,并执行修改某些内容。

    有两种类型的WordPress钩子:ActionsFilters。Hook非常普遍,甚至WordPress Core本身也广泛使用它们。WordPress还提供了一种让您定义自己的自定义钩子的方法,以便其他开发人员可以挂钩到您的代码中。

    了解动作、过滤器和自定义钩子的工作原理对于掌握WordPress开发至关重要。

    本文的前半部分介绍了WordPress钩子的基础知识,并解释了它们如何与多个示例一起工作。在后半部分,您将学习如何使用钩子来自定义WordPress,创建自己的自定义钩子,并使用它们来构建自己的可扩展插件。

    1. 什么是WordPress钩子?
    2. 钩子 vs 动作 vs 过滤器
    3. WordPress钩子如何工作?
    4. 在哪里注册钩子及其函数?
    5. 使用WordPress钩子
    6. WordPress钩子列表和资源
    7. 查找在WordPress页面上注册的钩子
    8. “所有”钩子
    9. WordPress钩子存储在哪里?
    10. 如何创建自定义WordPress钩子
    11. 从WordPress钩子中删除回调函数
    12. 更多WordPress钩子教程

    什么是WordPress钩子?

    一个WordPress的页面是由很多的功能和数据库查询组装。WordPress核心、插件和主题协同工作以输出页面元素,如文本、图像、脚本和样式。完全组装后,浏览器会将它们放在一起并呈现页面。

    WordPress钩子允许您在某些点“钩入”这个构建过程并运行您的自定义代码。钩子的主要功能是让你在不接触核心文件的情况下修改或添加功能到WordPress 。

    钩子将帮助您使用自己的代码扩展WordPress

    钩子将帮助您使用自己的代码扩展WordPress

    WordPress的插件API赋予WordPress钩子的功能。您可以通过在WordPress运行时在特定实例中调用某些称为Hook Functions的WordPress函数来使用钩子。

    使用钩子函数,您可以将自定义代码捆绑在回调函数中,并将其注册到任何钩子中。注册后,此回调将在钩子所在的任何地方运行,允许您增加或替换默认的WordPress功能。

    钩子在代码执行过程中的位置是一个重要的因素。您将在接下来的部分中详细了解其重要性。

    两种类型的WordPress钩子:动作和过滤器

    WordPress包括两种类型的钩子,称为ActionsFilters。动作允许您在WordPress运行时的某些预定义点执行某些操作,而过滤器允许您修改WordPress处理的任何数据并返回这些数据。

    动作Actions)在WordPress代码中定义为:

    do_action( ‘action_name’, [optional_arguments] );
    do_action( ‘action_name’, [optional_arguments] );
    do_action( 'action_name', [optional_arguments] );

    action_name字符串是动作的名称。您可以指定[optional_arguments]变量以将附加参数传递给回调函数。如果未指定此字段,则其默认值将为空。

    示例:do_action( 'wp_head' )每次WordPress处理站点标题时,都可以挂接该动作以运行自定义代码。此动作没有任何其他参数。

    过滤器(Filters)在WordPress代码中定义为:

    apply_filters( ‘filter_name’, ‘value_to_be_filtered’, [optional_arguments] );
    apply_filters( ‘filter_name’, ‘value_to_be_filtered’, [optional_arguments] );
    apply_filters( 'filter_name', 'value_to_be_filtered', [optional_arguments] );

    filter_name字符串是过滤器的名称,value_to_be_filtered变量是被过滤和返回需求,和值[optional_arguments]变量可以通过附加参数,就像动作。

    例如:apply_filters( 'admin_footer_text' , string $text )过滤器可以是钩状来修改在管理页脚显示的文本。从WordPress 5.4开始,其默认值将 在管理区域页脚中显示该句子。Thank you for creating with WordPress.

    稍后您将通过WordPress核心中的许多示例学习如何动作和过滤器钩子。

    上钩后,您可以指导您的代码在您的网站上执行自定义某些内容。例如,您可以使用钩子在发布文章后自动发送电子邮件,或加载自定义样式表来更改站点的外观。

    WordPress挂钩可帮助您与网站互动或修改您的网站

    WordPress钩子可帮助您与网站互动或修改您的网站

    理解钩子的最简单方法是将您的WordPress网站想象成盖房子。

    钩子类似于使用起重机来回移动建筑物品。正在传输的项目是回调函数,其中包括您的自定义代码。这些项目(或功能)可以帮助您建造或改造房屋。

    在WordPress中挂钩“wp_head”操作的示例

    在WordPress中“wp_head”动作钩子的示例

    回调函数可以是常规PHP函数、默认WordPress函数或您定义的自定义函数。

    我们只能在连接到特定挂钩的特定载体上运输某些物品。因此,动作只能与动作函数挂钩同样,过滤器只能与过滤器函数挂钩。

    虽然更换起重机上的吊钩和托架很乏味,但WordPress通过包含超过2,200种默认钩子使其变得非常容易。

    WordPress 5.1有2200多个原生钩子(来源:Adam Brown)

    WordPress 5.1有2200多个原生钩子(来源:Adam Brown)

    您可以找到遍布WordPress核心的钩子,让您可以进入要钩子的确切位置并运行您的自定义代码。

    钩子 vs 动作 vs 过滤器

    根据WordPress插件手册

    钩子是一段代码交互/修改另一段代码的一种方式……钩子有两种类型:动作和过滤器。

    术语HookActionFilter的使用方式存在广泛的不一致。一些教程和指南将它们与与之相关的函数混合在一起。这种混淆存在的一个主要原因是钩子工作方式的复杂性。

    即使您仔细查看WordPress核心内部,您也会发现添加动作和过滤器之间没有太大区别。下面是为ADD_ACTION()函数的源代码wp-includes/plugin.php文件:

    function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
    return add_filter( $tag, $function_to_add, $priority, $accepted_args );
    }
    function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
    return add_filter( $tag, $function_to_add, $priority, $accepted_args );
    }
    function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {      
    return add_filter( $tag, $function_to_add, $priority, $accepted_args );
    }

    add_action()函数只是调用该add_filter()函数并返回其值。为什么?因为它们从根本上以相同的方式工作,除了一个区别。

    apply_filters()函数返回一个可以更改现有数据类型的值,而该do_action() 函数不返回任何内容(PHP中的NULL值)。

    如果您仍然感到困惑,请不要担心!读完本文的前半部分后,一切就都清楚了。我们将坚持使用官方的WordPress Codex术语,因为它清晰、准确且通用。

    现在,让自己熟悉下面显示的钩子例程。

    钩子程序:钩子、钩子函数和回调函数

    钩子程序:钩子、钩子函数和回调函数

    让我们分解一下Actions和Hooks之间的区别。

    WordPress钩子
    动作 过滤器
    动作用于在WordPress Core执行期间的特定点运行自定义函数。 过滤器用于修改或自定义其他功能使用的数据。
    动作由do_action( ‘action_name’ )WordPress代码中的函数定义/创建。 过滤器由apply_filters( ‘filter_name’, ‘value_to_be_filtered’ )WordPress代码中的函数定义/创建。
    动作也称为动作钩子 过滤器也称为过滤器钩子
    动作只能与动作函数挂钩。例如add_action()remove_action() 过滤器只能与过滤器函数挂钩。例如add_filter()remove_filter()
    动作函数不需要向它们的回调函数传递任何参数。 过滤器函数需要至少传递一个参数给它们的回调函数。
    动作函数可以执行任何类型的任务,包括改变WordPress工作方式的行为。 过滤器函数仅用于修改过滤器传递给它们的数据。
    动作函数应该return没什么。但是,它们可以echo输出或与数据库交互。 过滤器函数必须将return其更改作为输出。即使过滤器函数什么都不改变,它仍然必须return是未修改的输入。
    只要代码有效,动作几乎可以执行任何操作。 过滤器应该以孤立的方式工作,因此它们不会产生任何意外的副作用。
    总结:一个动作会中断常规的代码执行过程,用它接收到的信息做一些事情,但什么都不返回,然后退出。 总结:过滤器修改它接收到的信息,将其返回给调用钩子函数,其他函数可以使用它返回的值。

     

    有时,您可以使用动作或过滤器来实现相同的目标。例如,如果您想修改文章中的文本,您可以使用publish_post动作注册一个回调函数,并在将文章内容保存到数据库时更改文章内容。

    // define the callback function to change the text
    function change_text_callback() {
    // add the code to change text here
    }
    // hook in to the ‘publish_post’ action with the add_action() function
    add_action( ‘publish_post’, ‘change_text_callback’ );
    // define the callback function to change the text
    function change_text_callback() {
    // add the code to change text here
    }
    // hook in to the ‘publish_post’ action with the add_action() function
    add_action( ‘publish_post’, ‘change_text_callback’ );
    // define the callback function to change the text
    function change_text_callback() { 
    // add the code to change text here
    }
    // hook in to the 'publish_post' action with the add_action() function
    add_action( 'publish_post', 'change_text_callback' );

    或者您可以使用the_content过滤器注册另一个回调函数,以在浏览器中显示之前修改文章内容。

    // define the callback function to modify the text
    function change_text_another_callback( $content ) {
    // add the code to change text here and then return it
    return $filtered_content;
    }
    // hook in to ‘the_content’ filter with the add_filter() function
    add_filter( ‘the_content’, ‘change_text_another_callback’);
    // define the callback function to modify the text
    function change_text_another_callback( $content ) {
    // add the code to change text here and then return it
    return $filtered_content;
    }
    // hook in to ‘the_content’ filter with the add_filter() function
    add_filter( ‘the_content’, ‘change_text_another_callback’);
    // define the callback function to modify the text
    function change_text_another_callback( $content ) { 
    // add the code to change text here and then return it 
    return $filtered_content;
    }
    // hook in to 'the_content' filter with the add_filter() function
    add_filter( 'the_content', 'change_text_another_callback');

    两种不同的方法,结果相同。知道何时使用一个而不是另一个是成为优秀WordPress开发人员的关键。

    WordPress钩子如何工作?

    房子的例子很简单,可以理解钩子的基本功能,但它没有捕捉到它们如何工作的复杂性。最重要的是钩位置和特异性的概念。

    一个更好的例子是将处理WordPress网页想象成组装汽车。与制造汽车需要时间不同,组装网页几乎是瞬间完成的。

    组装网页就像组装汽车

    组装网页就像组装汽车

    就像汽车如何在现代装配线中逐个组装在一起一样,WordPress网页由服务器和客户端逐个组装。

    WordPress核心就像汽车引擎、底盘和其他必需品,为网站的“核心”功能提供动力。

    您可以仅使用WordPress核心就拥有一个功能强大的网站,但这有什么乐趣呢?您需要向站点添加令人兴奋的功能。这就是WordPress插件和主题介入的地方,它们都广泛使用钩子。

    在上面的示例中,每个编号的站点就像WordPress核心中的一个钩子。有两种类型的站点,例如动作和过滤器。每个站都包含一个特定类型的插槽,它只接受某些工具,类似于动作函数和过滤器函数。

    为了模块化和效率,所有站点都以频繁的间隔放置。

    根据特定位置的要求,我们可以为该特定站点的工作安装(或钩子)最合适的工具。这些工具就像用于与WordPress交互或修改WordPress的回调函数。

    一些工具可以显着改变汽车的工作,就像注册到动作的回调一样。其他工具仅用于自定义汽车的外观,例如注册到过滤器的回调。

    在正确的站点使用正确的工具对于制造一流的汽车至关重要。同样,钩子帮助我们根据我们的独特需求定制WordPress。

    如果你扩展这个类比,插件就像添加有用的汽车功能,如安全气囊、娱乐控制台、远程无钥匙系统等(像这些是为了增强WooCommerce的功能)。主题类似于自定义汽车的视觉部分,例如整体设计、喷漆、轮辋等(这是自定义WordPress主题的方法)。

    在哪里注册钩子及其函数?

    在WordPress中添加钩子有两种推荐的方法:

    • 插件:制作您自己的插件并在其中添加所有自定义代码。
    • 子主题:在子主题的functions.php文件中注册钩子和回调函数。

    对于本教程,让我们从创建插件开始。为此,请在您的/wp-content/plugins/目录中创建一个新文件夹。

    我给我的插件命名salhooks,但你可以随意命名它。根据 WordPress 指南,您需要在插件目录中创建一个具有相同名称 (salhooks.php )的PHP文件。

    将以下标题字段添加到您的插件文件以将其注册到WordPress。您可以在WordPress Codex中了解有关插件标头要求的更多信息。

    <?php
    /*
    Plugin Name: Salhooks
    Version : 1.0
    Description: Demonstrating WordPress Hooks (Actions and Filters) with multiple examples.
    Author : Salman Ravoof
    Author URI : https://www.salmanravoof.com/
    License : GPLv2 or later
    License URI: https://www.gnu.org/licenses/gpl-2.0.html
    Text Domain: salhooks
    */
    //=================================================
    // Security: Abort if this file is called directly
    //=================================================
    if ( !defined(‘ABSPATH’) ) {
    die;
    }
    <?php
    /*
    Plugin Name: Salhooks
    Version : 1.0
    Description: Demonstrating WordPress Hooks (Actions and Filters) with multiple examples.
    Author : Salman Ravoof
    Author URI : https://www.salmanravoof.com/
    License : GPLv2 or later
    License URI: https://www.gnu.org/licenses/gpl-2.0.html
    Text Domain: salhooks
    */
    //=================================================
    // Security: Abort if this file is called directly
    //=================================================
    if ( !defined(‘ABSPATH’) ) {
    die;
    }
    <?php
    /*
    Plugin Name:  Salhooks
    Version    :  1.0
    Description:  Demonstrating WordPress Hooks (Actions and Filters) with multiple examples.
    Author     :  Salman Ravoof
    Author URI :  https://www.salmanravoof.com/
    License    :  GPLv2 or later
    License URI:  https://www.gnu.org/licenses/gpl-2.0.html
    Text Domain:  salhooks
    */
    //=================================================
    // Security: Abort if this file is called directly
    //=================================================
    if ( !defined('ABSPATH') ) { 
    die;
    }

    保存此文件,然后在您的WordPress仪表盘中激活该插件。我将在本地WordPress安装中使用这个插件来演示钩子是如何工作的。

    作为旁注,您还可以直接编辑WordPress核心文件以注册钩子。但是,不建议这样做,因为每次更新WordPress时,您的所有自定义代码都会被覆盖。出于同样的原因,您不应该在父主题中添加钩子。

    使用WordPress钩子

    一个WordPress钩子本身什么都不做。它只是坐在代码中,等待一些钩子函数来激活它。要使用钩子,您至少需要调用2个其他函数。

    首先,您需要使用钩子函数注册钩子并在其中引用回调函数。然后你需要定义你之前在钩子函数中提到的回调函数。每次触发钩子时,WordPress都会运行此回调函数。

    定义这些函数的顺序无关紧要,但最好将它们放在一起。

    动作和过滤器具有不同的钩子函数。从现在开始,让我们将它们称为Action FunctionsFilter Functions。正如您将看到的,它们有自己的语法和参数要求。

    1. 钩住一个动作
    2. 钩住过滤器
    3. 使用Hooks自定义WordPress登录页面

    钩住一个动作

    动作提供了一种在WordPress 核心、插件或主题执行中的特定点运行自定义代码的方法。

    add_action() 动作函数

    您可以按照以下步骤使用动作注册回调函数:

    1. 定义一个带有自定义代码的回调函数。当WordPress的代码执行期间触发它注册到的任何动作时,此回调函数将运行。
    2. 使用该add_action()函数将您的回调函数连接到您想要的动作。根据WordPress Codex,add_action()函数至少需要传递两个参数:
        • 要挂钩的动作的名称。
        • 触发动作时将运行的回调函数的名称。
    3. add_action()函数还接受两个可选参数来设置prioritynumber of arguments。我们稍后会讨论它们。

    最好将回调函数参数命名为尽可能接近钩子函数传递的参数。

    让我们看一个使用该add_action()函数的例子。

    // define the callback function, the arguments are optional
    function example_callback(
  • WordPress调试完整指南(启用WP_DEBUG + 其他工具)

    WordPress调试完整指南(启用WP_DEBUG + 其他工具)

    在一个完美的世界中,您永远不会遇到需要调试的问题。但在现实世界中,您几乎肯定会在WordPress网站上遇到需要深入了解的问题。

    为了帮助您做到这一点,WordPress包含其自己的内置调试模式,您还可以找到有用的第三方工具来帮助您调试WordPress。

    在这篇文章中,我们将深入研究内置的WordPress调试模式并向您展示如何启用它。然后,我们还将分享其他一些调试WordPress网站的方法。

    这是我们将涵盖的所有内容:

    WP Debug有什么作用?

    核心WordPress软件是用PHP编写的,插件和主题也是如此。

    如果您的网站出现问题,WordPress Debug模式可以通过显示所有PHP错误、通知和警告来帮助您找出问题所在。

    启用Debug模式后,只要出现问题(即使它不会立即引起问题),您就会看到如下消息:

    WordPress网站上的WP_DEBUG错误示例

    WordPress网站上的WP_DEBUG错误示例

    然后,您可以修复问题或将其报告给您的开发人员或主题/插件的开发人员。

    什么是WordPress调试日志?

    当你本身启用WordPress的调试模式,你会看到的消息像上面网站上的例子在那一刻-但这些消息不会被保存任何地方。

    如果您想保存它们,您还可以启用WordPress调试日志以将所有这些消息和错误保存到您服务器上的文件中。

    通过将WP_DEBUG_LOG常量设置为true启用后,WordPress会将所有问题写入以下文件:

    wp-content/debug.log

    但是,您也可以指定自定义文件路径以将日志写入服务器上的其他位置。

    如果您想将问题保存到日志中但不想在页面的HTML中公开显示它们(如上面的示例屏幕截图),您还可以使用WP_DEBUG_DISPLAY常量来保持启用调试模式但不在您的站点上显示消息。

    通常,您需要WP_DEBUG_DISPLAYWP_DEBUG_LOG.

    如何启用WordPress Debug模式

    要启用WordPress调试模式,您有多种选择。我们将介绍三种启用它的方法:

    1. 如何使用WordPress调试插件
    2. 如何手动启用WordPress调试模式

    如何使用WordPress调试插件

    您可以使用免费的WordPress调试插件,启用调试模式。WordPress.org上有几个选项,但我们推荐Andy Fragen提供的免费WP Debugging插件

    WP Debugging插件

    WP Debugging插件

    安装并激活插件后,它会立即开始工作。默认情况下,它将以下常量设置为true(即启用以下功能):

    • WP_DEBUG – 启用调试模式。
    • WP_DEBUG_LOG – 将消息保存到日志文件。
    • SCRIPT_DEBUG
    • SAVEQUERIES

    我们将在本文稍后介绍最后两个常量的作用。

    要配置一些选项,您可以转到工具 → WP Debugging:

    WP Debugging插件设置

    WP Debugging插件设置

    完成后,请确保禁用插件以禁用调试模式。

    如何手动启用WordPress调试模式

    最后,您还可以通过手动将常量添加到wp-config.php文件来启用WordPress调试模式。

    首先,通过FTP连接到您的服务器并编辑wp-config.php文件。默认情况下,此文件位于您站点的根文件夹中(除非您出于安全原因移动了它)。

    要启用只是基本的WordPress的调试模式,添加下面的代码片段上面写着/* That’s all, stop editing! Happy blogging. */:

    // Enable WP_DEBUG modedefine( ‘WP_DEBUG’, true );
    // Enable WP_DEBUG modedefine( ‘WP_DEBUG’, true );
    // Enable WP_DEBUG modedefine( 'WP_DEBUG', true );

    您还可以根据自己的喜好使用以下一些常量:

    // Enable Debug logging to the /wp-content/debug.log filedefine( ‘WP_DEBUG_LOG’, true );// Disable display of errors and warningsdefine( ‘WP_DEBUG_DISPLAY’, false );@ini_set( ‘display_errors’, 0 );
    // Enable Debug logging to the /wp-content/debug.log filedefine( ‘WP_DEBUG_LOG’, true );// Disable display of errors and warningsdefine( ‘WP_DEBUG_DISPLAY’, false );@ini_set( ‘display_errors’, 0 );
    // Enable Debug logging to the /wp-content/debug.log filedefine( 'WP_DEBUG_LOG', true );// Disable display of errors and warningsdefine( 'WP_DEBUG_DISPLAY', false );@ini_set( 'display_errors', 0 );

    完成后,您可以将常量设置为false或仅删除代码段以禁用调试模式。

    确保在完成后禁用WordPress中的调试模式

    调试模式在您尝试解决WordPress问题时很有用,但您不应该让它24/7全天候启用,因为它可以将您的PHP代码中的文本显示给网站访问者。

    我们在上面提到了这一点 – 但这只是提醒您在完成故障排除后始终禁用调试模式。

    其他调试WordPress的方法

    除了我们上面介绍的内置调试工具之外,还有其他几个内置和第三方工具可以帮助您调试WordPress网站。

    脚本调试

    SCRIPT_DEBUG是另一个内置常量,它强制WordPress使用核心CSS和JavaScript文件的开发版本,而不是它通常加载的缩小版本。

    如果您正在测试对内置 .js 或.css文件的更改,这会很有帮助。

    要启用SCRIPT_DEBUG,您可以:

    • 使用上面的免费WP Debugging插件,默认情况下启用它。
    • 将以下常量添加到您的wp-config.php文件中 –define( 'SCRIPT_DEBUG', true );

    数据库查询调试

    如果您的站点的数据库有问题,您可以使用SAVEQUERIES常量来启用数据库查询日志记录:

    • 每个数据库查询。
    • 调用数据库查询的函数。
    • 查询用了多长时间。

    要启用查询日志记录,您可以:

    • 使用上面的免费WP Debugging插件,默认情况下启用它。
    • 将以下常量添加到您的wp-config.php文件中 –define( 'SAVEQUERIES', true );

    注意:这会影响您网站的性能,因此请尽可能在临时网站上使用它,并在完成后立即将其禁用。

    Query Monitor插件

    Query Monitor插件是一个免费的插件,这对在WordPress包括调试许多不同的领域有所帮助:

    总的来说,它是您能找到的最好的WordPress调试工具之一,这就是为什么它在320多条评论中几乎获得了完美的5星评级。

    安装并激活插件后,您将在WordPress工具栏上获得一些显示调试信息的新选项。单击后,这些选项将打开一个新的Query Monitor框,为您提供更多信息:

    Query Monitor插件

    Query Monitor插件

    为了更详细地了解,我们有一整篇关于如何使用Query Monitor插件的文章

    New Relic

    New Relic是用于分析和调试站点性能的高级工具。它可以帮助您发现影响站点性能的瓶颈和问题。

    服务器日志

    最后,您的服务器日志也可以成为调试WordPress的有用工具。

    如果您在使用宝塔面板,也可以轻松查询服务器日志,参考宝塔面板日志查阅教程

    小结

    如果您需要调试WordPress,内置的WordPress调试模式提供了一种查看PHP错误和通知的有用方法。

    您可以使用插件或通过将代码片段添加到您网站的wp-config.php文件来启用它。

    如需更多帮助,您还可以使用其他内置工具或第三方工具,例如New Relic和免费的Query Monitor插件。

  • 如何使用Gatsby为WordPress生成静态网站

    如何使用Gatsby为WordPress生成静态网站

    典型的动态网站(例如基于 WordPress 的网站)如何工作?当访问者在浏览器上输入URL或通过链接访问您的网站时,会向您的Web服务器发送请求。

    服务器通过必要的数据库查询收集所需的数据,并生成一个HTML文件供您的浏览器显示。另一方面,静态站点将这些响应存储到服务器上的平面文件中,这些文件会立即传递给访问者。

    静态站点生成器已经存在了很长时间,但它们最近变得越来越流行。在本分步指南中,我们将了解如何将WordPress与静态网站生成器Gatsby集成。

    1. 什么是Gatsby?
    2. 第1步:设置Gatsby
    3. 第2步:如何将Gatsby连接到WordPress
    4. 第3步:创建基本页面模板
    5. 第4步:高级迁移任务

    什么是Gatsby?

    WordPress创建动态网站,需要在服务器上安装一堆PHP、MySQL和Apache或Nginx才能运行。可以通过为您网站上的所有内容生成HTML页面列表来创建WordPress的静态版本。

    这个静态版本的WordPress称为无头WordPress或无服务器WordPress。此转换过程只需执行一次,以便可以多次向访问者提供同一页面。您如何将您的WordPress网站转换为静态版本?这就是Gatsby出现的地方。

    Gatsby或GatsbyJS是一个使用ReactJS构建并由GraphQL提供支持的静态站点生成器。Gatsby允许任何人创建功能丰富、引人入胜的网站和应用程序。Gatsby通过GraphQL从各种来源(包括现有网站、API调用和平面文件)为您的站点获取数据,并根据您指定的配置设置构建静态站点。

    Gatsby是一年前才开发出来的,但大量用户都在尝试Gatsby。Gatsby在各种环境中都得到了认可。Airbnb的数据科学与工程博客的主页由Gatsby提供支持,但实际的博客文章托管在Medium上。

    Airbnb的工程与数据科学博客

    Airbnb的工程与数据科学博客

    BRAUN(博朗)是消费品公司宝洁的品牌。它的加拿大站点由Gatsby托管,而站点上的搜索功能由React提供支持。

    博朗品牌的加拿大网站

    博朗品牌的加拿大网站

    此外,Gatsby还激发了自由职业者开发人员对其作品集的兴趣。诸如Jacob Castro的作品集主要包含静态内容,其中包含作品链接和电子邮件联系方式,因此静态网站非常适合他的需求。

    Jacob D. Castro的作品展示站

    Jacob D. Castro的作品展示站

    为什么选择Gatsby?

    快速网站: 使用Gatsby构建静态网站的主要好处是速度,自从Google宣布在网络搜索排名中使用网站速度以来,网站管理员一直在努力优化速度。加载时间也会影响页面浏览量和转化率。据估计,网站加载时间延迟一秒会导致转化次数减少7%。

    安全性: 您还可以通过静态站点获得额外的安全性。由于提供的是一堆静态文件,因此没有什么可破解的。此外,如果静态文件丢失,您始终可以重新生成它们。

    服务器成本:托管动态站点需要您的服务器与您的技术堆栈兼容。如果您使用的是静态站点,则几乎可以在任何服务器上托管它,这也降低了与托管相关的成本。

    在每次更改时使用Gatsby生成静态站点确实需要JavaScript,这也可以在将静态文件传输到站点之前在本地计算机上完成。

    为什么要避开Gatsby?

    没有内置动态内容: 如果你想使用Gatsby,你需要重新考虑如何控制和提供动态内容,即你需要创建静态/动态的混合来实现这一点(更多关于这个以下)。

    例如,评论需要通过像Disqus这样的服务在外部托管。

    联系表格还需要通过Google表格等外部合作伙伴重新发送。简而言之,您将失去对此类动态内容的直接控制,因为它们的响应未存储在您的服务器上。

    频繁构建不方便: 静态站点也存在频繁重新转换的问题。只有在重新生成页面并将其重新上传到服务器后,您在网站上所做的任何更改才会反映出来。

    技术专长:  Gatsby建立在ReactJS和GraphQL之上。因此,需要一些JavaScript知识和GraphQL的基本概念来处理网站并将其移植到Gatsby。

    静态网站非常适合那些正在寻找具有高安全性的低成本解决方案的人。一些用例是自由职业者的投资组合网站和产品演示网站。

    如果您认为好处大于缺点,那就太好了!我们现在将尝试设置Gatsby以与我们的WordPress站点集成。

    我们在本教程中构建的Gatsby站点的最新版本在GitHub上可供您使用。

    第1步:设置Gatsby

    在本节中,我们将了解如何安装Gatsby并使用Gatsby创建一个基本的静态站点。

    先决条件

    开始使用Gatsby的第一步是检查其先决条件。Gatsby通过npm(NodeJS包安装程序)提供服务。因此,在安装Gatsby之前,您的环境中需要NodeJS和npm。此外,Gatsby要求您安装源代码管理系统Git。

    如果您运行的是Windows,您可以通过下载页面上的安装程序安装NodeJS和Git。在Mac上,您可以下载他们的安装程序或使用自制软件。

    brew install nodejs
    brew install git
    brew install nodejs
    brew install git
    brew install nodejs
    brew install git

    如果您运行的是Linux操作系统,则可以通过apt之类的包安装程序安装NodeJS。

    sudo apt update
    sudo apt install nodejs git
    sudo apt update
    sudo apt install nodejs git
    sudo apt update
    sudo apt install nodejs git

    安装Gatsby

    成功安装NodeJS和Git后,就可以安装Gatsby了!最简单的方法是在终端上运行以下命令(在Windows上使用命令行npm):

    npm install -g gatsby-cli
    npm install -g gatsby-cli
    npm install -g gatsby-cli

    安装程序首先安装依赖项,然后安装Gatsby。您现在已准备好创建您的第一个Gatsby站点。

    构建和部署您的Gatsby站点

    运行以下命令以创建Gatsby站点。

    gatsby new gatsby-wordpress
    gatsby new gatsby-wordpress
    gatsby new gatsby-wordpress

    Gatsby通过克隆Gatsby入门模板在目录/gatsby-wordpress中创建一个站点。您可以提供不同的入门模板进行克隆。克隆完成并安装依赖项后,您可以使用以下命令运行站点的开发版本。

    cd gatsby-wordpress
    gatsby develop
    cd gatsby-wordpress
    gatsby develop
    cd gatsby-wordpress
    gatsby develop

    然后,您可以在http://localhost:8000访问该站点的开发版本。

    Gatsby入门网站

    Gatsby入门网站

    最后一步是构建您的静态站点。以下命令在公共目录中创建静态文件。要将其上传到服务器,您只需将该目录的内容上传到服务器的根目录即可。您可能希望添加像www.example.com/blog/这样的路径前缀作为构建的根URL。

    gatsby build
    gatsby build
    gatsby build

    要在本地启动HTML服务器以显示您网站的这种静态形式,您需要使用serve 命令。请注意,它仅在运行build命令后才有效。

    gatsby serve
    gatsby serve
    gatsby serve

    现在您已经从Gatsby成功创建了一个基本的静态站点,让我们尝试将其与WordPress集成。

    第2步:如何将Gatsby连接到WordPress

    在本节中,您将把您的WordPress网站与Gatsby集成。您可以将Gatsby指向您的WordPress博客的地址,以使其在您运行开发服务器或生成静态页面时能够提取最新数据。

    将Gatsby连接到WordPress的过程是获取由构建触发的WordPress数据。Gatsby获取WordPress数据后,它会根据当前模板创建静态站点。

    该过程使用WordPress站点,该站点具有Gatsby上的文章的来源。为了方便这种交流,您需要通过以下命令安装Gatsby的WordPress插件:

    npm install gatsby-source-wordpress
    npm install gatsby-source-wordpress
    npm install gatsby-source-wordpress

    配置Gatsby

    接下来,将此插件添加到Gatsby的配置文件gatsby-config.js中。

    然后,将以下代码添加到文件中以将Gatsby连接到您的WordPress源。在此示例中,我们在MAMP上使用本地托管的WordPress站点。在旁注中,您可能希望在siteMetadata中编辑站点的标题和描述。

    <code>module.exports = {
    siteMetadata: {
    },
    plugins: [
    {
    resolve: `gatsby-source-wordpress`,
    options: {
    // Specify the URL of the WordPress source
    baseUrl: `localhost:8888/wordpress`,
    protocol: `http`,
    // Indicates if a site is hosted on WordPress.com
    hostingWPCOM: false,
    // Specify which URL structures to fetch
    includedRoutes: [
    ‘**/posts’,
    ‘**/tags’,
    ‘**/categories’
    ]
    }
    }
    </code>
    <code>module.exports = {
    siteMetadata: {

    },
    plugins: [

    {
    resolve: `gatsby-source-wordpress`,
    options: {
    // Specify the URL of the WordPress source
    baseUrl: `localhost:8888/wordpress`,
    protocol: `http`,
    // Indicates if a site is hosted on WordPress.com
    hostingWPCOM: false,
    // Specify which URL structures to fetch
    includedRoutes: [
    ‘**/posts’,
    ‘**/tags’,
    ‘**/categories’
    ]
    }
    }
    </code>
    module.exports = {
    siteMetadata: {
    ...
    },
    plugins: [
    ...
    {
    resolve: `gatsby-source-wordpress`,
    options: {
    // Specify the URL of the WordPress source
    baseUrl: `localhost:8888/wordpress`,
    protocol: `http`,
    // Indicates if a site is hosted on WordPress.com
    hostingWPCOM: false,
    // Specify which URL structures to fetch
    includedRoutes: [
    '**/posts',
    '**/tags',
    '**/categories'
    ]
    }
    }
    

    使用GraphQL获取文章

    在配置文件中指定WordPress站点的来源后,您需要指定需要从WordPress站点提取哪些数据。Gatsby使用GraphQL(一种用于API的开源查询语言)来批量获取WordPress文章。

    在最终确定要选择的查询之前,您可以交互地选择需要从WordPress获取的内容。运行开发服务器并转到URL:http://localhost:8000/___graphql以打开GraphQL编辑器。

    使用GraphQL查询数据

    使用GraphQL查询数据

    完成要拉取的内容后,可以将GraphQL查询添加到文件index.js。

    现在让我们只从每个文章中提取标题和摘录。我们可以稍后添加更多字段。

    import React from “react”
    import { graphql } from “gatsby”
    import Layout from “../components/layout”
    import SEO from “../components/seo”
    export default ({ data }) => {
    return (
    <Layout>
    <SEO title=“home” />
    <h4>Posts</h4>
    {data.allWordpressPost.edges.map(({ node }) => (
    <div>
    <p>{node.title}</p>
    <div dangerouslySetInnerHTML={{ __html: node.excerpt }} />
    </div>
    ))}
    </Layout>
    )
    }
    export const pageQuery = graphql`
    query {
    allWordpressPost(sort: { fields: [date] }) {
    edges {
    node {
    title
    excerpt
    }
    }
    }
    }
    import React from “react”
    import { graphql } from “gatsby”
    import Layout from “../components/layout”
    import SEO from “../components/seo”
    export default ({ data }) => {
    return (
    <Layout>
    <SEO title=”home” />
    <h4>Posts</h4>
    {data.allWordpressPost.edges.map(({ node }) => (
    <div>
    <p>{node.title}</p>
    <div dangerouslySetInnerHTML={{ __html: node.excerpt }} />
    </div>
    ))}
    </Layout>
    )
    }
    export const pageQuery = graphql`
    query {
    allWordpressPost(sort: { fields: [date] }) {
    edges {
    node {
    title
    excerpt
    }
    }
    }
    }
    import React from "react"
    import { graphql } from "gatsby"
    import Layout from "../components/layout"
    import SEO from "../components/seo"
    export default ({ data }) => {
    return (
    <Layout>
    <SEO title="home" />
    <h4>Posts</h4>
    {data.allWordpressPost.edges.map(({ node }) => (
    <div>
    <p>{node.title}</p>
    <div dangerouslySetInnerHTML={{ __html: node.excerpt }} />
    </div>
    ))}
    </Layout>
    )
    }
    export const pageQuery = graphql`
    query {
    allWordpressPost(sort: { fields: [date] }) {
    edges {
    node {
    title
    excerpt
    }
    }
    }
    }
    

    当您检查开发站点时,您会注意到所有来自Wor

  • 构建自定义古腾堡区块:权威WordPress区块开发教程

    构建自定义古腾堡区块:权威WordPress区块开发教程

    许多人抱怨开始构建古腾堡区块和应用程序的障碍。学习曲线陡峭,主要是由于开发环境的安装和配置困难。此外,扎实的JavaScript、Node.js、React和Redux知识是这个相当复杂的秘诀的必备要素。

    官方的WordPress区块编辑器手册为开发人员提供了大量信息,但您可能会发现自己迷失在这些细节的海洋中。

    值得一提的是,Gutenberg项目的首席架构师Matías Ventura在接受WP Tavern采访时所报告的内容:

    虽然有些人可以快速学习它,但这对人们来说仍然是一个很大的障碍。我认为这有几个层次;文档在组织和演示方面可能要好一个数量级。我希望我们可以在那里做更多的事情。

    考虑到这一点,我们决定提供一个分步教程,旨在帮助我们的读者开始使用Gutenberg区块开发。

    1. 古腾堡区块开发先决条件
    2. 什么是古腾堡区块?
    3. 设置您的WordPress开发环境
    4. 初学者区块脚手架的演练
    5. 项目:建造你的第一个古腾堡区块

    古腾堡区块开发先决条件

    对于本教程,唯一需要的技能是对WordPress插件开发有很好的了解,并且至少对HTML、CSS、JavaScript和React有基本的了解。

    这会是一个雄心勃勃的项目吗?你打赌它会的!

    在完整性和简单性之间找到正确的折衷方案或决定包含哪些主题和省略哪些主题并不容易。

    希望中高级读者能原谅我们没有深入研究某些概念,例如React状态Redux存储高阶组件等。这些主题需要额外的空间和注意力,并且可能对于开始区块开发来说太高级了(除非您是 React 开发人员)。

    出于同样的原因,我们不会涵盖与Gutenberg区块开发相关的一些更高级的主题,例如动态区块元框

    有了本文结尾您将获得的知识,您将能够立即开始享受乐趣并提高工作效率。

    一旦您开始构建区块,您将准备好进一步提高您的技能并自行构建更高级的古腾堡区块。

    什么是古腾堡区块?

    自2018年12月首次发布以来,区块编辑器在各个方面都得到了极大的改进:更强大的API、更高级的用户界面、改进的可用性、大量新区块、全站点编辑的首次实现等等.

    简而言之,即使古腾堡仍在大力开发中,它也已经走过了漫长的道路——如今,区块编辑器已成为可靠的功能性页面和网站构建器的成熟候选者。

    从开发人员的角度来看,Gutenberg是一个基于React的单页应用程序(SPA),它允许WordPress用户在WordPress中创建、编辑和删除内容。但是,这不应该让您想到传统内容编辑器的增强版。

    我们想明确这一点:

    Gutenberg不是常规的WYSIWYG编辑器。相反,它重新定义了WordPress中的整个编辑体验。

    在古腾堡,内容被划分为区块,这些区块是用户可以用来创建文章和页面或整个网站的“砖块”。

    但从技术上讲,什么是区块?

    我们喜欢WordPress的定义

    “区块”是用于描述标记单元的抽象术语,这些标记单元组合在一起形成网页的内容或布局。这个想法将我们今天在WordPress中实现的概念与短代码、自定义HTML和嵌入发现结合到一个一致的API和用户体验中。

    标题、段落、列、图像、画廊以及构成编辑器界面的所有元素,从侧边栏面板到区块工具栏控件,都是React组件。

    那么,什么是React组件?W3Schools提供以下定义

    组件是独立且可重用的代码。它们的用途与JavaScript函数相同,但独立工作并通过render()函数返回HTML。

    在WordPress 5.8中使用Gutenberg区块

    在WordPress 5.8中使用Gutenberg区块

    虽然Gutenberg提供的编辑体验与经典的WordPress编辑器相比是全新的,但WordPress将您的内容片段存储在数据库中的方式根本没有改变。这是因为Gutenberg是一个在WordPress中运行的应用程序,但不会改变CMS的核心工作方式。

    使用Gutenberg创建的文章(包括文章、页面和自定义文章类型)仍存储在wp_posts表中,与经典编辑器完全相同。

    但是在使用Gutenberg创建的文章中,您会在表格中找到更多信息,这些信息代表了通过Classic Editor与Gutenberg创建的文章之间的根本区别。

    这些信息看起来像HTML注释,它们有一个特定的功能:分隔区块:

    代码编辑器视图中的博客文章

    代码编辑器视图中的博客文章。

    区块分隔符告诉WordPress要在屏幕上呈现什么区块。它们还为JSON对象中的区块属性提供值。这些道具决定了区块应该在屏幕上呈现的方式:

    wp_posts存储在表中的博客文章

    wp_posts存储在表中的博客文章

    设置您的WordPress开发环境

    设置现代JavaScript开发环境需要扎实的高级技术知识,例如WebpackReactJSXBabelESLint等。

    被吓倒了?不要!WordPress社区已经通过提供强大的工具来帮助您避免混乱的手动配置过程。

    为简单起见,我们不会在本文中介绍转译(不过,我们建议您在了解区块开发的基础知识后熟悉一下)。相反,我们将介绍两种替代工具,您可以使用它们在几分钟内快速轻松地设置现代JavaScript开发环境。您可以选择对您的项目最方便的一个。

    设置JavaScript开发环境以构建Gutenberg区块是一个三步过程:

    1. 安装Node.js和npm
    2. 设置开发环境
    3. 设置区块插件

    让我们开始吧。

    1. 安装Node.js和npm

    在安装您的开发环境并注册您的第一个区块之前,您需要安装Node.js和Node包管理器 (npm)。

    注:Node.js是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。npm,通常被称为Node包管理器,被认为是“世界上最大的软件注册表”。

    您可以通过几种不同的方式安装Node.js和npm。但首先,您可能需要检查该软件是否已安装在您的计算机上。

    为此,请启动终端并运行以下命令:

    node -v
    node -v
    node -v

    如果结果为command not found,则您的计算机上未安装Node.js,您可以继续安装。

    对于本文,我们选择了最简单的安装选项,即Node Installer。您需要做的就是下载与您的操作系统相对应的版本并启动安装向导:

    Node.js下载页面

    Node.js下载页面

    安装Node.js后,再次在终端中运行node -v命令。您还可以运行npm -v命令以确认您有可用的npm包。

    您现在配备了以下工具:

    • npxNode.js包运行器(请参阅文档)。这允许您运行npm命令而无需先安装它。
    • npmNode.js包管理器(请参阅文档)。这用于安装依赖项和运行脚本。

    下一步是安装开发环境。

    2. 设置你的开发环境

    在本地计算机上安装最新版本的Node.js和npm后,您将需要一个WordPress开发环境。

    您可以使用本地开发环境,也可以使用官方WordPress工具。让我们来看看这两种选择。

    选项 1:本地开发环境

    您可以选择不同的本地开发工具,例如MAMPXAMPP

    在本地环境中创建一个新的WordPress网站

    在本地环境中创建一个新的WordPress网站。

    选项 2:wp-env

    您也可以选择官方wp-env工具,它提供了一个本地WordPress开发环境,您可以直接从命令行启动。Noah Alen将其定义如下

    本地WordPress环境现在就像运行单个命令一样简单。wp-env是用于本地WordPress环境的零配置工具。它提供有关选项的决策,以便用户可以快速启动WordPress而不会浪费时间。事实上,我们的目标是让所有人都能轻松访问这些环境——无论您是开发人员、设计师、经理还是其他任何人。

    如果您决定试一试,安装wp-env所需的工作量很小。只需按照以下步骤操作:

    第 1 步:确认Docker和Node.js安装

    为了满足技术要求,您首先需要在您的计算机上安装Docker和Node.js。那是因为wp-env创建了一个运行WordPress网站的Docker实例。对代码所做的任何更改都会立即反映在WordPress实例中。

    第 2 步:从命令行安装@wordpress/env

    在您的计算机上运行Docker和Node.js,您可以继续安装WordPress开发环境

    您可以全局或本地安装wp-env。要在全局范围内执行此操作,您需要从插件目录中运行以下命令(更多信息请参见下面的“重要”通知框):

    npm install -g @wordpress/env
    npm install -g @wordpress/env
    npm install -g @wordpress/env

    让我们分解一下:

    提示:默认情况下,在Mac或Linux上,节点包安装/usr/local/lib/node_modules中。

    如果当前用户对该目录没有写权限,则会发出EACCES错误。了解有关在全局安装包时解决EACCES权限错误的更多信息。

    要确认wp-env已成功安装,请运行以下命令:

    wp-env –version
    wp-env –version
    wp-env --version

    您应该会看到当前wp-env版本,这意味着您现在可以使用插件文件夹中的以下命令启动环境:

    wp-env start
    wp-env start
    wp-env start

    您可以使用以下地址访问WordPress仪表盘:

    • http://localhost:8888/wp-admin/

    默认凭据如下:

    • 用户名:admin
    • 密码:password

    设置你的区块插件

    现在您需要一个入门区块插件来构建。但是,无需手动创建包含所有必要文件和文件夹的开发区块插件,您只需运行一个开发工具,即可提供开始区块开发所需的所有文件和配置。

    同样,您有几个选项可供选择。让我们来看看每一个。

    选项 1:使用@wordpress/create-block设置区块插件

    @wordpress/create-block是用于创建Gutenberg区块的官方零配置工具:

    创建区块是一种官方支持的创建区块的方法,用于为WordPress插件注册区块。它提供了一个没有配置的现代构建设置。它生成PHP、JS、CSS代码以及启动项目所需的所有其他内容。

    它很大程度上受到create-react-app的启发。向@gaearon、整个Facebook团队和React社区致敬。

    本地环境启动并运行后,您可以通过简单地运行命令npx @wordpress/create-block 来设置起始区块,它将提供创建插件脚手架和注册新区块所需的所有文件和文件夹。

    让我们运行一个测试,看看它是如何工作的。

    从命令行工具导航到/wp-content/plugins/目录并运行以下命令:

    npx @wordpress/create-block my-first-block
    npx @wordpress/create-block my-first-block
    npx @wordpress/create-block my-first-block

    当要求确认时,输入y继续:

    使用@wordpress/create-block创建一个区块

    使用@wordpress/create-block创建一个区块

    该过程需要一些时间。完成后,您应该得到以下响应:

    区块插件已创建

    区块插件已创建

    现在启动您的WordPress开发环境并转到WordPress仪表盘中的插件屏幕。一个名为“My First Block”的新插件应该已添加到您的插件列表中:

    区块插件已成功安装

    区块插件已成功安装

    注:如果您使用wp-env工具并从包含插件的目录运行wp-env start,它将自动挂载并激活该插件。如果您从任何其他目录运行wp-env start,将创建一个通用的WordPress环境(另请参阅WordPress开发站点)。

    如果需要,激活插件,创建一个新的博客文章,向下滚动区块插入器到小工具部分,然后选择你的新区块:

    使用@wordpress/create-block创建的示例区块

    使用@wordpress/create-block创建的示例区块

    现在返回终端并将当前目录更改为my-first-block

    cd my-first-block
    cd my-first-block
    cd my-first-block

    然后运行以下命令:

    npm start
    npm start
    npm start

    这使您能够在开发模式下运行插件。要创建生产代码,您应该使用以下命令:

    npm run build
    npm run build
    npm run build

    选项 2:使用create-guten-block设置区块插件

    create-guten-block是用于构建古腾堡区块的第三方开发工具:

    create-guten-block零配置开发工具包 (#0CJS) 可在几分钟内开发WordPress Gutenberg区块,无需配置React、webpack、ES6/7/8/Next、ESLint、Babel等。

    就像官方工具create-block一样,create-guten-block基于create-react-app,可以帮助您轻松生成您的第一个区块插件。

    该工具包提供了创建现代WordPress插件所需的一切,包括以下内容

    • React、JSX和ES6语法支持。
    • 幕后的webpack开发/生产构建过程。
    • ES6之外的语言附加功能,例如对象扩展运算符。
    • 自动前缀CSS,因此您不需要 -webkit或其他前缀。
    • 一个构建脚本,用于将JS、CSS和图像与源映射捆绑在一起进行生产。
    • 使用单个依赖项cgb-scripts对上述工具进行无忧更新。

    请注意以下警告:

    权衡是这些工具已预先配置为以特定方式工作。如果您的项目需要更多自定义,您可以“eject” 并自定义它,但是您需要维护此配置。

    一旦你手头有一个本地WordPress网站,启动你的命令行工具,导航到你安装的/wp-content/plugins文件夹,然后运行以下命令:

    npx create-guten-block my-first-block
    npx create-guten-block my-first-block
    npx create-guten-block my-first-block

    在创建项目结构并下载依赖项时,您必须等待一两分钟:

    使用create-guten-block创建Gutenberg区块

    使用create-guten-block创建Gutenberg区块

    该过程完成后,您应该会看到以下屏幕:

    使用create-guten-block成功创建Gutenberg区块

    使用create-guten-block成功创建Gutenberg区块

    下一张图片显示了在Visual Studio Code中运行终端的项目结构:

    Visual Studio Code中的区块插件

    Visual Studio Code中的区块插件

    现在回到您的WordPress仪表盘。插件屏幕中应该会列出一个新项目——它是my-first-block插件:

    使用create-guten-block创建的新插件的插件屏幕

    使用create-guten-block创建的新插件的插件屏幕

    激活插件并返回终端。将当前目录更改为my-first-block,然后运行npm start

    cd my-first-block
    npm start
    cd my-first-block
    npm start
    cd my-first-block
    npm start

    您应该得到以下响应:

    npm启动