I am building a mobile with Google Flutter Framework and using Wordpress as the backend for my app. I want to fetch Wordpress Custom Post Type data in JSON format in Flutter with Chopper Retrofit of Flutter API.

Can anyone help me to build a sample code so I can get started with ease? I worked with this ( Flutter Wordpress ) but I don't know how to use Custom Post Types with this.

https://github.com/dreamsoftin/flutter_wordpress

Or if anyone knows how to use this and fetch custom post types then it would be more easy for me.

Please Help! Thank you!


Solution 1: Nikola Kirincic

Looking at the package you want to use to build a mobile app, there is no example and solution for custom types, (https://github.com/dreamsoftin/flutter_wordpress), but you could fork it, and extend it for specific custom post types. I will show you an example of how to do this (custom fields are excluded):

In flutter_wordpress/lib/constants.dart

add after line #10 const URL_POSTS = '$URL_WP_BASE/posts';

the line for an endpoint for your custom post. Say you have custom post book, you will add an endpoint books:

const URL_BOOKS = '$URL_WP_BASE/books';

see explanation about this and how to enable REST API for the custom post type here:

https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-rest-api-support-for-custom-content-types/#registering-a-custom-post-type-with-rest-api-support

Then in the flutter_wordpress/lib/requests/ folder, find, clone and rename file:

params_post_list.dart to params_book_list.dart

And rename here class ParamsPostList to class ParamsBookList

in folder flutter_wordpress/lib/schemas/ find

post.dart copy and rename to book.dart

And rename here class Post to class Book

Then in the file flutter_wordpress/lib/flutter_wordpress.dart:

find line import 'schemas/post.dart'; and after that add line import 'schemas/book.dart';

find line export 'requests/params_post_list.dart'; and after that add line export 'requests/params_book_list.dart';

find line export 'schemas/post.dart'; and after that add line export 'schemas/book.dart';

Then find functions

async.Future<List<Post>> fetchPosts()

Future<Post> _postBuilder()

async.Future<Post> createPost({@required Post post})

copy these functions rename it and replace Post with Book (case sensitive)

note: find URL_POSTS in copied functions and rename to URL_BOOKS