-
data publikacji: 12.02.2009
WordPress Shortcode API
kategoria: Inne tutoriale wordpressowe, Wordpress autor: palmiak
Czasem zdarza się, że pisząc wpis chcielibyśmy wywołaś jakiś kod PHP. No niby da się - są do tego wtyczki, jednak miło by było gdyby była jakaś prostsza metoda. W WP 2.5 na szczęście się taka pojawiała, chodzi o tytułowe Shortcode API. W tym artykule postaram się pokazać Wam jak z tego korzystać.
Dzięki Shortcode API możemy wywoływać funkcje PHP w następujące sposoby:
[moja_funkcja][moja_funkcja argument1="4" argument2="maciek"][moja_funkcja]Jakaś treść[/moja_funkcja][moja_funkcja argument1="4" argument2="maciek"]Jakaś treść[/moja_funkcja]
W dalszej części artykułu przedstawię po jednym przykładzie użycia każdego wariantu. Jednak już teraz widać, że jest to naprawdę miłe i potężne narzędzie. Nie dość, że pozwoli nam wywołac PHP to jeszcze możemy odpowiednią listę argumentów.
Pojedynczo i bez argumentów
Nasza pierwsza funkcja nie będzie zbyt twórcza - jedyne co będzie robić to wypisywać fragment "Lorem ipsum". Do testowania w sam raz.
Żeby to zrobić otwieramy (lub tworzymy jeśli nie ma) plik functions.php w katalogu z naszą skórką. Następnie piszemy tam:
<?php
function lipsum() {
return 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur tempus laoreet tellus. Nam fermentum. Fusce lobortis purus nec risus. Aliquam risus purus, rhoncus ut, vulputate vel, venenatis sed, enim.';
}
add_shortcode('lorem', 'lipsum');
?>Jedyne co może ciekawić w tym wszystkim to
add_shortcode('lorem', 'lipsum');. Dzięki tej funkcji sygnalizujemy, że poprzez napisanie[lorem]we wpisie wywołujemy funkcjęlipsum.Pojedynczo, ale solidnie uargumentowane
Kolejną możliwością jest
[lorem_v2 ilosc="20"]. Będzie to rozszerzona wersja poprzedniej funkcji o możliwość podania ile razy tekst ma się powtórzyć.Tym oto sposobem nasz funkcja będzie wyglądać:
function lorem_with_count($atts) {
extract(shortcode_atts(array(
'count' => 5
), $atts));for($i=0; $i<$count;$i++) {
echo ' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur tempus laoreet tellus. Nam fermentum. Fusce lobortis purus nec risus. Aliquam risus purus, rhoncus ut, vulputate vel, venenatis sed, enim.';
}
}
add_shortcode('lorem_v2', 'lorem_with_count');
Jest to funkcja z cyklu prostackich wręcz, jednak dobrze ilustruje jak używać tego typu shorttagów. Wszystkie argumenty z tagu (w naszym przypadku count="20") przypisywane są do tablicy
$atts. Za pomocą funkcjiextract, poza przypisaniem zawartości tablicy do zmiennych, możemy ustalić wartości defaultowe (w naszym przypadku count => 5).Na końcu pozostaje już tylko wykonanie pętli tyle razy ile podaliśmy w
count(lub 5 razy, jeśli argument pomineliśmy).Prawie jak bbcode
Na końcu zrobimy sobie coś a'la bbcode, czyli [b]jakiś tekst[/b] będzie pogrobiony, a [i]inny tekst[/i] będzie pochylony.
function convert_to_strong($atts, $content='') {
return '<strong>'.$content.'</strong>';
}function convert_to_em($atts, $content='') {
return '<em>'.$content.'</em>';
}
add_shortcode('b', 'convert_to_strong');
add_shortcode('i', 'convert_to_em');
Jak widać po przykładach to co jest pomiędzy naszymi kwadratowymi tagami to po prostu zmienna
$content.Podsumowanie
I tak oto wygląda Shorttag API. Dość kiepsko promowany ficzer WordPressa (przegrał walkę z ówczesnym nowym interfejsem). A naprawdę szkoda, bo dzięki niemu może sobie (oraz naszym klientom) bardzo ułatwić pracę. O wiele łatwiej jest tłumaczyć, zeby napisał [tytul]jakiś tytuł[/tytul] niż tłumaczyć którego h ma użyć (a i tak użyje złego). Dodatkowo pozwala w dość prosty sposób osadzać w treści wiele rzeczy (np. mapkę googlową po podaniu tylko wysokości i szerokości geograficznej [gmap dl=x szer=y]).
-
21 Responses to “WordPress Shortcode API”
Leave a Reply
Komentarze
Kategorie
Top 10
Wski: Cross Processing
Kallie Akinyooye: Krótko o… Wordpress 2.7
Agressiva: Jak za pomocą js poprawić wygląd formularzy
S.Wojnowski: Jak za pomocą js poprawić wygląd formularzy
Arek: Menu “wychodzące” zza strony
Arek: Full of colours
Giuseppe Heitner: Wstęp do programowania zorientowanego obiektowo w PHP5…
Kamil: 960 Grid System
Piotrek: Rozwijany panel z odrobiną słodyczy
Kuba: Tworzymy indywidualną stronę startową dla naszych fanów na Facebooku
- CMSy Artykuły dotyczące różnego rodzaju systemów zarządzania treścią CMS.
- Flash Podstawowe informacje pomocne przy tworzeniu animacji w Adobe Flash.
- Fotografia Samouczki dotyczące nie tylko robienia zdjęć ale też ich cyfrowej obróbki.
- Grafika Ogólnie pojęta grafika komputerowa, od inspiracji, po tworzenie layoutów oraz mniejszych form graficznych.
- Inne tutoriale wordpressowe Wszystkie inne zagadnienia dotyczące WordPressa.
- Inspiracje Inspirujące materiały graficzne z dziedziny projektowania stron www, projektów DTP, digital painting, itp.
- Obróbka zdjęć Techniki retuszu fotografii cyfrowych.
- Rysunek Tworzenie rysowanych ilustracji w Adobe Photoshop.
- Skóry do Wordpressa Darmowe oraz płatne – najlepsze skóry do WordPressa.
- Skrypty client-side
- Skrypty server-side
- Tutoriale
- Webdesign Tutoriale z zakresu projektowania stron www i grafiki użytkowej na rzecz internetu.
- Wieczór z Open Source
- Wordpress Ulubieniec naszej publiczności CMS WordPress: nowości, tricki, wtyczki, skóry i wszystko to co może przydać się przy korzystaniu z tego systemu.
- Wtyczki do Wordpressa Recenzje oraz instrukcje najbardziej popularnych i najbardziej niezbędnych pluginów do WordPressa.
- XHTML/CSS Ciekawostki z dziedziny kodowania stron www: XHTML, CSS, jQuery.
- Efekt graficznego podświetlenia w jQuery i Prototype z Scriptaculous
- Google Maps API - pierwsze starcie
- WP-Polls, czyli ankiety na stronie wordpressowej
- Zrozumieć Fotografię cz.1
- Illustrator - podstawy cz.1
- Wordpress Shortcode API
- Jak wyizolować liczbę subskrybentów RSS korzystając z FeedBurner'a?
- Pierwsza polska strona o ExpressionEngine
- Inspirujące strony www - styczeń 2009
Najnowsze newsy
Wieczór z Open Source 2010
Jak co roku WSINF organizuje konferencję Wieczór z Open Source.
Chciałbym zaprosić was na tegoroczna konferencję Wieczór z Open Source 2010! Czytaj dalej
Grafart.org i WACOM zapraszają na konkursy!
Witam!
Myślę, że czas najwyższy nadmienić, że za niedługi czas zostanie zorganizowany pierwszy z trzech konkursów, w których główną nagrodą będą tablety firmy WACOM!
Za miejsca drugie oraz trzecie nagrodami będą kubki i koszulki firmy WACOM oraz magazyny graficzne PSD PHOTOSHOP oraz COMPUTERARTS.
Czytaj dalej
Zapraszamy na forum graficzne Graffika.pl
Każda osoba interesująca się grafiką komputerową ma czasami ochotę porozmawiać o swoich pracach, posłuchać rad, krytyki i pochwał innych osób. Idealnym miejscem na realizowanie takich potrzeb jest forum graficzne Graffika.pl.
Czytaj dalej
Polecane strony
- WordPress Theme from Scratch – Day 1: PSD
- 20 Tutorials For Creating HDR Images
- Ask the Expert – Using Wordpress to Build Large Scale Websites with Derek Herman
- Making an Interactive Picture with jQuery
- Create a Horizontal Scrolling Website
- 800 Most Wanted Free RSS Icons for Bloggers
- 45 Most Wanted Beautiful Free Hand Drawn Fonts
- Caffe-Break Themed Blog Layout Photoshop Tutorial
- Create a nature inspired layout in photoshop
- Coding a Web Design for Speed and Quality
- Beautiful Hand Drawn Websites | Abduzeedo | Graphic Design Inspiration and Photoshop Tutorials
- 40 Fresh Creative and Inspiring Photographs
- Wordpress portfolio layout | Grafpedia
- Simple Facial Photo Retouching | Grafpedia
- Create a beauty layout in 10 steps | Grafpedia























