热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wordpress本地开发_适用于WordPress开发人员的XMLRPC

wordpress本地开发XML-RPCisaremoteprocedurecall(oneprocesscallingthefunctionofanotherprocessvia

wordpress本地开发

XML-RPC is a remote procedure call (one process calling the function of another process via a remote connection) protocol which uses XML to represent data and HTTP to make the calls. Although applications can explicitly provide their own REST APIs for RPC, a standard protocol can help security and provide many other benefits. For example, developers don’t have to design a REST API architecture from scratch and also a single client can be used to make remote procedure calls to various server applications which support the standard protocol. Therefore, XML-RPC was introduced as a standard protocol for RPC.

XML-RPC是一种远程过程调用(一个过程通过远程连接调用另一个过程的功能)协议,该协议使用XML表示数据,并使用HTTP进行调用。 尽管应用程序可以为RPC显式提供自己的REST API,但是标准协议可以帮助提高安全性并提供许多其他好处。 例如,开发人员不必从头开始设计REST API架构,也可以使用单个客户端对支持标准协议的各种服务器应用程序进行远程过程调用。 因此,XML-RPC被引入作为RPC的标准协议。

XML-RPC for WordPress

In this tutorial we’ll look at the different core WordPress functions which can be executed remotely using XML-RPC. This can help us to build tools which can perform various operations on a WordPress installation. One of the greatest examples of this is the WordPress Mobile App.

在本教程中,我们将介绍可以使用XML-RPC远程执行的WordPress核心功能。 这可以帮助我们构建可以在WordPress安装上执行各种操作的工具。 最好的例子之一是WordPress移动应用程序 。

XML-RPC协议请求和响应概述 (Overview of an XML-RPC Protocol Request and Response)

To make an XML-RPC request you need to wrap the remote function name and parameters in XML format and then send a POST request using HTTP.

要发出XML-RPC请求,您需要以XML格式包装远程函数名称和参数,然后使用HTTP发送POST请求。

This is an example of a XML-RPC HTTP request:

这是XML-RPC HTTP请求的示例:

POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169


circleArea


2.41


Here’s a sample response to the above request:

这是对上述请求的示例响应:

HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124




18.24668429131


In this tutorial we’ll use PHP to send XML-RPC requests to WordPress and display the raw response.

在本教程中,我们将使用PHP将XML-RPC请求发送到WordPress并显示原始响应。

We would generally write code to wrap our function name and parameters in XML format and then make an HTTP request using cURL, but writing code for this from scratch is lengthy. Instead we can use the PHPXMLRPC library, which provides abstraction to all of these steps and lets us make XML-RPC requests much more easily.

通常,我们将编写代码以XML格式包装函数名称和参数,然后使用cURL发出HTTP请求,但是从头开始为此编写代码很长。 相反,我们可以使用PHPXMLRPC库,该库为所有这些步骤提供了抽象,并使我们可以更轻松地发出XML-RPC请求。

XML-RPC libraries are available for all popular programming languages, you can find one for your preferred language using your favorite search engine.

XML-RPC库可用于所有流行的编程语言,您可以使用自己喜欢的搜索引擎为自己的首选语言找到一种。

WordPress XML-RPC功能 (WordPress XML-RPC Functions)

There are lots of WordPress core functions that WordPress exposes via XML-RPC. All of the XML-RPC exposed functions are categorized into 9 categories: Posts, Taxonomies, Media, Comments, Options, Users, Categories, Tags and Pages.

WordPress通过XML-RPC公开了许多WordPress核心功能。 所有XML-RPC公开的功能都分为9类:帖子,分类法,媒体,注释,选项,用户,类别,标签和页面。

功能列表 (A List of the Functions)

Here’s the complete list of all functions:

这是所有功能的完整列表:

Posts functions: Available from WordPress 3.4. Here is the list of functions that belong to posts category:

帖子功能 :可从WordPress 3.4获得。 这是属于帖子类别的功能列表:

wp.getPost
wp.getPosts
wp.newPost
wp.editPost
wp.deletePost
wp.getPostType
wp.getPostTypes
wp.getPostFormats
wp.getPostStatusList

Taxonomies functions: Available from WordPress 3.4. Here is the list of functions that belong to taxonomies category:

分类法功能 :可从WordPress 3.4获得。 这是属于分类法类别的函数列表:

wp.getTaxonomy
wp.getTaxonomies
wp.getTerm
wp.getTerms
wp.newTerm
wp.editTerm
wp.deleteTerm

Media functions: Available from WordPress 3.1. Here is the list of functions that belong to taxonomies category:

媒体功能 :可从WordPress 3.1获得。 这是属于分类法类别的函数列表:

wp.getMediaItem
wp.getMediaLibrary
wp.uploadFile

Comments functions: Available from WordPress 2.7. Here is the list of functions that belong to the comments category:

注释功能 :可从WordPress 2.7获得。 这是属于注释类别的功能列表:

wp.getCommentCount
wp.getComment
wp.getComments
wp.newComment
wp.editComment
wp.deleteComment
wp.getCommentStatusList

Options functions: Available from WordPress 2.6. Here is the list of functions that belong to the options category:

选项功能 :可从WordPress 2.6获得。 这是属于选项类别的功能列表:

wp.getOptions
wp.setOptions

Users functions: Available from WordPress 3.5. Here is the list of functions that belong to the users category:

用户功能 :可从WordPress 3.5获得。 以下是属于用户类别的功能列表:

wp.getUsersBlogs
wp.getUser
wp.getUsers
wp.getProfile
wp.editProfile
wp.getAuthors

Categories functions: Available from WordPress 3.4. Here is the list of functions that belong to the categories category:

类别功能 :可从WordPress 3.4获得。 以下是属于类别类别的功能列表:

wp.getCategories
wp.suggestCategories
wp.newCategory
wp.deleteCategory

Tags functions: Available from WordPress 3.4. Here is the list of functions that belong to the tags category:

标签功能 :可从WordPress 3.4获得。 以下是属于标签类别的功能列表:

wp.getTags

Pages functions: Available from WordPress 3.4. Here is the list of functions that belong to the pages category:

页面功能 :可从WordPress 3.4获得。 以下是属于页面类别的功能列表:

wp.getPage
wp.getPages
wp.getPageList
wp.newPage
wp.editPage
wp.deletePage
wp.getPageStatusList
wp.getPageTemplates

All of the category names and function names, as well as the use and purposes are quite self explanatory.

所有类别名称和函数名称以及用途和目的都是很容易解释的。

Let’s see some examples of the above functions:

让我们看一些上述功能的例子:

获取WordPress作者列表 (Getting a List of WordPress Authors)

Here is the code to get list of all authors of a remote WordPress installation using PHP:

这是获取使用PHP进行远程WordPress安装的所有作者的列表的代码:

include("lib/xmlrpc.inc");
$function_name = "wp.getAuthors";
$url = "https://www.sitepoint.com/xmlrpc.php";
$client = new xmlrpc_client($url);
$client->return_type = "phpvals";
$message = new xmlrpcmsg($function_name, array(new xmlrpcval(0, "int"), new xmlrpcval("username", "string"), new xmlrpcval("password", "string")));
$resp = $client->send($message);
if ($resp->faultCode()) echo 'KO. Error: '.$resp->faultString(); else foreach ($resp->val as $key => $value) {
echo "User id: " . $value["user_id"];
echo "

";
echo "Username: " . $value["user_login"];
echo "

";
echo "Display name: " . $value["display_name"];
echo "

";
};
?>

Let’s see how the above code works:

让我们看看上面的代码是如何工作的:

  • First we included PHPXMLRPC library.

    首先,我们包含了PHPXMLRPC库。
  • Then we create a variable $function_name to hold the function name.

    然后,我们创建一个变量$function_name来保存函数名称。

  • We created an another variable which points to the xmlrpc.php file of the WordPress installation. This file always exists in the root of WordPress.

    我们创建了另一个变量,该变量指向WordPress安装的xmlrpc.php文件。 此文件始终存在于WordPress的根目录中。

  • Then we create an XML-RPC client object and pass the URL to the constructor.

    然后,我们创建一个XML-RPC客户端对象,并将URL传递给构造函数。
  • We then instruct the library to convert the response data into a PHP array variable so it will be easy to read and work with the response data. Working with raw XML response data will be difficult as we have to parse the XML.

    然后,我们指示该库将响应数据转换为PHP数组变量,这样将很容易读取和使用响应数据。 使用原始XML响应数据将很困难,因为我们必须解析XML。
  • Then we construct a request message object with the parameters for the wp.getAuthors function. First parameters is the blog id, the other two parameters are the username and password of the administrator.

    然后,我们使用wp.getAuthors函数的参数构造一个请求消息对象。 第一个参数是博客ID,其他两个参数是管理员的用户名和密码。

  • Next, we send the XML-RPC request.

    接下来,我们发送XML-RPC请求。
  • Finally we get the response. If there’s an error we display the error, otherwise we loop the response object’s value property to print the authors basic information.

    最后我们得到了回应。 如果有错误,则显示错误,否则,循环响应对象的value属性以打印作者的基本信息。

创建帖子 (Creating a Post)

We just saw how easy it is to retrieve a list of authors, here’s how you can create a post:

我们刚刚看到检索作者列表很容易,这是创建帖子的方法:

include("lib/xmlrpc.inc");
$function_name = "wp.newPost";
$url = "https://www.sitepoint.com/xmlrpc.php";
$client = new xmlrpc_client($url);
$client->return_type = 'phpvals';
$message = new xmlrpcmsg(
$function_name,
array(
new xmlrpcval(0, "int"),
new xmlrpcval("my_cool_username", "string"),
new xmlrpcval("my_super_secret_password", "string"),
new xmlrpcval(
array(
"post_type" => new xmlrpcval("post", "string"),
"post_status" => new xmlrpcval("draft", "string"),
"post_title" => new xmlrpcval("Sitepoint is Awesome", "string"),
"post_author" => new xmlrpcval(1, "int"),
"post_excerpt" => new xmlrpcval("excerpt", "string"),
"post_content" => new xmlrpcval("content", "string")
),
"struct"
)
)
);
$resp = $client->send($message);
if ($resp->faultCode()) echo 'KO. Error: '.$resp->faultString(); else echo "Post id is: " . $resp->value();
?>

Here, we called the function wp.newPost. Along with the blog id, username and password. We also passed a struct type containing post type, status, title, content, author and excerpt.

在这里,我们调用了函数wp.newPost 。 以及博客ID,用户名和密码。 我们还传递了一个包含帖子类型,状态,标题,内容,作者和摘录的结构类型。

注意:检测XML-RPC请求 (Note: Detecting the XML-RPC Request)

A quick note: If you’re a plugin or theme developer, then you might want your code to function differently for XML-RPC requests. WordPress allows a way for themes and plugin to detect if WordPress is processing a XML-RPC request.

快速说明:如果您是插件或主题开发人员,则可能希望代码对XML-RPC请求的功能有所不同。 WordPress提供了一种主题和插件检测WordPress是否正在处理XML-RPC请求的方法。

Here is the code to detect XML-RPC requests:

这是检测XML-RPC请求的代码:

if(defined('XMLRPC_REQUEST'))
{
// XML-RPC request
}
else
{
// Normal HTTP request
}

结论 (Conclusion)

In this article we covered the fundamentals of XML-RPC for WordPress, including the basics of XML-RPC and how WordPress exposes this protocol. We also demonstrated how to perform various operations on a WordPress installation using XML-RPC. You can now create a mobile, desktop or a web application XML-RPC client for WordPress.

在本文中,我们介绍了WordPress的XML-RPC的基础知识,包括XML-RPC的基础知识以及WordPress如何公开此协议。 我们还演示了如何使用XML-RPC在WordPress安装上执行各种操作。 现在,您可以为WordPress创建移动,桌面或Web应用程序XML-RPC客户端。

翻译自: https://www.sitepoint.com/xml-rpc-for-wordpress-developers/

wordpress本地开发



推荐阅读
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文最初发表在Thorben Janssen的Java EE博客上,每周都会分享最新的Java新闻和动态。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文深入解析了 Kubernetes 控制平面(特别是 API 服务器)与集群节点之间的通信机制,并对其通信路径进行了详细分类。旨在帮助用户更好地理解和定制其安装配置,从而增强网络安全性,确保集群的稳定运行。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
author-avatar
fuck__镇豪_152
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有