标签: REST API

  • WordPress REST API入门基础知识点

    WordPress REST API入门基础知识点

    WordPress REST API正在改变WordPress。您可能没有注意到,因为其中很多都在幕后,但是REST API的含义对WordPress的未来产生了巨大的影响,无论是在代码库还是使用方面。

    如果您没有使用过WordPress REST API,您可能想知道它是什么。因此,让我们先看看REST API是什么。

    在本文中,我们讲解WordPress REST API的一些基础知识。我们将研究它的作用、工作原理以及它给平台带来的变化。最后,我们将讨论您可以用它做的一些事情。

    当REST API最终被添加到WordPress的核心时,漫长的旅程就结束了。许多人预计这一变化是该平台历史上WordPress向前迈出的最大一步。但是,如果您不熟悉REST API,您可能会对它所获得的所有关注感到困惑。

    简而言之,WordPress REST API的加入使WordPress变成了一个功能齐全的应用程序框架。这显着提高了它的“可扩展性”,或者说它可以通过新特性和功能进行扩展。此外,它还扩展了平台与其他站点和应用程序进行通信的潜力。

    1. 什么是WordPress REST API?
    2. 了解WordPress REST API
    3. 如何访问WordPress REST API
    4. WordPress REST API命令概述
    5. 何时不使用WordPress REST API
    6. 使用WordPress REST API的实际应用程序

    什么是WordPress REST API?

    在我们深入研究WordPress REST API之前,了解我们的术语很重要。这是一个我们需要使用大量首字母缩略词的主题,所以让我们先把它们弄清楚。

    什么是应用程序编程接口 (API)?

    首先,您需要知道什么是应用程序编程接口 (API)。用最简单的术语来说,API是一个系统使其他系统能够连接到其数据的一种方式。例如,当网站向页面添加Facebook的“Like”按钮时,它会通过连接到Facebook的API来实现这一点。这让网页可以使用API来接收数据(点赞按钮的代码)和发送数据(点赞请求)。

    应用程序编程接口或API被定义为:

    “客户端和服务器之间的接口或通信协议,旨在简化客户端软件的构建。”

    如果您不熟悉API,那可能没有多大帮助。更简单地说,API是一组允许一个系统与另一个系统交互(或“接口”)的代码。如果您曾经将Google地图添加到您的WordPress站点,那么您就使用了Google的Maps API,它允许您的WordPress站点与Google Maps交互。

    这些系统不需要完全分开。WordPress已经有多个API,用于插件、设置和短代码等。插件和主题开发人员可以使用这些来与WordPress核心进行交互并使事情发生(例如创建短代码和向WordPress管理员添加设置屏幕)。

    与REST API的不同之处在于它允许WordPress安装本身之外的系统与WordPress交互,这就是REST部分的用武之地。

    什么是具象状态转移 (REST)?

    那么,REST API究竟是什么?具象状态传输 (REST)是一种特定于Web服务的 API。它包含一组标准化的指令和规则,使所有“RESTful”服务更容易相互连接。

    简而言之,REST API使您能够向外部系统发出请求。这方面的一个例子是Twitter。您可以使用其API向特定用户请求一定数量的推文。然后API将根据您的请求返回推文,您可以使用HTML和CSS将其嵌入您的网站。

    这些请求是使用JavaScript Object Notation (JSON) 执行的。这是一种专为发送、接收和存储数据而设计的语言。我们将在本文后面介绍JSON,但我们建议您先花点时间熟悉一下这种语言。这将帮助您准备好使用WordPress REST API,并理解我们将要讨论的一些概念。

    WordPress REST API是一个接口,开发人员可以使用它从WordPress安装本身之外访问WordPress。您可以使用JavaScript访问它,这意味着它可用于创建交互式网站和应用程序。

    REST代表 Representational State Transfer,API 代表应用程序编程接口。让我们来看看每一个的含义。

    Representational State Transfer (REST) 提供了 Web 系统可以用来相互交互的标准。如果没有 REST,两个系统将无法相互理解,从而来回发送数据。

    要使应用程序成为RESTful,它必须符合五个原则:

    1. 统一界面。用于访问系统中资源的URL必须是统一的、一致的,并且可以通过常见的方法(例如GET)(稍后会介绍更多)进行访问。
    2. 客户端服务器。客户端应用程序和服务器应用程序必须是分开的,因此它们可以相互独立开发。如果服务器端技术(即 WordPress)发生变化,服务器端应用程序(例如一个应用程序)必须仍然能够通过相同的简单方法访问它。
    3. 无国籍。使用API发出新请求时,服务器不会更改状态。它不存储已发出的请求。
    4. 可缓存。所有资源都必须是可缓存的,以提高速度并符合Web标准。缓存可以在服务器端或客户端实现。
    5. 分层系统。RESTful系统允许您使用多个层来访问它,如果需要,将数据存储在中间服务器中。服务器无法判断最终客户端是否直接连接到它。

    所有这些约束都与网页和应用程序相关,并控制应用程序与API交互的方式。

    这对WordPress意味着什么?

    将REST和API放在一起意味着WordPress REST API是一组代码,旨在使其他系统能够与WordPress交互,并且它的构建方式可确保这些系统能够相互理解。

    这意味着第三方网站或移动应用程序,例如,可以访问您的WordPress数据库,从中获取数据并向其中添加数据。

    不过,这有许多含义和用途。

    了解WordPress REST API

    WordPress REST API

    WordPress REST API的功能与我们已经提到的例子大体相同。基本上,WordPress REST API使您可以从任何与JSON兼容的框架中访问WordPress的所有功能。

    与Twitter的API使您能够检索和发送推文的方式类似,WordPress REST API可用于管理来自外部平台的文章、用户、类别等。这使您能够以多种前所未有的方式使用WordPress。

    WordPress REST API的背景

    REST API早在2013年就宣布了,它以插件的形式开始,旨在通过4.1版将其合并到WordPress核心中。正如经常发生的那样,延迟会推迟发布,直到三年后随着WordPress 4.7的发布,它最终被实现到核心中。

    WordPress REST API于2016年12月作为4.7版核心的一部分发布,但在此之前它作为插件存在。

    对于许多人来说,这是一个漫长但值得的等待,他们将WordPress REST API视为平台向前迈出的重要一步。您可能想知道为什么这个添加如此重要,特别是因为很多用户可能没有注意到太大的区别。事实证明,出于多种原因,包含REST API是对WordPress的根本性更改。

    例如,通过实施REST API,WordPress从简单的创建网站的平台迈出了一步。相反,它现在已经成为一个成熟的应用程序框架。这意味着开发人员可以使用WordPress站点为移动设备和网络创建应用程序,或作为信息存储库。

    这种转变也使WordPress摆脱了对PHP的依赖。通过使WordPress与任何JSON-compatible语言兼容,REST API极大地扩展了开发人员的可能性,使他们能够将WordPress功能与几乎任何框架一起使用。

    它旨在支持一系列基于WordPress构建的应用程序,并将WordPress从内容管理系统转变为应用程序平台。

    它被WordPress.com广泛使用,其基于JavaScript的界面使用REST API与WordPress数据库进行交互。古腾堡编辑界面也使用它,该界面在2019年成为核心的一部分。

    REST API扩大了WordPress可用于的应用程序范围。虽然内容管理系统擅长运行复杂的网站,但应用程序平台也可用于支持基于Web的单页应用程序或SPA(如果您曾经使用过Google文档,那么您已经使用过其中之一)。

    在这些中,当用户执行操作时会刷新内容,而不是加载新页面。因为它使用JavaScript(一种客户端语言)而不是PHP(一种服务器端语言),所以它可以在用户的​​浏览器中进行操作,而无需不断地向服务器发送请求。

    对WordPress用户和开发人员的影响

    如果您是使用WordPress的用户和/或开发人员,那么REST API有很多含义。

    对于用户,这些包括:

    • 对界面的更改,包括古腾堡编辑器。
    • 对WordPress移动应用程序的更改和改进。
    • 随着时间的推移,自托管的WordPress管理屏幕看起来更像WordPress.com屏幕。

    对于开发者来说,还有更广泛的意义和可能性:

    • 能够使用REST API创建SPA,从WordPress中提取数据,但看起来与WordPress非常不同。
    • 将WordPress与其他前端技术和系统集成的能力。
    • 如果您是不编写PHP的前端开发人员,则可以使用WordPress进行开发。
    • 对于PHP开发人员来说,越来越需要扩展您的技能以包含JavaScript。
    • 特定更改,例如需要在页面和后期编辑屏幕中构建古腾堡区块而不是元框。

    随着时间的推移,WordPress REST API将意味着更多的WordPress核心将用JavaScript而不是PHP编写。如果您是WordPress开发人员,这意味着您需要学习JavaScript。

    REST API和JSON如何协同工作

    最后,REST API在可用于平台的接口方面提供了更高的灵活性。它使管理界面完全可选,因为您现在可以完全通过JSON命令与您的WordPress站点进行交互。让我们看看JSON和REST API如何结合起来使这成为可能。

    WordPress REST API是为了响应网站和应用程序开发方式的变化以及更广泛地开放WordPress的需要而开发的。

    到目前为止,您应该对WordPress REST API的理论方面有所了解,所以让我们看看该技术更实用的方面。官方手册介绍如何使用REST API,如下所示:

    “WordPress REST API为WordPress数据类型提供API端点,允许开发人员通过发送和接收JSON(JavaScript Object Notation)对象与站点进行远程交互。”

    我们需要关注的第一个词是“端点”。将端点视为可以使用JSON请求调用的一段数据或函数的最简单方法。默认情况下,WordPress提供了大量可供使用的标准端点,但开发人员也可以创建自定义端点

    要到达端点,您必须使用采用普通URL形式的“路由”。您现在甚至可以自己尝试一下。转到您自己的WordPress站点,并将/wp-json/wp/v2 添加到其URL的末尾。如果您的站点是http://example.com,您将输入http://example.com/wp-json/wp/v2

    当您加载此路由时,您将到达端点,在这种情况下,它以(凌乱的)JSON格式返回站点的所有内容和元数据。通过使用不同的路由,您可以访问不同的端点,以获取特定类型的信息并执行各种任务。

    您将在REST API中使用三个主要的JSON请求,所以现在让我们快速浏览一下它们。他们是:

    • GET-此类请求用于从API检索和列出数据。例如,您将使用GET请求返回您网站上的用户列表或编译特定时间范围内的博客文章。
    • POST-此请求用于向API发送数据。它使您能够将新信息推送到WordPress,例如添加新用户和帖子或更新现有数据。
    • DELET-顾名思义,这个请求是用来删除数据的。这使您能够删除文章、页面、用户等。

    有时可以将GET和POST与相同的端点一起使用以获得不同的结果。例如,让我们看看端点/me/settings/。如果您要在此端点上执行GET请求,您将收到当前用户设置的列表。但是,通过在同一端点上使用POST请求,您将能够改为更新设置。

    如何访问WordPress REST API

    您如何访问WordPress REST API?

    要访问WP-REST API,您需要通过命令行访问您的站点。对于WordPress,这称为WP-CLI。您不会通过管理屏幕或直接访问您网站上的代码来执行任何这些操作。

    让我们来看看你是如何开始的。

    通过WP-CLI 访问WP-REST

    WP-CLI是WordPress命令行界面。它允许您通过计算机上的命令行界面 (CLI) 访问和使用WordPress。

    要访问CLI,请在Mac或Linux中打开终端,或在Windows中打开命令提示符。

    WordPress REST API入门基础知识点-1
    Mac上的终端

    要访问远程站点,您需要SSH到您的服务器以通过WP-CLI访问它(无法通过SSH连接?了解如何修复SSH“连接被拒绝”错误)。

    要访问本地站点,您只需从命令行使用正确的目录结构。在实际站点上试用REST API之前,最好先在本地测试站点上试用REST API。

    您需要专门访问您网站的REST API,如下所示:

    http://yoursite.com/wp-json/wp/v2

    然后,您可以在此之后添加元素以访问某些类型的数据,我们稍后将更详细地介绍这些数据。这些元素称为端点。

    验证

    访问站点后,您可能需要进行身份验证。一些端点是公共的,不需要身份验证,而其他端点则需要。

    您不是在此处登录站点管理员:REST API的处理方式略有不同。

    为了能够通过WP-CLI对您的站点进行身份验证,您需要安装一个身份验证插件。对于开发安装,Basic Auth插件可以完成这项工作并且很容易使用。

    但是,对于实时站点,您应该使用更强大的身份验证形式,例如JWT身份验证插件,它使用JSON Web Token并且更安全。

    然后,您可以使用命令行访问数据并包括身份验证。

    下面的示例curl用于测试与WordPress的连接。它将输出一个草稿列表。

    curl -X GET --user username:password -i http://yoursite.com/wp-json/wp/v2/posts?status=draft

    草稿帖子不是公开信息,因此您需要进行身份验证才能访问它们。但是,如果您要查找公开数据,则不需要身份验证。因此,要检索已发布的文章列表,您可以使用:

    curl -X GET http://yoursite.com/wp-json/wp/v2/posts

    这将获取所有已发布的文章,因为这些帖子是公开的。

    WordPress REST API命令概述

    我们现在将把所有这些理论付诸实践,并向您展示一些非常基本的示例,说明您可以使用REST API做什么。这只是一种尝试,以帮助您习惯使用REST API来处理对WordPress的请求。有关更多示例,我们建议您查看官方参考库REST API资源

    以下技术将要求您使用命令行来处理JSON请求。这使您能够通过使用基于文本的界面和发送简单的命令与您的 WordPress 站点进行交互。如果您没有任何使用命令行的经验,我们建议您先花一些时间学习基础知识。您可能还想使用SSH来创建与您的站点的连接。

    最后,当您准备好时,让我们看一些有关如何使用WordPress REST API的示例!

    一旦您访问了您的站点并且您知道如何使用身份验证(以及您是否需要),您将需要使用一系列命令中的一个来与您的站点进行交互。

    您需要使用的命令是:

    • GET 检索资源,例如文章或其他一些数据。
    • POST 向服务器添加资源,例如文章、附件或其他资源。
    • PUT 可用于编辑或更新服务器上已有的资源。
    • DELETE从服务器中删除资源。小心使用!

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

    Get

    GET命令可能是最常用的:它检索数据。下面的示例(您在成功访问您的网站后使用)将获取您网站中所有已发布页面的列表:

    GET http://yoursite.com/wp-json/wp/v2/posts/?status=published

    请注意,我没有在上面的行中包含您站点的完整路径,因为您已经使用WP-CLI访问了该路径。

    检索到该数据后,您可以使用它来通知您的下一步。您可以删除其中一个文章,对其进行编辑或更新。您可以简单地将帖子输出到您的网络应用程序。

    假设您想获取最新的文章。你会用这个:

    GET http://yoursite.com/wp-json/wp/v2/posts/?per_page=1

    在处理文章时,您可以使用许多参数。有关更多信息,请参阅WordPress REST API 手册

    Post

    POST用于向您的站点添加新数据或资源。

    因此,例如,如果您想创建一个文章,您可以使用以下POST命令开始:

    POST http://yoursite.com/wp-json/wp/v2/posts/

    这将创建一个新的空草稿文章。

    然后,您可以通过使用PUT命令进行编辑来更新文章。

    使用POST命令,您还可以添加文章以外的其他资源,包括附件和其他文章类型。

    要将页面添加到您的站点,您可以使用以下方法:

    POST http://yoursite.com/wp-json/wp/v2/posts/pages

    这会以与创建空文章相同的方式创建一个空页面。

    Put

    PUT命令允许您编辑现有资源,包括文章。

    假设您的网站上有许多草稿文章。您想检查它们并更新其中一个以使其发布。

    您可以首先获取所有草稿文章的列表:

    POST http://yoursite.com/wp-json/wp/v2/posts/?status="draft"

    系统将为您提供所有当前草稿文章的列表。您可以使用其ID更改其中之一的状态:

    PUT http://yoursite.com/wp-json/wp/v2/posts/567

    这将访问该文章并允许您对其进行编辑。然后,您可以使用status参数更改其状态:

    {
    "status" = "publish"
    }

    或者您可以向文章添加内容并发布它:

    {
    "status" = "publish"
    "content" = "content here"
    }

    服务器将返回一个200 - OK状态,告诉您PUT请求已成功编辑文章。

    DELETE

    DELETE命令执行您所期望的操作:它删除一个资源。默认情况下,如果您使用它来删除文章,它会将其放入垃圾箱,而不是永久删除。

    因此,如果您想将刚刚创建的文章移至垃圾箱,您可以使用以下命令:

    DELETE http://yoursite.com/wp-json/wp/v2/posts/567

    但是,如果您想绕过垃圾箱并永久删除它,您可以使用以下force参数:

    DELETE http://yoursite.com/wp-json/wp/v2/posts/567?force=true

    这将永久删除文章,无法撤消,因此应谨慎使用。

    一些例子

    1. 从站点返回文章

    虽然您显然需要适当的授权来编辑站点,但几乎可以从任何 WordPress 站点检索一些信息。这是因为REST API在所有WordPress安装中都是一致的。

    正如我们所讨论的,API存在的一个主要原因是使外部应用程序能够访问您的某些数据。在此示例中,我们可以从官方WordPress新闻博客中检索单个文章

    curl https://wordpress.org/news/wp-json/wp/v2/posts/1
    curl https://wordpress.org/news/wp-json/wp/v2/posts/1
    curl https://wordpress.org/news/wp-json/wp/v2/posts/1

    ID已设置为1,这意味着此请求将检索博客上的第一篇文章。可能很难看到,因为JSON不是很可读,但是在代码中,您可以找到文章的所有内容和元数据。

    JSON数据示例

    然后,您可以在应用程序中使用此信息,例如,使用您自己的自定义样式来显示它。

    如果您想返回博客中的每篇文章,您所要做的就是删除末尾的ID。但是,您更有可能希望返回选定数量的帖子。以下请求将返回最新的三个文章:

    curl https://wordpress.org/news/wp-json/wp/v2/posts/?per_page=3
    curl https://wordpress.org/news/wp-json/wp/v2/posts/?per_page=3
    curl https://wordpress.org/news/wp-json/wp/v2/posts/?per_page=3

    您可以在其他网站甚至您自己的博客上亲自尝试。

    2. 更新文章

    现在,让我们尝试使用REST API对WordPress进行一些更改。为此,您需要登录到要管理的站点。例如,如果您使用SSH,则需要登录到您的服务器。

    在这个例子中,我们将更新一个现有的文章。首先,让我们使用一个请求来更新ID为1的文章的标题:

    curl -X POST http://example.com/wp-json/wp/v2/posts/1 -d ‘{“title”:”A Brand New Title”}’
    curl -X POST http://example.com/wp-json/wp/v2/posts/1 -d ‘{“title”:”A Brand New Title”}’
    curl -X POST http://example.com/wp-json/wp/v2/posts/1 -d '{"title":"A Brand New Title"}'

    这是不言自明的。title参数表明您正在更新文章的标题,后跟包含替换内容的文本字符串。

    还有很多其他的参数,你可以用它来进行更改后。例如,您可以使用列表为文章分配类别、发布文章或完全更改其内容。

    3. 删除用户

    最后,让我们看看如何使用REST API删除数据。在此示例中,我们将从站点中删除用户。当然,您需要先登录并授权管理用户,然后才能使用此功能。

    然后,您可以使用以下请求删除ID为101的用户:

    curl -X DELETE http://example.com/wp-json/wp/v2/users/101
    curl -X DELETE http://example.com/wp-json/wp/v2/users/101
    curl -X DELETE http://example.com/wp-json/wp/v2/users/101

    这将从站点中删除指定的用户。您可以使用附加参数根据用户的ID将用户的文章重新分配给另一个用户,或者强制永久删除而不是将用户添加到垃圾箱。

    通过这些示例,您可以开始了解REST API如何使您能够管理站点上的内容并连接到其他站点。如果您想了解更多信息,我们建议您深入研究REST API手册,并查看有关学习JSON的课程

    何时不使用WordPress REST API

    WordPress REST API并不总是开发网站或应用程序的正确方法。在使用它进行开发之前,您应该注意以下一些注意事项:

    兼容性

    如果您的应用程序将在不运行JavaScript的设备上或由可能关闭它的用户使用,那么如果您使用的是REST API,它就不会运行。

    用PHP编码的WordPress站点将输出HTML,因此不会遇到此问题。不使用JavaScript的设备越来越少,但如果您专门为这些设备开发,REST API将无法工作。

    同样,如果您的用户可能会关闭JavaScript,那么使用REST API会导致问题。出于可访问性或安全原因,某些用户会在其浏览器中关闭JavaScript。

    无障碍

    使用JavaScript开发的站点或应用程序并不总是像HTML输出那样易于访问。

    这主要是因为JavaScript用于传递动态内容的方式可能无法与屏幕阅读器很好地配合使用,并且可能会给视力障碍或光敏性癫痫患者带来问题。

    使用REST API访问您的WordPress站点并以可访问的形式输出数据意味着您可以克服这些问题,但在开发站点时检查站点的可访问性是值得的。

    搜索引擎优化

    频繁刷新的单页应用程序有时会导致SEO问题。这是因为第一次输出页面时未交付的内容可能不会被搜索引擎索引。

    谷歌和其他搜索引擎正在迎头赶上这样一个事实,即现在许多网站都由SPA驱动,并且正在适当地将它们编入索引。但是,对您使用REST API开发的任何站点进行彻底的SEO审核确实值得。

    如何禁用WordPress REST API

    如果您不希望应用程序能够使用REST API从您的站点访问数据,您可以禁用它。请记住,任何人都可以访问公共数据,而不仅仅是您。

    为此,您可以安装Disable WP REST API插件。这将为未登录到您的站点的任何人禁用REST API。

    禁用WP REST API插件

    禁用WP REST API插件

    或者,您可以向主题的函数文件中添加一些代码或编写自己的插件。最好编写一个插件,因为这不是特定于主题的功能。

    在您的插件中,只添加两行:

    add_filter( ‘json_enabled’, ‘__return_false’ );
    add_filter( ‘json_jsonp_enabled’, ‘__return_false’ );
    add_filter( ‘json_enabled’, ‘__return_false’ );
    add_filter( ‘json_jsonp_enabled’, ‘__return_false’ );
    add_filter( 'json_enabled', '__return_false' );
    add_filter( 'json_jsonp_enabled', '__return_false' );
    

    这将完全禁用您站点的REST API。它可能会对您的管理屏幕产生连锁反应,因此请确保添加后一切正常。

    使用WordPress REST API的实际应用程序

    REST API为WordPress的未来提供了一些令人兴奋的可能性。以下是使用WordPress REST API创建SPA或将WordPress链接到其他站点和技术的应用程序和站点的一些示例。

    WordPress.com

    WordPress.com界面

    WordPress.com界面

    WordPress.com管理屏幕完全使用REST API构建,以提供用户与之交互以管理其站点的SPA。

    这使得界面和服务器之间的动态通信成为可能,并导致WordPress.org可能及时模仿的用户友好界面。

    区块编辑器(古腾堡)

    古腾堡编辑器

    古腾堡编辑器

    同样在WordPress管理屏幕中,但这次也在自托管WordPress中,Gutenberg区块编辑器使用REST API与您的数据库进行通信并创建块。

    要使文章类型与Gutenberg编辑器一起使用,它们必须启用REST API。这意味着,如果您要注册自定义文章类型并使用Gutenberg,则需要添加以下行以启用该文章类型的区块编辑器:

    “show_in_rest” = true;
    “show_in_rest” = true;
    "show_in_rest" = true;

    Event Espresso

    Event Espresso

    Event Espresso

    Event Espresso是一个WordPress插件,可让用户组织和宣传活动。它利用REST API,以便用户可以从WordPress外部访问其中的数据。这意味着您可以构建移动应用程序或SPA来管理您的活动。

    UsTwo

    UsTwo

    UsTwo

    UsTwo是一家数字机构,其网站是使用REST API作为单页应用程序构建的。这结合了使用React构建的前端和由WordPress提供支持的后端。

    他们的单个页面的内容是模块化的,其结构与标准的WordPress页面不同。为了完成这项工作,他们使用了一个自定义页面构建器插件,让他们的团队可以向站点添加模块化内容。

  • 实例说明如何通过Python来连接管理WordPress

    实例说明如何通过Python来连接管理WordPress

    WordPress已经成为最常用的内容管理系统(CMS),这在很大程度上是由于它的应用编程接口(API)。WordPress的REST API使WordPress能够与其他用各种语言编写的应用程序 “对话”–包括Python。

    Python是一种可扩展的编程语言,具有多种用途和人类可读的语法,使它成为远程管理WordPress内容的强大工具。

    下面是一些WordPress REST API对你的应用程序的用例,以及你如何使用Python来支持它们。

    • 使用预定义模板,使你的应用程序能够快速地将原始数据转化为带有解释的格式化文章。
    • 在Django和Python上建立一个后台应用程序,在每次特定对象的折扣或销售事件发生时向你的客户显示限时优惠。
    • 整合Python脚本,在你的WordPress网站内运行

    本教程将帮助你创建一个简单的Python控制台应用程序,与WordPress REST API进行通信并执行操作。完整的项目代码也是可用的。

    1. 安装和配置WordPress
    2. 如何从Python中控制WordPress
    3. 在代码中获取文章
    4. 用代码创建文章
    5. 更新代码中的文章
    6. 删除代码中的文章

    安装和配置WordPress

    首先,让我们在你的开发机器上本地安装和运行一个WordPress网站。这是开始使用WordPress的一个很好的方法,因为你不需要创建一个账户或购买一个虚拟主机的域名。

    在本地安装WordPress之前,需要在你的电脑上运行一些组件,包括Apache网络服务器、本地数据库和编写WordPress的PHP语言。

    幸运的是,我们可以使用DevKinsta,一个免费的本地WordPress开发套件,可用于所有主要的操作系统(你不需要成为Kinsta的客户来使用它)。

    DevKinsta可用于Windows、Mac和Linux,并在你的本地机器上安装WordPress和它的所有依赖项。

    在安装DevKinsta之前,你必须在本地运行Docker,所以如果你还没有下载并安装Docker引擎。

    安装Docker Desktop后,你可以自动下载适合你的操作系统的软件包。

    DevKinsta安装页面

    DevKinsta安装页面

    当你运行DevKinsta安装程序时,Docker立即开始初始化。

    DevKinsta的创建新网站菜单

    DevKinsta的创建新网站菜单

    现在,DevKinsta安装程序要求你创建WordPress管理账户的凭据。

    DevKinsta显示新WordPress网站表格

    DevKinsta显示新WordPress网站表格

    一旦安装,DevKinsta就是一个独立的应用程序。现在你可以同时访问WordPress网站(通过Open Site按钮)和WordPress管理仪表板(WP Admin按钮)。

    DevKinsta的网站信息面板

    DevKinsta的网站信息面板

    接下来,你需要为你的网站启用SSL和HTTPS。这可以通过SSL证书提高你网站的安全性。

    DevKinsta的 "SSL和HTTPS "选项

    DevKinsta的 “SSL和HTTPS “选项

    现在进入DevKinsta应用程序,点击Open site按钮。一个新的浏览器标签将显示你的WordPress网站的主页。

    WordPress主页

    WordPress主页

    这是你的WordPress博客,你可以在这里开始写作。但是为了使Python能够访问和使用WordPress REST API,我们必须首先配置WordPress Admin。

    现在点击DevKinsta应用程序上的WP Admin按钮,然后提供你的用户和密码以访问WordPress仪表板。

    WordPress登录表单

    WordPress登录表单

    一旦你登录了,你会看到WordPress仪表盘

    WordPress仪表板页面

    WordPress仪表板页面

    WordPress使用cookie认证作为它的标准方法。但是,如果你想用REST API来控制它,你必须用一种允许访问WordPress REST API的技术来认证。

    为此,你将使用应用密码。这些是WordPress生成的24个字符的长字符串,并与有权限管理你的网站的用户配置文件联系起来。

    要使用应用密码,请点击仪表板上的插件菜单,然后搜索同名的插件。然后安装并激活应用程序密码插件。

    WordPress的应用密码插件

    WordPress的应用密码插件

    要开始创建你的应用程序密码,首先要展开Users菜单,点击All Users

    扩展的用户菜单

    扩展的用户菜单

    现在,点击你的管理员用户名下面的编辑。

    WP-Admin WordPress界面

    WP-Admin WordPress界面

    向下滚动 “编辑用户 “页面,找到 “应用密码 “部分。在这里,为应用程序密码提供一个名称,以后你将用它来验证你的Python应用程序的请求和消费REST API。

    申请密码页

    申请密码页

    点击Add New Application Password,这样WordPress就可以为你生成一个随机的24个字符的密码。

    新的申请密码页面

    新的申请密码页面

    接下来,复制这个密码并将其保存在一个安全的地方,以便以后使用。记住,一旦你关闭这个页面,你将无法找回这个密码。

    最后,你必须配置permalinks。WordPress允许你为你的permalinks和archives创建一个自定义的URL结构。让我们改变它,使一个WordPress的文章标题,例如,”你的第一个WordPress网站”,可以通过直观的URL https://your-website.local:port/your-first-wordpress-website/。这种方法带来了一些好处,包括改善可用性和美观性。

    要配置固定链接,展开设置部分并点击固定链接菜单。在这里,将常用设置改为文章名称。

    固定链接设置

    使用Post name结构来设置固定链接结构也是必要的,因为它将允许我们在以后的Python代码中使用JSON格式来检索文章。否则,将抛出一个JSON解码错误。

    如何从Python中控制WordPress

    WordPress是用PHP编写的,但它有一个REST API,使其他编程语言、网站和应用程序能够消费其内容。在REST架构中暴露WordPress的内容,使其以JSON格式提供。因此,其他服务可以与WordPress集成,执行创建、读取、更新和删除(CRUD)操作,而不需要安装本地的WordPress。

    接下来,你将建立一个简单的Python应用程序,看看你如何使用WordPress REST API来创建、检索、更新和删除文章。

    为你的新的简单Python项目创建一个新的目录,并命名为 PythonWordPress之类的。

    ../PythonWordPress
    ../PythonWordPress
    ../PythonWordPress

    现在,你将为你的项目创建一个虚拟环境,让它保持一套独立的已安装的 Python 包,将它们与你的系统目录隔离,避免版本冲突。通过执行venv 命令来创建一个虚拟环境。

    python3 -m venv .venv
    python3 -m venv .venv
    python3 -m venv .venv

    现在,运行一个命令来激活.venv虚拟环境。这个命令因操作系统而异。

    • Windows: .venvScriptsactivate
    • Mac/Linux: .venv/bin/activate

    接下来,存储与你的WordPress帐户相关的配置。为了将应用程序的配置与你的Python代码分开,在你的项目目录下创建一个.env文件,并将这些环境变量添加到该文件中。

    WEBSITE_URL=“<>”
    API_USERNAME=“<>”
    API_PASSWORD=“<>”
    WEBSITE_URL=”<>”

    API_USERNAME=”<>”

    API_PASSWORD=”<>”

    WEBSITE_URL="<>"
    
    API_USERNAME="<>"
    
    API_PASSWORD="<>"

    幸运的是,从Python应用中读取上述数据很容易。你可以安装Python-dotenv包,这样你的应用程序就可以从.env文件中读取配置。

    pip install python-dotenv
    pip install python-dotenv
    pip install python-dotenv

    然后,安装 aiohttp,一个用于 Python 的异步 HTTP 客户端/服务器。

    pip install aiohttp
    pip install aiohttp
    pip install aiohttp

    现在添加一个名为app.py的文件,代码如下。

    import asyncio
    menu_options = {
    1: ‘List Posts’,
    2: ‘Retrieve a Post’
    }
    def print_menu():
    for key in menu_options.keys():
    print (key, ‘–‘, menu_options[key] )
    async def main():
    while(True):
    print_menu()
    option = input_number(‘Enter your choice: ‘)
    #Check what choice was entered and act accordingly
    if option == 1:
    print(‘Listing posts…’)
    elif option == 2:
    print(‘Retrieving a post…’)
    else:
    print(‘Invalid option. Please enter a number between 1 and 5.’)
    def input_number(prompt):
    while True:
    try:
    value = int(input(prompt))
    except ValueError:
    print(‘Wrong input. Please enter a number …’)
    continue
    if value < 0:
    print(“Sorry, your response must not be negative.”)
    else:
    break
    return value
    def input_text(prompt):
    while True:
    text = input(prompt)
    if len(text) == 0:
    print(“Text is required.”)
    continue
    else:
    break
  • 如何修复WordPress内容更新和发布失败错误

    错误类型:
    WP内部错误
    错误名称:
    更新失败或者发布失败
    英文名称:
    Updating Failed or Publishing Failed Errors
    错误描述:
    “发布或者更新失败”错误有几种不同的原因,但其中一个特别与区块编辑器有关。新的WordPress编辑界面依赖REST API来创建、保存和发布文章。如果您网站上的某些内容阻止或禁用了此过程,您将无法启动新内容。

    如何修复WordPress更新和发布失败错误

    如果您的WordPress网站在您尝试进行更改时返回诸如“更新失败”或“发布失败”之类的错误消息,那么结果不仅令人沮丧,而且还会阻止访问者访问他们需要的内容。

    幸运的是,有一些常见的原因和解决方法可以帮助您在遇到此问题时解决它。通过一些故障排除,您应该立即恢复到您的常规发布时间表。

    在本文中,我们将讨论导致WordPress内容“更新失败”和“发布失败”错误的原因。然后我们将解释您可以修复或解决问题的四种方法,以便为读者提供您的内容。

    1. 为什么WordPress有时无法更新或发布内容
    2. 如何修复WordPress更新失败和发布失败错误

    为什么WordPress有时无法更新或发布内容

    区块编辑器已经存在一段时间了。然而,它仍然受到不同的反应,而且WordPress用户也可能因此面临新的挑战和错误。

    一个这样的问题是在WordPress编辑器中显示“发布失败”的消息:

    区块编辑器中的发布失败错误

    区块编辑器中的发布失败错误

    单击蓝色的“发布” 按钮后可能会出现此消息,以尝试使您的内容生效。此错误的一个变体是“更新失败”消息,当您尝试对已发布的文章或页面进行更改时,可能会显示该消息:

    在区块编辑器中更新失败错误

    在区块编辑器中更新失败错误

    可以想象,这个问题对于博主以及任何发现自己需要更新其网页上的关键信息的网站所有者来说可能是一个特别令人沮丧的问题。

    “发布失败”错误有几种不同的原因,但其中一个特别与区块编辑器有关。新的WordPress编辑界面依赖REST API来创建、保存和发布文章。如果您网站上的某些内容阻止或禁用了此过程,您将无法启动新内容。

    如果您是初学者或技术水平较低的用户,任何提及REST API的内容似乎都令人生畏。但是,在这种情况下,无需担心。

    为了解决“发布失败”错误,您需要了解的只是REST API是区块编辑器与WordPress通信的方式。

    当此通信中断或禁用时,块编辑器的发布功能将中断。如果这是导致您网站上出现错误的原因,您需要让REST API再次工作以修复它。

    如何修复WordPress更新失败和发布失败错误

    一旦了解了WordPress内容无法更新或发布的原因,解决问题就会变得更容易。您可以采取以下四个步骤来解决您网站上的此问题。

    步骤 1:确定REST API是否被拦截

    WordPress中“发布失败”错误的一个常见原因(因为区块编辑器已启动)是REST API被拦截或禁用。如果您看到此消息,开始故障排除的明智方法是测试REST API以确保其正常工作。

    您可以在WordPress中使用Site Health工具直接执行此操作。要访问它,请导航到工具>站点健康

    访问WordPress中的站点运行状况工具

    访问WordPress中的站点运行状况工具

    在“状态” 选项卡下,WordPress 将列出您的安装存在的所有问题。如果REST API被拦截,您将看到以下消息:

    “The REST API encountered an unexpected result.

    The REST API is one way WordPress and other applications communicate with the server. One example is the block editor screen, which relies on this to display and save your posts and pages.”

    站点运行状况工具还将显示产生“意外结果”的特定错误。这可能是“ 401未授权”响应、操作超时、“403 Cookie Nonce Is Invalid”消息或其他错误。

    您应该如何解决此问题并再次启用REST API将在某种程度上取决于您在此处看到的错误。

    步骤 2:通过解决指定的错误重新启用REST API

    理想情况下,站点运行状况工具将提供有关如何在WordPress站点上重新启用REST API的一些指示。一些常见的解决方案包括:

    • 检查Cloudflare是否拦截了REST API 如果您是Cloudflare用户,您的防火墙可能会无意中阻止合法请求。检查您的规则集以确定REST API是否被拦截,并根据需要禁用规则以使其通过。
    • 确保插件不会阻止或禁用REST API。 某些插件也可能会拦截REST API。一次性禁用所有插件可以帮助您确定哪个插件(如果有)导致了问题。然后,您可以删除、替换或更改该插件的设置以再次启用REST API。安全和性能优化插件是常见的罪魁祸首。
    • 通过.htaccess 文件使用REST API验证您的WordPress站点 REST API要求您的网站在连接之前对其进行身份验证。如果您的站点没有这样做,您可以对.htaccess文件进行小幅编辑以解决此问题。
    • 确定问题是否与服务器有关。 一些用户发现他们在Windows服务器上运行WordPress时遇到了这个问题。您需要编辑您的web.config文件来修复它。

    大多数情况下,插件和防火墙应用程序是问题的根源,因此在那里开始故障排除尝试是明智的。

    很有可能,您将能够在WordPress中找到导致“发布失败”错误的工具并禁用它或更改其设置以解决问题。

    步骤 3:启用调试模式以搜索错误

    如果您无法使用步骤2中列出的解决方案之一重新启用REST API,您可以尝试打开WordPress的调试模式。此功能旨在临时用作故障排除工具。

    激活后,调试模式会将所有PHP响应记录在站点wp-content目录中名为debug.log的文件中。您可以在此文件中搜索可能拦截WordPress连接到REST API并因此阻止发布或更新文章的错误。

    要激活调试模式,请将以下代码添加到wp-config.php 文件中 “/* That’s all, stop editing! Happy blogging. */”行前:

    // Enable WP_DEBUG mode
    define( ‘WP_DEBUG’, true );
    // Enable Debug logging to the /wp-content/debug.log file
    define( ‘WP_DEBUG_LOG’, true );
    // Enable WP_DEBUG mode

    define( ‘WP_DEBUG’, true );

    // Enable Debug logging to the /wp-content/debug.log file

    define( ‘WP_DEBUG_LOG’, true );

    // Enable WP_DEBUG mode
    
    define( 'WP_DEBUG', true );
    
    // Enable Debug logging to the /wp-content/debug.log file
    
    define( 'WP_DEBUG_LOG', true );

    解决错误后,请确保从wp-config.php 中删除此代码。

    步骤 4:安装并激活经典编辑器插件作为临时解决方案

    万一上述步骤对解决WordPres中的“发布失败”错误没有帮助,您可能需要从以下来源之一寻求支持:

    • 如果您认为问题与您的服务器有关,或者您的主机提供WordPress支持,那么您的主机提供商
    • 特定的插件或防火墙应用程序,例如Cloudflare,如果您认为您的站点不可或缺的工具正在拦截REST API,并且您无法自己解决问题。
    • WordPress支持论坛,如果您觉得需要进一步指导,例如不提供用户支持的免费插件。

    当您与相关支持提供商合作解决“发布失败”错误时,您可能希望安装经典编辑器插件作为临时解决方法:

    经典编辑器插件

    经典编辑器插件

    由于TinyMCE编辑器不需要使用REST API来发布或更新文章,您应该能够使用它对您的内容进行必要的更改。

    然而,这只是权宜之计。您仍然需要解决区块编辑器中错误的根本原因,然后重新启用它。

    小结

    无法发布或更新WordPress网站的内容可能是一个严重的问题。幸运的是,这些错误有一些常见的原因,您可以快速排除故障以使事情恢复正常。

    如果您在WordPress区块编辑器中收到“更新失败”或“发布失败”消息,请尝试:

    1. 确定REST API是否被拦截。
    2. 通过解决指定的错误重新启用REST API。
    3. 启用调试模式以搜索错误。
    4. 安装和激活经典编辑器插件作为临时解决方案。
  • 为确保WordPress安全尽早禁用xmlrpc.php

    xmlrpc-php-1024x512-1

    WordPress的XML-RPC规范是为了标准化不同系统之间的通信,这意味着WordPress外部的应用程序(例如其他博客平台和桌面客户端)可以与WordPress进行交互。

    自WordPress诞生以来,该规范一直是WordPress的一部分,并且非常有用。没有它,WordPress将会置身于孤岛,与互联网其他组成部分分道扬镳。

    但是,xmlrpc.php有其缺点。通过它,可以向您的WordPress网站注入漏洞,现已被WordPress REST API取代,通过API将WordPress开放给其他应用程序方面做得更好。

    在本文中,我们将解释什么是xmlrpc.php,为什么要禁用它,及如何确定它是否正在WordPress网站上运行。

    1. 什么是xmlrpc.php?
    2. 为什么要禁用xmlrpc.php
    3. xmlrpc.php是否在WordPress网站上运行?
    4. 如何禁用xmlrpc.php
    5. 何时需要启用xmlrpc.php?

    什么是xmlrpc.php?

    XML-RPC是支持WordPress与其他系统之间通信的规范。它通过使用HTTP作为传输机制和XML作为编码机制来标准化这些通信来实现此目的。

    XML-RPC早于WordPress:它出现在b2博客软件中,该软件于2003年创建了WordPress。该系统的代码存储在站点根目录下的xmlrpc.php文件中。即使XML-RPC在很大程度上已经过时,它仍然存在。

    在WordPress的早期版本中,默认情况下已关闭XML-RPC。但是自v3.5版本开始,默认情况下又启用它。这样做的主要原因是允许WordPress移动应用程序与WordPress安装进行对话通讯。

    如果您在v3.5版本之前使用WordPress移动应用程序,可能会记得必须在站点上启用XML-RPC才能使用该应用程序发布内容。这是因为该应用程序本身未运行WordPress。相反,它是一个单独的应用程序,通过xmlrpc.php与WordPress网站进行通信。

    但是XML-RPC不仅用于移动应用程序:它还用于允许WordPress和其他博客平台之间进行通信,还支持引用和pingback,并为Jetpack插件提供支持,该插件可链接自托管的WordPress网站至著名的WordPress.com平台。

    但是由于REST API已集成到WordPress核心中,因此xmlrpc.php文件不再用于此通信。相反,REST API用于与WordPress移动应用程序,桌面客户端,其他博客平台,WordPress.com(用于Jetpack插件)以及其他系统和服务进行通信。REST API-可与之交互的系统范围比xmlrpc.php所允许的大得多。此外,拥有更强的灵活性。

    既然REST API取代了XML-RPC,因此我们应该在站点上禁用xmlrpc.php。

    为什么要禁用xmlrpc.php

    在WordPress网站上禁用xmlrpc.php的主要原因是因为可以通过它注入安全漏洞,  并且xmlrpc.php可能成为攻击的目标。

    既然不再需要XML-RPC在WordPress之外进行通信,就没有理由保持它的激活状态。这就是为什么通过禁用它来提高站点安全性。

    如果xmlrpc.php会对WordPress网站造成安全隐患,那么为什么不将其完全从WordPress中删除呢?

    这是因为WordPress的主要功能之一始终是向后兼容。对网站进行良好的管理,就应该知道保持WordPress以及任何插件或主题版本为最新是必不可少的。

    但是总会有那么一群站长不愿或无法更新其WordPress版本至最新版本。如果安装的WordPress版本早于REST API,则这些站点仍然需要访问xmlrpc.php。

    通过XML-RPC Pingbacks进行DDoS攻击

    xmlrpc.php启用的功能之一是pingback和Trackbacks。当另一个博客或网站链接到你的博客文章时,这些通知将显示在您网站的评论中。

    XML-RPC规范使这种通信成为可能,但已被REST API取代(如我们所见)。

    如果您的站点上启用了XML-RPC,则黑客可能会利用xmlrpc.php在短时间内向您的站点发送大量pingback,从而在您的站点上发起DDoS攻击。这可能会使服务器超载,并使站点无法正常运行。

    通过XML-RPC的暴力攻击

    每次xmlrpc.php发出请求时,它都会发送用户名和密码进行身份验证。这带来了重大的安全隐患,而REST API却没有这一点弊端。实际上,REST API使用OAuth来发送用于身份验证的令牌,而不是用户名或密码。

    因为xmlrpc.php随每个请求发送身份验证信息,所以黑客可以使用它来尝试访问您的站点。这样的暴力攻击可能使他们可以插入内容,删除代码或破坏数据库。

    如果攻击者向您的站点发送了足够多的请求,每个请求使用不同的用户名和密码对,则它们最终有可能会被攻击到正确的请求,从而使他们可以访问您的站点。

    因此,如果您正在运行WordPress的最新版本(使用REST API与外部系统进行通信),则应禁用xmlrpc.php,以免你的网站易受攻击。

    xmlrpc.php是否在您的WordPress网站上运行?

    那么我们如何确定xmlrpc.php是否正在WordPress网站上运行。

    并非简单地检查该文件是否存在:xmlrpc.php是每个WordPress安装的一部分,即使禁用了XML-RPC,它仍然存在。

    删除任何内容之前,请务必备份您的网站(注:对网站系统任何核心文件进行修改删除及处理数据库等操作,建议尽可能先备份原文件或者数据库,再执行操作,以免造成不必要的麻烦)。在这种情况下,不要仅仅删除xmlrpc.php文件,因为它会破坏您的站点。

    要检查您的站点上是否启用了xmlrpc.php,请使用WordPress XML-RPC验证服务。这将检查您的站点并告知你网站是否启用了xmlrpc.php。

    WordPress XML-RPC验证服务

    WordPress XML-RPC验证服务

    输入一个我们的测试网站,检测网站的结果如下:

    网站XML-RPC检测-已禁用状态

    网站XML-RPC检测-已禁用状态

    这表明xmlrpc.php在该测试网站上已被禁用。如果您运行检查并发现xmlrpc.php仍在站点上启用,如何关闭它?

    如何禁用xmlrpc.php

    禁用xmlrpc.php有两种方法:

    1. 如何使用插件禁用xmlrpc.php
    2. 如何在没有插件的情况下禁用xmlrpc.php

    如何使用插件禁用xmlrpc.php

    (1)使用插件禁用XML-RPC

    安装插件以禁用xmlrpc.php是最简单的方法。你可以通过安装Disable XML-RPC插件来实现。使用方法如下:

    对一个启用了xmlrpc.php的网站进行XML-RPC检测,你会看到下面的结果:

    网站第一次XML-RPC检测-未禁用状态

    网站第一次XML-RPC检测-未禁用状态

    通过WordPress仪表盘的“ 插件”界面安装插件,然后将其启用。

    您无需执行其他任何操作:启用插件即可禁用XML-RPC。再次对该测试网站进行检查,则会得到不同的结果:

    网站第二次XML-RPC检测-已禁用状态

    网站第二次XML-RPC检测-已禁用状态

    (2)使用插件禁用XML-RPC Pingbacks

    但是,如果要禁用xmlrpc.php的某部分功能,比如Pingback,该怎么办?使用Disable XML-RPC Pingback插件,您可以仅禁用pingback功能,这意味着如果需要,您仍然可以访问XML-RPC的其他功能。

    (3)使用插件配置XML-RPC和REST API激活

    如果要对站点上的xmlrpc.php和REST API的配置方式进行更细致的控制,可以安装REST XML-RPC Data Checker插件。
    安装并启用此插件后,转到 设置>REST XML-RPC Data Checker ,然后单击“ XML-RPC”选项卡。

    REST XML-RPC数据检查器

    REST XML-RPC数据检查器

    可以准确配置xmlrpc.php的哪些功能在站点上处于活动状态。

    或者,您可以将其完全关闭。而且,如果您还想控制REST API,则插件会为您提供另一个选项卡。

    如何在没有插件的情况下禁用xmlrpc.php

    如果您不想在您的站点上安装这类插件,则可以通过WordPress过滤器,或.htaccess文件、Nginx配置文件添加一些代码来禁用xmlrpc.php 。

    (1)通过过滤器禁用xmlrpc.php

    使用xmlrpc_enabled过滤器禁用xmlrpc.php,将此功能添加到其中一个插件并启用即可:

    add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );
    add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );
    add_filter( 'xmlrpc_enabled', '__return_false' );
    

    当然也可以将其添加到主题functions文件中,但是编写插件是一种更好的做法。

    (2)通过.htacess文件或者Nginx配置文件禁用xmlrpc.php

    另一种选择与编辑.htaccess文件或者Nginx配置文件来禁用XML-RPC功能。

    如果你的服务器使用的是Apache,则网站根目录找到.htaccess文件中,添加以下代码:

    <Files xmlrpc.php>
    Order Allow,Deny
    Deny from all
    </Files>
    <Files xmlrpc.php>
    Order Allow,Deny
    Deny from all
    </Files>
    <Files xmlrpc.php>
    Order Allow,Deny
    Deny from all
    </Files>

    如果你的服务器使用的是Nginx,将以下代码添加到Nginx.config文件中:

    location ~* ^/xmlrpc.php$ {
    return 403;
    }
    location ~* ^/xmlrpc.php$ {
    return 403;
    }
    location ~* ^/xmlrpc.php$ {
    return 403;
    }

    您何时需要启用xmlrpc.php?

    在某些情况下,需要在WordPress网站上启用xmlrpc.php,或者不应该完全禁用它。

    • 没有运行REST API(不建议使用,但在某些情况下是必需的),但需要在WordPress网站和其他系统之间进行通信。
    • 无法将WordPress更新至版本4.4或更高版本,因此无权访问REST API。这可能是由于主题或插件不兼容,如果可能,建议尽快使用代替主题或者插件。
    • 正在使用无法访问WP REST API但可以访问XML-RPC的外部应用程序(从长远来看,建议更新该应用程序或切换到兼容REST API的应用程序)。

    以上这些都不是坚持继续启用XML-RPC理由,是一种“不思进取”的行为。

    它仍然存在于WordPress中的唯一原因是为了向后兼容,只有在使用过时的系统时才使用它。对于任何想要使其站点保持最新状态并使用最新技术的人,禁用xmlrpc.php才是正路。

    小结

    XML-RPC规范是在WordPress创建之前就开发了,它是WordPress与外部系统和应用程序进行通信的一种手段。XML-RPC曾经是WordPress的重要组成部分,但现在它可以成为WordPress网站的安全风险,如非必要,我们应该禁用它。

    既然REST API允许您的站点与其他应用程序通信,则可以安全地禁用xmlrpc.php。按照上述步骤操作,则可以通过禁用它来提高网站的安全性。