[wp-trac] [WordPress Trac] #64699: Code Modernization: Replace void in PHPDoc union return types with null in link-template.php

WordPress Trac noreply at wordpress.org
Mon Feb 23 09:14:13 UTC 2026


#64699: Code Modernization: Replace void in PHPDoc union return types with null in
link-template.php
--------------------------+-----------------------------
 Reporter:  apermo        |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  General       |    Version:  4.3
 Severity:  normal        |   Keywords:
  Focuses:                |
--------------------------+-----------------------------
 Following up on [#64694] which fixed `paginate_links()`, this ticket
 addresses 13 instances in `link-template.php` where `@return` annotations
 incorrectly use `void` as part of a union type (e.g., `@return
 string|void`).

 The `|void` pattern in this file was introduced in WordPress 4.3 via
 [32598] — "Fix doc blocks to `link-template.php`".

 === Why this matters ===

 In PHP's type system, `void` means "the function does not return a value"
 and '''cannot''' be part of a union type (this is a compile error in PHP
 8.0+). When a function uses bare `return;` or falls off the end without
 returning, the actual runtime value is `null`. Therefore `@return
 Type|void` should be `@return Type|null`.

 This affects:
 * Static analysis tools (PHPStan, Psalm)
 * IDE autocompletion and type inference
 * Developer expectations about return values

 === Backward Compatibility ===

 This is a safe, non-breaking change. As demonstrated by @westonruter in
 the [https://github.com/WordPress/wordpress-
 develop/pull/10999#pullrequestreview-3839142928 #64694 PR review],
 `return;` and `return null;` are identical at runtime across every PHP
 version from 4.3.0 through 8.5.3: https://3v4l.org/3KQC8

 === Proposed Changes ===

 For each instance:
 1. Update the `@return` annotation to replace `void` with `null`
 2. Change bare `return;` statements to `return null;`
 3. Update description text to say "null" instead of "void" / "nothing"

 === Affected Functions ===

 ||= Function =||= Line =||= Current =||= Recommendation =||
 || `edit_term_link()` || 1134 || `string|void` || `string|null` ||
 || `get_delete_post_link()` || 1555 || `string|void` || `string|null` ||
 || `get_edit_comment_link()` || 1603 || `string|void` || `string|null` ||
 || `get_edit_bookmark_link()` || 1677 || `string|void` || `string|null` ||
 || `get_adjacent_post_rel_link()` || 2060 || `string|void` ||
 `string|null` ||
 || `get_next_posts_page_link()` || 2518 || `string|void` || `string|null`
 ||
 || `next_posts()` || 2543 || `string|void` || `string|null` ||
 || `get_next_posts_link()` || 2566 || `string|void` || `string|null` ||
 || `get_previous_posts_page_link()` || 2627 || `string|void` ||
 `string|null` ||
 || `previous_posts()` || 2649 || `string|void` || `string|null` ||
 || `get_previous_posts_link()` || 2669 || `string|void` || `string|null`
 ||
 || `get_next_comments_link()` || 3127 || `string|void` || `string|null` ||
 || `get_previous_comments_link()` || 3199 || `string|void` ||
 `string|null` ||

 See [#64694] for prior art.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/64699>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list