仅当使用作者参数时,WP REST API才返回404

时间:2019-08-03 作者:Deepon GhoseRoy

我在aws linux上安装了多站点wordpress,运行非常好。WP-restapi也在正常工作。除了一个案例。

/wp-json/wp/v2/posts?author=<some int>
对于其他所有内容,包括我的自定义端点和添加到api的自定义参数/字段,它都可以完美地工作。但当我添加作者部分时,它在所有站点上返回404。例如:

/wp-json/wp/v2/posts?author_exclude=1     //this works
/wp-json/wp/v2/posts?page=2               // this also works
/wp-json/wp/v2/posts?page=2&author=abc    // this also works and returns invalid author
/wp-json/wp/v2/posts?page=2&author=1      // this returns 404 page not found
从其他一些类似的问题中,我发现这个问题可能是由于永久链接造成的,但我使用的是自定义永久链接

sitename/%year%/%monthnum%/%day%/%author%/%category%/%postname%/
我试着把permalink改成无效。我找到的另一个解决方案是改变所有denyallow 在htaccess中。我不太熟悉htaccess,所以我没有修改它,因为我担心会导致一些安全问题。至于其他相关信息,我也在使用jwt并禁用RESTAPI插件(仅启用jwt端点)。

如有任何帮助,将不胜感激。

1 个回复
SO网友:brasofilo

我在多站点运行Wordfence和JWT时也面临同样的问题。我不确定这里的解决方案是否适用于你的情况。。。

以下操作不起作用,它给出了404响应。如果我们删除data.author 它工作正常。

jQuery.ajax({
    url: \'https://example.com/wp-json/wp/v2/posts\',
    method: \'POST\',
    crossDomain: true,
    dataType: \'json\',
    data: { \'author\':\'1\', \'title\':\'Hello world\', \'content\':\'lorem ipsum\', \'status\':\'publish\' },
    beforeSend: function ( xhr ) {
        xhr.setRequestHeader( \'Authorization\', \'Bearer <token>\' );
    },
    success: function( data, txtStatus, xhr ) {
        console.log( xhr.status, data );
    }
});
这确实有效,但我不知道为什么:

fetch( \'https://example.com/wp-json/wp/v2/posts\', {
    method: \'POST\',
    body: JSON.stringify( {
        author: \'1\',
        content: \'lorem ipsum\',
        title: \'Nice, it works!\',
        status: \'publish\'
    } ),
    headers: {
        \'Content-Type\': \'application/json\',
        Authorization: \'Bearer <token>\'
    }
} )
.then( res => res.json() )
.then( res => console.log( res ) );
我对Wordfence有三个问题:

couldn\'t make application passwords 工作我使用一个没有2FA或应用程序密码的编辑器用户解决了以上两个问题

相关推荐

在GET_Author_Posts_url()中,Author_Nicename参数的作用是什么?

我在看get_author_posts_url() 它将用户id作为参数并返回URL。它有一个可选的第二个参数$author_nicename.get_author_posts_url( $author_id, $author_nicename ); 提供什么$author_nicename 确切地说是吗?