Reklama sponsora

3. Aktywacja, dezaktywacja, opcje




Wstęp

Wiele wtyczek po usunięciu zostawia po sobie wiele niepotrzebnych danych w bazie. W tej części kursu podejdziemy do sprawy nieco bardziej profesjonalnie. Zadbamy o to aby domyślne ustawienia wtyczki były dodawane tylko w momencie aktywacji wtyczki i jeśli nie zostało to zrobione wcześniej. Zadbamy także o porządek w bazie, jeśli użytkownik wtyczki z niej zrezygnuje, oczywiście uświadamiając go o tym w postaci zapytania o potwierdzenie usunięcia zapisanych danych wtyczki. Aby jak najlepiej a zarazem jak najprościej zobrazować powyższe zagadnienia wykorzystamy możliwość tworzenia własnych opcji oferowaną przez WordPress

Moja trzecia wtyczka

Bez zbędnej zwłoki przejdźmy do budowy naszej trzeciej wtyczki. Co tutaj zrobimy? Prostą wtyczkę z jedną podstroną w panelu administratora wykorzystując wiedzę z części pierwszej. Na naszej podstronie będzie prosty formularz zawierający w sobie jedno pole tekstowe. Pole tekstowe będzie zawierać opcję naszej wtyczki. I to w zasadzie wszystko, w polu będzie widoczny tekst a po kliknięciu przycisku aktualizuj, tekst zostanie zaktualizowany.

Utworzymy także funkcję, która w momencie aktywacji wtyczki będzie zapisywała domyślny tekst w naszej opcji, ale tylko wtedy, gdy taka opcja nie będzie istniała (a będzie istniała jeśli dezaktywujemy i aktywujemy wtyczkę). Utworzymy także funkcję, która w momencie dezaktywacji będzie odwracała zapisany w opcji tekst. Ostatnią kwestią jaką zajmiemy się w tej części jest odinstalowanie wtyczki. W momencie, w którym użytkownik kliknie odnośnik „usuń wtyczkę” zostanie zapytany czy usunąć także wszystkie dane i jeśli zatwierdzi wybór opcja wtyczki zostanie usunięta razem z wtyczką.

To by było na tyle. Przejdźmy do kodowania. Na początek stworzymy prostą wtyczkę jak w części pierwszej.

 

/**
Plugin Name: Moja trzecia wtyczka
Version: 1.0
Description: Wtyczka z własną opcją
Author: Daniel Kuczewski
Author URI: http://zaawansowanywordpress.pl
Plugin URI: http://zaawansowanywordpress.pl/3-aktywacja-dezaktywacja-opcje/
 */

add_action( 'admin_menu', 'mtw_add_menu' );

function mtw_add_menu(){
    add_menu_page( 'Strona główna wtyczki', 'Moja trzecia wtyczka', 'administrator', 'moja-trzecia-wtyczka', 'glowna_moja_trzecia_wtyczka', '', 100 );
}

function glowna_moja_trzecia_wtyczka(){
    echo "Formularz opcji";
}

Powyższy kod został już dokładnie omówiony Tutaj.Teraz skoro mamy już jakieś podstawy zajmiemy się aktywacją wtyczki.

Aktywacja wtyczki

Do „zaczepienia” funkcji aktywacji wtyczki służy funkcja register_activation_hook(). Funkcja ta pobiera dwa parametry:

  • $file – ścieżka dostępu do głównego pliku wtyczki
  • $function – nazwa funkcji, która powinna zostać wykonana w momencie aktywacji naszej wtyczki

Dodajmy wiec tę funkcję do naszej wtyczki

register_activation_hook(__FILE__, 'mtw_activation');

function mtw_activation() {
    //kod aktywacji wtyczki
}

Teraz zajmijmy się zadaniem głównym funkcji aktywacji, czyli sprawdzeniem czy istnieje opcja a jeśli nie to dodanie jej.

Naszą opcję nazwiemy mtw_opcja. Do sprawdzenia czy opcja już istnieje wykorzystamy funkcję Get_option('nazwa_opcji'), która jeśli nie ma takiej opcji zwraca FALSE. Po sprawdzeniu dostępności opcji wykorzystamy funkcję add_option( $option, $value, $deprecated, $autoload ), która pobiera cztery parametry:

  • $option – nazwa opcji
  • $value – wartość opcji, czyli w tym przypadku domyślny tekst
  • $deprecated – opcjonalna opcja, nie używamy
  • $autoload – czy ma się automatycznie ładować ze wszystkimi opcjami wordpressa (w naszym przypadku nie ma takiej konieczności). W tym przypadku nalezy zapamiętać że przyjmuje wartości yes oraz no.

