Co to jest dedykowana tabela w bazaie danych WP?
Dedykowaną tabelą dla wtyczki jest tabela przeznaczoną dla wtyczki. Może ona przechowywać w rekordach informacje podlegające modyfikacji z poziomu back-endu. Mogą to byc np pozycje w rekordach dotyczących np. kilku map google na stronie lub np. kilku galerii. Można skorzystać z API Plugins WP wspomagającego pisanie wtyczek i np. nie martwić się za dużo bazami danych ale przy bardziej złożone wtyczki wymagają większej kontroli przez programiste.
Co robi nasza wtyczka?
Wtyczka ma charakter edukacyjny. Jej celem jest zapoznać się ze sposobem w jaki WordPress Developer może kontaktowąć się z baza danych WP.Głównie będziemy wprowadzać wartości do bazy danych i je odczytywać.

<?php

/*
* Plugin Name: BAZA DANYCH CLASS
* Plugin URI: https://www.websitecreator.pl
* Description: Praca z obiektem bazy danych wpdb.CLASS
* Version: 1.0
* Author: Pablozzz
* Author URI: https://www.websitecreator.pl
* License: GPL2
*/

class Database {

//private $wpdb;//zmienna wp DOSTEP DO BAZY DANYCH
//public $table_name; //dodanie prefixa wp_

function __construct() {
global $wpdb;//dostep do obiektu baz danych wp musi byc globalny

register_activation_hook(__FILE__, array($this, ‚createDbTableClass’));
register_uninstall_hook(__FILE__, array($this, ‚deleteDbTableClass’));
add_action (‚admin_menu’, array($this, ‚edu_wpdb_create_menu’));
}

public function createDbTableClass(){
global $wpdb;
$table_name = $wpdb->prefix . ‚paste_link_plugin’;//dodanie prefixa wp_

$sql = ‚
CREATE TABLE IF NOT EXISTS ‚.$table_name.'(
id INT NOT NULL AUTO_INCREMENT,
url VARCHAR(255) NOT NULL,
kolor VARCHAR(255) NOT NULL,
wlacz_animacje enum("yes", "no"),
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8′;

require_once ABSPATH.’wp-admin/includes/upgrade.php’;

dbDelta($sql);
}
static function deleteDbTableClass(){

global $wpdb;
$table_name = $wpdb->prefix . ‚paste_link_plugin’;//dodanie prefixa wp_

$sql = "DROP TABLE {$table_name}";//sql usuwanie tablicy
return $wpdb->query($sql);//zwroc zapytanie sql do funkcji query wlasciwosci wpdb
}

public function database_page(){

global $wpdb;?>

<div class="wrap">
<?php $url = isset ( $_POST[‚url’] ) ? $_POST[‚url’]: NULL ;
$kolor = isset ( $_POST[‚kolor’] ) ? $_POST[‚kolor’]: NULL ; ?>

<h2>formularz </h2>

<form action="" method="post" id="form-id-id">

<label for="url">wartosc dla insert: url</label>
<input name="url" id="url" class="widefat" type="text" style="width:100px;" value="<?php echo $url; ?>"/>
</br>
<label for="kolor">wartosc dla insert: kolor</label>
<input name="kolor" id="kolor" class="widefat" type="text" style="width:100px;" value="<?php echo $kolor; ?>"/>

<input class="button button-primary" type="submit" value="Zapisz" />
</form>

<h2>obiekt wpdb</h2>

<div>
<?php //blokowanie wpisywania pustych wartsci do tabeli
/* if ( ( !empty ( $url ) ) && ( !empty ( $kolor ) ) ){

$table_name = $wpdb->prefix . ‚paste_link_plugin’;

$value = $wpdb->insert(
$table_name,
array(
‚url’ => $url,
‚kolor’ => $kolor
),
array(
‚%s’,
‚%s’
)
);

echo ‚<p>dla insert patrz powyzej </p><pre>’.var_dump($value).'</pre></br><p>kolor: ‚.$kolor.'</p><p>url: ‚.$url.'</p>’;
}else
echo ‚<p>brak danych</p>’; */

$table_name = $wpdb->prefix . ‚paste_link_plugin’;
$sql = "SELECT * FROM {$table_name} ";

//kolumna Returns an empty array if no result is found.
$value = $wpdb->get_col($sql, 1);
echo ‚<p>dla var dump GET_COl kolumna nr 2:(patrz linia wyzej)<pre>’.var_dump($value).'</pre></br></p>’;
echo "dla value get col w nawisach{} bez vardump {$value} </br>";

//wierszReturns NULL if no result is found, consider this when using the returned value in arguments, see example below.

$value = $wpdb->get_row($sql,’OBJECT’,5);
echo ‚<p>dla var dump dla GET_ROW wiersz liczone od zera patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;
//echo $value;

//get results If your $query string is empty, or you pass an invalid $output_type, NULL will be returned.
$value = $wpdb->get_results($sql,’OBJECT’);
echo ‚<p>dla var dump dla GET_REsULTS patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;

//get_var Returns NULL if no result is found.
$value = $wpdb->get_var($sql);
echo ‚<p>dla var dump dla GET_VAR patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;
echo "<p>dla get var bez vardump : {$value}</p>";
//dla query
$value = $wpdb->query($sql);//zwraca ilosc zmodyfikowanych wierszy zapytania
echo ‚<p>dla var dump dla QUERY (zwraca ilosc zmodyfikowanych wierszy zapytania)patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;
echo "<p>dla query bez vardump : {$value}</p>";
//dla get_var ale z okrwslonymi parametrami dla dnego konkretnego pola param: zapytanie sql, nr kolumny( od index 0)
//nr wiersza (od index 0)
$value = $wpdb->get_var($sql, 1, 1);//druga kolumna, drugi wiersz
echo ‚<p>dla var dump dla getvar ale z dodatkowymi parametrami okrsljace wartosc konkretnego pola patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;
echo ‚PRINTOWANIE PRZEZ SAMO ECHO BEZ VARDUMP DLA GET VAR Z PARAMETRAMI DODATKOWYMI: ‚.$value.'</br></br>’;
echo "<p>dla getvar z parametrami nawiasy klamrowe bez vardump : {$value}</p>";

//dla update
//
$table_name = $wpdb->prefix . ‚paste_link_plugin’;
$value = $wpdb->update(//f., obiektu wpdb sluzaca do tworzenia zapytan update’ujacych wartosci w bazie
$table_name,//nazwa tabeli oraz wlasciwoci obiektu wpdb
array(//tablica przechowuje pARY: nazwa kolumny- jej wartosc, update zmienia wartosc komorki w kolumnie
//nalezy wpisac nowe wartosci na jakie maja byc zamieniione stare wartosci , NIE trzeba wypisywac //wszytskic kolumn tylko te co maja byc zmienione, NIE wolno wpisywac tej samej kolumny co wskazuje //miejsce do zmiany np meta_id w pierwszej tablicy

‚url’ => ‚nofghffgfgfdfg’,//nowe wartosci jakie beda w istniejacych kolumnach
‚kolor’ => ‚nowy_kolor’

),
array(//wskazanie miejsca gdzie maja byc zmieniaone dane , najlepei odczytac pierwsza kolumne i jej wartosc //id w wierszu w ktorym maja byc updatowane wartosci
‚id’ => 15

),
array(//formatowanie nowych danych
‚%s’, ‚%s’
),
array(//formatowanie miejsca gdzie maja byc zmienione dane tutaj metda id
‚%d’
)
);

echo ‚<p>dla var dump dla UPDATE patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;
echo "</br>";
echo "nawiasy klamrowe update value: {$value} ";
echo "</br>";
//dla prepare
$table_name = $wpdb->prefix . ‚paste_link_plugin’;
$insert_sql = ‚
INSERT INTO ‚.$table_name.’
( url, kolor, wlacz_animacje) VALUES
(%s, %s, %s)’;
/* prepare- jako f., bazodanowa wp pomaga w zabezpieczaniu przed sql injection
param:1- zapytanie sql wraz z formatowaniem
2- nowe wartosci po przecinku jakie maja byc wstawione (null pomijany)*/
$prep_stmt = $wpdb->prepare($insert_sql, ‚url_najnowszy’, ‚kolor_najnowszy’,’no’);

$value = $wpdb->query($prep_stmt);//query jako funkcja bazodanowa wp zwraca ilosc wierszy z tego //zapytania
echo ‚<p>dla var dump dla PREPARE patrz wyzej <pre>’.var_dump($value).'</pre></br></p>’;
echo "</br>";
echo "nawiasy klamrowe prepare value: {$value} ";
echo "</br>";
//replace/insert
$table_name = $wpdb->prefix . ‚paste_link_plugin’;
$value = $wpdb->replace(
$table_name,
array(
‚id’ => 45,
‚url’ => ‚new’,
‚kolor’ => ‚new’
),
array(
‚%d’,
‚%s’,
‚%s’
)
);
echo "</br>";
echo "nawiasy klamrowe replace value: {$value} ";
echo "</br>";

//delete
$value = $wpdb->delete( $table_name, array( ‚id’ => 56 ), array( ‚%d’ ) );
echo "</br>";
echo "nawiasy klamrowe delete value: {$value} ";
echo "</br>";

$wpdb->show_errors();
//$wpdb->hide_errors();
$value = $wpdb->get_col_info(‚name’, 1);

?>
</div>
</div>

<?php
}
//koniec f., callback kreujaca panel ustawien

public function edu_wpdb_create_menu(){
add_menu_page(//dodaj do "ustawienia" w adminie
‚baza danych’,//tytul naglowka w panelu ustawien
‚class db’,//tytul opis linka prowadzacego do panelu ustawien
‚manage_options’,//okreslenie dostepu przez uzytkownika panelu admina tutaj: uzytkownik zalogowny
‚class-db’,//slug url strony panelu ustawien wyswietlajacy sie w pasku adresu przegladarki
array( $this, ‚database_page’ ) //nazwa f., callback kreujaca fizyczny panel ustawien
);
}

}//koniec klasy
/* drugi parametr get_row

OBJECT – result will be output as an object.
ARRAY_A – result will be output as an associative array.
ARRAY_N – result will be output as a numerically indexed array.

*/
$Database = new Database();
?>

Pomocniczy link z WP Codex: https://codex.wordpress.org/Class_Reference/wpdb