我是Android开发的新手,我正在尝试创建一个只显示WordPress网站上的帖子类别和帖子的应用。请帮助我。
答案 0 :(得分:8)
您要做的是从WordPress创建某种REST API,以返回对您的Android HTTP请求的JSON响应。要做到这一点,首先针对Android,您可以参考这篇文章:
Make an HTTP request with android
然后,对于服务器端(您的WordPress),您将不得不添加一个插件来处理您的API请求。为此,在wp-content / plugins中创建一个名为api-endpoint.php的文件,并使用以下内容:
<?php
class API_Endpoint{
/** Hook WordPress
* @return void
*/
public function __construct(){
//Ensure the $wp_rewrite global is loaded
add_filter('query_vars', array($this, 'add_query_vars'), 0);
add_action('parse_request', array($this, 'sniff_requests'), 0);
add_action('init', array($this, 'add_endpoints'), 0);
}
/**
* Add public query vars
* @param array $vars List of current public query vars
* @return array $vars
*/
public function add_query_vars($vars){
$vars[] = '__api';
return $vars;
}
/**
* Add API Endpoints
* Regex for rewrites - these are all your endpoints
* @return void
*/
public function add_endpoints(){
//Get videos by category - as an example
add_rewrite_rule('^api/videos/?([0-9]+)?/?','index.php?__api=1&videos_cat=$matches[1]','top');
//Get products - as an example
add_rewrite_rule('^api/product/?([0-9]+)?/?','index.php?__api=1&product=$matches[1]','top');
}
/** Sniff Requests
* This is where we hijack all API requests
* If $_GET['__api'] is set, we kill WP and serve up rss
* @return die if API request
*/
public function sniff_requests(){
global $wp;
if(isset($wp->query_vars['__api'])){
$this->handle_api_request();
exit;
}
}
/** Handle API Requests
* This is where we handle off API requests
* and return proper responses
* @return void
*/
protected function handle_api_request(){
global $wp;
/**
*
* Do your magic here ie: fetch from DB etc
* then get your $result
*/
$this->send_response($result);
}
/** Response Handler
* This sends a JSON response to the browser
*/
protected function send_response(array $data){
header('content-type: application/json; charset=utf-8');
echo json_encode($data);
exit;
}
}
new API_Endpoint();
然后通过WordPress管理界面启用API_Endpoint插件,不要忘记刷新永久链接。
之后,您将能够向以下位置发出API请求:
http://example.com/api/videos/12
或
http://example.com/api/product/4
修改强>
要在此处获取WordPress类别作为示例参考 - http://codex.wordpress.org/Function_Reference/get_categories
答案 1 :(得分:8)
感谢Gregra帮助我。我找到了解决方案。 我在wordpress网站中安装了WordPress插件JSON API,并将此链接http://www.learn2crack.com/2013/10/android-json-parsing-url-example.html引用到Android应用中的代码
答案 2 :(得分:2)
如果将数据从wordpress发送回Android应用程序,使用JSON APi插件非常糟糕,虽然它给出了预期的结果,但你实际上看到了json查询的结果是什么? ?
只需检查一下,输入您的浏览器:www.yourwebsite.com/api/get_posts /
并检查你会得到什么,这将查询你在wordpress仪表板中设置为默认的所有帖子或帖子数量,并将所有关于它们的数据作为json字符串发送,我试图查询10个帖子和大小json字符串大概是 150KB 想象,只有10个帖子,用户每次都要下载所有这些帖子才能获得10个帖子。
解决方案:您应该查询服务器端的帖子,并将仅使用您要使用的数据发送回Android应用程序,例如:标题,缩略图,摘录....
怎么做?
1-在wordpress目录中创建一个php文件并使其可访问
2-收到来自android的发布值(这些将由你在android中设置,以了解你想要的查询类型,如帖子数量和帖子类型......)
根据第2部分中的查询实现使用wordpress函数的3个查询帖子
4-仅使用您要使用的数据生成您自己的json字符串。
5-回显json字符串回到android
现在,如果我只想要10个帖子的标题和缩略图链接,那么json字符串大小约为 2KB
有所作为:-)
您可以使用 JSON API Auth 注册并登录用户,轻松/快速地实施和使用。
答案 3 :(得分:1)
我认为这更好,因为使用wordpress rest api你需要使用Wordpress 4.7或更高版本,或者在以前的版本中安装Rest Api plugin。然后你需要在wordpress中配置永久链接,这将使其余的api端点工作。
为减小尺寸并自定义输出json,您可以安装Rest api filter fields plugin,请参阅下面的示例:
获取指定的帖子数
要获取指定数量的帖子,您可以使用每页过滤后过滤器。以下网址仅提取3个帖子。 http://your-blog-url/wp-json/wp/v2/posts?filter[posts_per_page]=3
获取特定帖子
您可以按ID获取任何特定帖子。 http://your-blog-url/wp-json/wp/v2/posts/67
这里67是帖子的ID。
过滤字段
正如您在上面的JSON数据中看到的那样,我们不需要多个字段。因此,借助REST API - 过滤字段插件,您可以过滤少量字段。例如,您只想获取帖子的ID和标题,然后可以使用以下URL来完成。 http://your-blog-url/wp-json/wp/v2/posts?fields=id,title
答案 4 :(得分:0)
首先,您必须在wordpress上安装WordPress Rest API v2。您可以通过以下网址获取有关博客上所有帖子的信息。它将返回一个JSON响应,其中包含有关您博客的所有信息。
http://your-blog-url/wp-json/wp/v2/posts
for example http://www.blueappsoftware.in/android/wp-json/wp/v2/posts
现在你可以使用retrofit / volley / httpconnection从android调用这个url。我建议你使用改装。您可以在Android上创建自己的自定义UI设计以显示博客帖子。您可以从这里获得参考 - http://www.blueappsoftware.in/android/blog/get-wordpress-post-in-android-app/