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