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