Includowanie postów z innego bloga Wordpress

Na zaincludowanie postów lub ich części z innego bloga opartego o Wordpress jest przynajmniej kilka sposobów. Jednym z nich jest pobranie danych z kanału rss. Na blogu z którego pobieramy mamy możliwość ustawienia co na kanale rss będzie dostępne.
W celu dodania np. na stronie głównej paska z kilkoma ostatnimi wpisami z innego bloga możemy utworzyć w pliku functions.php naszego szablonu poniższą funkcję:

function show_last_posts($atts) {
$a = shortcode_atts( array(
'count' => 1,
'blog' => '',
), $atts );
if ($a['blog'] !="") {
$doc = new DOMDocument();
$doc->load($a['blog']);
$destinations = $doc->getElementsByTagName("description");
$i = 1;
foreach ($destinations as $destination) {
foreach($destination->childNodes as $child) {
if ($child->nodeType == XML_CDATA_SECTION_NODE) {
if ($i > $a['count'])
continue;
$image = get_first_image_url($child->textContent);
$link = get_page_url($child->textContent);
$alt = get_first_alt($child->textContent);
$echo .= '<div class="blogimage"><a href="$link" target="_blank"><img src="$image"><br>$alt </a></div>';
$i++;
}
}
}
return $echo;
}
else return "Nieprawidłowy adres bloga!";
}

Po napisaniu funkcji dodajemy jeszcze shortcode umożliwiający użycie widgetu na stronie lub we wpisie.

add_shortcode( 'show_last_posts', 'show_last_posts' );

Wywołanie funkcji za pomocą shortcodu będzie mogło wyglądać następująco:

[show_last_posts count="4" blog="http://adresblogazktoregopobieramywpisy.pl/?feed=rss2"]

Funkcje dodatkowe dzięki którym z description lub innego wybranego tagu można wydobyć interesujące nas dane mogą prezentować się następująco:

function get_first_image_url($html) {
if (preg_match('/<img.+?src="(.+?)"/', $html, $matches)) {
return $matches[1];
}
}

function get_page_url($html) {
if (preg_match('/<a.+?href="(.+?)"/', $html, $matches)) {
return $matches[1];
}
}

function get_first_alt($html) {
if (preg_match('/alt="(.+?)"/', $html, $matches)) {
return $matches[1];
}
}

Strona jako część innej strony w Wordpress

Jeżeli zajdzie potrzeba wyświetlenia konkretnej strony bezpośrednio w kodzie wordpressa możemy to zrobić w następujący sposób:

1. Tworzymy w pliku functions.php (aby zapobiec nadpisaniu funkcji przez aktualizację najlepiej jeżeli będzie to plik z funkcjami szablonu) następującą funkcję

function cn_include_content($pid) {
$thepageinquestion = get_post($pid);
$content = $thepageinquestion->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
}

2. W miejscu w którym ma pojawić się strona wywołujemy funkcję z odpowiednim ip strony includeowanej
cn_include_content(62);

Wordpress wycina iframe

Problem z usuwaniem iframe przez Wordpressa jest powszechnie znany. Dla przykładu: wstawiamy w tekście posta film z YouTube osadzony właśnie w iframe. Po przejściu z zakładki widoku wizualnego do html cały kod iframe jest wycinany. Po zapisaniu posta lub powrocie do edytora wizualnego i zapisaniu niestety tracimy wstawiony film.

Rozwiązanie tego problemu jest bardzo proste. Wystarczy w pliku functions.php, w głównym katalogu naszego templata dodać poniższą funkcję.

function mytheme_tinymce_config($init) {
$valid_iframe = 'iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight| marginwidth|name|scrolling|src|width]';
if (isset($init['extended_valid_elements'])) {
$init['extended_valid_elements'] .= ',' . $valid_iframe;
} else {
$init['extended_valid_elements'] = $valid_iframe;
}
return $init;
}
add_filter('tiny_mce_before_init', 'mytheme_tinymce_config');

Gotowy system CMS vs autorski system zarządzania

Gotowe systemy CMS typu Joomla czy Mambo posiadają wiele opcji konfiguracji/rozbudowy. Przy swojej złożoności potrafią być niezwykle skomplikowane dla niedoświadczonego użytkownika. Minusem takich systemów jest także ich nieelastyczność jeżeli chodzi o optymalizację pod kątem SEO.

Alternatywą dla OpenSourcowego systemu CMS może być autorskie rozwiązanie. System pisany pod konkretne zamówienie jest na pewno o wiele prostszy w obsłudze. Znajdują się w nim tylko te funkcjonalności których potrzebujemy. Cena nie odbiega od tej za stworzenie strony z gotowym system CMS, a często jest nawet niższa.

Warto się zastanowić co będzie dla nas lepsze. Jeżeli sami potrafimy wykorzystać możliwości jakie daje nam Joomla czy Mambo (np. instalowanie dodatkowych modułów) być może warto spróbować. Jeżeli jednak mamy ograniczony budżet, nie znamy htmla, chcemy aby nasza strona dzięki optymalizacji zajmowała wyższe pozycje w Google, zdecydowanie polecam zamówienie stworzenia strony opartej o autorski system CMS.

Zalety autorskiego systemu CMS:
- niska cena
- elastyczność – funkcjonalności dostosowane do potrzeb Klienta
- pełna optymalizacja pod kątem SEO
- intuicyjna, bardzo prosta obsługa
- pomoc techniczna
- gwarancja
- niskie wymagania systemowe
- bezpieczeństwo
- modułowa budowa, pozwalająca na rozwój serwisu w miarę potrzeb