Uzupełnimy teraz kod naszej funkcji aktywacji

 

function mtw_activation() {
    if (!get_option('mtw_opcja')) {
        add_option('mtw_opcja', 'tekst', '', 'no'); //ustawiam domyślny tekst
    }
}

Nasza aktywacja jest już gotowa teraz przydałoby się jakoś wyświetlić tą opcję. Teraz więc uzupełnimy funkcję wyświetlającą nasz formularz. Tym razem wykorzystamy kilka klas stylów występujących w standardzie panelu wordpressa, które szerzej zostaną omówione później.

Na początek sprawdzimy czy został wysłany tekst dla naszej opcji za pomocą metody POST. Jeśli istnieje odpowiedni index w tablicy $_POST to czyścimy tę wartość a następnie aktualizujemy naszą opcję i tworzymy zmienną komunikat (w tym przypadku jest tylko jeden możliwy komunikat więc po prostu tworzę zmienną, jeśli miałoby ich być więcej dobrym rozwiązaniem byłoby zapisanie ich w tablicy).

Następnie pobieram naszą opcję (ponieważ jest dodawana w momencie aktywacji wtyczki, nie ma możliwości aby jej nie było) i rozpoczynam kod HTML. Całość biorę w pojemnik z klasą „warp”. Następnie wyświetlam nagłówek z nazwą naszej wtyczki. Kolejnym elementem jest pojemnik o klasie „row”, który rozciąga się na całą szerokość. Sprawdzam czy istnieje komunikat i jeśli tak to wyświetlam go w standardowym polu komunikatu dla powodzenia.

Następnie wyświetlam formularz zawierający jedno pole tekstowe z naszym tekstem oraz przycisk zatwierdzający zmiany.

 

function glowna_moja_trzecia_wtyczka()
{
    if(isset($_POST['mtw_opcja'])) {
        $opcja = esc_sql( $_POST['mtw_opcja']);
        update_option( 'mtw_opcja', $opcja, 'no');
        $komunikat = 'Zaktualizowano opcję.';
    }

    $opcja = get_option('mtw_opcja');
    ?>
    <div class="warp">
        <h2>Trzecia wtyczka</h2>
        <div class="row">
            <?= isset($komunikat) ? '<div id="message" class="updated">' . $komunikat . '</div>' : '';?>
        </div>
        <div class="row">
            <form method="POST">
                <label>
                    Opcja<br>
                    <input type="text" name="mtw_opcja" value="<?= $opcja; ?>"/>
                </label>
                <input type="submit" value="Aktualizuj" class="button-primary"/>
            </form>
        </div>
    </div>
    <?php
}

No i mamy część główną naszej wtyczki, teraz przejdziemy do dezaktywacji.

Dezaktywacja wtyczki

Dezaktywacja niewiele różni się od aktywacji. Tym razem do „zaczepienia” funkcji dezaktywacji wykorzystamy funkcję register_deactivation_hook($file, $function), parametry tej funkcji są analogiczne jak przy aktywacji.

 

register_deactivation_hook(__FILE__, 'mtw_deactivation' );

function mtw_deactivation() {
    //kod dezaktywacji
}

Założyliśmy że odwrócimy tekst zapisany w naszej opcji a więc w funkcji dezaktywacji pobieramy opcję, odwracamy zapisany w niej tekst i aktualizujemy.

function mtw_deactivation() {
    $opcja = get_option('mtw_opcja');
    $opcja = strrev($opcja);
    update_option('mtw_opcja', $opcja);
}

Pozostała nam jeszcze funkcja odinstalowania wtyczki.

Odinstalowanie wtyczki

Do odinstalowania wtyczki możemy wykorzystać dwie metody. Pierwszą z nich jest wykorzystanie funkcji register_uninstall_hook($file, $function) i ta metoda jest całkowicie analogiczna do aktywacji i dezaktywacji. Bardziej preferowaną metodą jest umieszczenie w katalogu wtyczki pliku uninstall.php i tak właśnie zrobimy w naszym przykładzie.

Tak więc zaczniemy od utworzenia pliku uninstall.php i umieszczenia go w katalogu wtyczki. Następnie sprawdzimy czy plik został wywołany przez wordpressa i jeśli nie to zakończymy prace a jeśli tak to przejdziemy dalej. WordPress zapyta użytkownika czy chce usunąć opcję i pliki, jeśli się zgodzi to usuniemy a jeśli nie zostawimy. Do dzieła.

Zawartość pliku uninstall.php

