#22101 closed defect (bug) (fixed)
Gallery shortcode with link="file" is not linking the file in the RSS feed
Reported by: | ifrins | Owned by: | iworks |
---|---|---|---|
Milestone: | 5.5 | Priority: | normal |
Severity: | normal | Version: | 3.4.2 |
Component: | Feeds | Keywords: | good-first-bug has-patch has-unit-tests commit |
Focuses: | Cc: |
Description
Hi,
In a WordPress site I'm currently developing I want to use the stock gallery shortcode. I use [gallery link="file"] to link directly the image URL which, should fix Flipboard, Currents et al. showing just a little thumbnail.
In the page the code is displayed properly and the a tag links the image file, but, on the RSS feed, it links to the attachment page.
I've tested this in the latest nightly version 3.5-beta1-22104 and on the stable 3.4.2. I attach the output of the page and the feed.
Attachments (5)
Change History (25)
#2
follow-up:
↓ 3
@
12 years ago
This happens because for some reason the gallery shortcode deliberately generates completely different output for feeds. In file wp-includes/media.php
the function gallery_shortcode()
contains the following lines:
if ( is_feed() ) { $output = "\n"; foreach ( $attachments as $att_id => $attachment ) $output .= wp_get_attachment_link($att_id, $size, true) . "\n"; return $output; }
Why it would want to do this is anybody's guess! Maybe it's just a hangover from the days of the limited functionality of early feed readers. In any case, as I hope you can see, the code doesn't reference the gallery link
option at all.
There appear to be two options to fix the problem. Firstly, we could just delete the block of code above and allow feed output to contain the full gallery HTML/CSS as though it was a normal page. Alternatively, we could modify the code above to respect the value of the gallery link
option, something like the following (note this has not been tested - it's just a suggestion, but based on similar code that occurs later on in the gallery shortcode function):
if ( is_feed() ) { $output = "\n"; $permalink = !isset($attr['link']) || 'file' != $attr['link']; foreach ( $attachments as $att_id => $attachment ) $output .= wp_get_attachment_link($att_id, $size, $permalink) . "\n"; return $output; }
What do you think? What should be the correct behaviour of the gallery within feeds?
#4
in reply to:
↑ 3
@
12 years ago
Replying to SergeyBiryukov:
Ah yes, the world was a different place in 2008!! Including perhaps the ability to get away with a one-line bug report containing no example or explanation :-)
#8
@
8 years ago
- Owner set to iworks
- Status changed from new to assigned
Assigning to mark the good-first-bug as "claimed".
#10
@
7 years ago
22101.2.diff updates the logic to account for the following cases
Default: links to image attachment page url
[gallery ids="5,1464"]
URL: Links to image file url
[gallery link="http://src.wordpress-develop.dev/wp-content/uploads/2017/04/IMG_20150829_100814.jpg"]
None: Does not link
[gallery ids="5" link="none"]
File: Links to image file url
[gallery ids="5" link="file"]
#11
@
7 years ago
- Keywords has-unit-tests added; needs-testing removed
Added a test in 22101.3.patch for the cases mentioned by @stevenkword (apart from the link attribute as an url, as it's not supported afaik).
As unrelated, I noticed that the test in test_wp_get_attachment_image_should_use_wp_get_attachment_metadata()
can only run once, because the filename gets an increasing index, like test-image-large-{$i}-150x150.png
in the srcset, where $i > 2
is the number of times we run the /tests/phpunit/tests/media.php
tests. Looks like we might need a better cleanup there?
I tried to avoid this in the above test by not referring to the exact filename for self::$large_id
, as it would also get the same increasing index for repeated test runs.
#12
@
7 years ago
Regarding the missing attachment cleanup for tests in media.php
tests, that I stumbled on yesterday, see #38264
Page HTML Output