搜索插件、代码仓与 APP 分类

插件详情v0.2.1

flutter_wordpress

此库使用 WordPress REST-API-V2,为您的应用程序提供与您的 WordPress 网站进行交互的方式。

近 30 天下载
65
喜欢数
120
Pub 分数
40

安装插件

flutter pub add flutter_wordpress

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

flutter_wordpress 包使 Flutter 应用程序能够使用 WordPress REST API v2 与 WordPress 网站进行交互。它提供了一种结构化的方式来获取文章、页面、评论和其他内容,使构建从 WordPress 后端拉取数据的动态应用程序变得简单。该库专为希望将其现有的 WordPress 站点集成到移动应用程序中的开发者设计,无需复杂的自定义 API。

适合场景

  • 从 WordPress 获取博客文章
  • 显示页面和自定义内容
  • 集成用户评论
  • 为WordPress网站构建移动应用
  • 在网页和移动设备之间同步内容

主要特点

  • REST API v2 集成
  • 简单数据获取方法
  • 支持帖子、页面和评论
  • 轻量且易于实现
  • 与标准 WordPress 设置兼容

适合对象

  • 使用 WordPress 的移动应用开发者
  • 内容驱动的应用程序
  • 博客平台
  • 包含公开内容的网站
  • 寻求快速 WordPress 集成的开发人员

使用建议

  • 需要启用 REST API 的 WordPress 网站
  • 仅限公共端点,除非已认证
  • 无内置缓存或离线支持
  • 依赖外部服务器的稳定性
  • 身份验证需要为私有内容进行额外设置

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Flutter Wordpress

pub.dev

This library uses WordPress REST API V2 to provide a way for your application to interact with your WordPress website.

Tutorial - by Ritesh Sharma

Screenshots

Requirements

For authentication and usage of administrator level REST APIs, you need to use either of the two popular authentication plugins in your WordPress site:

  1. Application Passwords
  2. JWT Authentication for WP REST API (recommended)

Getting Started

1. Import library
First:

Find your pubspec.yaml in the root of your project and add flutter_wordpress: ^0.2.0 under dependencies:

Second:
import 'package:flutter_wordpress/flutter_wordpress.dart' as wp;
2. Instantiate WordPress class
wp.WordPress wordPress;

// adminName and adminKey is needed only for admin level APIs
wordPress = wp.WordPress(
  baseUrl: 'http://localhost',
  authenticator: wp.WordPressAuthenticator.JWT,
  adminName: '',
  adminKey: '',
);
3. Authenticate User
Future<wp.User> response = wordPress.authenticateUser(
  username: 'ChiefEditor',
  password: 'chiefeditor@123',
);

response.then((user) {
  createPost(user);
}).catchError((err) {
  print('Failed to fetch user: $err');
});
4. Fetch Posts
Future<List<wp.Post>> posts = wordPress.fetchPosts(
  postParams: wp.ParamsPostList(
    context: wp.WordPressContext.view,
    pageNum: 1,
    perPage: 20,
    order: wp.Order.desc,
    orderBy: wp.PostOrderBy.date,
  ),
  fetchAuthor: true,
  fetchFeaturedMedia: true,
  fetchComments: true,
  postType: 'post'
);
5. Fetch Users
Future<List<wp.User>> users = wordPress.fetchUsers(
  params: wp.ParamsUserList(
    context: wp.WordPressContext.view,
    pageNum: 1,
    perPage: 30,
    order: wp.Order.asc,
    orderBy: wp.UsersOrderBy.name,
    roles: ['subscriber'],
  ),
);
6. Fetch Comments
Future<List<wp.Comment>> comments = wordPress.fetchComments(
  params: wp.ParamsCommentList(
    context: wp.WordPressContext.view,
    pageNum: 1,
    perPage: 30,
    includePostIDs: [1],
  ),
);
7. Create User
Future<void> createUser({@required String email, @required String username, @required String password, @required List<String> roles}) async {
    await widget.wordPress.createUser(
      user: wp.User(
        email: email,
        password: password,
        username: username,
        roles: roles
      )
    ).then((p) {
      print('User created successfully ${p}');
    }).catchError((err) {
      print('Failed to create user: $err');
    });
  }
