wordpress-develop/tests/phpunit/tests/link/getPostPermalink.php
Sergey Biryukov b698f8f475 Posts, Post Types: Correct the check for non-existing post in get_post_permalink().
The function was erroneously calling `is_wp_error()` on the result of a `get_post()` call, which returns `null` on failure, and never returns a `WP_Error` object.

Previously, passing a non-existing post ID to the function would result in a home URL being returned and a few `Attempt to read property "post_type, post_name, hierarchical..." on null` PHP warnings.

This commit ensures `get_post_permalink()` returns `false` on failure, which brings parity with `get_permalink()`.

Includes a unit test to confirm the correct behavior.

Follow-up to [12923], [13023], [32606].

Props renegeuze, manzoorwani.jk.
Fixes #45329.

git-svn-id: https://develop.svn.wordpress.org/trunk@53733 602fd350-edb4-49c9-b593-d223f7449a82
2022-07-20 15:39:18 +00:00

19 lines
446 B
PHP

<?php
/**
* @group link
* @covers ::get_post_permalink
*/
class Tests_Link_GetPostPermalink extends WP_UnitTestCase {
public function test_get_post_permalink_should_return_string_on_success() {
$post = self::factory()->post->create();
$this->assertIsString( get_post_permalink( $post ) );
}
public function test_get_post_permalink_should_return_false_for_non_existing_post() {
$this->assertFalse( get_post_permalink( -1 ) );
}
}