美文网首页工作生活
worldpress实现自定义字段和api接口

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

作者: 有时右逝 | 来源:发表于2019-07-03 09:08 被阅读0次

    前言

    一个朋友是做培训的,需要做一个官网。原来的站是静态的。现在需要一个动态的。考虑许久,我选择了使用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/
        }
    
    • 举例介绍接口


      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接口

        本文链接:https://www.haomeiwen.com/subject/cbefhctx.html