<?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>WebTuts</title>
	<atom:link href="http://webtuts.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://webtuts.pl</link>
	<description>Prosto o Wordpressie - tuotriale, porady, wtyczki, szablony</description>
	<lastBuildDate>Mon, 20 Feb 2012 16:56:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Jak dodać kolumnę do ekranu zarządzania wpisami w WordPress?</title>
		<link>http://webtuts.pl/jak-dodac-kolumne-do-ekranu-zarzadzania-wpisami-w-wordpress/</link>
		<comments>http://webtuts.pl/jak-dodac-kolumne-do-ekranu-zarzadzania-wpisami-w-wordpress/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:47:18 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1402</guid>
		<description><![CDATA[<p>Wiele wtyczek &#8222;wpycha&#8221; się z dodatkową treścią na ekran zarządzania wpisami i stronami. Jednym z przykładów jest bardzo popularna wtyczka All in One SEO Pack. Po zainstalowaniu, domyślnie na naszym ekranie zarządzania wpisami zostaną dodane aż trzy kolumny (SEO Title, &#8230; <a href="http://webtuts.pl/jak-dodac-kolumne-do-ekranu-zarzadzania-wpisami-w-wordpress/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Wiele wtyczek &#8222;wpycha&#8221; się z dodatkową treścią na ekran zarządzania wpisami i stronami. Jednym z przykładów jest bardzo popularna wtyczka All in One SEO Pack. Po zainstalowaniu, domyślnie na naszym ekranie zarządzania wpisami zostaną dodane aż trzy kolumny (SEO Title, SEO Keywords, SEO Description), co sprawia, że cała tabelka staje się mało czytelna. Mimo, że denerwuje mnie zachowanie tej wtyczki, sama technika jest całkiem pożyteczna. Zatem w tym artykule pokażę, w jaki sposób możesz dodać kolumnę do ekranu zarządzania wpisami i stronami, oraz jak wyłączyć te niechciane.</p>
<h2>Rejestrujemy nową kolumnę</h2>
<p>Domyślnie ekran zarządzania wpisami wygląda tak:</p>
<p><a href="http://webtuts.pl/wp-content/uploads/2012/01/zarzadzanie_wpisami.png" rel="lightbox[1402]"><img class="alignnone size-large wp-image-1406" title="Domyślny wygląd ekranu zarządzania wpisami" src="http://webtuts.pl/wp-content/uploads/2012/01/zarzadzanie_wpisami-640x153.png" alt="Domyślny wygląd ekranu zarządzania wpisami" width="640" height="153" /></a></p>
<p>Naszym celem w tym tutorialu, będzie dodanie kolumny zawierającej miniaturę dla każdego wpisu. Zatem pierwsza czynność, którą musimy wykonać, polega na dodaniu nowej kolumny do istniejącej listy, poprzez dodanie fragmentu kodu do pliku functions.php*:</p>
<pre class="brush: php; title: ; notranslate">
add_filter('manage_posts_columns', 'add_thumbnails_column');

function add_thumbnails_column($columns) {
    $columns['thumbnail'] = __('Miniatura');
    return $columns;
}
</pre>
<p>Powyższy kod rejestruje kolumnę o nazwie thumbnail dla wpisów.</p>
<h2>Wyświetlamy kolumnę &#8216;thumbnail&#8217;</h2>
<p>Teraz pozostaje nam tylko wypełnić nową kolumnę treścią i wyświetlić jej zawartość. W tym celu skorzystamy z akcji <code>manage_posts_custom_column</code>. Podpinamy pod nią funkcję, która przyjmuje jeden parametr &#8211; nazwę kolumny, którą chcemy manipulować. W naszym przykładzie, w środku znajdzie się kod odpowiedzialny za sprawdzenie czy dany wpis posiada miniaturę i wyświetlenie jej.</p>
<pre class="brush: php; title: ; notranslate">
add_action('manage_posts_custom_column',  'show_thumbnails_column');

function show_thumbnails_column($column) {
    global $post;

    switch ( $column )
	{
	case 'thumbnail':
            if ( has_post_thumbnail() ){
                echo get_the_post_thumbnail( $post-&gt;ID, array(80,80) );
            }else{
                _e('Brak');
            }
	break;
	}
}
</pre>
<p>Jeśli chodzi o rozmiar miniatury, to w przykładzie postanowiłam wykorzystać obrazek o wymiarach 80x80px. Wartości te można zmienić oczywiście na dowolne inne. Możemy się również posłużyć jednym ze zdefiniowanych na blogu rozmiarów (domyślnych &#8211; &#8216;thumbnail&#8217;, &#8216;medium&#8217;, &#8216;large&#8217;, &#8216;full&#8217; lub <a href="http://codex.wordpress.org/Function_Reference/add_image_size">własnych</a>), zamieniając kod w linijce 10 na:</p>
<pre class="brush: php; title: ; notranslate">echo get_the_post_thumbnail( $post-&gt;ID, 'nazwa_rozmiaru' );      </pre>
<p>Ostatecznie po wprowadzeniu wszystkich zmian, nasz ekran zarządzania wpisami wygląda tak:</p>
<p><a href="http://webtuts.pl/wp-content/uploads/2012/01/zarzadzanie_wpisami_kolumna_miniatura.png" rel="lightbox[1402]"><img class="alignnone size-large wp-image-1407" title="Ekran zarządzania wpisami po dodaniu miniatur" src="http://webtuts.pl/wp-content/uploads/2012/01/zarzadzanie_wpisami_kolumna_miniatura-640x226.png" alt="Ekran zarządzania wpisami po dodaniu miniatur" width="640" height="226" /></a></p>
<h2>Wyłączamy niechciane kolumny</h2>
<p>We wstępie wspominałam, że wtyczki często dodają kolumny z informacjami do ekranu zarządzania wpisami. Na szczęście można je łatwo wyłączyć, klikając <strong>Opcje ekranu</strong> w prawym górnym rogu (tuż obok Pomocy). </p>
<p><a href="http://webtuts.pl/wp-content/uploads/2012/01/zarzadzanie_wpisami_opcje_ekranu.png" rel="lightbox[1402]"><img src="http://webtuts.pl/wp-content/uploads/2012/01/zarzadzanie_wpisami_opcje_ekranu-640x133.png" alt="Ekran zarządzania wpisami - opcje ekranu" title="Ekran zarządzania wpisami - opcje ekranu" width="640" height="133" class="alignnone size-large wp-image-1413" /></a></p>
<p>Swoją drogą dojście do tego rozwiązania zajęło mi chwilę, bo do tej pory wydawało mi się że poprzez Opcje ekranu można jedynie włączać i wyłączać całe panele <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>*</strong> Cały kod podany w artykule powinien się znaleźć w pliku functions.php, jednak w tym konkretnym przypadku polecam umieszczenie go w specjalnej wtyczce funkcjonalnej (co to jest wtyczka funkcjonalna i jak ją stworzyć przeczytasz <a title="Kiedy warto zastąpić plik functions.php wtyczką funkcjonalną i jak to zrobić?" href="http://wpninja.pl/artykuly/kiedy-warto-zastapic-plik-functions-php-wtyczka-funkcjonalna-i-jak-to-zrobic/" target="_blank">w moim artykule na blogu WP Ninja</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/jak-dodac-kolumne-do-ekranu-zarzadzania-wpisami-w-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress jako CMS &#8211; bloki treści</title>
		<link>http://webtuts.pl/wordpress-jako-cms-bloki-tresci/</link>
		<comments>http://webtuts.pl/wordpress-jako-cms-bloki-tresci/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 20:40:11 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Porady]]></category>
		<category><![CDATA[Wtyczki]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[page.ly multiedit]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wtyczki]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1365</guid>
		<description><![CDATA[<p>Jedną z rzeczy, której brakuje mi w WordPress to możliwość budowania stron z bloków, które można umieszczać w zdefiniowanych regionach i oczywiście edytować ich zawartość (podobnie jak to ma miejsce w Drupalu).</p>
<p>Ostatnio pracowałam nad serwisem, w którym strona główna &#8230; <a href="http://webtuts.pl/wordpress-jako-cms-bloki-tresci/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Jedną z rzeczy, której brakuje mi w WordPress to możliwość budowania stron z bloków, które można umieszczać w zdefiniowanych regionach i oczywiście edytować ich zawartość (podobnie jak to ma miejsce w Drupalu).</p>
<p>Ostatnio pracowałam nad serwisem, w którym strona główna składała się z trzech bloków treści i kluczową sprawą była możliwość ich edycji przez klienta. Teoretycznie taką funkcjonalność można &#8222;zasymulować&#8221; z pomocą widgetów oraz sprytnie zdefiniowanych sidebarów, ale na szczęście szybko okazało się że nie ma takiej potrzeby <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Rzut oka do repozytorium WordPress i znalazłam kilka obiecujących wtyczek. Ostatecznie jednak wypróbowałam dwie,<a href="http://wordpress.org/extend/plugins/multiple-content-blocks/">Multiple content blocks</a> i <a href="http://wordpress.org/extend/plugins/pagely-multiedit/">Page.ly MultiEdit</a> i właśnie tą drugą chciałam tutaj przedstawić.</p>
<h3>Krok 1. Instalujemy wtyczkę.</h3>
<p>Zaczynamy od początku, czyli od instalacji i aktywacji wtyczki w panelu administracyjnym. Wtyczka nie posiada rozbudowanego panelu opcji. W opcji Ustawienia->Multi-Edit mamy jedynie możliwość włączenia obsługi shortocode-ów w zdefiniowanych regionach. Domyślnie opcja ta jest wyłączona.</p>
<h3>Krok 2. Tworzymy szablon strony</h3>
<p>Wykonaj kopię pliku page.php i zmień jego nazwę na dowolna inną. Na potrzeby tego artykułu stworzymy szablon strony Kontakt z dwoma blokami treści &#8211; Left i Right.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
/*
Template Name: Kontakt
MultiEdit: Left,Right
*/
?&gt;</pre>
<p>Z punktu widzenia wtyczki page.ly MultiEdit najważniejsza jest druga linijka, gdyż tutaj deklarujemy bloki, z których będziemy korzystać. Nazewnictwo jest dowolne, aczkolwiek nie testowałam, jak wtyczka reaguje na polskie znaki diakrytyczne. Jest to o tyle ważne, że są to równocześnie nazwy regionów wyświetlane w panelu administracyjnym.</p>
<p>Następnie musimy wskazać miejsca w kodzie szablonu, w których powinny zostać wstawione bloki za pomocą poniższego kodu:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php multieditDisplay('Left'); ?&gt;</pre>
<p>Należy pamiętać, żeby funkcję multiedit() wstawić w środku pętli głównej. W naszym przykładzie mogło by to wyglądać tak:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;
	&lt;div &lt;?php post_class() ?&gt; id=&quot;post-&lt;?php the_ID(); ?&gt;&quot;&gt;
		&lt;div class=&quot;entry&quot;&gt;
			&lt;?php the_post(); ?&gt;
			&lt;div class=&quot;left-content&quot;&gt;
            &lt;?php multieditDisplay('Left'); ?&gt;
            &lt;/div&gt;
            &lt;div class=&quot;right-content&quot;&gt;
            &lt;?php multieditDisplay('Right'); ?&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;?php endwhile; endif; ?&gt;
</pre>
<p>Struktura i nazewnictwo klas css jest zupełnie dowolne. Ważne, aby nazwa bloku podana jako argument funkcji <code>multieditDisplay()</code> była zgodna z tą zdefiniowaną w nagłówku.</p>
<p>I jeszcze rzut oka na ostateczny layout:<br />
<img src="http://webtuts.pl/wp-content/uploads/2012/01/multiedit_layout.png" alt="Przykładowy layout z zastosowaniem bloków treści" title="Przykładowy layout z zastosowaniem bloków treści" width="640" height="500" class="alignnone size-full wp-image-1381" /></p>
<h3>Krok 3. Tworzymy nową stronę w panelu administracyjnym.</h3>
<p>Teraz wystarczy tylko wejść do panelu administracyjnego i utworzyć nową stronę, a następnie wybrać dla niej szablon, który przed chwilą stworzyliśmy. Po zapisaniu kopii roboczej i odświeżeniu strony, naszym oczom ukaże się zmodyfikowany edytor z zakładkami odpowiadającymi naszym regionom.<br />
<img src="http://webtuts.pl/wp-content/uploads/2012/01/bloki_tresci.png" alt="Edycja strony ze zdefiniowanymi blokami treści" title="Edycja strony ze zdefiniowanymi blokami treści" width="640" height="387" class="alignnone size-full wp-image-1368" /><br />
Zakładka <strong>Main Content</strong> zawiera główną treść strony (wyświetlaną za w pętli głównej za pomocą funkcji <code>the_post();</code>).</p>
<p>To w zasadzie koniec. Pozostaje nam już tylko uzupełnić treść w poszczególnych zakładkach i zapisać zmiany. W ten sposób stworzyliśmy stronę ze zdefiniowanymi blokami, których treść można swobodnie edytować.</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/wordpress-jako-cms-bloki-tresci/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>comment_form() – wszystko co powinieneś wiedzieć (cz.2)</title>
		<link>http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz-2/</link>
		<comments>http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz-2/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 12:38:49 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[comment_form]]></category>
		<category><![CDATA[komentarze]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1316</guid>
		<description><![CDATA[<p><a href="http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz1/" title="comment_form() – wszystko co powinieneś wiedzieć (cz.1)" >Druga część wpisu</a> poświęconego funkcji <code>comment_form()</code>. Bardziej zaawansowane modyfikacje najczęściej wymagają skorzystania z odpowiednich akcji i/lub filtrów. W tym wpisie przedstawię je po krótce. Dodatkowe informacje na ten temat znajdziesz również w <a href="http://codex.wordpress.org/Function_Reference/comment_form">oficjalnej dokumentacji</a>.<span id="more-1316"></span></p>
<h2>Filtry</h2>
<p>W poprzednim wpisie &#8230; <a href="http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz-2/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz1/" title="comment_form() – wszystko co powinieneś wiedzieć (cz.1)" >Druga część wpisu</a> poświęconego funkcji <code>comment_form()</code>. Bardziej zaawansowane modyfikacje najczęściej wymagają skorzystania z odpowiednich akcji i/lub filtrów. W tym wpisie przedstawię je po krótce. Dodatkowe informacje na ten temat znajdziesz również w <a href="http://codex.wordpress.org/Function_Reference/comment_form">oficjalnej dokumentacji</a>.<span id="more-1316"></span></p>
<h2>Filtry</h2>
<p>W poprzednim wpisie omówione zostały argumenty jakie przyjmuje funkcja <code>comment_form()</code>. Korzystanie z argumentów jest szybką metodą wprowadzenia drobnych zmian w formularzu. Przy zaawansowanych modyfikacjach, może okazać się że podawanie samych argumentów nie wystarczy, nie mówiąc o tym że powstanie dość skomplikowany i/lub nieczytelny kod. W takim przypadku lepszym rozwiązaniem jest wykorzystanie filtrów.</p>
<h3>comment_form_default_fields</h3>
<p>Podobnie, jak argument <code>fields</code>, filtr <code>comment_form_default_fields</code> pozwala na wprowadzanie zmian w domyślnych polach formularza komentarzy (podpis, email, strona WWW). Z jego pomocą możesz usunąć/zmienić któreś z trzech podstawowych pól lub dodać własne. We wpisie <a href="http://wpninja.pl/artykuly/dodatkowe-pola-w-formularzu-komentarzy-wordpress/">Dodatkowe pola w formularzu komentarzy WordPress</a>, korzystałam właśnie z tego filtra do wyświetlenia dodatkowego pola w formularzu.</p>
<h3>comment_form_field_{$name}</h3>
<p>Pozwala na wprowadzanie zmian dla jednego, konkretnego pola (spośród trzech podstawowych), którego nazwę podajesz, zamiast {$name}. Dopuszczalne nazwy to <code>author, email, url</code>.</p>
<p>Powiedzmy że naszym celem jest modyfikacja kodu HTML dla pola strona WWW, np. zmiana klasy kontenera (element
<p>).</p>
<pre class="brush: php; title: ; notranslate">
add_filter( 'comment_form_field_url', 'my_comment_form_field_url' );

function my_comment_form_field_author( $field ) {

 $field = str_replace( 'class=&quot;comment-form-url&quot;', 'class=&quot;my-url&quot;', $field );

 return $field;
}
</pre>
<h3>comment_form_field_comment</h3>
<p>Tak jak arguemnt <code>comment_from</code> odnosi się do pola tekstowego z treścią komentarza. Z pomocą filtra możemy np. zmienić nieco strukturę HTML, wstawiając pole w dodatkowy kontener.</p>
<pre class="brush: php; title: ; notranslate">
add_filter( 'comment_form_field_comment', 'my_comment_form_field_comment' );

function my_comment_form_field_comment( $comment_field ) {

$comment_field = '&lt;div&gt;' . $comment_field . '&lt;/div&gt;';

	return $comment_field;
}
</pre>
<h3>comment_form_logged_in</h3>
<p>Filtr, który pozwala na modyfikację komunikatu dla użytkowników zalogowanych. Wykorzystamy go do wyświetlenia specjalnej wiadomości dla użytkowników.</p>
<pre class="brush: php; title: ; notranslate">
add_filter( 'comment_form_logged_in', 'my_comment_form_logged_in', 10, 3 );

function my_comment_form_logged_in( $logged_in_as, $commenter, $user_identity ) {

	$logged_in_as .= '&lt;p&gt;' . __( 'Czekamy na Twoją opinię, jest dla nas bardzo ważna!' ) . '&lt;/p&gt;';

	return $logged_in_as;
}
</pre>
<p>Jak widzisz, przekazywane są tutaj trzy argumenty, które możemy wykorzystać w naszej funkcji:</p>
<ul>
<li><code>$logged_in_as</code> &#8211; kod HTML oraz informacje o osobie zalogowanej (komunikat: Zalogowany jako&#8230;). Możemy zmienić jego treść, lub dodać jeszcze jeden komunikat, tak jak w przykładowym kodzie powyżej.</li>
<li><code>$commenter</code> &#8211; zmienna zawierająca informacje o zalogowanym użytkowniku, wyciągnięte poprzez funkcję <a href="http://codex.wordpress.org/Function_Reference/wp_get_current_commenter"><code>wp_get_current_commenter()</code></a>,</li>
<li><code>$user_identity</code> &#8211; globalna zmienna reprezentująca aktualnego użytkownika</li>
</ul>
<h3>comment_form_defaults</h3>
<p>Filtr ten pozwoli Ci przekazać dowolny argument, z jakim można wywołać funkcję <code>comment_form()</code> (poza zmienną <code>fields</code>, którą możesz nadpisać poprzez filtr <code>comment_form_default_fields</code>). W poniższym przykładzie zmienimy treść komunikatu, wyświetlanego tuż nad guzikiem &#8222;Publikuj&#8221;.</p>
<pre class="brush: php; title: ; notranslate">
add_filter( 'comment_form_defaults', 'my_comment_form_defaults' );

function my_comment_form_defaults( $defaults ) {

	$defaults['comment_notes_after'] = __( 'Zanim komentarz zostanie opublikowany, musi go zatwierdzić moderator.' );

	return $defaults;
}
</pre>
<h2>Akcje</h2>
<p>Funkcja <code>comment_form()</code> daje duże pole do popisu autorom wtyczek i motywów. Oprócz zestawu argumentów i filtrów do dyspozycji jest jeszcze klika akcji, uruchamianaych w różnych momentach wyświetlania formularza komentarzy. Większość z nich znajdziesz poniżej, dla wygody nałożyłam je na screeenshot formularza. Przykładowy kod znajdziesz na samym końcu tej sekcji, jako że dla wszystkich akcji jego bazowa struktuta jest identyczna.</p>
<p><img class="aligncenter size-full wp-image-1330" title="Akcje dla funkcji comment_form()" src="http://webtuts.pl/wp-content/uploads/2011/11/comment_form_action_hooks.png" alt="Akcje dla funkcji comment_form()" width="640" height="616" /></p>
<p>Poza akcjamjami przedstawionymi na obrazku, istnieją jeszcze trzy, związane z logowaniem i uprawnieniami do komentowania.</p>
<h3>comment_form_must_log_in_after</h3>
<p>Akcja zostanie uruchomiona tylko gdy użytkownik jest niezalogowany, jeśli dodawanie komentarzy wymaga logowania. Uruchamiana tuż po wyświetleniu wartości dla argumentu <code>must_log_in</code>.</p>
<h3>comment_form_logged_in_after</h3>
<p>Akcja uruchamiana tylko dla zalogowanych użytkowników, tuż po wyświetleniu wartości dla argumentu <code>logged_in_as</code>.</p>
<h3>comment_form_comments_closed</h3>
<p>Jedyna akcja uruchamiana, gdy komentowanie jest wyłączone. Wszystkie pozostałe akcje uruchamiane są przy włączonych komentarzach. Jest to w zasadzie jedyny sposób, na wyświetlenie własnego komunikatu w takim wypadku, przykładowy kod poniżej:</p>
<pre class="brush: php; title: ; notranslate">
add_action( 'comment_form_comments_closed', 'my_comments_closed' );

function my_comments_closed() {
	echo '&lt;p class=&quot;comments-closed&quot;&gt;' . __( 'Przepraszamy, komentarze są wyłączone dla tego wpisu.' ) . '&lt;/p&gt;';
}
</pre>
<h2>Podsumowanie</h2>
<p>We wstępie do części pierwszej wspominałam, że cały czas funkcjonuje jeszcze wcześniejszy sposób wstawiania komentarzy. Myślę jendak, że sytuacja zmieni się dosyć szybko. Świadczyć o tym może fakt, że korzystanie z funkcji <code>comment_form()</code> jest jednym z wymogów dla motywów w repozytorium WordPress. Osobiście również nie potrafię znaleźć wad tego rozwiązania. Twórcy szablonów &#8211; czas na przesiadkę <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>comment_form() &#8211; wszystko co powinieneś wiedzieć (cz.1)</title>
		<link>http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz1/</link>
		<comments>http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz1/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 22:01:13 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1244</guid>
		<description><![CDATA[<p>W starszych wersjach WordPress (do 2.9) jedyną metodą na wstawienie formularza komentarzy było wpisanie całego kodu do pliku comments.php. Metoda ta była mało elastyczna, więc wraz z WordPress 3.0 wprowadzono funkcję <code>comment_form()</code>. W ten sposób ponad 40 linijek mieszanki &#8230; <a href="http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz1/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>W starszych wersjach WordPress (do 2.9) jedyną metodą na wstawienie formularza komentarzy było wpisanie całego kodu do pliku comments.php. Metoda ta była mało elastyczna, więc wraz z WordPress 3.0 wprowadzono funkcję <code>comment_form()</code>. W ten sposób ponad 40 linijek mieszanki kodu HTML, PHP oraz tekstów można zastąpić jedną linijką. </p>
<p>Oczywiście dodanie funkcji, nie oznacza, że poprzednia metoda wyszła z użycia. Wiele szablonów, również tych nowych, korzysta ze starszego rozwiązania. W takim przypadku cały kod niezbędny do wyświetlenia formularza znajduje się w pliku comments.php, gdzie można swobodnie edytować teksty, oraz HTML. Dla osób mniej &#8222;technicznych&#8221; może się to wydawać lepszym rozwiązaniem, ponieważ nawet bez znajomości PHP można stosunkowo łatwo samodzielnie wprowadzać drobne zmiany. </p>
<p>Korzystając z gotowych szablonów masz znikomy wpływ na to, z której metody skorzystał jego twórca. Jednak przy odrobinie cierpliwości, można ujarzmić również funkcję <code>comment_form()</code>, o czym przeczytasz poniżej.</p>
<p>W zależności od tego jak bardzo potrzebujemy ingerować w formularz komentarzy, mamy do dyspozycji dwie podstawowe metody:</p>
<ul>
<li>poprzez wywołanie funkcji <code>comment_form()</code> z odpowiednimi argumentami, lub </li>
<li>korzystając z dostępnych filtrów i akcji.</li>
</ul>
<p>W tym wpisie skupię się na pierwszej z wymienionych metod.</p>
<h2>Argumenty</h2>
<p>Podstawowy sposób wywołania funkcji comment_form() nie wymaga podawania żadnych parametrów.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php comment_form(); ?&gt;</pre>
<p>Wywołanie w ten sposób sprawi, że wyświetlony zostanie formularz komentarzy z domyślnymi ustawieniami.</p>
<p>Funkcję można również wywołać z parametrami:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php comment_form($args, $post_id); ?&gt;</pre>
<p><code>$post_id</code> jest ID wpisu dla którego wyświetlany jest formularz. Domyślnie jest to aktualny wpis, więc w większości zastosowań nie ma potrzeby podawania tego parametru.<br />
<code>$args</code> jest tablicą argumentów, za pomocą których kontrolujemy formularz. Jest to zatem klucz do wprowadzania zmian w formularzu i właśnie na argumentach skupimy się tej chwili.</p>
<h3>fields</h3>
<p>Jest to argument który zawiera tablicę standardowych pól formularza &#8211; podpis, email i strona www.<br />
Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );

comment_form(
	array(
		'fields' =&gt; array(
					'author' =&gt; '&lt;p class=&quot;comment-form-author&quot;&gt;' . '&lt;label for=&quot;author&quot;&gt;' . __( 'Podpis' ) . '&lt;/label&gt; ' . ( $req ? '&lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;' : '' ) . '&lt;input id=&quot;author&quot; name=&quot;author&quot; type=&quot;text&quot; value=&quot;' . esc_attr( $commenter['comment_author'] ) . '&quot; size=&quot;30&quot; /&gt;&lt;/p&gt;',
					'email' =&gt; '&lt;p class=&quot;comment-form-email&quot;&gt;&lt;label for=&quot;email&quot;&gt;' . __( 'E-mail' ) . '&lt;/label&gt; ' . ( $req ? '&lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;' : '' ) . '&lt;input id=&quot;email&quot; name=&quot;email&quot; type=&quot;text&quot; value=&quot;' . esc_attr(  $commenter['comment_author_email'] ) . '&quot; size=&quot;30&quot; /&gt;&lt;/p&gt;',
					'url' =&gt; '&lt;p class=&quot;comment-form-url&quot;&gt;&lt;label for=&quot;url&quot;&gt;' . __( 'Strona WWW' ) . '&lt;/label&gt;' . '&lt;input id=&quot;url&quot; name=&quot;url&quot; type=&quot;text&quot; value=&quot;' . esc_attr( $commenter['comment_author_url'] ) . '&quot; size=&quot;30&quot; /&gt;&lt;/p&gt;',		)
	)
);
</pre>
<p>W tym przykładzie wywołałam funkcję <code>comment_form()</code> z argumentem <code>fields</code>. Powyższy kod możesz wykorzystać, jeśli potrzebujesz dokonać zmian w kodzie HTML (np. zamienić element <code>p</code> na <code>div</code> lub dodać własną klasę), albo zmienić opis pól.</p>
<p>Możliwe jest również dodanie dodatkowego pola, jednak jest to już bardziej złożone zagadnienie. Jeśli chcesz się dowiedzieć więcej na ten temat, zapraszam do lektury mojego wpisu gościnnego na blogu <a href="http://wpninja.pl">wpninja.pl</a>, pt. <a href="http://wpninja.pl/artykuly/dodatkowe-pola-w-formularzu-komentarzy-wordpress/">&#8222;Dodatkowe pola w formularzu komentarzy WordPress&#8221;.</a></p>
<h3>comment_field</h3>
<p>Ten argument pozwala na manipulację kodem odpowiedzialnym za wyświetlanie pola tekstowego przeznaczonego na treść komentarza. Tak jak argument <code>fields</code> pozwala na ingerencję w kod HTML oraz zmianę opisu. Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
comment_form(
	array(
		'comment_field' =&gt; '&lt;p class=&quot;comment-form-comment&quot;&gt;&lt;label for=&quot;comment&quot;&gt;' . _x( 'Komentarz', 'noun' ) . '&lt;/label&gt;&lt;textarea id=&quot;comment&quot; name=&quot;comment&quot; cols=&quot;45&quot; rows=&quot;8&quot; aria-required=&quot;true&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;'
		)
);
</pre>
<h3>must_log_in</h3>
<p>Argument odpowiedzialny za tekst oraz HTML wyświetlany użytkownikom niezalogowanym, jeśli dodawanie komentarzy wymaga logowania. Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'must_log_in' =&gt; '&lt;p class=&quot;must-log-in&quot;&gt;' .  sprintf( __( 'Musisz się &lt;a href=&quot;%s&quot;&gt;zalogować&lt;/a&gt;, aby móc dodać komentarz.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( ) ) ) ) . '&lt;/p&gt;'
		)
);
?&gt;
</pre>
<h3>logged_in_as</h3>
<p>Argument odpowiedzialny za wyświetlanie komunikatu dla zalogowanych użytkowników, z linkami do profilu użytkownika oraz do wylogowania. Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'logged_in_as' =&gt; '&lt;p class=&quot;logged-in-as&quot;&gt;' . sprintf( __( 'Zalogowano się jako &lt;a href=&quot;%1$s&quot;&gt;%2$s&lt;/a&gt;. &lt;a href=&quot;%3$s&quot; title=&quot;Wyloguj się z tego konta&quot;&gt;Wylogować się?&lt;/a&gt;' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( ) ) ) ) . '&lt;/p&gt;'
		)
);
?&gt;
</pre>
<h3>comment_notes_before</h3>
<p>Argument, dzięki któremu możesz dodać własny komunikat dla nie zalogowanych użytkowników, wyświetlany tuż nad formularzem. Domyślnie zawiera on informację o tym, że adres email nie zostanie opublikowany a pola wymagane są oznaczone gwiazdką. Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'comment_notes_before' =&gt; '&lt;p class=&quot;comment-notes&quot;&gt;' . __( 'Twój adres e-mail nie zostanie opublikowany.' ) . ( $req ? $required_text : '' ) . '&lt;/p&gt;'
		)
);
?&gt;
</pre>
<p>Jeśli nad formularzem nie chcesz wyświetlać żadnego komunikatu, możesz to zrobić korzystając z poniższego fragmentu:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'comment_notes_before' =&gt; ''
		)
);
?&gt;
</pre>
<h3>comment_notes_after</h3>
<p>Jest to argument który odpowiada za komunikat wyświetlany pod formularzem, tuż pod polem tekstowym a nad przyciskiem publikacji. Domyślnie zawiera informacje o tagach HTML, które można wykorzystywać w treści komentarza. Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'comment_notes_after' =&gt; '&lt;p class=&quot;form-allowed-tags&quot;&gt;' . sprintf( __( 'Możesz użyć następujących tagów oraz atrybutów &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;: %s' ), ' &lt;code&gt;' . allowed_tags() . '&lt;/code&gt;' ) . '&lt;/p&gt;'
		)
);
?&gt;
</pre>
<p>Tego komunikatu również można się pozbyć, postępując analogicznie jak w przypadku <code>comment_notes_before</code>.</p>
<h3>id_form</h3>
<p>Argument, który pozwalają na dodanie własnego atrybutu ID do elementu <code>form</code>.<br />
Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'id_form' =&gt; 'commentform'
		)
);
?&gt;
</pre>
<h3>id_submit, label_submit</h3>
<p>Atrybuty, które pozwalają na manipulację przyciskiem publikacji komentarza.<br />
<code>id_submit</code> pozwala zdefiniować własny atrybut ID dla elementu przycisku, natomiast <code>label_submit</code> pozwala zmienić tekst na przycisku. Domyślne wartości:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'id_submit' =&gt; 'submit',
		'label_submit' =&gt; __( 'Opublikuj komentarz' )
		)
);
?&gt;
</pre>
<h3>title_reply</h3>
<p>Tekst nagłówka wyświetlanego nad formularzem (i nad komunikatem <code>comment_notes_before</code>) &#8211; jego tutł.<br />
Domyślna wartość:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'title_reply' =&gt; __( 'Dodaj komentarz' )
		)
);
?&gt;
</pre>
<h3>title_reply_to oraz cancel_reply_link</h3>
<p>Przy włączonej opcji zagnieżdżonych komentarzy, komentujący ma możliwość udzielenia odpowiedzi na konkretną wypowiedź. W takim przypadku można nieco zmienić tekst nagłówek nad formularzem.<br />
W trakcie pisania odpowiedzi do komentarza, wyświetlany jest link pozwalający na anulację odpowiedzi. Jego treść możemy zmienić za pomocą argumentu <code>cancel_reply_link</code>.<br />
Domyślne wartości:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'title_reply_to' =&gt; __( 'Dodaj komentarz do %s' ),
		'cancel_reply_link' =&gt; __( 'Anuluj pisanie odpowiedzi' )
		)
);
?&gt;
</pre>
<p><a href="http://webtuts.pl/wp-content/uploads/2011/10/title_reply_to.png" rel="lightbox[1244]"><img src="http://webtuts.pl/wp-content/uploads/2011/10/title_reply_to.png" alt="wizualizacja położenia argumentów title_reply_to oraz cancel_reply_link" title="wizualizacja położenia argumentów title_reply_to oraz cancel_reply_link" width="640" height="236" class="aligncenter size-full wp-image-1288" /></a></p>
<h2>Zastosowanie</h2>
<p>Funkcję <code>comment_form()</code> można wywołać z dowolną kombinacją podanych powyżej argumentów, na przykład tak:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
comment_form(
	array(
		'label_submit' =&gt; __('Wyślij'),
		'title_reply' =&gt; __('Co o ty tym myślisz?')
	)
);
?&gt;
</pre>
<p>Dla wszystkich pozostałych argumentów, użyte zostaną ich wartości domyślne, które podawałam przy każdym z nich. Informacje na ten temat znajdziesz również w <a href="http://codex.wordpress.org/Function_Reference/comment_form" title="Dokumentacja funkcji comment_form()">oficjalnej dokumentacji</a>.<br />
We wszystkich przykładach podaję domyślne komunikaty i teksty po polsku (dla WordPress w wersji polskiej).</p>
<h2>Podsumowanie</h2>
<p>Myślę, że mając taką ściągę z łatwością zapanujesz nad swoim formularzem komentarzy. W części drugiej przeczytasz o nieco bardziej zaawansowanych zagadnieniach, czyli o wprowadzaniu zmian poprzez filtry i akcje.</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/comment_form-wszystko-co-powinienes-wiedziec-cz1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Przycisk Google Plus One &#8211; kreatywne zastosowania</title>
		<link>http://webtuts.pl/przycisk-google-plus-one-kreatywne-zastosowania/</link>
		<comments>http://webtuts.pl/przycisk-google-plus-one-kreatywne-zastosowania/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 14:37:42 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google plus one]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1096</guid>
		<description><![CDATA[<p>Google Plus powoli przeciera szlaki w Internecie. O ile sam serwis nie tętni jeszcze życiem tak jak Facebook, a znajomi dopiero zakładają swoje profile, o tyle przycisk polecający treści &#8211; Google Plus One już zrobił karierę. Od Facebookowego Like różni &#8230; <a href="http://webtuts.pl/przycisk-google-plus-one-kreatywne-zastosowania/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Google Plus powoli przeciera szlaki w Internecie. O ile sam serwis nie tętni jeszcze życiem tak jak Facebook, a znajomi dopiero zakładają swoje profile, o tyle przycisk polecający treści &#8211; Google Plus One już zrobił karierę. Od Facebookowego Like różni się tym, że przekłada się na wyniki wyszukiwania w Google, co czyni go niezwykle atrakcyjnym narzędziem promocji.</p>
<p>Wstawienie guzika Google Plus One jest bardzo proste, podstawową instrukcję oraz kreator znajdziesz na oficjalnej stronie - <a href="http://www.google.com/intl/pl/webmasters/+1/button/">http://www.google.com/intl/pl/webmasters/+1/button/</a>. Do wyboru mamy przycisk w czterech rozmiarach oraz możemy wybrać język, a całość sprowadza się do wstawienia dwóch linijek kodu. Nie wyczerpuje to jednak w pełni możliwości, jakie daje przycisk Google +1. Jeśli nie boisz się odrobiny kodu, możesz dostosować przycisk +1 jeszcze bardziej, m.in <strong>możesz wywołać swoją funkcję JavaScript</strong>, w momencie gdy ktoś kliknie przycisk. Brzmi to niepozornie, ale w praktyce otwiera nowe atrakcyjne możliwości.</p>
<p>Zanim jednak puścimy wodze fantazji &#8211; szklanka zimnej wody, czyli <a href="http://www.google.com/intl/pl/webmasters/+1/button/policy.html">zasady Google</a> <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p>Wydawca nie może bezpośrednio zachęcać użytkowników do klikania przycisku +1, jeśli działanie takie jest mylące dla użytkowników. Wydawca nie może oferować nagród, pieniędzy ani równowartości pieniężnej w zamian za kliknięcie przycisku +1.</p></blockquote>
<p>Ale na osłodę:</p>
<blockquote><p>Aby uniknąć wątpliwości – Wydawca może kierować użytkowników do przycisku +1, aby umożliwić im korzystanie ze swoich treści i funkcji oraz powiązań społecznościowych użytkowników.</p></blockquote>
<p>Co to oznacza dla właściciela strony?</p>
<p>Wpływanie na wyniki wyszukiwania za pomocą guzika +1 jest kuszące, nie można jednak przesadzać. Z zasad jasno wynika, że w zamian za kliknięcie +1 nie można oferować produktów ani usług za które normalnie pobierana jest opłata, ani oferować ich w formie nagród za kliknięcie (sądzę że wszelkie konkursy z nagrodami dla osób które klikną +1 odpadają).</p>
<p>W drugim akapicie czytamy jednak, że można użytkowników &#8222;kierować do przycisku +1,  aby umożliwić im korzystanie ze swoich treści i funkcji&#8221; &#8211; z czego wnioskuję, że akceptowalne jest oferowanie darmowego raportu, badania, ebooka albo innej treści, którego nigdzie <strong>nie sprzedajesz</strong> osobom które klikną +1 na Twojej stronie.</p>
<p>Z pomocą JavaScript można również dotrzeć do osób, które usuną przyznane +1. Można na przykład zapytać, co je do tego skłoniło, czy możesz coś poprawić &#8211; oczywiście tutaj też nie można przesadzać, aby nie być zbyt natrętnym dla użytkowników.</p>
<h2>Jak wstawić przycisk Google +1 na swoją stronę?</h2>
<ol>
<li>
Pierwszy krok polega na wstawieniu odpowiedniego kodu do nagłówka (sekcja <code>&lt;head&gt;</code>, plik <code>header.php</code>):</p>
<pre class="brush: jscript; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; src=&quot;https://apis.google.com/js/plusone.js&quot;&gt;&lt;/script&gt;</pre>
</li>
<li>
Następnie przycisk Google +1 wstawiamy w treść strony (w WordPress np. do pliku single.php), za pomocą specjalnego tagu, który w wersji podstawowej wygląda tak:</p>
<pre class="brush: xml; title: ; notranslate">&lt;g:plusone&gt;&lt;/g:plusone&gt;</pre>
</li>
<li>Jeśli wszystko poszło dobrze, na stronie powinien wyświetlać się guzik +1, tak jak ma to miejsce na końcu tego wpisu.</li>
</ol>
<h3>Wykorzystanie parametru callback</h3>
<p>Tag <code>&lt;g:plusone&gt;&lt;/g:plusone&gt;</code> przyjmuje szereg parametrów, np. <strong>size</strong> który określa rozmiar guzika, <strong>href</strong> czyli url którego guzik dotyczy, czy wreszcie parametr <strong>callback</strong>, który pozwala na wywołanie funkcji JavaScript. Pełna lista parametrów, dostępna jest pod adresem <a href="http://developers.google.com/+/plugins/+1button/">http://developers.google.com/+/plugins/+1button/</a>.</p>
<p>Tag guzika Google +1 z parametrem callback wygląda tak:</p>
<pre class="brush: xml; title: ; notranslate">&lt;g:plusone callback=&quot;mojaFunkcja&quot;&gt;&lt;/g:plusone&gt;</pre>
<p>W parametrze callback podałam nazwę funkcji JavaScript &#8211; tutaj jest to <strong>mojaFunkcja()</strong>, która zostanie wywołana, gdy ktoś kliknie przycisk +1. Po wywołaniu funkcja ta otrzyma obiekt JSON, zawierający dwa parametry:</p>
<ul>
<li><strong>href</strong>, który zawiera adres URL dla którego kliknięty został guzik +1</li>
<li><strong>state</strong>, który zawiera informację o stanie i przyjmuje wartości &#8222;on&#8221; gdy ktoś dodał +1 i &#8222;off&#8221; gdy wcześniej przyznane +1 zostało usuniete.</li>
</ul>
<div>Domyślam się, że dla osób nie obeznanych z JavaScript na razie niewiele z tego wynika. <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Przejdźmy zatem do przykładu praktycznego.</div>
<h3>Przykład: darmowy raport pdf</h3>
<p>Tutaj naszym celem jest wyświetlenie na stronie komunikatu z podziękowaniem po kliknięciu +1 oraz linkiem do darmowego raportu pdf.<br />
Na początek krótka uwaga techniczna &#8211; aby testować działanie funkcji z poniższego przykładu, musisz być zalogowany na swoje konto w Google +.</p>
<ol>
<li>Przygotuj sobie dokument pdf i wgraj go na serwer. Zanotuj sobie link do tego pliku.<br />
Następnie wstawiamy ukryty div, który będzie zawierał nasze podziękowanie oraz link. Myślę, że najlepiej wstawić go gdzieś w pobliżu (pod lub nad) guzika +1. Poniżej masz kod, który powinieneś wkleić w treść dokumentu, np. plik single.php (łącznie z kodem przycisku +1):</p>
<pre class="brush: xml; title: ; notranslate">
&lt;g:plusone callback=&quot;mojaFunkcja&quot;&gt;&lt;/g:plusone&gt;&lt;br /&gt; &lt;!-- kod wyświetlający guzik +1 --&gt;
&lt;div id=&quot;secret&quot; style=&quot;display:none;border:1px solid #CADCEA; background:#CAE9FD; padding: 10px;&quot;&gt; &lt;!-- ukryty div z linkiem i odrobiną styli: tło i ramka oraz padding --&gt;
Cieszę się, że podobał Ci się ten wpis. Mam dla Ciebie również ciekawy raport na ten temat, który &lt;a href=&quot;http://mojastrona.pl/sciezka/do/pliku.pdf&quot; title=&quot;Tytuł&quot;&gt;pobierzesz tutaj&lt;/a&gt;.
&lt;/div&gt;
</pre>
</li>
<li>Teraz pora na przygotowanie odpowiedniego kodu JavaScript. Wstawiamy go do nagłówka (plik header.php) najlepiej tuż przed <code>&lt;/head&gt;</code>. Kod powinien wyglądać tak:
<pre class="brush: jscript; title: ; notranslate">
&lt;!-- załączamy skrypt pd Google --&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://apis.google.com/js/plusone.js&quot;&gt;&lt;/script&gt; 

&lt;!-- nasza funkcja która obsługuje kliknięcie guzika +1 --&gt;
&lt;script type='text/javascript'&gt;
function mojaFunkcja(gpo) {
	if (gpo.state == &quot;on&quot;) {
		$('#secret').fadeIn(3000);
	}
}
&lt;/script&gt;
</pre>
<p>Kliknij poniższy przycisk, aby zobaczyć powyższy przykład w akcji:<br />
<g:plusone callback="gpoTest"></g:plusone>
<div id="gpo" style="display:none;border:1px solid #CADCEA; background:#CAE9FD; padding: 10px;">
Cieszę się że spodobał Ci się ten wpis <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p>Jedna uwaga &#8211; powyższy kod korzysta z biblioteki jQuery do wyświetlenia ukrytej treści, zatem musi ona być również dołączona w nagłówku. Wiele szablonów WordPress, w tym twentyeleven wykorzystuje jQuery i w takim wypadku biblioteka będzie już załączona. Aby się upewnić, wyświetl źródło swojej strony w przeglądarce (Ctrl + U w Firefoxie) i wyszukaj w frazę &#8222;jQuery&#8221;. Jeśli się okaże, że twój szablon nie korzysta z jQuery, <a href="http://docs.jquery.com/Downloading_jQuery">tutaj możesz pobrać skrypty</a>.</p>
<p>Powyższy przykład obsługuje tylko dodanie (kliknięcie)  +1 na stronie. Gdyby odwiedzający po chwili zmienił  zdanie i usunął +1, div z komunikatem pozostał by  nadal widoczny.
</li>
</ol>
<p>Na koniec zaznaczę, że jest to dość prosty przykład i link do pobrania pdf nie jest tutaj zabezpieczony w żaden wyszukany sposób &#8211; znajduje się on w naszym dokumencie HTML, z tym że jest niewidoczny, do momentu gdy guzik +1 zostanie kliknięty. Nie zmienia to faktu, że osoba sprytna na tyle żeby wyświetlić sobie kod źródłowy strony, będzie w  stanie odczytać adres naszego pliku pdf i pobrać go sobie nie klikając +1 na stronie.</p>
<p>Więcej informacji dla developerów na ten temat znajduje się pod adresem <a href="http://developers.google.com/+/plugins/+1button/">http://developers.google.com/+/plugins/+1button/</a></p>
<h2>Podsumowanie</h2>
<p>Zadaniem tego wpisu miało być pokazanie możliwości przycisku Google +1. Przykłady podane we wpisie miały za zadanie pokazanie konceptu oraz być inspiracją dla własnych rozwiązań. Mam nadzieję że wszystko jest jasne i zrozumiałe, a jeśli nie to zapraszam do zadawania pytań w komentarzach.</p>
<p>PS. Jeśli podobał Ci się ten wpis, kliknij przycisk +1 poniżej <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/przycisk-google-plus-one-kreatywne-zastosowania/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>TimThumb &#8211; jeszcze prostszy sposób na likwidację luki w zabezpieczeniach</title>
		<link>http://webtuts.pl/timthumb-jeszcze-prostszy-sposob-na-likwidacje-luki-w-zabezpieczeniach/</link>
		<comments>http://webtuts.pl/timthumb-jeszcze-prostszy-sposob-na-likwidacje-luki-w-zabezpieczeniach/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 11:46:14 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Porady]]></category>
		<category><![CDATA[timthumb]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[zabezpieczenia]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1080</guid>
		<description><![CDATA[<p>W poprzednim wpisie na temat poważnej <a title="TimThumb – krytyczna luka w zabezpieczeniach" href="http://webtuts.pl/timthumb-krytyczna-luka-w-zabezpieczeniach/">luki w zabezpieczeniach skryptu Timthumb</a>, podawałam prostą metodę na likwidację problemu. Dzisiaj przedstawię ci wtyczkę, z pomocą której za jednym zamachem sprawdzi wszystkie zainstalowane u siebie szablony i naprawi ewentualne problemy. Polecam zwłaszcza &#8230; <a href="http://webtuts.pl/timthumb-jeszcze-prostszy-sposob-na-likwidacje-luki-w-zabezpieczeniach/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>W poprzednim wpisie na temat poważnej <a title="TimThumb – krytyczna luka w zabezpieczeniach" href="http://webtuts.pl/timthumb-krytyczna-luka-w-zabezpieczeniach/">luki w zabezpieczeniach skryptu Timthumb</a>, podawałam prostą metodę na likwidację problemu. Dzisiaj przedstawię ci wtyczkę, z pomocą której za jednym zamachem sprawdzi wszystkie zainstalowane u siebie szablony i naprawi ewentualne problemy. Polecam zwłaszcza mniej &#8222;tchnicznym&#8221; użytkownikom WordPressa.</p>
<h2>Timthumb vulnerability scanner</h2>
<p>Krok pierwszy to oczywiście pobranie wtyczki <a href="http://wordpress.org/extend/plugins/timthumb-vulnerability-scanner/" target="_blank">Timthumb Vulnerability Scanner</a> z repozytorium WordPress, a następnie dokonaj aktywacji w panelu administratora. Po aktywacji, w pozycji <strong>Narzędzia</strong> pojawi się nowa opcja &#8211; <strong>Timthumb scanner</strong>.</p>
<p><a href="http://webtuts.pl/timthumb-jeszcze-prostszy-sposob-na-likwidacje-luki-w-zabezpieczeniach/timthumb_vulnerability_scanner/" rel="attachment wp-att-1084"><img class="alignnone size-full wp-image-1084" title="Timthumb vulnerability scanner" src="http://webtuts.pl/wp-content/uploads/2011/09/timthumb_vulnerability_scanner.gif" alt="Timthumb vulnerability scanner" width="608" height="271" /></a></p>
<p>Cały proces jest maksymalnie uproszczony. Teraz pozostaje nam tylko kliknąć <strong>Scan,</strong> a wtyczka przeskanuje wszystkie szablony i pokaże podsumowanie. Przy każdym szablonie, który korzysta ze starej wersji skryptu Timthumb wyświetlony zostanie przycisk <strong>Fix</strong>, za pomocą którego jednym kliknięciem problem zostanie automatycznie naprawiony.</p>
<p>Na koniec chciałam tylko zaznaczyć że wtyczka nie zadziała po fakcie &#8211; jeśli Twoja strona została zhakowana na podstawie luki w zabezpieczeniach skryptu Timthumb, musisz samodzielnie posprzątać bałagan <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  A dla spokoju ducha i na wszelki wypadek po prostu pobierz tę wtyczkę i sprawdź swoje szablony!</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/timthumb-jeszcze-prostszy-sposob-na-likwidacje-luki-w-zabezpieczeniach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatyczny backup WordPress za pomocą Dropbox</title>
		<link>http://webtuts.pl/automatyczny-backup-wordpress-za-pomoca-dropbox/</link>
		<comments>http://webtuts.pl/automatyczny-backup-wordpress-za-pomoca-dropbox/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 09:02:33 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wtyczki]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1038</guid>
		<description><![CDATA[<p>Mam nadzieję, że nie muszę nikogo przekonywać, jak istotne jest regularne tworzenie kopii zapasowej, czyli tzw. backup-u strony. Możliwości jest wiele, począwszy od płatnych wtyczek, z których chyba najpopularniejsza to <a title="VaultPress" href="http://vaultpress.com/" target="_blank">VaultPress</a>, poprzez darmowe pluginy dostępne w repozytorium WordPress, aż &#8230; <a href="http://webtuts.pl/automatyczny-backup-wordpress-za-pomoca-dropbox/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Mam nadzieję, że nie muszę nikogo przekonywać, jak istotne jest regularne tworzenie kopii zapasowej, czyli tzw. backup-u strony. Możliwości jest wiele, począwszy od płatnych wtyczek, z których chyba najpopularniejsza to <a title="VaultPress" href="http://vaultpress.com/" target="_blank">VaultPress</a>, poprzez darmowe pluginy dostępne w repozytorium WordPress, aż po skrypty, które użytkownicy tworzą na własne potrzeby. Dokonanie przeglądu i porównania istniejących rozwiązań nie jest celem artykułu, przedstawię Wam za to wtyczkę, której sama aktualnie używam i pokażę jak z niej korzystać.</p>
<p>Zanim jednak przejdę do wtyczki, słów kilka o <a title="Dropbox" href="http://dropbox.com/" target="_blank">Dropbox</a>. Dropbox to po prostu dysk internetowy, który umożliwia przechowywanie plików i synchronizację ich z wieloma komputerami. W ramach darmowego konta dostajesz do dyspozycji 2 GB przestrzeni dyskowej na swoje pliki. Jest to narzędzie, które serdecznie Ci polecam, jeśli jeszcze go nie używasz.</p>
<p>A oto w jaki sposób ustawić automatyczne tworzenie kopii zapasowych:</p>
<h3>Krok 1: Załóż konto w usłudze Dropbox.</h3>
<p>Zrób to teraz, zanim przejdziesz do kolejnego kroku. Jak już wspominałam darmowe konto daje Ci 2 GB przestrzeni dyskowej, co w zupełności wystarczy na potrzeby kopii zapasowych WordPress. Istnieją również płatne konta, które oferują większą przestrzeń, szczegóły<a href="http://www.dropbox.com/plans" target="_blank"> znajdziesz tutaj</a>.</p>
<h3>Krok 2: Pobierz wtyczkę WordPress Backup to Dropbox.</h3>
<p>Wtyczkę znajdziesz bez problemu w <a title="Wordpress Backup To Dropbox" href="http://wordpress.org/extend/plugins/wordpress-backup-to-dropbox/" target="_blank">repozytorium WordPress</a>. Zainstaluj ją i aktywuj na swoim blogu.</p>
<h3>Krok 3: Dokonaj autoryzacji.</h3>
<p>Po aktywacji wtyczki przejdź do sekcji <strong>Ustawienia -&gt;Backup to Dropbox.</strong> Zanim jednak będziesz mógł ją skonfigurować, musisz dokonać aktywacji, aby twój blog mógł się komunikować z Dropbox. Po prostu kliknij guzik &#8222;<strong>Authorize</strong>&#8222;.</p>
<p><img class="alignnone size-full wp-image-1048" title="Backup to Dropbox - aktywacja" src="http://webtuts.pl/wp-content/uploads/2011/08/dropbox_wp_aktywacja.png" alt="Backup to Dropbox - aktywacja" width="608" height="214" /></p>
<p>Zostaniesz przeniesiony na stronę Dropbox, i jeśli jesteś tam akurat zalogowany, nie musisz robić nic więcej. Twoim oczom ukaże się komunikat:</p>
<p><img class="alignnone size-full wp-image-1050" title="Backup to Dropbox - aktywacja, krok 2" src="http://webtuts.pl/wp-content/uploads/2011/08/dropbox_wp_aktywacja2.png" alt="Backup to Dropbox - aktywacja, krok 2" width="527" height="241" /></p>
<h3>Krok 4: Konfiguracja wtyczki.</h3>
<p>To już prawie koniec, wtyczka ma na prawdę niewiele ustawień. Kopie zapasowe będą tworzone i przesyłane na Twoje konto w Dropbox, oraz zapisywane lokalnie (oczywiście możesz zmienić ścieżki). Kopie zapasowe warto wykonywać regularnie, dlatego na samym dole ustawiasz dzień i godzinę oraz jak często operacja ma być powtarzana. Aby wykonać pierwszą kopię nie musisz wcale czekać, na samym dole (tuż obok guzika <strong>Save changes</strong>) znajduje się guzik  <strong>Backup Now, </strong>dzięki czemu kopia zostanie wykonana natychmiast. Już po chwili pliki kopii zapasowej powinny się pojawić na Twoim komputerze oraz na koncie Dropbox.</p>
<p>Tutaj jednak mała uwaga &#8211; może się zdarzyć że kopie nie będą wykonywane dokładnie w wyznaczonym czasie. Dzieje się tak dlatego, że wtyczka ta nie działa w oparciu o <a title="Co to jest cron?" href="http://pl.wikipedia.org/wiki/Cron" target="_blank">cron</a>, i wymaga abyś w danym momencie był zalogowany do swojego bloga. Nie martw się jednak, bo jeśli akurat minie pora wykonania kopii, zostanie ona wykonana gdy tylko znów zalogujesz się do panelu.</p>
<h3>Podsumowanie</h3>
<p>Z pomocą wtyczki <strong>WordPress Backup to Dropbox </strong>wykonasz kopię zapasową całej instalacji, łącznie z plikami core. W związku z tym tworzenie pierwszej kopii może chwilę potrwać, ale już przy kolejnych, nadpisywane będą tylko te pliki, w które zostały w międzyczasie zmienione. Wtyczka wykonuje również zrzut bazy danych do pliku sql. Będzie to plik o nazwie <code>[nazwa bazy danych]-backup.sql</code>, znajdziesz go w folderze <code>wp-content/backups</code>.</p>
<p>A ty w jaki sposób wykonujesz kopie zapasowe?</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/automatyczny-backup-wordpress-za-pomoca-dropbox/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>InstantWP &#8211; szybka i bezbolesna instalacja WordPress na komputerze lokalnym</title>
		<link>http://webtuts.pl/instantwp-szybka-i-bezbolesna-instalacja-wordpress-na-komputerze-lokalnym/</link>
		<comments>http://webtuts.pl/instantwp-szybka-i-bezbolesna-instalacja-wordpress-na-komputerze-lokalnym/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 12:10:26 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[InstantWP]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=1002</guid>
		<description><![CDATA[<p>Lokalne środowsko testowe dla strony WWW jest podstawowym narzędziem pracy web developera. Nic dziwnego, to rozwiązanie ma wiele zalet: przyspiesza proces tworzenia strony (nie trzeba wgrywać plików na serwer po każdej zmianie), pozwala pracować nad stroną również, kiedy nie masz &#8230; <a href="http://webtuts.pl/instantwp-szybka-i-bezbolesna-instalacja-wordpress-na-komputerze-lokalnym/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Lokalne środowsko testowe dla strony WWW jest podstawowym narzędziem pracy web developera. Nic dziwnego, to rozwiązanie ma wiele zalet: przyspiesza proces tworzenia strony (nie trzeba wgrywać plików na serwer po każdej zmianie), pozwala pracować nad stroną również, kiedy nie masz dostępu do internetu oraz chyba najważniejsza rzecz &#8211; można testować różne rozwiązania, bez obawy, że &#8222;popsujemy&#8221; działającą stronę. Nawet jeśli tworzysz swojego osobistego bloga, posiadanie jego lokalnej wersji znacznie ułatwi Ci cały proces.</p>
<p>Aby zainstalować WordPress lokalnie na swoim komputerze, potrzebujesz kilku narzędzi. De facto potrzebujesz przekształcić swój komputer w serwer, instalując odpowiedni zestaw oprogramowania &#8211; serwer WWW, silnik baz danych, oraz któryś z języków programowania. Brzmi dość skomplikowanie, zwłaszcza dla początkujących, którzy interesują się WordPressem, a cała reszta to zło konieczne.</p>
<p>Istnieją oczywiście gotowe pakiety, które zawierają niezbędne oprogramowanie w postaci jednego instalatora. Przykładem niech będzie <a title="XAMPP" href="http://www.apachefriends.org/en/index.html">XAMPP</a>, który zawiera w sobie serwer WWW Apache, MySQL, PHP oraz narzędzie do zarządzania bazą danych phpMyAdmin. Jednak w tym przypadku ściągnięcie i instalacja oprogramowania, to dopiero początek. Zanim będziemy mogli zająć się WordPressem, należy go ręcznie zainstalować, a przedtem samodzielnie utworzyć bazę danych. Okazuje się jednak, że można prościej <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Czym jest Instant WordPress?</h2>
<p>Instant WP to pakiet oprogramowania, który podobnie jak XAMPP zawiera w sobie:</p>
<ul>
<li>serwer WWW Apache 2.2.15,</li>
<li>PHP 5.3.2,</li>
<li>MySQL 5.1.46,</li>
</ul>
<p>oraz dodatkowo &#8211; WordPress w wersji 3.2. Po pobraniu, wszystkie programy instalowane są po kolei na Twoim komputerze, a efektem końcowym jest lokalna wersja WordPress gotowa do pracy. Autor poszedł nawet krok dalej i podstawową instalację WordPress uzupełnił o przykładowe treści (w odróżnieniu od domyślnej instalacji, która zawiera 1 wpis, 1 stronę i 1 komentarz).</p>
<p>InstantWP tworzy na Twoim komputerze w pełni samodzielną instalację WordPress. Możesz ją swobodnie kopiować, przenosić, zmieniać jej nazwę. Możesz również przegrać ją na przenośny dysk USB i uruchomiać z dowolnego komputera. Instant WP nie instaluje żadnych dodatkowych programów poza swoim folderem instalacyjnym ani nie wprowadza żadnych zmian w rejestrze. Aby go usunąć wystarczy skasować katalog, w którym został zainstalowany, a nie pozostanie po nim żaden ślad na komputerze <img src='http://webtuts.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Instalacja i korzystanie z InstantWP</h2>
<h3>Krok 1: Pobierz i zainstaluj InstantWP</h3>
<p>InstantWP działa <strong>tylko</strong> pod Windowsem (XP, Vista, 7). Oprogramowanie znajdziesz na stronie <a href="http://www.instantwp.com/download/">instantwp.com</a>. Ze strony pobierasz plik InstantWP_X.exe. Po uruchomieniu zobaczysz instalator, który poprosi Cię jedynie o wskazanie, w jakim folderze chcesz zainstalować program.</p>
<h3>Krok 2: Uruchamianie</h3>
<p>W katalogu, który wybrałeś podczas instalacji znajdziesz plik <code>InstantWP.exe</code>. Za jego pomocą uruchamiasz program. Po uruchomieniu wyświetlony zostanie prosty panel, który umożliwia szybki dostęp do podstawowych funkcji.</p>
<p>Panel zostanie uruchomiony domyślnie w Internet Explorerze. Jeśli chcesz aby InstantWP korzystał z innej przeglądarki, np. FireFox, potrzebujesz edytować plik <code>pms_config.ini</code> który znajduje się w folderze <code>iwpserver</code>. Znajdź linijkę:</p>
<pre class="brush: php; title: ; notranslate">BrowserPath= ../system/InstantWP_GUI.exe</pre>
<p>i zamień na ścieżkę do wybranej przeglądarki, np. tak:</p>
<pre class="brush: php; title: ; notranslate">BrowserPath= “C:\Program Files\Mozilla Firefox\firefox.exe”</pre>
<div>Pamiętaj, że zamknięcie panelu InstantWP jest równoznaczne z <b>wyłączeniem programu</b>. W związku z tym, gdy pracujesz nad stroną musi on być cały czas otwarty.</div>
<h3>Krok 3: Poruszanie się po InstantWP</h3>
<p><a href="http://webtuts.pl/wp-content/uploads/2011/08/instantwp_panel.gif" rel="lightbox[1002]"><img class="alignleft size-medium wp-image-1010" title="Panel InstantWP" src="http://webtuts.pl/wp-content/uploads/2011/08/instantwp_panel-300x206.gif" alt="Panel InstantWP" width="300" height="206" /></a>InstantWP posiada prosty panel, który zawiera podstawowe skróty, które ułatwią Ci poruszanie się po WordPressie.<br />
<br style="clear:both;" /></p>
<ul>
<li>WordPress Frontpage otwiera stronę główną Twojej lokalnej instalacji WordPress w przeglądarce (domyślnie IE)</li>
<li>WordPress Admin otwiera panel administracyjny WordPress (użytkownik: &#8222;admin&#8221;, hasło: &#8222;password&#8221;)</li>
<li>Plugins Folder, Themes Folder otwiera folder plugins lub themes Twojej lokalnej instalacji za pomocą eksploratora Windows</li>
<li>MySQL Admin otwiera w przeglądarce panel zarządzania bazą danych PHPMyAdmin</li>
<li>Documentation jest linkiem do oficjalnej dokumentacji na stronie internetowej InstantWP</li>
</ul>
<h3>Krok 4: instalacja szablonów i wtyczek</h3>
<p>Można to zrobić na dwa sposoby, ręcznie lub automatycznie. Automatyczne wyszukiwanie i instalowanie wtyczek oraz szablonów nie wymaga chyba dodatkowych objaśnień &#8211; wszystkie czynność wykonamy z poziomu panelu administracyjnego WordPress (szablony poprzez <strong>Appearance</strong>, zakładka <strong>Install Themes</strong>, wtyczki poprzez <strong>Plugins -&gt; Add new</strong>).</p>
<p>Aby zainstalować wtyczkę lub szablon ręcznie:</p>
<ol>
<li>Pobierz ją na swój komputer i rozpakuj.</li>
<li>W panelu InstantWP kliknij Plugins Folder lub Themes Folder. Możesz również przejść do odpowiedniego katalogu z za pomocą np. Total Commander. W tym celu przejdź do folderu, w którym zainstalowałeś InstantWP, a następnie <code>\iwpserver\htdocs\wordpress\wp-content\themes</code> lub <code>\iwpserver\htdocs\wordpress\wp-content\plugins</code> i skopiuj tam rozpakowane pliki.</li>
<li>Przejdź do panelu administracyjnego swojej lokalnej instalacji WordPress i aktywuj wybrane wtyczki/szablony.</li>
</ol>
<h3>Krok 5: Aktualizacja WordPress</h3>
<div>W tej chwili InstantWP instalowany jest z wersją 3.2 WordPressa. Gdy zalogujesz się panelu administracyjnego na górze zobaczysz informację  o tym, że dostępna jest już nowsza wersja. Możesz w tym momencie dokonać automatycznej aktualizacji, wykonując instrukcje na ekranie.</div>
<h2>Podsumowanie</h2>
<p>Aktualnie jestem na etapie testowania InstantWP i jak na razie jestem bardzo zadowolona. Na potrzeby osób zaczynających swoją przygodę z WordPress wydaje się być rozwiązaniem idealnym, chociaż z punktu widzenia web developera, pewnie jest to bardziej ciekawostka. W każdym razie moim zdaniem, warto przynajmniej zapoznać się z InstantWP. Co Ty o tym myślisz?</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/instantwp-szybka-i-bezbolesna-instalacja-wordpress-na-komputerze-lokalnym/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Jak dodać własny domyślny awatar w komentarzach bloga?</title>
		<link>http://webtuts.pl/jak-dodac-wlasny-domyslny-awatar-w-komentarzach-bloga/</link>
		<comments>http://webtuts.pl/jak-dodac-wlasny-domyslny-awatar-w-komentarzach-bloga/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 13:00:18 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Porady]]></category>
		<category><![CDATA[awatar]]></category>
		<category><![CDATA[komentarze]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=978</guid>
		<description><![CDATA[<p>Jednym z ważniejszych obszarów na każdym blogu, jest sekcja komentarzy. Warto poświęcić chwilę i sprawić, aby czytelnicy chętnie i z łatwością mogli brać udział w dyskusji. Jedną z rzeczy, które możesz zrobić, jest przygotowanie domyślnego awatara, dla osób komentujących na &#8230; <a href="http://webtuts.pl/jak-dodac-wlasny-domyslny-awatar-w-komentarzach-bloga/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Jednym z ważniejszych obszarów na każdym blogu, jest sekcja komentarzy. Warto poświęcić chwilę i sprawić, aby czytelnicy chętnie i z łatwością mogli brać udział w dyskusji. Jedną z rzeczy, które możesz zrobić, jest przygotowanie domyślnego awatara, dla osób komentujących na Twoim blogu. Co prawda wbudowane komentarze WordPressa połączone są z usługą <a href="http://gravatar.com/">Gravatar</a>, więc komentarze osób posiadających konto w tym serwisie, będą posiadały własny unikalny awatar. Pozostałym osobom przypisany zostanie domyślny awatar, który ustawiasz poprzez panel administracyjny w opcji <strong>Ustawienia-&gt;Dyskusja</strong>. A wybór jest następujący:</p>
<p><a href="http://webtuts.pl/jak-dodac-wlasny-domyslny-awatar-w-komentarzach-bloga/awatar1/" rel="attachment wp-att-984"><img class="alignnone size-full wp-image-984" title="Wybór domyślnego awatara w WordPress" src="http://webtuts.pl/wp-content/uploads/2011/08/awatar1.png" alt="Wybór domyślnego awatara w WordPress" width="614" height="328" /></a></p>
<p>Jeśli nie odpowiada Ci żadna z powyższych opcji, za pomocą krótkiego fragmentu kodu, możesz dodać do tej listy swój awatar.</p>
<h3>Krok 1</h3>
<p>Poniższy kod wklej do pliku functions.php:</p>
<pre class="brush: php; title: ; notranslate">
if ( !function_exists('fb_addgravatar') ) {
	function fb_addgravatar( $avatar_defaults ) {
		$myavatar = get_bloginfo('template_directory') . '/images/avatar.gif';
		$avatar_defaults[$myavatar] = 'Czytelnicy';
		return $avatar_defaults;
	}
	add_filter( 'avatar_defaults', 'fb_addgravatar' );
}
</pre>
<h3>Krok 2</h3>
<p>Zanim wgrasz plik <code>functions.php</code> na serwer, musisz pamiętać jeszcze o stworzeniu obrazka awatara, i wrzuceniu go do odpowiedniego katalogu. W podanym przykładzie obrazek o nazwie <code>avatar.gif</code> powinien znaleźć się w katalogu <code>images</code> szablonu którego aktualnie używasz. Obrazek powinien mieć rozmiar 64&#215;64 pixele.</p>
<p>Jeśli tylko prawidłowo podałeś ścieżkę do pliku, po wejściu w <strong>Ustawienia-&gt;Dyskusja</strong> na liście pojawi się nowa pozycja:<br />
<a href="http://webtuts.pl/jak-dodac-wlasny-domyslny-awatar-w-komentarzach-bloga/awatar2/" rel="attachment wp-att-990"><img class="alignnone size-full wp-image-990" title="Nowy domyślny awatar w WordPress" src="http://webtuts.pl/wp-content/uploads/2011/08/awatar2.png" alt="Nowy domyślny awatar w WordPress" width="556" height="146" /></a></p>
<p>Jeśli jednak jeden awatar to dla Ciebie za mało, możesz stworzyć ich dowolną ilość i wyświetlać je losowo lub wręcz generować na podstawie obrazków za pomocą <a href="http://wordpress.org/extend/plugins/ravatar/">wtyczki Ravatar</a>, którą oczywiście pobierzesz z repozytorium WordPress.</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/jak-dodac-wlasny-domyslny-awatar-w-komentarzach-bloga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the_content vs. the_excerpt</title>
		<link>http://webtuts.pl/the_content-vs-the_excerpt/</link>
		<comments>http://webtuts.pl/the_content-vs-the_excerpt/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 16:08:45 +0000</pubDate>
		<dc:creator>Ola Łączek</dc:creator>
				<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[podstawy]]></category>
		<category><![CDATA[the_content]]></category>
		<category><![CDATA[the_excerpt]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webtuts.pl/?p=866</guid>
		<description><![CDATA[<p>Do napisania tego wpisu zainspirowały mnie pytania jakie powtarzają się na różnego rodzaju forach. Pytania typu &#8222;Dlaczego w streszczeniach na stronie głównej nie wyświetlają się obrazki ani linki?&#8221; lub &#8222;Jak na stronie głównej wyświetlać całe wpisy?&#8221; itd. Rozwiązanie takich problemów &#8230; <a href="http://webtuts.pl/the_content-vs-the_excerpt/" class="read_more">Czytaj dalej...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Do napisania tego wpisu zainspirowały mnie pytania jakie powtarzają się na różnego rodzaju forach. Pytania typu &#8222;Dlaczego w streszczeniach na stronie głównej nie wyświetlają się obrazki ani linki?&#8221; lub &#8222;Jak na stronie głównej wyświetlać całe wpisy?&#8221; itd. Rozwiązanie takich problemów jest zwykle banalne, a sam problem wynika z nieznajomości lub błędnego rozumienia działania funkcji <code>the_content()</code> i <code>the_excerpt()</code>. W tym wpisie postaram się zatem podsumować informacje na ten temat i podać rozwiązania najczęstszych problemów.</p>
<h2>the_content()</h2>
<p>Jest to funkcja odpowiedzialna za wyświetlanie pełnej treści wpisów, wykorzystywana gdy wyświetlany jest pojedynczy wpis lub strona. Można ją jednak wykorzystać również do wyświetlania streszczenia na stronie głównej i innych stronach zbiorczych, np. kategorii, tagów itd. Aby tego dokonać, wpisy powinny zawierać specjalny znacznik <code class="inline">&lt;!--more--&gt;</code>, który wstawiasz w odpowiednim miejscu w treści, za pomocą guzika w edytorze.</p>
<p><a href="http://webtuts.pl/the_content-vs-the_excerpt/more_tag/" rel="attachment wp-att-924"><img class="alignnone size-full wp-image-924" title="Tag more" src="http://webtuts.pl/wp-content/uploads/2011/08/more_tag.jpg" alt="Tag more" width="640" height="68" /></a></p>
<p>Wtedy na stronie głównej zamiast całego wpisu, zostanie wyświetlony tylko fragment, znajdujący się przed znacznikiem <code class="inline">&lt;!--more--&gt;</code>, a jeśli go nie wstawisz, pełna treść. Fragment będzie wyświetlany z zachowaniem wszelkiego formatowania, obrazków, linków itd. Na końcu fragmentu znajdzie się link do pełnej wersji wpisu.</p>
<p>Domyślnie (tj. jeśli szablon którego używasz nie modyfikuje tego zachowania w żaden sposób) link do pełnego wpisu ma postać &#8216;(more&#8230;)&#8217; w wersji angielskiej WordPressa, lub &#8216;(więcej&#8230;)&#8217; w wersji polskiej.</p>
<p>Tekst linka oczywiście można zmienić, podając jego treść jako parametr dla <code>the_content()</code>:</p>
<pre class="brush: php; title: ; notranslate">&lt;!--?php the_content(&quot;Czytaj dalej...&quot;); ?--&gt;</pre>
<p>czego efektem będzie link z tekstem &#8222;Czytaj dalej&#8230;&#8221;.<br />
Można również pójść krok dalej, i zmienić wygląd naszego linka. Wystarczy skorzystać z poniższego kodu:</p>
<pre class="brush: php; title: ; notranslate">&lt;!--?php the_content('&lt;span class=&quot;more&quot;--&gt;Czytaj dalej...'); ?&gt;</pre>
<p>a następnie dodać odpowiednie deklaracje dla klasy &#8216;more&#8217; w pliku CSS.</p>
<h2>the_excerpt()</h2>
<p><code>the_excerpt()</code> jest odpowiedzialny za wyświetlanie streszczenia (wypisu) artykułu. Może on zostać stworzony na kilka sposobów, które mają jednak dwie cechy wspólne (które zwykle są powodem pytań i nieporozumień):</p>
<ul>
<li><strong>wypisy są pozbawiane HTML</strong>, a więc korzystając z the_excerpt wyświetlony zostanie sam tekst, a wszelkie formatowanie, obrazki, linki itd. będą usunięte,</li>
<li>domyślnie, pod streszczeniem <strong>nie ma linka do pełnej wersji artykułu</strong>. Można go jednak dodać samodzielnie, o czym przeczytasz poniżej.</li>
</ul>
<h3>Opcja 1: Streszczenie tworzone ręcznie</h3>
<p>W trakcie edycji wpisu, poniżej głównego pola tekstowego, znajduje się mniejsze pole tekstowe oznaczone jako <strong>Wypis</strong> (ang. Excerpt). Służy ono ręcznemu tworzeniu streszczenia wpisu, który ma za zadanie zachęcić do przeczytania pełnego artykułu. Jeśli nie widzisz tego pola, podczas edycji wpisu kliknij <strong>Opcje ekranu</strong> w prawym górnym rogu i zaznacz przy polu Wypis.</p>
<h4>Po co miałbyś osobno tworzyć tekst streszczenia?</h4>
<p>Dobrze napisane abstrakty mogą potencjalnie być bardziej zachęcające, niż te generowane automatycznie. Dodatkowo taki abstrakt można wykorzystać również w znaczniku <code>meta description</code> (sporo szablonów właśnie tak robi) na stronie wpisu, co może pozytywnie wpłynąć na ilość osób odwiedzających twoją stronę z wyszukiwarek. W tym kontekście pamiętaj jednak, że wypis nie powinien być dłuższy niż 160 znaków.</p>
<h3>Opcja 2: Streszczenie automatyczne</h3>
<p>Jeśli korzystasz z <code>the_excerpt()</code> i sam nie stworzysz Wypisu, zostanie on wygenerowany automatycznie. Będzie to pierwsze 55 słów wpisu. Aby zmienić domyślną długość, dodaj następujący kod do pliku <code>functions.php</code>:</p>
<pre class="brush: php; title: ; notranslate">function moje_streszczenie($length) {
	return 30;
}
add_filter('excerpt_length', 'moje_streszczenie');</pre>
<p>Powyższy kod skróci automatycznie generowany wypis do 30 słów.</p>
<h3>Opcja 3: Wypisy na podstawie znacznika <code class="inline">&lt;!--more--&gt;</code></h3>
<p><code>the_excerpt()</code> również potrafi tworzyć wypisy na podstawie znacznika <code class="inline">&lt;!--more--&gt;</code>umieszczonego w treści. W tym przypadku jednak zasadnicza różnica, w stosunku do zastosowania <code>the_content()</code> w połączeniu ze znacznikiem <code class="inline">&lt;!--more--&gt;</code> polega na tym, że wyświetlony zostanie sam tekst, a na końcu nie będzie linka do pełnej wersji wpisu.</p>
<p>Pamiętaj, że nawet jeśli twój szablon wykorzystuje <code>the_excerpt()</code>, nie musisz ręcznie tworzyć Wypisów. Hierarchia jest następująca:</p>
<ol>
<li>Jeśli istnieje Wypis zdefiniowany ręcznie, zostanie on wyświetlony, niezależnie od tego czy wpis zawiera znacznik <code class="inline">&lt;!--more--&gt;</code>, czy nie. Nie ma tu znaczenia również ustawiona długość wypisu.</li>
<li>Jeśli nie istnieje ręczny wypis, ale w trakcie edycji wpisu, wstawiłeś znacznik <code class="inline">&lt;!--more--&gt;</code>, fragment ten zostanie wykorzystany jako wypis. Jeśli zdefiniowałeś maksymalną ilość słów, a stworzony w ten sposób wypis ją przekroczy, zostanie on przycięty.</li>
<li>Jeśli nie istnieje ręczny wypis, ani nie wstawiłeś znacznika <code class="inline">&lt;!--more--&gt;</code>, zostanie on wygenerowany automatycznie (domyślnie długości 55 słów).</li>
</ol>
<div>Jeśli korzystasz z <code>the_excerpt()</code> a zależy Ci na tym, aby pod streszczeniem wyświetlał się link do pełnej wersji wpisu, wstaw poniższy kod do pliku <code>functions.php</code> w swoim szablonie:</div>
<pre class="brush: php; title: ; notranslate">function new_excerpt_more($more) {
       global $post;
	return '&lt;a href=&quot;'. get_permalink($post-&gt;ID) . '&quot;&gt;Czytaj dalej...&lt;/a&gt;';
}
add_filter('excerpt_more', 'new_excerpt_more');</pre>
<p>Mam nadzieję, że po lekturze tego wpisu, wiesz już czym się różni <code>the_content()</code> od <code>the_excerpt()</code> oraz wiesz, który bardziej odpowiada Twoim potrzebom. W razie dodatkowych pytań, zostaw komentarz poniżej.</p>
]]></content:encoded>
			<wfw:commentRss>http://webtuts.pl/the_content-vs-the_excerpt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

