Niekiedy mamy kilka tematycznych blogów na WordPressie, którymi na co dzień zarządzamy. Czasem potrzebujemy na jednym blogu wyświetlić wpisy z określonej kategorii znajdujące się na innym blogu. W dodatku najlepiej, aby takie zajawki pojawiały się z właściwymi miniaturkami, również znajdującymi się na innej instalacji WordPressa.
Jak to zrobić?
Postaram się to dziś Wam wyjaśnić w jak najprostszy sposób, tak aby każdy mógł zaimplementować rozwiązanie nie rujnując swojej strony i co najważniejsze, nie używając dodatkowych wtyczek, które w pewnym stopniu mogą obciążać całą witrynę.
W prezentowanym sposobie skorzystamy z kanału nowości (RSS Feed), który domyślnie działa na każdym WordPressie i w którym znajdują się wszystkie, niezbędne dla Nas dane. No dobra, nie wszystkie, bo chcemy też miniaturki pobierać, więc na stronie z której będą zasysane artykuły włączmy obsługę mianturek dla wpisów jak i dodajmy do RSS Feed obsługę miniaturek. O tym jak to zrobić przeczytacie w Naszym poprzednim artykule.
Teraz zdecydujmy się, w którym dokładnie miejscu naszego motywu chcemy wyświetlać wpisy z innego bloga. Gdy już wiemy gdzie to zabieramy się za edycję odpowiedniego dla motywu wpisu. Nie powiem Wam, który dokładnie plik należy edytować bo to zależy w dużej mierze od używanego przez Was motywu i tego, gdzie dokładnie chcecie wstawić takie wpisy.
Jeśli zlokalizowaliście już odpowiednie miejsce to wklejcie tam kod jak poniżej, ale wczytajcie się w komentarze znajdujące się w kodzie, aby móc skonfigurować pod siebie dane funkcje:
<?php $rss = fetch_feed('http://www.strona.pl/feed'); //Tutaj podajcie adres strony, z której chcecie pobierać wpisy (adres kanału RSS Feed) if (!is_wp_error( $rss ) ) : $maxitems = $rss->get_item_quantity(5); // Pobieramy 5 ostatnich wpisów z kanału RSS $rss_items = $rss->get_items(0, $maxitems); endif; ?> <?php function get_first_image_url($html) { if (preg_match('/<img.+?src="(.+?)"/', $html, $matches)) { return $matches[1]; } } ?> <?php function shorten($string, $length) { $suffix = '…'; $short_desc = trim(str_replace(array("/r", "/n", "/t"), ' ', strip_tags($string))); $desc = trim(substr($short_desc, 0, $length)); $lastchar = substr($desc, -1, 1); if ($lastchar == '.' || $lastchar == '!' || $lastchar == '?') $suffix=''; $desc .= $suffix; return $desc; } ?> <ul class="rss-items" id="wow-feed"> <?php if ($maxitems == 0) echo '<li>Brak wpisów.</li>'; // Napis pojawiający się w przypadku braku wpisów do wyświetlenia else foreach ( $rss_items as $item ) : ?> <li class="item"> <span class="rss-image"> <?php echo '<img src="' .get_first_image_url($item->get_content()). '"/>'; ?> </span> <span class="data"> <h5><a href='<?php echo esc_url( $item->get_permalink() ); ?>' title='<?php echo esc_html( $item->get_title() ); ?>'> <?php echo esc_html( $item->get_title() ); ?></a></h5> <span class="date-image"> </span><small><?php echo $item->get_date('F Y'); ?> </small> <span class="comment-image"> </span><small><?php $comments = $item->get_item_tags('http://purl.org/rss/1.0/modules/slash/', 'comments');?><?php $number = $comments[0]['data']; ?> <?php if ($number == '1'){ echo $number." ". "Komentarz"; } else {echo $number. " "."Komentarzy";}?></small> <p><?php echo shorten($item-> get_description(),'150');?></p> // Pobrane zostanie 150 pierwszych znaków z zajawki każdego wpisu </span> </li> <?php endforeach; ?> </ul>
Dodatkowo nie zapominajcie, że wszystko trzeba odpowiednio ostylować, aby pasowało idealnie do Waszego motywu (wyglądu strony). W tym celu edytujemy plik style.css naszego motywu dodając na jego końcu odpowiednie style, a poniżej macie przykład, który dowolnie można modyfikować. Pamiętajcie, że z pewnością nie będzie pasował do wyglądu Waszej strony, więc tu się musicie sami pomęczyć.
#wow-feed { background: #FFFFFF; border: 1px solid #AFAFB0; width: 600px; margin: 10px 0; font-size: 0.8em; } #wow-feed li { list-style: none; } #wow-feed .rss-image img { width: 100px; height: 100px; padding: 8px; border: solid 1px #eee; } #wow-feed .rss-image { width: 30%; } #wow-feed .item { border-bottom: 1px solid #AFAFB0; padding: 10px; } #wow-feed .data { display: inline-block; margin-left: 2%; vertical-align: top; width: 70%; } #wow-feed .data h5 { font-weight: bold; } #wow-feed .data small { color: #8F90CB; font-size: 0.9em; margin-right: 10%; } #wow-feed .comment-image { background: url("images/comments.png"); height: 16px; width: 16px; vertical-align: middle; display: inline-block; margin-right: 2%; } #wow-feed .date-image { background: url("images/date.png"); height: 16px; width: 16px; vertical-align: middle; display: inline-block; margin-right: 2%; }
Pamiętajcie, że metoda ma pewne limity, a głównie ograniczona jest do tego co zawiera kanał RSS Feed bloga, z którego pobieracie najnowsze wpisy.
Ostatnie komentarze