Co to sa metaboxy?
Metaboxy są polami formularza , dzięki którym user może wprowadzić wlasne dane a potem wyświetlać je na stronie WP.
Sposób na umieszczenie metaboxu
[php]require_once dirname( __FILE__ ) . ‚/metabox/metabox.php’;[/php]
require_once(php)- załaduj tylko raz za drugim zgłoszenie błędu przez parser
direname()- (php) zwraca ścieżkę do katalogu
_FILE_- stała magiczna (php) zwraca ścieżkę do katalogu w jakim się znajduje plik w ktorym to ta stała jest użyta jako parametr w funkcji dirname.
./metabox/metabox.php-konkatenacja, doklejenie reszty potrzebnej scieżki dostępu.
Instrukcję tą należy umieścic najlepeij na początku pliku functions.php.Można również wpisać cała definicje do functions.php bez osobnego dołączania pliku.
Przykładowa definicja metaboxu.
<?php
/**
* Adds a box to the main column on the Post and Page edit screens.
*/
function myplugin_add_meta_box() {
$screens = array( ‚post’, ‚page’ );//okreslenie gdzie ma wysiwetlac metabox
foreach ( $screens as $screen ) {
//dodawanie meta boxow do postow i stron
add_meta_box(
‚myplugin_sectionid’,//nazwa html id do umiejscowienia boxa
__( ‚My Post Section Title nazwa meta box’, ‚myplugin_textdomain’ ),
//tytul boxa wyswietlany w poscie i stronie(tlumaczony)
‚myplugin_meta_box_callback’,//nazwa funkcji callback zwrotnej okreslajacej html meta boxu(printowanie)
$screen //opcjonalna opcja okresla gdzie ma sie wyswietlac meta box
);
}
}
add_action( ‚add_meta_boxes’, ‚myplugin_add_meta_box’ );//dodanie funckji do haka add_meta_boxes
/**
* Prints the box content.
*
* @param WP_Post $post The object for the current post/page.
*/
function myplugin_meta_box_callback( $post ) {
// Add a nonce field so we can check for it later.
/*funckaja sluzy do sprawddzania czy zawartosc wpr do pol formularza pochodzi z biezacej strony /posta lub nie
argumenty:
‚myplugin_save_meta_box_data’,-nazwa akcji/funkcji ktora odbiera wprowadzone dane
‚myplugin_meta_box_nonce’- nazwa pola nonce do ktrego wprowadzne sa dane
*/
wp_nonce_field( ‚myplugin_save_meta_box_data’, ‚myplugin_meta_box_nonce’ );//mechanizm nonce filed WP
/*
* Use get_post_meta() to retrieve an existing value
* from the database and use the value for the form.
uzyskiwanie wartosci wpr do pola aby wyswietlic nalezy dodac echo
argumenty:
$post->ID -id posta
‚_my_meta_value_key’-klucz do identyfikacji z ktrego pola mabyc odczytana zawartosc
true-tutaj okresla ze jest zwracany string , false zwracana tablica
*/
$value = get_post_meta( $post->ID, ‚_my_meta_value_key’, true );
//printowanie meta boxa
echo ‚<label for="myplugin_new_field">’;
_e( ‚Description for this field’, ‚myplugin_textdomain’ );//tlumaczony opis pola
echo ‚</label> ‚;
//esc_attr oczyszczanie sanityzacja wartoci wpr do pola ,atryb wartosci value taki sam jak wartosc wpr do pola
//size -dlugosc pola
echo ‚<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="’ . esc_attr( $value ) . ‚" size="35" />’;
}
/**
* When the post is saved, saves our custom data.
*
* @param int $post_id The ID of the post being saved.
ODBIERANIE ZAWARTOSCI ZAPISANYCH DO POL FORMULAARZA
*/
function myplugin_save_meta_box_data( $post_id ) {
/* procedury bezpieczenstwa
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
// Check if our nonce is set.
if ( ! isset( $_POST[‚myplugin_meta_box_nonce’] ) ) {
return;//jesli nie istnieja pola nonce zakoncz dzialanie
}
// Verify that the nonce is valid.
if ( ! wp_verify_nonce( $_POST[‚myplugin_meta_box_nonce’], ‚myplugin_save_meta_box_data’ ) ) {
return;//jesli funkcja wp verify nonce zworci false zakoncz dzialanie
}
// If this is an autosave, our form has not been submitted, so we don’t want to do anything.
if ( defined( ‚DOING_AUTOSAVE’ ) && DOING_AUTOSAVE ) {
return;
}
// Check the user’s permissions.
if ( isset( $_POST[‚post_type’] ) && ‚page’ == $_POST[‚post_type’] ) {
if ( ! current_user_can( ‚edit_page’, $post_id ) ) {
return;//jesli uzytkownik nie ma praw edycji strony zkoncz dzialanie
}
} else {
if ( ! current_user_can( ‚edit_post’, $post_id ) ) {
return;//jesli uzytkownik nie ma praw edycji posta zkoncz dzialanie
}
}
/* OK, it’s safe for us to save the data now. */
// Make sure that it is set.
if ( ! isset( $_POST[‚myplugin_new_field’] ) ) {
return;//jesli atrybut for tagu label nie ma wartosci myplugin_new_field zakoncz dzialanie
}
// Sanitize user input.
$my_data = sanitize_text_field( $_POST[‚myplugin_new_field’] );
// Update the meta field in the database.przeslanie do bazy danych wartosci
/*parametry:
$post_id-id posta
‚_my_meta_value_key’-klucz meta boxa z ktorego ma byc przeslana wartosc
$my_data-nazwa zmiennej ktora bedzie przechowywac przeslane wartosci*/
update_post_meta( $post_id, ‚_my_meta_value_key’, $my_data );
}
add_action( ‚save_post’, ‚myplugin_save_meta_box_data’ );
//dodanie do akcji save post funkcji zachowania wartosci meta box
?>
Pozyskiwanie wartości wprowadzonych w metabox na stronie (page) lub wpisie ( np single )
[php]<?php echo get_post_meta( $post->ID, ‚_my_meta_value_key’, true );//uzysiwanie wartosci w pisanej w metabox w ui wp?> [/php]