We'll create fresh WordPress site with IdeaPress – Turn WordPress into Mobile Apps (Android, iPhone, WinPhone) installed. You have 20 minutes to test the plugin after that site we'll be deleted.
IdeaPress convert your wordpress (both wordpress.com and self hosted site) into Android, iOS, winphone and windows app! It is used to compliment Ideapress multi-screen application.
IdeaPress aims to make the mobile app space more accessible to everyone by providing an avenue for coders and non-coders to develop beautiful apps.
IdeaPress has been endorsed by Microsoft CANADA and it is used by magazines and wordpress shop around the world. It has been showcase in WordCamp 2013 DemoCamp, StartUpTO, DevTO. If you want to turn your wordpress site into iOS, Android and WinPhone, it might be the tool for you.
IdeaPress is an online that convert your site into moible app in 3 steps. WordPress is best known for its ease-of-use and customization options. When you’re making your iOS, Android and Winphone apps with IdeaPress, you get to choose exactly how you want to make your app ranging from the content that’s included to the design and styling. In addition, we will help you publish to app store.
IdeaPress comes with loads of features out of the box
Tired of not being able to read your content you have no internet? Solve the problem with IdeaPress! IdeaPress stores the content of your website so that it can be accessed on mobile devices anytime, anywhere!
Choose which categories and pages you want to include in your apps and even choose different content for platforms, whether it be iOS, Android or Windows Phone. IdeaPress format your content to fit on all devices, so your posts and pages look good on the go!
One of the main reasons to get an app over a mobile website is to take advantage of device native features. IdeaPress apps can harness the power of the devices that they are on across all platforms and let users search the content of your website, share posts and pages and bookmark articles for later viewing.
While most apps have to be resubmitted to the store when updating, IdeaPress apps can be updated through your dashboard and have the changes pushed directly to the apps withing minutes without re-publishing. Users get to benefit from your changes almost instantly instead of waiting for store certification.
This plugin is developed by Idea Notion
This plugin is developed base on JSON-API, it will add additional functionality to the original JSON API, slim down the return objects and add additional functionality for Ideapress applications
This plugin base on WordPress JSON-API plugin and we modified the plugin to taylor the need of Ideapress multi-screen application. Most of the methods are supported, an additional get_recent_posts_on_hub is being added for smaller return size and Posts Control is dropped. The rest of this section is base on JSON-API documentation.
Requests use a simple REST-style HTTP GET or POST. To invoke the API, include a non-empty query value for json
in the URL.
JSON API operates in two modes:
json
query var to a non-empty value on any WordPress page. The content that would normally appear on that page is returned in JSON format.json
to a known method string. See Section 2: Request methods for a complete method listing.http://www.example.org/?json=1
http://www.example.org/?p=47&json=1
http://www.example.org/tag/banana/?json=1
http://www.example.org/?json=get_recent_posts
http://www.example.org/?json=get_post&post_id=47
http://www.example.org/?json=get_tag_posts&tag_slug=banana
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
Further reading
See Section 3: Request arguments for more information about request arguments to modify the response.
The 1.0 release of JSON API introduced a modular controller system. This allows developers to flexibly add features to the API and give users more control over which methods they have enabled.
Most of the methods available prior to version 1.0 have been moved to the Core controller. The two exceptions are submit_comment
and create_post
which are now available from the Respond and Posts controllers, respectively. The Core controller is the only one enabled by default. All other functionality must be enabled from the JSON API Settings page (under Settings in the WordPress admin menu).
There are a few ways of specifying a controller, depending on how you are calling the API:
http://www.example.org/?json=get_recent_posts
(core
controller is implied, method is get_recent_posts
)http://www.example.org/api/info/
(core
controller is implied)http://www.example.org/api/core/get_category_posts/
(core
controller can also be explicitly specified)http://www.example.org/?json=respond.submit_comment
(respond
controller, submit_comment
method)Legacy compatibility
JSON API retains support for its pre-1.0 methods. For example, if you invoke the method create_post
without a controller specified, the Posts controller is chosen instead of Core.
The current release includes three controllers: Core, Posts, and Respond. Developers are encouraged to suggest or submit additional controllers.
Further reading
See Section 2: Request methods for a complete reference of available controllers and methods. For documentation on extending JSON API with new controllers see Section 5.2: Developing JSON API controllers.
The standard response format for JSON API is (as you may have guessed) JSON.
Here is an example response from http://localhost/wordpress/?json=1
called on a default WordPress installation (formatted for readability):
{
"status": "ok",
"count": 1,
"count_total": 1,
"pages": 1,
"posts": [
{
"id": 1,
"type": "post",
"slug": "hello-world",
"url": "http:\/\/localhost\/wordpress\/?p=1",
"title": "Hello world!",
"title_plain": "Hello world!",
"content": "<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!<\/p>\n",
"excerpt": "Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!\n",
"date": "2009-11-11 12:50:19",
"modified": "2009-11-11 12:50:19",
"categories": [],
"tags": [],
"author": {
"id": 1,
"slug": "admin",
"name": "admin",
"first_name": "",
"last_name": "",
"nickname": "",
"url": "",
"description": ""
},
"comments": [
{
"id": 1,
"name": "Mr WordPress",
"url": "http:\/\/wordpress.org\/",
"date": "2009-11-11 12:50:19",
"content": "<p>Hi, this is a comment.<br \/>To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.<\/p>\n",
"parent": 0
}
],
"comment_count": 1,
"comment_status": "open"
}
]
}<h3>2. Request methods</h3>
Request methods are available from the following controllers:
The Core controller offers a mostly-complete set of introspection methods for retrieving content from WordPress.
Returns information about JSON API.
controller
– returns detailed information about a specific controller{
"status": "ok",
"json_api_version": "1.0",
"controllers": [
"core"
]
}
{
"status": "ok",
"name": "Core",
"description": "Basic introspection methods",
"methods": [
...
]
}<h3>Method: get_recent_posts</h3>
Returns an array of recent posts. You can invoke this from the WordPress home page either by setting json
to a non-empty value (i.e., json=1
) or from any page by setting json=get_recent_posts
.
count
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: get_recent_posts_on_hub</h3>
Returns an array of recent posts. You can invoke this from any page by setting json=get_recent_posts_on_hub
. This function slims down the content because on hub page, multi-screen app doesn’t need the full content and it remove the return comments to decrease the size of return item.
count
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: ideapress_server_ping</h3>Returns true. Make sure the the server has installed the plugin
{
"status": "ok",
"result": true
}<h3>Method: get_post</h3>
Returns a single post object.
?json=1
) on a post URLid
or post_id
– set to the post’s IDslug
or post_slug
– set to the post’s URL slugpost_type
– used to retrieve custom post types{
"status": "ok",
"post": { ... }
}<h3>Method: get_page</h3>
Returns a single page object.
?json=1
) on a page URLid
or page_id
– set to the page’s IDslug
or page_slug
– set to the page’s URL slugchildren
– set to a non-empty value to include a recursive hierarchy of child pagespost_type
– used to retrieve custom post types{
"status": "ok",
"page": { ... }
}<h3>Method: get_date_posts</h3>
Returns an array of posts/pages in a specific date archive (by day, month, or year).
?json=1
) on a date archive pagedate
– set to a date in the format YYYY
or YYYY-MM
or YYYY-MM-DD
(non-numeric characters are stripped from the var, so YYYYMMDD
or YYYY/MM/DD
are also valid)count
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: get_category_posts</h3>
Returns an array of posts/pages in a specific category.
?json=1
) on a category archive pageid
or category_id
– set to the category’s IDslug
or category_slug
– set to the category’s URL slugcount
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"category": { ... }
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: get_tag_posts</h3>
Returns an array of posts/pages with a specific tag.
?json=1
) on a tag archive pageid
or tag_id
– set to the tag’s IDslug
or tag_slug
– set to the tag’s URL slugcount
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"tag": { ... }
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: get_author_posts</h3>
Returns an array of posts/pages written by a specific author.
?json=1
) on an author archive pageid
or author_id
– set to the author’s IDslug
or author_slug
– set to the author’s URL slugcount
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"author": { ... }
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: get_search_results</h3>
Returns an array of posts/pages in response to a search query.
?json=1
) on a search results pagesearch
– set to the desired search querycount
– determines how many posts per page are returned (default value is 10)page
– return a specific page number from the resultspost_type
– used to retrieve custom post types{
"status": "ok",
"count": 10,
"count_total": 79,
"pages": 7,
"posts": [
{ ... },
{ ... },
...
]
}<h3>Method: get_date_index</h3>
Returns both an array of date page permalinks and a tree structure representation of the archive.
{
"status": "ok",
"permalinks": [
"...",
"...",
"..."
],
"tree": {
"2009": {
"09": 17,
"10": 20,
"11": 7
}
}
Note: the tree is arranged by response.tree.[year].[month].[number of posts]
.
Returns an array of active categories.
{
"status": "ok",
"count": 3,
"categories": [
{ ... },
{ ... },
{ ... }
]
}<h3>Method: get_tag_index</h3>
Returns an array of active tags.
{
"status": "ok",
"count": 3
"tags": [
{ ... },
{ ... },
{ ... }
]
}<h3>Method: get_author_index</h3>
Returns an array of active blog authors.
{
"status": "ok",
"count": 3,
"authors": [
{ ... },
{ ... },
{ ... }
]
}<h3>Method: get_page_index</h3>
Returns a hierarchical tree of page
posts.
{
"status": "ok",
"pages": [
{ ... },
{ ... },
{ ... }
]
}<h3>Method: get_nonce</h3>
Returns a WordPress nonce value, required to call some data manipulation methods.
controller
– the JSON API controller for the method you will use the nonce formethod
– the method you wish to call (currently create_post
is the only method that requires a nonce){
"status": "ok",
"controller": "posts",
"method": "create_post",
"nonce": "cefe01efd4"
}
Further reading
To learn more about how nonces are used in WordPress, see Mark Jaquith’s article on the subject.
Creates a new post.
nonce
– available from the get_nonce
method (call with vars controller=posts
and method=create_post
)status
– sets the post status (“draft” or “publish”), default is “draft”title
– the post titlecontent
– the post contentauthor
– the post’s author (login name), default is the current logged in usercategories
– a comma-separated list of categories (URL slugs)tags
– a comma-separated list of tags (URL slugs)Note: including a file upload field called attachment
will cause an attachment to be stored with your new post.
Submits a comment to a WordPress post.
post_id
– which post to comment onname
– the commenter’s nameemail
– the commenter’s email addresscontent
– the comment contentredirect
– redirect instead of returning a JSON objectredirect_ok
– redirect to a specific URL when the status value is ok
redirect_error
– redirect to a specific URL when the status value is error
redirect_pending
– redirect to a specific URL when the status value is pending
pending
– assigned if the comment submission is pending moderationAPI requests can be controlled by specifying one of the following arguments as URL query vars.
http://www.example.org/api/get_page_index/?dev=1
http://www.example.org/api/get_recent_posts/?callback=show_posts_widget&read_more=More&count=3
http://www.example.org/api/posts/create_post/?callback_error=http%3A%2F%2Fwww.example.org%2Fhelp.html
The following arguments modify how you get results back from the API. The redirect response styles are intended for use with the data manipulation methods.
callback
to a JavaScript function name will trigger a JSONP-style callback.redirect
to a URL will cause the user’s browser to redirect to the specified URL with a status
value appended to the query vars (see the Response objects section below for an explanation of status values).redirect_[status]
allows you to control the resulting browser redirection depending on the status
value.dev
to a non-empty value adds whitespace for readability and responds with text/plain
These arguments are available to modify all introspection methods:
date_format
– Changes the format of date values. Uses the same syntax as PHP’s date() function. Default value is Y-m-d H:i:s
.read_more
– Changes the ‘read more’ link text in post content.include
– Specifies which post data fields to include. Expects a comma-separated list of post fields. Leaving this empty includes all fields.exclude
– Specifies which post data fields to exclude. Expects a comma-separated list of post fields.custom_fields
– Includes values from posts’ Custom Fields. Expects a comma-separated list of custom field keys.author_meta
– Includes additional author metadata. Should be a comma-separated list of metadata fields.count
– Controls the number of posts to include (defaults to the number specified by WordPress)order
– Controls the order of post results (‘DESC’ or ‘ASC’). Default value is ‘DESC’.order_by
– Controls which field to order results by. Expects one of the following values:
author
date
(default value)title
modified
menu_order
(only works with Pages)parent
ID
rand
meta_value
(meta_key
must also be set)none
comment_count
meta_key
, meta_value
, meta_compare
– Retrieve posts (or Pages) based on a custom field key or value.About include
/exclude
arguments
By default you get all values included with each post object. Specify a list of include
values will cause the post object to filter out the values absent from the list. Specifying exclude
causes post objects to include all values except the fields you list. For example, the query exclude=comments
includes everything except the comments.
About the redirect
argument
The redirect
response style is useful for when you need the user’s browser to make a request directly rather than making proxy requests using a tool like cURL. Setting a redirect
argument causes the user’s browser to redirect back to the specified URL instead of returning a JSON object. The resulting status
value is included as an extra query variable.
For example calling an API method with redirect
set to http://www.example.com/foo
will result in a redirection to one of the following:
http://www.example.com/foo?status=ok
http://www.example.com/foo?status=error
You can also set separate URLs to handle status values differently. You could set redirect_ok
to http://www.example.com/handle_ok
and redirect_error
to http://www.example.com/handle_error
in order to have more fine-tuned control over the method result.
This section describes data objects you can retrieve from WordPress and the optional URL redirects.
Status values
All JSON API requests result in a status value. The two basic status values are ok
and error
. Additional status values are available for certain methods (such as pending
in the case of the submit_comment
method). API methods that result in custom status values include a custom status values section in their documentation.
Naming compatibility
Developers familiar with WordPress may notice that many names for properties and arguments have been changed. This was a stylistic choice that intends to provide more clarity and consistency in the interface.
id
– Integertype
– String (e.g., post
or page
)slug
– Stringurl
– Stringtitle
– Stringtitle_plain
– Stringcontent
– String (modified by the read_more
argument)excerpt
– Stringdate
– String (modified by the date_format
argument)modified
– String (modified by the date_format
argument)categories
– Array of category objectstags
– Array of tag objectsauthor
Author objectcomments
– Array of comment objectsattachments
– Array of attachment objectscomment_count
– Integercomment_status
– String ("open"
or "closed"
)thumbnail
– String (only included if a post thumbnail has been specified)custom_fields
– Object (included by setting the custom_fields
argument to a comma-separated list of custom field names)Note
The thumbnail
attribute returns a URL to the image size specified by the optional thumbnail_size
request argument. By default this will use the thumbnail
or post-thumbnail
sizes, depending on your version of WordPress. See Mark Jaquith’s post on the topic for more information.
id
– Integerslug
– Stringtitle
– Stringdescription
– Stringparent
– Integerpost_count
– Integerid
– Integerslug
– Stringtitle
– Stringdescription
– Stringpost_count
– Integerid
– Integerslug
– Stringname
– Stringfirst_name
– Stringlast_name
– Stringnickname
– Stringurl
– Stringdescription
– StringNote: You can include additional values by setting the author_meta
argument to a comma-separated list of metadata fields.
id
– Integername
– Stringurl
– Stringdate
– Stringcontent
– Stringparent
– Integerauthor
– Object (only set if the comment author was registered & logged in)id
– Integerurl
– Stringslug
– Stringtitle
– Stringdescription
– Stringcaption
– Stringparent
– Integermime_type
– Stringimages
– Object with values including thumbnail
, medium
, large
, full
, each of which are objects with values url
, width
and height
(only set if the attachment is an image)