Czy jak sam ostatni przykład pożyczę i go rozbuduję to będę mógł uzyskać pełne BBCode w komentarzach?
Będę niczym radio Erewań. Tak, możesz, ale… shortcode API jest skierowny defaultowo tylko dla the_content. Jeżeli chcesz, żeby w komentarzach działało musisz dopisać jeszcze add_filter(‘comment_text’, ‘do_shortcode’);
nie wiesz czy dziala to tez w widgetach? np dodaje widget typu text/html i tam w tresci wpisuje shortcode
Tak jak poprzednio add_filter(‘widget_text’, ‘do_shortcode’);
A jak wyłączyć filtr z głównej treści? Bo chcę by BBCode było tylko w komentarzach.
filtry dodaję w functions.php ??
remove_filter(‘the_content’, ‘do_shortcode’)
sory za kolejne dopytywanie: w ktorym konkretnie pliku dopisuje te add_ remove_ ? functions.php? czyw pliku skorki np index.php?
functions.php
Skąd system wie kiedy wstawię
add_filter(‘comment_text’, ‘do_shortcode’);
remove_filter(‘the_content’, ‘do_shortcode’);
na jakieś shortcode ma założyć/zdjąć filtr?
Co jest lepszym rozwiązaniem BBCode jako shortcode w szablonie czy jako plugin?
Pierwszy pytanie – bo włącza/wyłącza wszystkie shortcode dla danej sekcji.
Drugie pytanie – tam gdzie nakład pracy jest najmniejszy ,czyli API Shortcode.
A poza tym prawdopodobnie plugin i tak będzie oparty o shortcode, więc co za róznica
To że zrobię sam
może być też oparty na wyrażeniach regularnych, tak mi się zdaje
A da się to gdzieś umieścić wyżej niż szablon, tak by działało niezależnie od wybranego szablonu?
prostym sposobem jest trzymanie sobie pliku z takimi funkcjami i za pomocą include załączać je do każdego function.php
Czy da się jakoś sprawić by wstawiony na stronie shortcode nie był przetwarzany? Bo właśnie miałem problem: na stronie działa stworzony przeze mnie plugin i na stronie mam opis jak on działa, że trzeba wstawić shortcode. Tyle, że jak w opisie podaje jak ten shortcode wygląda, to WP oczywiście zamiast niego pokazuje mi wynik jego działania
Na razie zastąpiłem go obrazkiem/zrzutem ekranu ale jak zrobić by go wstawić bez takich obejść?
problematyczna strona jest tutaj:
http://www.muzungu.pl/moje-pluginy-do-wordpressa/
Użyj encji (tylko bez spacji) & #91; oraz & #93; i będzie cacy.
[...] WordPress Shortcode API autorstwa Maćka Palmowskiego (PL). [...]
[...] 14:38 18/02/2009 WordPress Shortcode API | Vivee – wordpress, webmastering, grafika i fotografia vivee.info/…/02/12/wordpress-shortcod… Pokaż reakcje /* */ inne strony z tej witryny + obserwuj co [...]
jest blad, jesli chodzi o shortcode w stylu bbcode: funkcje wywolywana przez add_shortcode $content pobiera z driugiego parametru. pierwszym są $atts. powyzsze nie zadziala
Dzięki wielkie – już poprawione. Dziwi mnie tylko jedna rzecz – w momencie pisania testowałem kod. Albo więc mialem wtedy jakąś pomroczność albo panowie od WP coś zmienili po drodze. Muszę się tym zainteresować.