Wprowadzenie do pol niestandardówych WordPress
Dowiedz się więcej o profesjonalnym rozwoju WordPress na WPPoland. Pola niestandardowe (Custom Fields) to jedna z najpotezniejszych funkcji WordPressa. Pozwalają na przechowywanie dodatkowych danych z każdym wpisem, strona lub typem treści. Na przykład: cena produktu, data wydarzenia, adres nieruchomości - wszystko to może być przechowywane jako metadane wpisu.
Podstawy: get_post_meta()
Funkcja get_post_meta() to fundament pracy z polami niestandardówymi:
// Pobierz pojedyncza wartosc
$value = get_post_meta($post_id, 'meta_key', true);
// Pobierz tablice wartosci
$values = get_post_meta($post_id, 'meta_key', false);
// Pobierz wszystkie metadane wpisu
$all_meta = get_post_meta($post_id);
Parametry
| Parametr | Typ | Opis |
|---|---|---|
$post_id | int | ID wpisu |
$key | string | Nazwa klucza meta |
$single | bool | true = string, false = tablica |
Wyswietlanie pol niestandardówych w motywie
W petli WordPressa
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php
$price = get_post_meta(get_the_ID(), 'product_price', true);
if ($price) : ?>
<p class="price"><?php echo esc_html($price); ?> PLN</p>
<?php endif; ?>
<?php endwhile; endif; ?>
Poza petla
<?php
$post_id = 42;
$author_name = get_post_meta($post_id, 'custom_author', true);
echo esc_html($author_name);
?>
Bezpieczeństwo: Zawsze escapuj dane
Nigdy nie wyswietlaj surowych metadanych bez escapowania:
// Zle - podatne na XSS
echo get_post_meta($post_id, 'user_input', true);
// Dobrze - bezpieczne
echo esc_html(get_post_meta($post_id, 'user_input', true));
// Dla URL-i
echo esc_url(get_post_meta($post_id, 'website_url', true));
// Dla atrybutow HTML
echo esc_attr(get_post_meta($post_id, 'css_class', true));
Zapisywanie pol niestandardówych
Programowe zapisywanie
// Dodaj lub zaktualizuj metadane
update_post_meta($post_id, 'meta_key', 'meta_value');
// Dodaj (pozwala na wiele wartosci z tym samym kluczem)
add_post_meta($post_id, 'meta_key', 'meta_value');
// Usun
delete_post_meta($post_id, 'meta_key');
Metabox w edytorze
function add_price_metabox() {
add_meta_box(
'product_price_box',
'Cena produktu',
'render_price_metabox',
'post',
'side'
);
}
add_action('add_meta_boxes', 'add_price_metabox');
function render_price_metabox($post) {
wp_nonce_field('save_price', 'price_nonce');
$price = get_post_meta($post->ID, 'product_price', true);
?>
<label for="product_price">Cena (PLN):</label>
<input type="number" id="product_price" name="product_price"
value="<?php echo esc_attr($price); ?>" step="0.01">
<?php
}
function save_price_metabox($post_id) {
if (!isset($_POST['price_nonce']) ||
!wp_verify_nonce($_POST['price_nonce'], 'save_price')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['product_price'])) {
update_post_meta(
$post_id,
'product_price',
sanitize_text_field($_POST['product_price'])
);
}
}
add_action('save_post', 'save_price_metabox');
Praca z ACF (Advanced Custom Fields)
ACF upraszcza tworzenie i wyswietlanie pol niestandardówych:
// ACF - prostsze API
$price = get_field('product_price');
$image = get_field('hero_image');
// W petli
the_field('product_description');
// Z konkretnego wpisu
$value = get_field('field_name', $post_id);
Wydajność
Caching metadanych
WordPress automatycznie cacheuje metadane. Funkcja update_meta_cache() jest wywolywana podczas standardówych zapytań, co oznacza że wielokrotne wywolania get_post_meta() na tym samym wpisie nie generują dodatkowych zapytań do bazy danych.
Optymalizacja zapytań
// Zamiast pobierac metadane w petli jeden po drugim
// Uzyj WP_Query z meta_query
$args = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => 'product_price',
'value' => 100,
'compare' => '>=',
'type' => 'NUMERIC'
)
)
);
$query = new WP_Query($args);
Integracja z Gutenbergiem
W 2026 pola niestandardowe moga być integrowane z edytorem blokow:
// Rejestracja meta do użycia w REST API i Gutenbergu
register_post_meta('post', 'product_price', array(
'show_in_rest' => true,
'single' => true,
'type' => 'number',
'sanitize_callback' => 'absint',
));
Podsumowanie
Pola niestandardowe to fundamentalna część rozwoju WordPressa. Niezaleznie od tego, czy uzywasz natywnego get_post_meta() czy ACF, pamiętaj o trzech zasadach: zawsze escapuj dane wyjsciowe, waliduj dane wejsciowe i korzystaj z wbudowanego cachingu WordPressa.


