mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
The post for the comments or pings is retrieved by `get_post()`. If the post exists, `get_post()` returns an instance of `WP_Post`; else, it returns `null`.
In both `comments_open()` and `pings_open()`, the returned value from `get_post()` is used without checking if the object returned, if the post exists. When the post does not exist, the following notices occur:
{{{
PHP Notice: Trying to get property 'comment_status' of non-object in .../src/wp-includes/comment-template.php on line 1244
}}}
and
{{{
PHP Notice: Trying to get property 'pings_open' of non-object in ../src/wp-includes/comment-template.php on line 1274
}}}
This commit fixes these notices by checking if the post has a non-falsey value before using it as an object to set the `$open` state. As the return from `get_post()` will only be an object or `null`, the truthy check is appropriate and slightly more performant.
Tests added to validate the fix.
Follow-up to [1964], [40666].
Props dd32, audrasjb, costdev, hellofromTonya, sergeybiryukov.
Fixes #54159.
git-svn-id: https://develop.svn.wordpress.org/trunk@52223 602fd350-edb4-49c9-b593-d223f7449a82
34 lines
660 B
PHP
34 lines
660 B
PHP
<?php
|
|
|
|
/**
|
|
* @group comment
|
|
* @covers ::comments_open
|
|
*/
|
|
class Tests_Comment_CommentsOpen extends WP_UnitTestCase {
|
|
|
|
/**
|
|
* @ticket 54159
|
|
*/
|
|
public function test_post_does_not_exist() {
|
|
$this->assertFalse( comments_open( 99999 ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 54159
|
|
*/
|
|
public function test_post_exist_status_open() {
|
|
$post = $this->factory->post->create_and_get();
|
|
$this->assertTrue( comments_open( $post ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 54159
|
|
*/
|
|
public function test_post_exist_status_closed() {
|
|
$post = $this->factory->post->create_and_get();
|
|
$post->comment_status = 'closed';
|
|
|
|
$this->assertFalse( comments_open( $post ) );
|
|
}
|
|
}
|