{"id":18615669,"url":"https://github.com/zhyea/wordpress-client","last_synced_at":"2025-04-11T01:31:24.210Z","repository":{"id":54384532,"uuid":"162425069","full_name":"zhyea/wordpress-client","owner":"zhyea","description":"WordPress Java client","archived":false,"fork":false,"pushed_at":"2022-10-05T02:59:47.000Z","size":61,"stargazers_count":13,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T07:04:36.964Z","etag":null,"topics":["wordpress-client","wordpress-java","wordpress-java-client","wp-client"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhyea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-19T11:01:57.000Z","updated_at":"2024-11-29T07:14:50.000Z","dependencies_parsed_at":"2022-08-13T14:01:05.769Z","dependency_job_id":null,"html_url":"https://github.com/zhyea/wordpress-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhyea%2Fwordpress-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhyea%2Fwordpress-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhyea%2Fwordpress-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhyea%2Fwordpress-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhyea","download_url":"https://codeload.github.com/zhyea/wordpress-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248325139,"owners_count":21084875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wordpress-client","wordpress-java","wordpress-java-client","wp-client"],"created_at":"2024-11-07T03:31:16.519Z","updated_at":"2025-04-11T01:31:19.201Z","avatar_url":"https://github.com/zhyea.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 简介\nWordPress Client是一个Java版的WordPress客户端操作库， 主要基于[WordPress XML-RPC API](https://codex.wordpress.org/XML-RPC_WordPress_API)实现。目前WordPress Client提供了如下能力：\n\n* 获取WordPress用户信息\n* 获取博客文章信息\n* 发布文章到WordPress部署的博客\n* 对已发布的文章进行编辑、删除等操作\n\n# 使用\n\n## 添加依赖\n只需要在maven工程中的pom文件中添加如下依赖就可以使用wp-client：\n\n```xml\n        \u003cdependency\u003e\n            \u003cgroupId\u003eorg.chobit.wp\u003c/groupId\u003e\n            \u003cartifactId\u003ewordpress-client\u003c/artifactId\u003e\n            \u003cversion\u003ex.x.x\u003c/version\u003e\n        \u003c/dependency\u003e\n```\n目前wp-client的版本是0.1.6。请尽量使用最新版本。\n\n## 创建WordPress操作实例\n\nWordPress实例是所有操作的基础。简单的WordPress实例创建方式如下：\n```java\n    WordPress wp = new WordPress(XML_RPC_URL, USERNAME, PASSWORD);\n```\n* xmlRpcUrl：xmlRpc服务端地址，WordPress博客的地址通常为**博客地址 + xmlrpc.php**，如：http://www.zhyea.com/xmlrpc.php\n* username和password：登录WordPress博客后台使用的用户名和密码\n\n也可以通过WPConfig（即WordPress配置对象）来更精细化地创建WordPress实例。WPConfig实例构建方式如下：\n\n```java\n        WPConfig config =\n                        new WPConfigBuilder()\n                                .username(USERNAME)\n                                .password(PASSWORD)\n                                .xmlRpcUrl(XML_RPC_URL)\n                                .trustAll(true)\n                                .connectTimeout(3 * 60 * 1000)\n                                .readTimeout(3 * 60 * 1000)\n                                .build();\n```\n\n不建议也不允许直接构建WPConfig实例，正确的方式是通过WPConfigBuilder来完成构建。构建中的几个参数如下：\n\n* trustAll：如博客未启用https，可忽略；如已启用https，建议将之设置为true，否则需要导入证书文件后再进行操作；\n* connectTimeout：连接超时时间，单位ms\n* readTimeout：响应超时时间，单位ms\n\n使用WPConfig实例来创建WordPress实例：\n\n```java\n        WordPress wp = new WordPress(config);\n```\n\n在WordPress类中封装了与WordPress进行交互的各种方法。接下来会逐个详细介绍下。\n\n## 获取作者信息\n\n在WordPress中提供了getUserBlogs和getAuthors两个方法来获取作者信息。\n\n使用getUsersBlogs()方法可以获取非常简单的用户和博客信息：\n```java\n        List\u003cUserBlog\u003e list = wp.getUsersBlogs();\n```\n返回值如下：\n```json\n[\n    {\n        \"blogName\": \"ZY笔记\",\n        \"url\": \"http://www.zhyea.com/\",\n        \"admin\": false,\n        \"blogid\": 1,\n        \"xmlrpc\": \"http://www.zhyea.com/xmlrpc.php\"\n    }\n]\n```\n(为了便于查看，故用json包装了下返回结果)\n\ngetAuthors()方法返回的是用户相关的信息：\n```java\n        List\u003cAuthor\u003e list = wp.getAuthors();\n```\n返回值如下：\n```json\n[\n    {\n        \"user_id\": 1,\n        \"user_login\": \"zhyea\",\n        \"display_name\": \"白42\"\n    },\n    {\n        \"user_id\": 2,\n        \"user_login\": \"robin\",\n        \"display_name\": \"robin\"\n    }\n]\n```\n\n## 新增文章\n\n新增文章可以使用newPost()方法，示例代码如下：  \n```java\n        PostRequest post = new PostRequest();\n        post.setPostTitle(\"测试Title\");\n        post.setPostContent(\"这是一段测试文章内容\");\n        post.setCategories(\"分类1\",\"分类2\");\n        post.setTags(\"a\", \"b\", \"c\");\n        post.setPostName(\"test-post-name\");\n        int postId = wp.newPost(post);\n```\n该方法的返回结果为postId，即文章ID。\n\n* 关于postName和postTitle：postTitle指的是文章标题；postName指的则是文章别名，主要在文章的url路径中使用；通常建议将postName设置为英文字符。\n\n* setCategories设置的是文章分类，如设置的分类在博客中不存在，将会按提交的分类名称创建新的分类。\n\n* setTags设置的是文章标签，同样的，如标签在博客中不存在将会创建新的标签。\n\n更多发布文章的参数可以参考[XML-RPC WordPress API/Posts - newPost](https://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.newPost)文档描述。\n\n## 获取文章\n\n获取文章有两个方法：getPosts和getPost。前者用于获取多篇文章，后者用于根据postId来获取文章。\n\n### getPosts\n\ngetPosts方法如下：\n```java\n    List\u003cPost\u003e getPosts(PostFilter filter, String... fields)\n```\n参数filter决定返回结果的数量、排序字段和排序方式等信息。  \n\n变长参数fields则决定了返回结果中包含哪些字段。如果要返回全部字段，可以不填。使用空字符串或其他非法字段则只返回postId。可用fields值请参考[XML-RPC WordPress API/Posts - getPost](https://codex.wordpress.org/XML-RPC_WordPress_API/Posts#Return_Values)。\n\n示例代码如下：\n```java\n        PostFilter f = new PostFilter();\n        f.setNumber(2);\n        List\u003cPost\u003e list = wp.getPosts(f,\"post_title\");\n```\n\n返回结果为：\n\n```json\n[\n    {\n        \"post_id\": 2174,\n        \"post_title\": \"sbt下载加速方案\"\n    },\n    {\n        \"post_id\": 2170,\n        \"post_title\": \"Java 中文字符按Unicode排序\"\n    }\n]\n```\n\n再次啰嗦下，正常的返回结果是一个Post实例集合，不是json字符串，这里使用json字符串只是为了便于展示。如需要获取json结果集可以自行将结果集转为json，也可以调用wp-client提供的JsonKit.toJson()方法进行处理。\n\n### getPost\n\ngetPost方法如下：\n\n```java\n    Post getPost(int postId, String... fields) \n```\n\n通过postId获取对应文章的信息。变长参数fields的使用请参考getPosts方法。\n\n## 编辑文章\n\n编辑文章调用editPost()方法。\n\n```java\n        PostRequest post = new PostRequest();\n        post.setPostTitle(\"测试编辑\" + System.currentTimeMillis());\n        post.setPostContent(\"这是一段编辑后的测试内容：\" + System.currentTimeMillis());\n        boolean result = wp.editPost(29, post);\n```\n编辑文章时需要通过PostRequest实例完成。\n\n注意，只需要为**要修改**的PostRequest属性赋值，不需修改的属性保留默认值即可。\n\n## 删除文章\n\n删除文章通过调用deletePost方法并传递postId来完成。\n\n```java\n        int postId = 26;\n        boolean result = wp.deletePost(postId);\n```\n\n# 其他\n\nwp-client目前只提供了一些WordPress的基础操作，并不能完全覆盖[WordPress XML-RPC API](https://codex.wordpress.org/XML-RPC_WordPress_API)提供的全部功能，需要在后续的时间内陆续完成。  \n\n此外，因为一开始wp-client的开发只是为了自己使用，难免有些不足之处。如有想法还请抽时间[提个issue](https://github.com/zhyea/wordpress-client/issues)，或者在[我的博客](http://www.zhyea.com)上留言点出。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhyea%2Fwordpress-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhyea%2Fwordpress-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhyea%2Fwordpress-client/lists"}