Reklama sponsora

8. Shortcode



Shortcode

Platforma WordPress umożliwia tworzenie „skrótów”, które często są nazywane BBCode. Skróty to prosta składnia, składająca się z nawiasów kwadratowych i niewielkiej zawartości w postaci [jakiś znacznik]. Umieszczenie takiego shortcode przez użytkownika w swoim poście lub na stronie powoduje wykonanie jakiejś funkcjonalności podpiętej pod ten znacznik.

Funkcjonalności mogą być bardzo różne od wyświetlenia tekstu do skomplikowanej aplikacji jak na przykład nasz czat, który w tej części wzbogacimy właśnie o Shortcode, dzięki czemu użytkownik będzie mógł wyświetlić czat w dowolnym miejscu.

Pod Szortcode podpinamy funkcje wykonujące określoną funkcjonalność, funkcje mają to do siebie że mogą pobierać parametry. Mechanizm Shortcode umożliwia także przesyłanie różnych atrybutów, przykładowo [jakis_shortcode parametr1=”wartość parametru” parametr2=”wartość 2″]. W naszym przykładzie w ten sposób określimy sobie ile postów ma zostać wyświetlone.

Co jest do zrobienia w tej lekcji? Dalej pracujemy nad naszym czatem, w tej części dodamy Shortcode umożliwiający wyświetlenie naszego czatu w każdym miejscu, w którym użytkownik wstawi odpowiedni znacznik. Dzisiejsze zadanie jest trochę, krótsze więc powinno pójść szybciej.

Jak dodać Shortcode

Na początku stworzymy stronę, na której będziemy testować nasze rozwiązanie. W kokpicie administratora wchodzimy w strony i dodajemy stronę na przykład o tytule „zwpc shortcode„. W treści strony wpisujemy jakiś przykładowy tekst i już mamy stronę wyglądająca podobnie do tej poniżej.

Pusta strona do testowania shortcode

Na razie nic tam ciekawego nie ma prócz naszego napisu. Teraz nadszedł czas zby zabrać się za kodowanie. Na początek stworzymy funkcję po prostu wyświetlającą napis „ZWP Czat”.


function zwpc_shortcode(){
echo "ZWP Czat";
}

Następnym krokiem będzie stworzenie naszego Shortcode i podpięcie pod niego funkcji. W tym celu wykorzystujemy funkcję add_shortcode($tag, $funkcja), która jako parametry pobiera nazwę Shortcoda i nazwę funkcji, która ma się wykonać.


add_shortcode("zwp_czat", "zwpc_shortcode");

Teraz w treści utworzonej strony umieszczamy shortcode [zwp_czat] tak jak na obrazku poniżej.

Shortcode w kokpicie

Po zaktualizowaniu strony powinien się pojawić napis.

shortcode hello world

Teraz przydało by się sprawić aby zamiast napisu „ZWP Czat” pojawiał się cały czat. W tym celu wystarczy wykorzystać kod odpowiedzialny za wyświetlenie czatu stworzony we wcześniejszych częściach tego kursu.


function zwpc_shortcode(){
 global $ZWP_Czat;
 $ZWP_Czat->show_zwpc_html('shortcode');
}

Teraz czat powinien się już wyświetlać, w miejscu gdzie został wstawiony Shortcode.
Czat w shortcode

Właściwie już uzyskaliśmy oczekiwany efekt ale pozostało jeszcze określenie ilości wiadomości jakie mają się wyświetlić w danym miejscu.

Parametry Shortcode

Zacznijmy od dostosowania naszej funkcji odpowiedzialnej za wyświetlanie czatu dodając parametr pobierający ilość wejść. Najpierw jednak dodamy parametr do funkcji pobierającej posty. Po przerobieniu funkcja get_zwpc_posts() wygląda następująco


function get_zwpc_posts($posts_count = 100) {
    return $this->wpdb->get_results("SELECT * FROM $this->table_name ORDER BY create_date DESC LIMIT 0, $posts_count");
}

Domyślnie ustawiliśmy ilość pobieranych postów na 100 najnowszych. Teraz przechodzimy do funkcji show_zwpc_html() i dodajemy do niej także ilość postów jaka ma zostać pobrana. W tym przypadku także określimy domyślną ilość na 100, oprócz przekazywanego parametru zmieniamy także miejsce pobrania postów

$zwpc_posts = $this->get_zwpc_posts($posts_count);

    function show_zwpc_html($place, $posts_count = 100) {
        if (isset($_POST['post_content' . $place])) {
            $this->add_post($_POST['post_content' . $place]);
        }
        if (is_user_logged_in()) {
            echo '<form method="POST">
                <input type="hidden" name="zwpc_action" value="add"/>
                <label for="post_content' . $place . '">Treść posta</label>
                <input type="text" name="post_content' . $place . '" value="" placeholder="Treść posta"/>
                <input type="submit" value="Napisz" class="button-primary"/>
            </form>';
        }
        echo '<table>';
        $zwpc_posts = $this->get_zwpc_posts($posts_count);
        if ($zwpc_posts) {
            foreach ($zwpc_posts as $zwpc_p) {
                echo '<tr>';
                echo '<td>' . $zwpc_p->create_date . ' ' . $zwpc_p->post_content . '</td>';
                echo '</tr>';
            }
        }
        echo '</table>';
    }

No i teraz przyszedł czas na najważniejsze czyli modyfikacje funkcji podczepionej pod Shortcode, dodajemy do niej pobierany argument. Będzie to tablica z parametrami jakie można przesłać. Następnie ustawiamy wartości domyślne. W naszym przykładzie będzie to tylko ilość wyświetlanych postów. Później łączymy opcje domyślne z tymi wprowadzonymi (kiedy nie podano jakiejś opcji wtedy jest używana domyślna). A na koniec wykorzystujemy zmienną w funkcji odpowiedzialnej za wyświetlenie czatu ($options[‚posts_count’]).

function zwpc_shortcode($atr){
    $defaults = array("posts_count" => 100);
    $options = shortcode_atts($defaults, $atr);
    global $ZWP_Czat;
    $ZWP_Czat->show_zwpc_html('shortcode',$options['posts_count']);
}

Na koniec zmodyfikujemy nieco nasz kod umieszczony na stronie na następujący [zwp_czat posts_count=”2″] w efekcie powinniśmy otrzymać na stronie z czatem tylko dwa ostatnie wpisy. W ten sposób można otrzymać dowolną liczbę ostatnich wpisów.

No i to wszystko na dzisiaj, w następnej części dowiesz się jak dodać trochę dynamiki wtyczce dzięki technologii Ajax. Cały kod wtyczki w tym stanie jak to zostało zakończone w tej części możesz pobrać ZWP_Czatv13

 


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *