wordpress_client 9.0.0 copy "wordpress_client: ^9.0.0" to clipboard
wordpress_client: ^9.0.0 copied to clipboard

A library to interact with the Wordpress REST API. Supports most of the common endpoints and all of the CRUD operations on the endpoints.

WordPress Client

Pub Version License Stars
Dart Flutter WordPress
The modern, strongly‑typed WordPress REST API client for Dart & Flutter — fast, flexible, and production‑ready.

🚀 Features #

  • 📦 API discovery support.
  • ⏲️ Measures request completion time.
  • 📝 Supports all CRUD operations.
  • 🌐 Supports all common endpoints.
  • 🎨 Custom Requests & Authorization systems.
  • 🔐 3 Popular authorization methods.
  • 🗄️ Third‑party Database integration.
  • 🔧 Middlewares for request & response operations.
  • 🎣 Events for preprocessing response.
  • 🚀 Execute requests in Parallel (with configurable error handling).
  • 🧠 Optional in‑memory caching for GET requests.

If something you need is missing, please open a discussion: https://github.com/ArunPrakashG/wordpress_client/discussions/55

📦 Install #

Add wordpress_client to your pubspec.yaml:

dependencies:
  wordpress_client: ^9.0.0

💡 Ensure you get the latest version on pub.dev: https://pub.dev/packages/wordpress_client

Then run flutter pub get or dart pub get.

🔧 Quick start #

Import the package:

import 'package:wordpress_client/wordpress_client.dart';

Initialize from a site root URL (recommended):

final client = WordpressClient.forSite(
  siteUrl: Uri.parse('https://example.com'),
);

Or pass the REST base directly:

final client = WordpressClient(
  baseUrl: Uri.parse('https://example.com/wp-json/wp/v2'),
);

Add an auth quickly (helpers available):

final client = WordpressClient.forSite(
  siteUrl: Uri.parse('https://example.com'),
  bootstrapper: (b) => b
    .withDefaultAuthorization(
      // Built-in helpers
      WordpressAuth.appPassword(user: 'user', appPassword: 'xxxx-xxxx'),
      // or: WordpressAuth.usefulJwt(user: 'user', password: 'pass', device: 'device-id')
      // or: WordpressAuth.basicJwt(user: 'user', password: 'pass')
    )
    .build(),
);

Enable caching via middleware (optional):

final client = WordpressClient(
  baseUrl: Uri.parse('https://example.com/wp-json/wp/v2'),
  bootstrapper: (b) => b
    .withCache(
      ttl: const Duration(minutes: 5),               // optional, default 1 minute
      // cache: MyCustomCacheManager(),              // optional custom store
      // clearOnWrite: false,                        // keep cache after POST/PUT/PATCH/DELETE
    )
    .build(),
);

📝 Notes: applies to GET requests; default store is in-memory (custom stores supported); cache clears by default on writes.

📩 Send a request #

Retrieve 20 recent posts in ascending order:

final request = ListPostRequest(
  page: 1,
  perPage: 20,
  order: Order.asc,
);

final response = await client.posts.list(request);

// Dart 3 pattern matching
switch (response) {
  case WordpressSuccessResponse():
    final data = response.data; // List<Post>
    break;
  case WordpressFailureResponse():
    final error = response.error; // WordpressError
    break;
}

// Or use helpers
final posts = (await client.posts.list(ListPostRequest(perPage: 20))).map(
  onSuccess: (s) => s.data,
  onFailure: (f) => <Post>[],
);

final justPosts = (await client.posts.list(ListPostRequest(perPage: 20))).dataOrThrow();

Convenience extensions are available under client.<interface>.extensions for quick lookups and pagination:

final post = await client.posts.extensions.getById(123);
final allMedia = await client.media.extensions.listAll(perPage: 100);

📚 Advanced docs (Wiki) #

Deep-dives and more examples live in the Wiki:

🤝 Feedback & Contributing #

  • 🐛 For bugs or feature requests, use the issue tracker.
  • 💡 Contributions are always appreciated. PRs are welcome!

Contributor tips (scripts, release process, consistency guards) are documented in the Wiki.

📄 License #

This project is MIT licensed.


If you find this package helpful, consider supporting the development:

Buy Me A Coffee

37
likes
0
points
1.47k
downloads

Publisher

verified publisherarunprakashg.com

Weekly Downloads

A library to interact with the Wordpress REST API. Supports most of the common endpoints and all of the CRUD operations on the endpoints.

Repository (GitHub)
View/report issues

Topics

#wordpress #parallel #crud #rest

Documentation

Documentation

Funding

Consider supporting this project:

www.buymeacoffee.com

License

unknown (license)

Dependencies

collection, cookie_jar, dio, dio_cookie_manager, http_parser, meta, path

More

Packages that depend on wordpress_client