[wp-trac] [WordPress Trac] #36934: Use of get_the_excerpt($post) is broken if post has no excerpt and you are inside a loop

WordPress Trac noreply at wordpress.org
Tue May 24 16:00:14 UTC 2016


#36934: Use of get_the_excerpt($post) is broken if post has no excerpt and you are
inside a loop
-----------------------------+-----------------------------
 Reporter:  magicroundabout  |      Owner:
     Type:  defect (bug)     |     Status:  new
 Priority:  normal           |  Milestone:  Awaiting Review
Component:  General          |    Version:  4.5.2
 Severity:  normal           |   Keywords:
  Focuses:  template         |
-----------------------------+-----------------------------
 In changeset @36319 (and @36321), a `$post` parameter was added to
 `get_the_excerpt()` in `post-template.php`. I was really excited when I
 discovered this but:

 a) It's behaviour is inconsistent
 b) It doesn't quite do what I'd hoped
 c) It's broken in some circumstances

 There are a few things wrong:

 1) The behaviour is inconsistent depending on usage.

 If you call `get_the_excerpt()` within the loop and if the post has no
 excerpt, then the post content will be stripped and truncated.

 If you call it with the `$post` parameter and the post has no excerpt then
 nothing is returned.

 Well...sometimes...

 2) If you are inside a loop - say you're using `get_the_excerpt($post)` in
 a shortcode in a post - then you will actually get back the truncated
 content of the post from the loop that you are in.

 This is because `wp_trim_excerpt( $text )` does `get_the_content('')` if
 `$text` is empty.

 I think that the fix for this is to add an optional `$post` parameter to
 `wp_trim_excerpt()` and process it accordingly.

 We'll also need to update `default-filters.php` to pass the extra
 parameter on the `get_the_excerpt` filter hook.

 This change has the added benefit that `get_the_excerpt($post)` works
 consistently, fetching and trimming the post content if the post has no
 defined excerpt.  Hooray!! (Been wanting this for YEARS!)

 I'm working on a patch. It would be good to write a test for this too but
 I have no idea how. Happy to take feedback.

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


More information about the wp-trac mailing list