パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v10.1.0

wordpress_client

WordPress REST API とやり取りするためのライブラリです。一般的なエンドポイントのほとんどと、エンドポイントでのすべての CRUD 操作をサポートしています。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
1370
いいね数
38
Pub ポイント
140

パッケージをインストール

flutter pub add wordpress_client

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Flutter/Dart パッケージで、WordPress REST API とのスムーズな相互作用を可能にします。一般的なエンドポイントと、投稿、ページ、コメントなどに対する完全な CRUD 操作をサポートしています。WordPress サイトと連携するアプリを開発する開発者向けに設計されており、複数のプラットフォーム間でのデータ取得と管理を簡素化します。軽量で、ドキュメントが充実しており、積極的にメンテナンスされています。

用途

  • ブログ投稿とページを取得しています
  • プログラムによるコンテンツの作成と更新
  • コメントとメディアの管理
  • カスタムWordPressフロントエンドの構築
  • WordPressをヘッドレスCMSとして統合する

主な機能

  • コアエンドポイントの完全な CRUD サポート
  • クロスプラットフォーム互換性
  • シンプルで直感的な API
  • トークンを介した認証をサポートしています
  • 組み込みエラー処理と応答パース

適している対象

  • WordPress インテグレーションが必要なFlutterアプリ
  • ヘッドレスCMSアプリケーション
  • コンテンツ駆動型のモバイルおよびウェブアプリ
  • WordPress をバックエンドとして使用する開発者

注意事項

  • 有効な WordPress REST API アクセスが必要です
  • 保護されたエンドポイント用の認証設定が必要です
  • WordPress REST API 機能に限定
  • 複雑なWordPress固有の論理には適していません
  • 外部のWordPressサーバーの安定性に依存する

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

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 REST endpoints.
  • 🧩 GraphQL (WPGraphQL) support: client.graphql.query/mutate/raw() with auth.
  • 🎨 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.
  • 🌊 Polling-based streaming for single-resource retrieve endpoints (works great with Riverpod's StreamProvider).

📦 Install

Add wordpress_client to your pubspec.yaml:

dependencies:
  wordpress_client: ^9.2.0

Then run flutter pub get or dart pub get.

🔧 Quick start

Import and initialize:

import 'package:wordpress_client/wordpress_client.dart';

final client = WordpressClient.forSite(
  siteUrl: Uri.parse('https://example.com'),
  // or: baseUrl via WordpressClient(baseUrl: Uri.parse('.../wp-json/wp/v2'))
);
🧩 GraphQL (WPGraphQL)

If your site uses the WPGraphQL plugin (canonical), you can send GraphQL operations using the same client and auth.

final client = WordpressClient.forSite(
  siteUrl: Uri.parse('https://example.com'),
  bootstrapper: (b) => b
    .withDefaultAuthorization(
      WordpressAuth.appPassword(user: 'user', appPassword: 'xxxx-xxxx'),
    )
    .build(),
);

// Auto-resolves https://example.com/graphql from the REST base.
final result = await client.graphql.query<List<Map<String, dynamic>>>(
  document: '''
    query Posts($limit: Int!) {
      posts(first: $limit) {
        nodes { id title }
      }
    }
  ''',
  variables: { 'limit': 5 },
  parseData: (data) {
    final nodes = (data['posts']?['nodes'] as List<dynamic>? ?? const [])
        .cast<Map<String, dynamic>>();
    return nodes;
  },
  requireAuth: false, // set true for restricted queries/mutations
);

switch (result) {
  case WordpressSuccessResponse():
    print(result.data);
  case WordpressFailureResponse():
    print('GraphQL error: ${result.error}');
}

// Custom endpoint path if your site exposes a different GraphQL path
client.graphql.setEndpointPath('/custom-graphql');

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

カテゴリー

依存関係

依存関係一覧 8 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。