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

在我的android应用程序中从WordPress获取帖子,android,wordpress,Android,Wordpress,我是Android开发的新手,我正在尝试制作一个应用程序,它可以简单地显示WordPress网站上的帖子类别和帖子。谁能帮我一下吗 您要做的是从WordPress中创建某种RESTAPI,以向Android HTTP请求返回JSON响应。要做到这一点,首先,对于Android,您可以参考以下帖子: 然后,对于服务器端(WordPress),您必须添加一个插件来处理API请求。为此,请在wp内容/插件中创建一个名为api-endpoint.php的文件,并使用如下内容: <?php cl

我是Android开发的新手,我正在尝试制作一个应用程序,它可以简单地显示WordPress网站上的帖子类别和帖子。谁能帮我一下吗

您要做的是从WordPress中创建某种RESTAPI,以向Android HTTP请求返回JSON响应。要做到这一点,首先,对于Android,您可以参考以下帖子:

然后,对于服务器端(WordPress),您必须添加一个插件来处理API请求。为此,请在wp内容/插件中创建一个名为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网站上安装了WordPress插件,并将此链接引用到Android应用程序中的代码

如果将数据从WordPress发送回Android应用程序,使用JSON APi插件是非常糟糕的,虽然它给出了预期的结果,但您是否确实看到了JSON查询的结果

只要检查一下,在浏览器中输入:www.yourwebsite.com/api/get\u posts/

检查你将得到什么,这将查询所有帖子或你在wordpress仪表板中设置为默认的帖子数量,并将所有关于它们的数据作为json字符串发送,我试图查询10篇帖子,json字符串的大小约为150KB想象一下,只有10篇帖子,用户每次只需下载10篇文章就可以了

解决方案:你应该在服务器端查询帖子,然后只将你要使用的数据发送回android应用程序,例如:标题、缩略图、摘录

如何做到这一点

1-在wordpress目录中创建一个php文件并使其可访问

2-接收来自android的发布值(这些值将由您在android中设置,以了解您想要的查询类型,如发布数量和发布类型…)

3-根据第2部分中的查询实体使用wordpress函数查询帖子

4-仅使用您想要使用的数据生成您自己的json字符串

5-将json字符串回显到android

现在,如果我只想要10篇文章的标题和缩略图链接,json字符串大小大约为2KB

这就不同了:-)


您可以使用JSON API Auth注册和登录用户,实现和使用起来很容易/快速。

我认为这更好,使用wordpress rest API需要使用wordpress 4.7或更高版本,或者在以前的版本中安装。然后您需要在wordpress中配置永久链接,这将使RESTAPI端点正常工作

要减小输出json的大小并进行自定义,您可以安装,请参见下面的示例:

获取指定数量的帖子

要获取指定数量的文章,可以使用每页文章过滤器。下面的URL只能获取3篇文章。

获取特定帖子

您可以通过其id获取任何特定的帖子。

这里是帖子的id

筛选字段

正如您在上面的JSON数据中看到的,有几个字段是我们不需要的。因此,借助RESTAPI–Filter Fields插件,您可以过滤几个字段。例如,您只想获取帖子的id和标题,然后可以使用以下URL来完成。
首先,您必须在WordPress上安装WordPress Rest API v2。您可以通过以下URL获取有关博客上所有帖子的信息。它将返回一个JSON响应,其中包含有关您博客的所有信息

http://your-blog-url/wp-json/wp/v2/posts

for example http://www.blueappsoftware.in/android/wp-json/wp/v2/posts

现在,您可以使用改型/volley/httpconnection从android调用此url。我建议你改型。您可以在android上创建自己的自定义UI设计来显示博客文章。您可以从这里获得参考-

请有人帮助我,谢谢您的回复。我是android新手,没有太多编程技巧。你能分享一个示例代码来展示如何从WordPress帖子中检索帖子类别吗?我一直在搜索这段代码,非常感谢。嗨,我需要从WordPress获取帖子列表。从WordPress检索帖子的json url是什么。你需要在WordPress中安装任何json API插件。我安装了。您将从插件设置中获取检索wordpress内容的所有json url显示从wordpress博客中检索帖子?从wordpress检索帖子,您可以参考此内容,但这仅适用于低于3的android版本。对于来自蜂巢的Android版本,您需要使用AsyncTask从WordPress站点获取JSON数据。你可以从这里找到AsyncTask文档,你可以从这个链接中找到和示例,谢谢Arun。现在我想从我的wordpress博客中检索视频。没有合适的文档。请帮助我解决这个问题。如何使用WP-JSON API获取缩略图?