在我的Android应用程序中从WordPress获取帖子

时间:2014-01-20 10:42:45

标签: android wordpress

我是Android开发的新手,我正在尝试创建一个只显示WordPress网站上的帖子类别和帖子的应用。请帮助我。

5 个答案:

答案 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/