<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MGdevelop &#187; Wordpress</title>
	<atom:link href="http://mgdevelop.pl/index.php/kategoria/cmsy/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://mgdevelop.pl</link>
	<description>Programming is an art form that fights back</description>
	<lastBuildDate>Thu, 07 Jul 2011 16:59:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>WPEngine &#8211; hosting stworzony pod WordPressa</title>
		<link>http://mgdevelop.pl/index.php/2010/07/wpengine-hosting-stworzony-pod-wordpressa/</link>
		<comments>http://mgdevelop.pl/index.php/2010/07/wpengine-hosting-stworzony-pod-wordpressa/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 10:05:26 +0000</pubDate>
		<dc:creator>Elektryk</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wydarzenia]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[serwis]]></category>
		<category><![CDATA[usługa]]></category>
		<category><![CDATA[WPEngine]]></category>

		<guid isPermaLink="false">http://mgdevelop.pl/?p=463</guid>
		<description><![CDATA[W chwili obecnej istnieją dwie możliwości tworzenia serwisu na systemie WordPress. Pierwsza to założenie strony w serwisie WordPress.com. Otrzymujemy tam... <a href="http://mgdevelop.pl/index.php/2010/07/wpengine-hosting-stworzony-pod-wordpressa/">Czytaj dalej&#187;</a>]]></description>
			<content:encoded><![CDATA[<p>W chwili obecnej istnieją dwie możliwości tworzenia serwisu na systemie WordPress. Pierwsza to założenie strony w serwisie WordPress.com. Otrzymujemy tam gotową instalację, nie musimy się martwić o transfer ani o odpowiednią konfigurację. Wadą tego rozwiązania jest jednak to, że nie możemy instalować własnych wtyczek i motywów bez dodatkowych opłat. Alternatywą jest własna instalacja WP na opłaconym serwerze. Tu jednak musimy zmierzyć się z ręcznym dostosowaniem skryptu oraz wydajnością całego systemu. Niedługo jednak do tych dwóch opcji dołączy trzecia możliwość.<span id="more-463"></span></p>
<h1>WPEngine &#8211; o co chodzi?</h1>
<p>Opisywana <a title="WPEngine" href="http://wpengine.com">platforma WPEngine</a> ma być połączeniem zalet obecnych dwóch rozwiązań. Za dosyć wysoką cenę 50$ miesięcznie otrzymamy możliwość utworzenia swojego serwisu internetowego z użyciem WordPressa na hostingu idealnie zoptymalizowanym pod tą platformę. Autorzy pomysłu kusza nas  ogromną galerią gotowych wtyczek i skórek. Co więcej możemy także instalować własne rozszerzenia i motywy. Ponadto oto by nasza strona nie padła w okresie wzmożonego ruchu będą dbać odpowiednie narzędzia odpowiedzialne za cachowanie treści, minimalizowanie plików oraz kompresję grafik. Zaś developerzy będą mieli pełny dostęp do logów serwera PHP.</p>
<h1>&#8222;It&#8217;s safer here&#8221;</h1>
<p><a title="WPEngine" href="http://wpengine.com">Platforma WPEngine</a> w przeciwieństwie do typowych hostingów będzie dbało o to czy wszystkie pliki mają dobrze nadane prawa dostępu. Dzięki temu nie ma  możliwości, że przez źle ustawione chmody ktoś usunie nam zdalnie plik. Ponadto będzie można uruchamiać wszystkie wtyczki i skórki w trybie piaskownicy. To znaczy, że możemy sprawdzić działania nowego składnika na swoim blogu ale internauci nie zobaczą od razu efektów tych eksperymentów. Dopiero gdy stwierdzimy, że wszystko działa prawidłowo będziemy mogli zatwierdzić zmiany i oddać nowe funkcjonalności w ręce użytkowników. Taki sposób pracy chroni nas przed uszkodzeniem instalacji WP przez złośliwą wtyczkę. Co więcej wszystkie konta na serwerze są od siebie odseparowane przez co nie ma możliwości ataku na nasz serwis przez innego klienta WPEngine.</p>
<h1>Gdzie to można dostać?</h1>
<p>Aktualnie aby móc skorzystać z platformy trzeba <a href="http://wpengine.com/waiting-list/">otrzymać zaproszenie</a>. Na pełne otwarcie usługi przyjdzie nam pewnie jeszcze poczekać. Niemniej już teraz wydaje się, że będzie to doskonałe rozwiązanie dla wszelkich stron firmowych i dużych blogów. Jak to wyjdzie w praniu to się okaże. W każdej chwili można opuścić szeregi klientów WPEngine ale przenoszenie swojego istniejącego serwisu to i tak poważny krok.</p>
]]></content:encoded>
			<wfw:commentRss>http://mgdevelop.pl/index.php/2010/07/wpengine-hosting-stworzony-pod-wordpressa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dołączanie skryptów JS do WordPressa</title>
		<link>http://mgdevelop.pl/index.php/2010/07/dolaczanie-skryptow-js-do-wordpressa/</link>
		<comments>http://mgdevelop.pl/index.php/2010/07/dolaczanie-skryptow-js-do-wordpressa/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 14:07:35 +0000</pubDate>
		<dc:creator>Elektryk</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[plik]]></category>
		<category><![CDATA[rotator]]></category>
		<category><![CDATA[skrypt]]></category>
		<category><![CDATA[wp_head()]]></category>

		<guid isPermaLink="false">http://mgdevelop.pl/?p=409</guid>
		<description><![CDATA[Tworząc skórkę do WordPressa warto wzbogacić ją o ciekawe efekty. Najłatwiej osiągnąć je za pomocą skryptów JavaScript np. tworząc rotator... <a href="http://mgdevelop.pl/index.php/2010/07/dolaczanie-skryptow-js-do-wordpressa/">Czytaj dalej&#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Tworząc skórkę do WordPressa warto wzbogacić ją o ciekawe efekty. Najłatwiej osiągnąć je za pomocą skryptów JavaScript np. tworząc rotator zdjęć przy użyciu <a title="Strona Tiny Carousel" href="http://www.baijs.nl/tinycarousel/">Tiny Carousel</a>. Może się jednak zrodzić pytanie czy można tak wprost dołączać własne skrypty do WP? Zwłaszcza, że np. wyżej wymieniony rotator wymaga biblioteki jQuery która jest często, choć nie zawsze automatycznie dołączana przez WordPressa. W tym poradniku wyjaśnimy tą kwestię.<span id="more-409"></span></p>
<h1>Podstawy dołączania skryptów</h1>
<p>Aby dołączyć zewnętrzny skrypt do naszego WP musimy w w skórce naszej witryny odszukać intrukcję <em>wp_head()</em>. Najczęściej można ją odnaleźć w pliku <em>header.php</em>. Tuż przed nią trzeba dopisać dwie funkcję: pierwszą która zarejestruje nowy skrypt, drugą która go dołączy do strony. Schamtycznie wygląda to tak:</p>
<pre class="brush: php">wp_register_script($nazwa, $sciezka, $biblioteki, $wersja);
wp_enqueue_script($nazwa);
wp_head();</pre>
<p>Teraz wyjaśnię pokrótce co należy wstawiać w miejsce kolejnych zmiennych. $nazwa to wewnętrzna nazwa dołączanego skryptu. Nie ma znaczenia co tam wpiszemy. Ważne tylko by w obu miejscach, przy rejestracji i dołączaniu skryptu, wpisany wyraz był taki sam. $sciezka to jak łatwo się domyślić adres do pliku z naszym kodem. Można tu wykorzystać funkcję <em><a title="o get_bloginfo() w codexie WP" href="http://codex.wordpress.org/Function_Reference/get_bloginfo">get_bloginfo()</a></em> aby WP sam wstawił aktualny adres strony lub ścieżkę do folderu z skórką. <em>$biblioteki</em> to parametr który musi być tablicą zawierającą listę bibliotek wykorzystywanych przez nasz kod. Dzięki temu WordPress kontroluje kiedy i jakie skrypty są podpinane do strony i nigdy nie zdarzy się, że np. jQuery będzie ładowane dwa razy. Listę dostępnych bibliotek i ich nazw kodowych można sprawdzić <a title="lista bibliotek dostępnych w WP" href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_scripts_included_with_WordPress">tutaj</a>. Ostatni parametr to zmienna $wersja. Po każdorazowej modyfikacji skryptu musimy obowiązkowo zmienić tą liczbę by wymusić na przeglądarkach ponowne pobranie pliku zamiast korzystania z starej wersji z cachu.</p>
<p>Przykładowy pełny kod wygląda tak:</p>
<pre class="brush: php">wp_register_script('tinycarousel', get_bloginfo('template_directory') . '/js/jquery.tinycarousel.min.js', array('jquery'), '1.0' );
wp_enqueue_script('tinycarousel');</pre>
<p>W powyższym przykładzie zarejestrowaliśmy wtyczkę<em> tinycarousel</em> której plik znajduje się w folderze z skórką i która wymaga biblioteki jQuery. Następnie dołączyliśmy ją do kodu.</p>
<h1>Dołączanie warunkowe</h1>
<p>Jeśli z naszego skryptu korzystamy tylko na niektórych stronach to nie ma potrzeby dołączania plików przy każdym wyświetleniu witryny. Warto więc dopisać instrukcję warunkową która spowoduje, że nasz kod będzie dołączany jedynie na wybranych stronach. Poniższy przykłąd będzie dołączał dodatkowe pliki tylko na stronie głównej:</p>
<pre class="brush: php">if(is_home){
   wp_register_script('tinycarousel', get_bloginfo('template_directory') . '/js/jquery.tinycarousel.min.js', array('jquery'), '1.0' );
   wp_enqueue_script('tinycarousel');
}</pre>
<p>Zaś ten kod spowoduje załadowanie skryptu JS jedynie na stronie z <em>id</em> równym 29:</p>
<pre class="brush: php">if(is_page('29')){
   wp_register_script('tinycarousel', get_bloginfo('template_directory') . '/js/jquery.tinycarousel.min.js', array('jquery'), '1.0' );
   wp_enqueue_script('tinycarousel');
}</pre>
<p>Jako argument w funkcji <em>if</em> podajemy odpowiedni tag warunkowy. Więcej informacji o nich można znaleźć <a title="O tagach warunkowych w dokumentacji WP" href="http://codex.wordpress.org/Conditional_Tags">pod tym linkiem</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mgdevelop.pl/index.php/2010/07/dolaczanie-skryptow-js-do-wordpressa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu nawigacyjne w motywach</title>
		<link>http://mgdevelop.pl/index.php/2010/07/obsluga-menu-nawigacyjnych/</link>
		<comments>http://mgdevelop.pl/index.php/2010/07/obsluga-menu-nawigacyjnych/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 19:01:49 +0000</pubDate>
		<dc:creator>Elektryk</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://mgdevelop.pl/?p=259</guid>
		<description><![CDATA[Wraz z wyjściem wersji 3.0 system WordPress wzbogacił się o nową opcję, możliwość tworzenia wielopoziomowych menu z dowolnych elementów: linków... <a href="http://mgdevelop.pl/index.php/2010/07/obsluga-menu-nawigacyjnych/">Czytaj dalej&#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Wraz z wyjściem wersji 3.0 system WordPress wzbogacił się o nową opcję, możliwość tworzenia wielopoziomowych menu z dowolnych elementów: linków do kategorii, stron czy odnośników zewnętrznych. Ten tutorial pokaże jak wzbogacić naszą skórkę do WordPressa o możliwość obsługi tej opcji oraz jak to wszystko dobrze skonfigurować.</p>
<p><span id="more-259"></span></p>
<h1>Rejestracja menu</h1>
<p>Zaczynamy od edycji pliku <em>functions.php </em>który znajdziemy w folderze <em>wp-content/themes/(nazwa skórki)</em>. Musimy w tym pliku zainicjować menu. Robi się to dosyć prosto. Wystarczy na jego końcu tuż przed znacznikiem ?&gt; dopisać taki krótki skrypt:</p>
<pre class="brush: php">add_action( 'init', 'rejestracja_menu' );
function rejestracja_menu(){
   register_nav_menus( array(
      'topmenu' =&gt; __('Menu górne'),
      'bocznemenu' =&gt; __('Menu główne'),
   ));
}</pre>
<p>W powyższym kodzie najpierw dodaliśmy zdarzenie polegające na wywołaniu funkcji rejestracja_menu podczas generowania strony a następnie zdefiniowaliśmy ciało tej funkcji. Użyliśmy w niej funkcji register_nav_menus() która rejestruje jedno lub więcej menu na podstawie przekazanej jej tablicy. W tablicy umieściliśmy dwa menu. Pierwsze o nazwie kodowej topmenu i drugie bocznemenu. Użytkownikowi będą się one wyświetlać kolejno jako Menu górne i Menu główne. Nazwy kodowe istnieją po to by uniknąć problematycznych polskich ogonków i białych znaków. Jeśli chcielibyśmy zdefiniować tylko jedno menu możemy także skorzystać z funkcji register_nav_menu której używa się tak:</p>
<pre class="brush: php">register_nav_menu( 'moje-menu', __( 'Menu na stronie' ) );</pre>
<h1>Umieszczanie menu w skórce</h1>
<p>Aby wyświetlić menu na stronie wstawiamy w odpowiednie miejsce w kodzie krótką instrukcję</p>
<pre class="brush: php">&lt;?php wp_nav_menu('bocznemenu'); ?&gt;</pre>
<p>Jako argument wystarczy podać nazwę kodową wcześniej zdefiniowanego menu. Chętni mogą się jednak pobawić dodatkowymi opcjami. Można np. ustawić w jaki element ma być włożone menu (domyślnie jest wewnątrz diva) oraz jaką ma mieć klasę. Poniższy kod ustawia je tak by było ono wyświetlane bez kontenera a element ul będzie miał klasę<em> mojemenu</em>. Należy pamiętać, że po dodaniu dodatkowych ustawień inaczej definiuje się które menu ma być wyświetlane w tym miejscu.</p>
<pre class="brush: php">&lt;?php wp_nav_menu( 'menu=bocznemenu&amp;container=&amp;menu_class=mojemenu' ); ?&gt;</pre>
<p>Oczywiście opcji jest o wiele, wiele więcej. Wszystkie do przejrzenia w <a title="Opis wp_nav_menu w dokumentacji WordPressa" href="http://codex.wordpress.org/Function_Reference/wp_nav_menu">dokumentacji tej funkcji</a>.</p>
<h1>Kompatybilność wsteczna</h1>
<p>Na koniec zajmijmy się problemem kompatybilności. Może się on pojawić gdy nie wiemy czy nasza skórka będzie uruchamiana także na wersjach WordPressa wcześniejszych niż 3.0 gdzie funkcje takie jak wp_nav_menu zwyczajnie nie działają. Wtedy przydałoby się by zamiast menu nawigacyjnego pojawiła się zwyczajnie lista stron w danym serwisie. Na szczęście łatwo takie coś wykonać. Wystarczy jedna instrukcja warunkowa w części odpowiedzialnej za wyświetlanie menu:</p>
<pre class="brush: php">if ( function_exists( 'wp_nav_menu' ) )
    wp_nav_menu( 'topemenu' );
else
    wp_page_menu( 'show_home=Strona główna&amp;menu_class=pagemenu' );
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://mgdevelop.pl/index.php/2010/07/obsluga-menu-nawigacyjnych/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

