标签: wp-api

Wordpress REST API(wp-api)404错误

几个月以来,我一直在使用Wordpress REST插件WP-API,同时使用XAMPP进行本地开发.我最近将我的站点迁移到EC2实例,一切正常,每当我尝试访问API上的任何端点时,我现在都会收到带有以下消息的404:

在此服务器上找不到请求的URL/wordpress/wp-json /

使用以下结构启用漂亮的固定链接http://.../wordpress/sample-post/,在浏览器中导航到特定帖子时可以正常工作.

以下是有关我的设置的一些细节:

  • Wordpress 4.4.1
    • 不是多站点
  • WP REST API插件2.0-beta9
  • Apache 2.2.22
  • Ubuntu 12.04.5

任何帮助将不胜感激,因为我已经通过SO和WP支持论坛几个小时,我的想法.谢谢!

wordpress wordpress-plugin wp-api wordpress-rest-api

35
推荐指数
9
解决办法
6万
查看次数

使用WP API v1和v2打破Android Loopj图像上传

我正在使用Loopj将文件上传到我的WordPress站点和WP REST API v1和/或v2(相同的结果).

身份验证很棒,标题很棒,文件"上传"但是当我在我的WordPress后端检查它时...图像或文件被破坏了.

Android部分是这样的:

File myFile = new File(finalpath);

String name = Utils.getLastBitFromUrl(finalpath);

String extension = Utils.getFileExtention(finalpath);

client.setBasicAuth("myusername", "mypassword", new AuthScope("mywebsite.com", 80, AuthScope.ANY_REALM));

     client.addHeader("Content-Disposition", "filename=" + name);
     client.addHeader("Content-Type", "image/" + extension);

     try {
        params.put("data", myFile);
     } catch (FileNotFoundException e) {
           e.printStackTrace();
     }
     // or: http://mywebsite.com/wp-json/wp/v2/media for v2
     client.post("http://mywebsite.com/wp-json/media", params, new AsyncHttpResponseHandler() {

          int count = 0;

          @Override
          public void onStart() {
            prgDialog = new ProgressDialog(MainActivity.this);
            prgDialog.setMessage("Uploading Image...");
            prgDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            prgDialog.setMax(100);
            prgDialog.show();
          }

          @Override
          public void onProgress(long bytesWritten, long totalSize) …
Run Code Online (Sandbox Code Playgroud)

wordpress android loopj wp-api

11
推荐指数
1
解决办法
413
查看次数

如何在android中发送HttpRequest并获取Json响应?

我想使用wp-api插件为我的wordpress网站构建一个Android应用程序.我如何在Json中发送HttpRequest(GET)和recive响应?

android json httprequest wp-api

11
推荐指数
2
解决办法
6万
查看次数

禁用WP REST API的默认路由

我需要禁用默认路由WP REST API并添加自定义路由.

我发现这个问题可以帮助我找到以下答案.

remove_action('rest_api_init', 'create_initial_rest_routes', 99);
Run Code Online (Sandbox Code Playgroud)

但是,这也将删除任何自定义内容类型路由.所以你可以选择使用:

add_filter('rest_endpoints', function($endpoints) {
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    // etc
});
Run Code Online (Sandbox Code Playgroud)

但是从这个方面来说,我需要知道所有默认路由并逐个删除,这不是最干净的方法.

我想知道是否有更清洁的方法来实现这一目标?

更新1:

根据克里斯的建议,我会添加更多细节来提问.

目前我正在使用rest_api_init过滤器按照我register_rest_route本文中找到的下面的代码使用方法添加我的自定义路由.

add_action( 'rest_api_init', function () {
  register_rest_route( 'myplugin/v1', '/sample/', array(
    'methods' => 'GET',
    'callback' => 'my_awesome_func',
  ) );
} );

function my_awesome_func( $data ) {
  return 'somthing';
}
Run Code Online (Sandbox Code Playgroud)

自定义路由运行良好,但不幸的是我无法禁用默认路由,如/wp/v2/posts.

我的问题 :

如何在使用rest_api_init过滤器注册新的自定义路由时取消设置/禁用默认路由?

rest wordpress routes wp-api

11
推荐指数
3
解决办法
1939
查看次数

在Wordpress中禁止提取草稿

我正在使用wpapi npm模块与节点应用程序中的WP rest api进行交互.我通过身份验证,我的用户创建了一些草稿帖子.当我使用相同的凭据进入仪表板时,我也可以查看/编辑草稿帖子.

我正在使用此方法列出草稿:

wp.posts().auth().param( 'context', 'edit' ).param( 'status', 'draft' )
Run Code Online (Sandbox Code Playgroud)

但我一直收到这个错误:

{ code: 'rest_invalid_param',
  message: 'Invalid parameter(s): status',
  data: { status: 400, params: { status: 'Status is forbidden.' } } }
Run Code Online (Sandbox Code Playgroud)

这是我对这个问题和一些有用的背景进行评论的地方.

http:// localhost:8000/wp-json/wp/v2/posts?status = draft的curl响应是相同的错误消息,所以我不相信问题出在节点模块上.

wordpress wp-api wordpress-rest-api

11
推荐指数
1
解决办法
2038
查看次数

如何使用swagger从wp rest api生成Retrofit客户端库

我正在为我的WordPress网站创建android客户端.有没有办法使用swagger从wp rest客户端生成改进的2客户端库,或者是否有任何其他工具来生成相同的.

android wordpress-plugin swagger wp-api retrofit2

9
推荐指数
2
解决办法
2043
查看次数

在React中动态呈现外部HTML/React组件

是否可以从外部源获取HTML/JSX内容并在React中动态呈现它?在我们的例子中,我们想从Wordpress API获取内容并在客户端和服务器上呈现它(我们使用的是NextJS)

因此,Wordpress API返回一个JSON响应,其中包含一个内容属性,该属性是一个HTML/JSX字符串.内容看起来像这样.

{
    content: "<div><Slider imageCount="5" galleryID="1"></Slider><span>This is an image gallery</span></div>"
}
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,它将是HTML和React组件/ JSX的混合,表示为字符串

我会使用Axios来调用内容(使用NextJS的getInitialProps()方法在服务器和客户端上),然后我需要渲染它,但我是新的反应,我可以看到一些问题.

1)在React中,JSX是在构建时编译的,而不是运行时,我看不出如何绕过它(例如,使用$ compile服务在Angular中会很容易).

2)由于我们不知道Wordpress的内容将使用哪些组件,我们必须在页面顶部导入它们中的每一个,内容可能包含一个组件,或者它可能包含一个组件,谁知道?.

