Artykuły:

  • data publikacji: 12.02.2009

    WordPress Shortcode API

    kategoria: Inne tutoriale wordpressowe, Wordpress autor: palmiak

    WordPress Shortcode API

    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ą funkcji extract, 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]).

    Udostępnij ten artykuł:
    • Print
    • Digg
    • del.icio.us
    • Facebook
    • Mixx
    • Google Bookmarks
    • Gwar
    • RSS
    • Technorati
    • Twitter
    • Wykop

  • 22 Responses to “WordPress Shortcode API”

    1. SpeX pisze:

      Czy jak sam ostatni przykład pożyczę i go rozbuduję to będę mógł uzyskać pełne BBCode w komentarzach?

      • palmiak pisze:

        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’);

    2. konradk pisze:

      nie wiesz czy dziala to tez w widgetach? np dodaje widget typu text/html i tam w tresci wpisuje shortcode

    3. palmiak pisze:

      Tak jak poprzednio add_filter(‘widget_text’, ‘do_shortcode’);

    4. SpeX pisze:

      A jak wyłączyć filtr z głównej treści? Bo chcę by BBCode było tylko w komentarzach.

      filtry dodaję w functions.php ??

    5. sory za kolejne dopytywanie: w ktorym konkretnie pliku dopisuje te add_ remove_ ? functions.php? czyw pliku skorki np index.php?

    6. palmiak pisze:

      functions.php

    7. SpeX pisze:

      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?

    8. MajareQ pisze:

      Pierwszy pytanie – bo włącza/wyłącza wszystkie shortcode dla danej sekcji.
      Drugie pytanie – tam gdzie nakład pracy jest najmniejszy ,czyli API Shortcode.

    9. palmiak pisze:

      A poza tym prawdopodobnie plugin i tak będzie oparty o shortcode, więc co za róznica ;)

    10. SpeX pisze:

      To że zrobię sam :P

    11. lisek pisze:

      może być też oparty na wyrażeniach regularnych, tak mi się zdaje

    12. SpeX pisze:

      A da się to gdzieś umieścić wyżej niż szablon, tak by działało niezależnie od wybranego szablonu?

    13. konradk pisze:

      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/

    14. palmiak pisze:

      Użyj encji (tylko bez spacji) & #91; oraz & #93; i będzie cacy.

    15. [...] WordPress Shortcode API autorstwa Maćka Palmowskiego (PL). [...]

    16. [...] 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 [...]

    17. konradk pisze:

      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

      • palmiak pisze:

        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ć.

    18. Name pisze:

      A właśnie co z includowaniem większej ilości treści?
      Jak można poprawnie zaincludować plik?

      function plik() {
      include (TEMPLATEPATH . “/tresc.htm”);
      }
      add_shortcode(‘tresc’, ‘plik’);

    Leave a Reply

Komentarze

Kategorie

Top 10

  • 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.

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

  • No bookmarks avaliable.