Na jednej ze stron zechciałem wyświetlać ostatnie wpisy z bloga. Jako najprostszy sposób pobierania danych wybrałem oczywiście kanał RSS, który WordPress ma w standardzie. W standardzie nie posiada jednak miniatur wpisów, które w moim przypadku były niezbędne. Jak rozwiązać ten problem?
Przeszukując bazę pluginów do WordPressa znalazłem wiele gotowych rozwiązań, które rozbudowują treść i strukturę kanału RSS. Pozwalają także dodawać miniatury, jednak nie w takiej formie, w jakiej bym chciał. Najczęściej są to rozwiązania przyklejające obrazek jako znacznik <img> do treści posta lub też dodające gotowe tagi xml, np:
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://adresbloga.pl/wp-content/uploads/2015/01/adresminiatury.jpg" width="150" height="150"/>
Ja tymczasem potrzebowałem czystego adresu URL obrazka, zamkniętego np. w znaczniku <image></image>. W tym celu napisałem prostą funkcję:
function rss_get_image(){ global $post; if (function_exists ('has_post_thumbnail') && has_post_thumbnail($post->ID)) { $image_id = get_post_thumbnail_id( $post->ID ); $image_url = wp_get_attachment_url($image_id); } return ($image_url); }
Niestety sama funkcja nie wystarczy, bo trzeba ją jeszcze wprowadzić do kanału RSS. Choć staram się nigdy nie edytować plików WordPressa, to w tym przypadku uznałem, że nie mam wyjścia. Musiałem umieścić funkcję w pliku /wp-includes/feed-rss2.php. Wewnątrz znacznika <item></item> umieściłem swój upragniony obrazek:
<image><?php echo rss_get_image(); ?></image>
W ten sposób mamy sam URL obrazka w jednym tagu
http://codex.wordpress.org/Plugin_API/Action_Reference/rss2_item – masz tam nawet gotowca do tagu
🙂
😀
😆
😯
🙁
😥
👿
Dzięki. Wiedziałem, że nie pierwszy mam taką potrzebę i dziwiłem się, że nie mogę znaleźć gotowego rozwiązania 🙂
🙂
😀
😆
😯
🙁
😥
👿
W koncu po latach wordpress 4.2 doczeka się domyślnie aktywnych przyjaznych linków… to może w niedalekiej przyszłości i o ikonę wpisu w rss się wzbogaci 🙂
🙂
😀
😆
😯
🙁
😥
👿