668 145 480 info@jacekjagusiak.pl

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 = '&hellip;';

$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">&nbsp;</span><small><?php echo $item->get_date('F Y'); ?> </small>
			<span class="comment-image">&nbsp;</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."&nbsp;". "Komentarz"; } else {echo $number. "&nbsp;"."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.

4.5/5 - (6 votes)
4.5/5 - (6 votes)