Domyślna konfiguracja wtyczki i motywu w Wordpresie

.

Bardzo często zdarza się, że wtyczka lub motyw wymaga ustawienia pewnych danych konfiguracujnych przy aktywacji. Informacje te najczęściej zapisywane są w tabeli wp_options bazy danych bloga. Dodanie domyślnych danych dla wtyczki jest dość nieskomplikowane, a to dzięki temu, że istnieje możliwość rejestracji odpowiedniego haka aktywacyjnego. Zrobienie tego samego dla motywu wymaga już nieco więcej inwencji i pewnego triku. W tym wpisie przedstawię jak zapisać domyślną konfigurację dla wtyczki i motywu w Wordpresie.

Domyślna konfiguracyja dla wtyczki

Jak już wspomniałem wyżej, w przypadku wtyczek istnieje możliwość dodania haka aktywacyjnego. Po wykonaniu tej czynności wystarczy dodać do niego nieco kodu odpowiedzialnego za interakcję z bazą danych … i w zasadzie będzie można zapomnieć o całej sprawie.


register_activation_hook(__FILE__, 'save_plugin_defaults');
function save_plugin_defaults() {
  $plugin_options = array(
    'opt1' => 'val1',
    'opt2' => 'val2',
    'opt3' => 'val3'
  );
  add_option('my_plugin_options',serialize( $plugin_options ));
}

Funkcja register_activation_hook przyjmuje dwa argumenty. Pierwszym jest ścieżka do głównego pliku wtyczki. Drugim, funkcja, której kod ma zostać wykonany podczas aktywacji wtyczki.

W przypadku gdy kod do wykonania jest metodą klasy MyPlugin, rejestracja haka aktywacyjnego może wyglądać jak poniżej:


register_activation_hook( __FILE__, array('MyPlugin', 'save_plugin_defaults') );

Kilka słów na temat samego dodania danych do tabeli wp_options bazy danych.

Wiele osób zamiasta funkcji add_option używa update_option. Różnica jest taka, że ta pierwsza funkcja zapisuje dane tylko wówczas gdy opcja o określonej nazwie nie występuje w wp_options (innymi słowy funkcja ta nie nadpisuje danych). Update_option natomiast zawsze nadpisuje wartość dla nazwanej opcji. Jeżeli opcja o określonej nazwie nie istnieje, zostanie dodana.

Domyślna konfiguracyjnych dla motywu

Ustawienie domyślnych danych konfiguracyjnych dla motywu wykonuje się w podobny sposób jak w przypadku wtyczki. Różniaca jest taka, że nie używamy haka aktywacyjnego ale zwykłej akcji ( o nazwie admin_init). Cały kod do wykonania podczas aktywacji znajduje się w pliku functions.php motywu. Popatrzmy na przykład.


add_action('admin_init','save_theme_defaults');
function save_theme_defaults(){
  global $pagenow;
  if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php' ) {
	$theme_options = array(
      'opt1' => 'val1',
      'opt2' => 'val2',
      'opt3' => 'val3'
    );
    add_option('my_theme_options',serialize( $theme_options ));
  }
}

Po aktywacji na stronie motywów (themes.php) pojawia się dodatkowy parametr globalnej tablicy $_GET o nazwie activated, który jak łatwo się domyślić, mówi o tym, że motyw został pomyślnie aktywowowany. W tym momencie nie pozostaje nic innego jak zapisac opcje konfiguracyjne do bazy danych z pomocą funkcji add_option (lub jak ktoś preferuje – update_option). Przyglądający się temu wszystkiemu nieco bliżej, widzimy, że opcje zapisywane są w ostatniej fazie aktywacji motywu.

Opcje w obu powyższych przypadkach są zapisane w postaci serializowanej tablicy. Dla świętego spokoju wartości opcji przed serializacją powinny zostać przpuszczone przez metodę escape obiektu $wpdb.

To chyba tyle w tym temacie. Mam nadzieję, że zawarte tu informacje okażą się przydatne.


Twój komentarz





Niektóre tagi XHTML są dozwolone
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>