<?php
if( !defined( 'WP_UNINSTALL_PLUGIN' ))
    exit();
delete_option( 'mtw_opcja');

No i to był ostatni element naszej trzeciej wtyczki. Poniżej znajduje się pełny kod pliku głównego naszej wtyczki moja_trzecia_wtyczka.php

<?php
/**
Plugin Name: Moja trzecia wtyczka
Version: 1.0
Description: Wtyczka z własną opcją
Author: Daniel Kuczewski
Author URI: http://zaawansowanywordpress.pl
Plugin URI: http://zaawansowanywordpress.pl/3-aktywacja-dezaktywacja-opcje/
 */

add_action('admin_menu', 'mtw_add_menu');

function mtw_add_menu()
{
    add_menu_page('Strona główna wtyczki', 'Moja trzecia wtyczka', 'administrator', 'moja-trzecia-wtyczka', 'glowna_moja_trzecia_wtyczka', '', 100);
}

function glowna_moja_trzecia_wtyczka()
{
    if(isset($_POST['mtw_opcja'])) {
        $opcja = esc_sql( $_POST['mtw_opcja']);
        update_option( 'mtw_opcja', $opcja, 'no');
        $komunikat = 'Zaktualizowano opcję.';
    }

    $opcja = get_option('mtw_opcja');
    ?>
    <div class="warp">
        <h2>Trzecia wtyczka</h2>
        <div class="row">
            <?= isset($komunikat) ? '<div id="message" class="updated">' . $komunikat . '</div>' : '';?>
        </div>
        <div class="row">
            <form method="POST">
                <label>
                    Opcja<br>
                    <input type="text" name="mtw_opcja" value="<?= $opcja; ?>"/>
                </label>
                <input type="submit" value="Aktualizuj" class="button-primary"/>
            </form>
        </div>
    </div>
    <?php
}

register_activation_hook(__FILE__, 'mtw_activation');

function mtw_activation() {
    if (!get_option('mtw_opcja')) {
        add_option('mtw_opcja', 'tekst', '', 'no'); //ustawiam domyślny tekst
    }
}

register_deactivation_hook(__FILE__, 'mtw_deactivation');

function mtw_deactivation() {
    $opcja = get_option('mtw_opcja');
    $opcja = strrev($opcja);
    update_option('mtw_opcja', $opcja, 'no');
}

Jeszcze wypadałoby przeprowadzić pewne testy

Testy

Na początku wrzucamy folder z naszą wtyczką zawierający pliki moja_trzecia_wtyczka.php oraz uninstall.php do katalogu z plugins. Wchodzimy w panelu administratora we „Wtyczki”, gdzie powinna już czekać moja_trzecia_wtyczka.

Screenshot_4


Po kliknięciu odnośnika „Włącz” powinna zadziałać nasza funkcja aktywacji wtyczki i dodać opcję z domyślnym tekstem. W menu lewym panelu administratora na dole powinna pojawić się nasza wtyczka. Wchodzimy w „Moja trzecia wtyczka”.

Screenshot_1


Powinien ukazać się standardowo ostylowany formularz. Widzimy w polu domyślny tekst, teraz wracamy do wtyczek i klikamy najpierw wyłącz (w tym momencie powinna zadziałać funkcja dezaktywacji, odwracająca tekst). Następnie klikamy z powrotem „włącz” co powinno spowodować jedynie włączenie wtyczki (nasza opcja już istnieje). Wracamy z powrotem do wtyczki, zmieniamy tekst i aktualizujemy.

Screenshot_2


Po powrocie do wtyczki nasz domyślny tekst powinien być już odwrócony. Dopisujemy cokolwiek i po kliknięciu „Aktualizuj” powinien pojawić się odpowiedni komunikat. Od teraz jeśli tam wejdziemy będzie się już pokazywał zaktualizowany tekst. Teraz pozostaje już tylko przetestować usuwanie wtyczki. Przechodzimy z powrotem do wtyczek i najpierw wyłączamy a następnie usuwamy wtyczkę. W momencie usunięcia, WordPress powinien zapytać nas jeszcze czy jesteśmy pewni usunięcia danych i plików.

Screenshot_3


Jeśli klikniemy „Nie, …” po prostu wrócimy do listy wtyczek i nic się nie wydarzy jednak jeśli potwierdzimy nasz wybór zostanie wykonany kod z pliku uninstall.php oraz usunięte zostaną wszystkie pliki wtyczki. (przed przetestowaniem tej opcji lepiej zrobić kopię).

No i to wszystko w tej części pliki wtyczki można pobrać tutaj -> moja_trzecia_wtyczka

 


Dodaj komentarz

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