REST API: Allow comments to be created setting the user_agent parameter.
As of WordPress 4.3 the `wp_new_comment()` function has been updated to allow the comment_agent value to be set when a comment is created. The comments API endpoint now allows the comment author's user agent to be set when creating a comment. Also, the `readonly` property on the `author_user_agent` parameter in the schema was removed. Props rabmalin for the initial patch. Fixes #38425. git-svn-id: https://develop.svn.wordpress.org/trunk@38864 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
ef43d7b0fa
commit
39226db649
@ -419,7 +419,10 @@ class WP_REST_Comments_Controller extends WP_REST_Controller {
|
|||||||
$prepared_comment['comment_author_url'] = '';
|
$prepared_comment['comment_author_url'] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$prepared_comment['comment_agent'] = '';
|
if ( ! isset( $prepared_comment['comment_agent'] ) ) {
|
||||||
|
$prepared_comment['comment_agent'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$prepared_comment['comment_approved'] = wp_allow_comment( $prepared_comment, true );
|
$prepared_comment['comment_approved'] = wp_allow_comment( $prepared_comment, true );
|
||||||
|
|
||||||
if ( is_wp_error( $prepared_comment['comment_approved'] ) ) {
|
if ( is_wp_error( $prepared_comment['comment_approved'] ) ) {
|
||||||
@ -888,6 +891,10 @@ class WP_REST_Comments_Controller extends WP_REST_Controller {
|
|||||||
$prepared_comment['comment_author_IP'] = $request['author_ip'];
|
$prepared_comment['comment_author_IP'] = $request['author_ip'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( isset( $request['author_user_agent'] ) ) {
|
||||||
|
$prepared_comment['comment_agent'] = $request['author_user_agent'];
|
||||||
|
}
|
||||||
|
|
||||||
if ( isset( $request['type'] ) ) {
|
if ( isset( $request['type'] ) ) {
|
||||||
// Comment type "comment" needs to be created as an empty string.
|
// Comment type "comment" needs to be created as an empty string.
|
||||||
$prepared_comment['comment_type'] = 'comment' === $request['type'] ? '' : $request['type'];
|
$prepared_comment['comment_type'] = 'comment' === $request['type'] ? '' : $request['type'];
|
||||||
@ -975,7 +982,9 @@ class WP_REST_Comments_Controller extends WP_REST_Controller {
|
|||||||
'description' => __( 'User agent for the object author.' ),
|
'description' => __( 'User agent for the object author.' ),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'context' => array( 'edit' ),
|
'context' => array( 'edit' ),
|
||||||
'readonly' => true,
|
'arg_options' => array(
|
||||||
|
'sanitize_callback' => 'sanitize_text_field',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
'content' => array(
|
'content' => array(
|
||||||
'description' => __( 'The content for the object.' ),
|
'description' => __( 'The content for the object.' ),
|
||||||
|
@ -1064,7 +1064,7 @@ class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase
|
|||||||
$this->assertErrorResponse( 'rest_comment_invalid_status', $response, 403 );
|
$this->assertErrorResponse( 'rest_comment_invalid_status', $response, 403 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_create_comment_with_status_and_IP() {
|
public function test_create_comment_with_status_IP_and_user_agent() {
|
||||||
$post_id = $this->factory->post->create();
|
$post_id = $this->factory->post->create();
|
||||||
wp_set_current_user( $this->admin_id );
|
wp_set_current_user( $this->admin_id );
|
||||||
|
|
||||||
@ -1074,6 +1074,7 @@ class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase
|
|||||||
'author_email' => 'cbg@androidsdungeon.com',
|
'author_email' => 'cbg@androidsdungeon.com',
|
||||||
'author_ip' => '139.130.4.5',
|
'author_ip' => '139.130.4.5',
|
||||||
'author_url' => 'http://androidsdungeon.com',
|
'author_url' => 'http://androidsdungeon.com',
|
||||||
|
'author_user_agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
|
||||||
'content' => 'Worst Comment Ever!',
|
'content' => 'Worst Comment Ever!',
|
||||||
'status' => 'approved',
|
'status' => 'approved',
|
||||||
);
|
);
|
||||||
@ -1088,6 +1089,7 @@ class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase
|
|||||||
$data = $response->get_data();
|
$data = $response->get_data();
|
||||||
$this->assertEquals( 'approved', $data['status'] );
|
$this->assertEquals( 'approved', $data['status'] );
|
||||||
$this->assertEquals( '139.130.4.5', $data['author_ip'] );
|
$this->assertEquals( '139.130.4.5', $data['author_ip'] );
|
||||||
|
$this->assertEquals( 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36', $data['author_user_agent'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_create_comment_invalid_author_IP() {
|
public function test_create_comment_invalid_author_IP() {
|
||||||
|
Loading…
Reference in New Issue
Block a user