worldpress实现自定义字段和api接口

前言

一个朋友是做培训的,需要做一个官网。原来的站是静态的。现在需要一个动态的。考虑许久,我选择了使用wordpress来实现这个需求。经过1天折腾,终于成功。特此记录。

过程

  • 搭建wordpress程序。
    可以选择docker或者下载源码安装。没什么好说的。此时最新的版本是5.2.2

  • 配置nginx
    通用的nginx+php即可。这里特别注意,需要添加下面的配置,wordpress中的路由会依赖它。

location / {
           
                try_files $uri $uri/ /index.php?$args;
        }

try_files
这个指令可以按照参数顺序检查文件是否存在,以及返回第一个被找到的文件名,以"/"结尾的表示一个目录。如果文件没有找到,将被内部重定向到最后一个参数上。最后的参数是一个后备的URI,它必须存在,否则会报内部错误。

  • 安装插件

需要安装2个插件。

api的插件 json-api
https://wordpress.org/plugins/json-api/

自定义字段插件 Advanced Custom Fields
https://wordpress.org/plugins/advanced-custom-fields/

推荐安装的插件

阿里云oss插件 aliyun-oss-support
aliyun-oss-support
该插件在插件库搜不到,未发布到官方库。

  • 插件使用
    自定义字段插件,没特别的地方。直接添加自己需要的字段即可。

api插件,提供的接口文档看这里。
https://wordpress.org/plugins/json-api/

这里需要注意,如果你的nginx配置不对,以下接口访问会404

http://www.example.org/api/get_recent_posts/
http://www.example.org/api/get_post/?post_id=47
http://www.example.org/api/get_tag_posts/?tag_slug=banana
  • 跨域的问题

这个项目我使用的是前端部署在a.com下。wordpress部署在b.com下。
为了避免跨域问题,需要增加 反向代理配置。
例如a.com/api 指向 b.com/api
在a.com下增加配置

location /api/ {
            proxy_pass    http://b.com/api/
    }
  • 举例介绍接口


    worldpress实现自定义字段和api接口_第1张图片
    image.png

普通接口,例如检索指定分类的文章列表为例。
接口地址 get_category_posts
参数传递 分类的 id 或者分类的别名 slug 即可。

复杂的检索,例如检索 多个分类的文章。
接口地址 get_posts
参数传递 category__in 值为 1,2
则会查询 分类id 为1和2的文章。

更多复杂检索 参考 https://codex.wordpress.org/Class_Reference/WP_Query

  • 最后

wordpress非常强大,无需写一行代码,我们就完成了复杂的需求实现。

你可能感兴趣的:(worldpress实现自定义字段和api接口)