8. Create Post
  void createPost({@required wp.User user}) {
    final post = widget.wordPress.createPost(
      post: new wp.Post(
        title: 'First post as a Chief Editor',
        content: 'Blah! blah! blah!',
        excerpt: 'Discussion about blah!',
        authorID: user.id,
        commentStatus: wp.PostCommentStatus.open,
        pingStatus: wp.PostPingStatus.closed,
        status: wp.PostPageStatus.publish,
        format: wp.PostFormat.standard,
        sticky: true,
      ),
    );

    post.then((p) {
      print('Post created successfully with ID: ${p.id}');
    }).catchError((err) {
      print('Failed to create post: $err');
    });
  }
9. create Comment
  void createComment({@required int userId, @required int postId}) {
    final comment = widget.wordPress.createComment(
      comment: new wp.Comment(
        author: userId,
        post: postId,
        content: "First!",
        parent: 0,
      ),
    );

    comment.then((c) {
      print('Comment successfully posted with ID: ${c.id}');
    }).catchError((err) {
      print('Failed to comment: $err');
    });
  }
10. Update Comment
Future<void> updateComment({@required int id, @required int postId, @required wp.User user}) async {
    await widget.wordPress.updateComment(
      comment: new wp.Comment(
        content: "Comment Updated2!",
        author: user.id,
        post: postId,
      ),
      id: id,
    ).then((c) {
      print('Comment updated successfully "$c"');
    }).catchError((err) {
      print('Failed to update Comment: $err');
    });
  }
11. Update Post
Future<void> updatePost({@required int id, @required int userId}) async {
    await widget.wordPress.updatePost(
      post: new wp.Post(
        title: 'First post as a Chief Editor',
        content: 'Blah! blah! blah!',
        excerpt: 'Discussion about blah!',
        authorID: userId,
        commentStatus: wp.PostCommentStatus.open,
        pingStatus: wp.PostPingStatus.closed,
        status: wp.PostPageStatus.publish,
        format: wp.PostFormat.standard,
        sticky: true,
      ),
      id: id, //
    ).then((p) {
      print('Post updated successfully with ID ${p}');
    }).catchError((err) {
      print('Failed to update post: $err');
    });
  }
12. Update User
Future<void> updateUser({@required int id, @required String username, @required String email}) async {
    await widget.wordPress.updateUser(
      user: new wp.User(
        description: "This is description for this user",
        username: username,
        id: id,
        email: email
      ),
      id: id,
    ).then((u) {
      print('User updated successfully $u');
    }).catchError((err) {
      print('Failed to update User: $err');
    });
  }
13. Delete Comment
Future<void> deleteComment({@required int id}) async {
    await widget.wordPress.deleteComment(id: id).then((c) {
      print('Comment Deleted successfully: $c');
    }).catchError((err) {
      print('Failed to Delete comment: $err');
    });
  }
14. Delete Post
  Future<void> deletePost({@required int id}) async {
    await widget.wordPress.deletePost(id: id).then((p) {
      print('Post Deleted successfully: $p');
    }).catchError((err) {
      print('Failed to Delete post: $err');
    });
  }
15. Delete User
  Future<void> deleteUser({@required int id, @required int reassign}) async {
    await widget.wordPress.deleteUser(id: id, reassign: reassign).then((u) {
      print('User Deleted successfully: $u');
    }).catchError((err) {
      print('Failed to Delete user: $err');
    });
  }
16. Upload Media
  uploadMedia(File image) async {
  var media = await wordPress.uploadMedia(image).then((m) {
    print('Media uploaded successfully: $m');
  }).catchError((err) {
    print('Failed to upload Media: $err');
  });
  int mediaID = media['id'];  
}

Future Work

  1. Implementing OAuth 2.0 authentication.

Contributors

所属分类

依赖

依赖清单 2 项

源码仓库

使用此插件的项目

暂无相关数据。