by karlosky | Sty 28, 2015 | Obrazy
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...