piątek, 3 lutego 2012

Jak dodać do szablonu shortcode pokazujący zaplanowane artykuły


Dziś garść programistycznych porad od Wrocia autora bloga: pixelterror.pl

Shortcodes jest funkcjonalnością w Wordpress, która pojawiła się mniej więcej wtedy, kiedy Krystian Wieczorek rozpoczął swoją przygodę z "M jak miłość". Funkcjonalność pozawala na szybkie wywołanie funkcji PHP w dowolnym miejscu naszego artykułu, a nawet całego szablonu. Autor artykułu ma poczucie kontroli gdzie zostanie owa funkcja wywołana. Wywołuje ją w bardzo prosty sposób - poprzez wpisanie do treści artykułu etykiety funkcji ujętej w znaki "[" i "]" np.
<ul>
<li>[[reklama]]</li>
<li>[[youtube id="pjN8huzS2Nc" width="300" height="150"]]</li>
</ul>

W niniejszym artykule pokażę jak zmodyfikować swój szablon dodając shortcode wyświetlającego tytuły artykułów, których data publikacji jest zaplanowana na przyszłość.

W pierwszej kolejności modyfikujemy plik funkcji motywu - functions.php. Na samym końcu pliku, lub w sekcji dotyczącej shortcodes (jeśli taka już jest) dodaj następujący fragment kodu:

<pre class="brush: php">
function planned_posts( $atts ) {
global $wpdb; $query = "SELECT *
FROM `wp_posts`
WHERE post_type = 'post'
AND post_status = 'future'
AND post_date > NOW( )";
$planned = $wpdb->get_results($query);
if ( $planned ) {
$retval .= '<div class="planned_posts"><h2>Zaplanowane posty:</h2><ul>';
foreach($planned as $r) {
$retval .= '<li>'.wptexturize($r->post_title).'</li>';
}
$retval .= '</ul></div>'; }
return $retval;
}
</pre>

W tym samym pliku należy dodać jeszcze jedną linię przypisującą shortcode do funkcji, którą przed chwilą stworzyliśmy. W pliku functions.php wklejamy jeszcze taki fragment:

<pre class="brush: php">
add_shortcode('planned', 'planned_posts');
</pre>

Pozostaje jeszcze określenie wyglądu. W tym celu należy otworzyć plik z arkuszem stylów i zdefiniować wygląd dla klasy "planned_posts". Ale to pozostawiam każdemu z osobna. Można ten krok pominąć i wtedy zaplanowane wpisy będą wyświetlane według domyślnej definicji naszego szablonu.

I tak oto wygląda implementacja prostego shortcode. Za każdym razem kiedy użyjesz [[planned]] w swoim poście, to zostaną wyświetlone zaplanowane artykuły. Shortcode nie musi byc wywoływany tylko i wyłącznie w poście. Aby użyć zdefiniowanego przez nas skrótu w dowolnym miejscu szablonu należy wywołać:

<pre class="brush: php">
<?php echo do_shortcode('[planned]'); ?>
</pre>

Liczę, że przykład mojego shortcode pokazuje jak prosto i szybko można ułatwić sobie życie tworząc swoiste Wordpress'owe makra. Jeżeli zainteresował Was ten temat to zachęcam do przeczytania o tym  jak dodać do szablonu shortcode wyświetlający reklamę adesense w dowolnym miejscu artykułu.


autor: wrociu (http://pixelterror.pl)