现在,我认为这是不可能的,这意味着我们必须重新考虑使用React,但我真的希望有人有答案.

真的很感激任何帮助.

javascript reactjs wp-api next.js

9
推荐指数
1
解决办法
2629
查看次数

8
推荐指数
3
解决办法
1万
查看次数

检查请求是否是 WP REST API 请求?

检查请求是否为 API 请求的最佳方法是什么?

请注意,该请求可能是自定义 API 请求,这意味着它可能如下所示:

mysite.com/wp-json/my_namespace/my_version/my_action
Run Code Online (Sandbox Code Playgroud)

很明显,我可以检查API路由wp-json,但应该有一个内置函数来检查。

我需要它来做一些钩子,比如

add_action('init', 'do_something_only_if_api_request');

function do_something_only_if_api_request()
{
   if ( ! wp_api_request() ) {
     return;
   }
   // do stuff
}
Run Code Online (Sandbox Code Playgroud)

wordpress wp-api

7
推荐指数
2
解决办法
3661
查看次数

WP_REST_Response 与 WP_Error

我对 Wordpress 的 REST API 中如何处理错误感到有些困惑。在他们的示例中,他们建议使用WP_Error返回错误,但WP_REST_Response将 HTTP 状态代码作为第二个参数,这使得它更短,更符合我的口味。

所以我比较这种返回错误的方式:

return new WP_REST_Response(array('error' => 'Error message.'), 400);
Run Code Online (Sandbox Code Playgroud)

有了这个:

return new WP_Error('rest_custom_error', 'Error message.', array('status' => 400));
Run Code Online (Sandbox Code Playgroud)

使用第一个选项,我可以在响应中只包含错误文本,这对我来说就足够了。所以响应看起来像这样:

{"error":"错误信息。"}

第二个更详细:

{"code":"rest_custom_error","message":"错误消息。","data":{"status":403}}

但是我还需要指定错误代码(第一个参数),这对我的前端实现没有任何好处。除了语法之外,我对性能、安全性和面向未来的因素的差异感到好奇。

那么,除了个人喜好之外,还有什么理由更喜欢其中之一吗?

php error-handling wordpress wp-api wordpress-rest-api

7
推荐指数
1
解决办法
3857
查看次数