Co jsou to uživatelská pole, neboli custom fields - Affinite.io CZ

S pojem custom fields, nebo také uživatelské pole, jste se již určitě setkali. Pro ty, co netuší o co se jedná, je zde podrobný popis na co se používají a jak je využít.

Pokud jste někdy pátrali na diskuzních fórech, po řešení nějakého problému, často se v odpovědích vyskytuje pojem custom field. Český ekvivalent k tomuto výrazu je „uživatelské pole“.

Abychom pochopili, jak fungují uživatelská pole, musíme začít od začátku, tedy od postů.

Ve WordPressu, jsu základní data o obsahu ukládány do tabulky wp_posts. To „wp_“ je použito pro účely tohoto článku, při instalaci si prefix tabulek můžete změnit, takže se tabulka může jmenovat web_posts.

V této tabulce jsou různé sloupce, jako je ID, post_title, post_content a další. Bohužel je jich však omezené množství.

Co však dělat, v případě, že nám 23 sloupců tabulky wp_posts nestačí?

Pak přicházejí na řadu uživatelská pole. 

Vývojáři WordPressu tak do databáze přidali další tabulku, která má pouhé čtyři sloupce a jmenuje se wp_postmeta.

Když někdo píše, nebo mluví o metadata, custom fields, nebo uživatelských polích, týká se to dat z této tabulky.

Názvy sloupců tabulky jsou:

  • meta_id
  • post_id
  • meta_key
  • meta_value

Protože jsou v tabulce wp_post sloupce konkrétně pojmenovány a slouží k uložení určitého údaje, zde si můžete nadefinovat název hodnoty, kterou chcete uložit a k ní přiřadit konkrétní hodnotu. Pomocí post_id pak samotný údaj přiřadíte ke konkrétnímu obsahu, pro naše potřeby „článku“.

Příklad použití

Vytvoříte šablonu, ve které budete chtít zobrazit, kolikrát byl přečten nějaký článek. Uvedu jednoduchý postup, který nepočítá s tím, že jeden čtenář může článek načíst znovu, ale prostě při každém zobrazení aktualizujeme hodnotu.

Budeme pracovat s tím, že kód pro počet zobrazení vložíme do single.php, což je detail článku.

Jako první získáme hodnotu načtení z databáze:

$zobrazeni = get_post_meta($post->ID,’pocet-nacteni‘, true);

Ve funkci get_post_meta vidíme id článku, jméno uživatelského pole a hodnotu true. Poslední hodota je tam protože poté funkce vrací hodnotu jako řetězec. Když ji nepoužijeme, nebo použijeme false, bude se nám vracet pole a my budeme muset zobrazit hodnotu pomocí echo $zobrazeni[0].

Ještě poznámka k $post->ID. Pokud se vám tato hodnota nenačte, tak před funkci (osobně to dávám na začátek souboru) přidejte global $post;.

Druhým krokem bude její update a uložení:

Nyní musíme přičíst jedno zobrazení, takže použijeme $zobrazeni++; a novou hodnotu uložíme do databáze – update_post_meta($post->ID, ‚pocet-nacteni‘, $zobrazeni);.

Proč update a ne add_post_meta? Protože je to jednodušší a update_post_meta zkontroluje, zda již taková hodnota existuje a pokud ne, tak ji vytvoří. Vám pak odpadá nutnost psát kontrolu a kód je přehlednější. A taky je to rychlejší.

Zobrazení uloženého uživatelského pole:

Protože již máte k dispozici inkrementovanou hodnotu, stačí ji jen vypsat – echo $zobrazeni;.

Celý kód:

global $post;
$zobrazeni = get_post_meta($post->ID,'pocet-nacteni', true);

$zobrazeni++;

update_post_meta($post->ID, 'pocet-nacteni', $zobrazeni);

echo $zobrazeni;

Zobrazení a úprava uživatelského pole v administraci

Protože již víme, jak získat a upravit hodnotu custom fieldu v databázi, ukážeme si, jak je možné upravit jeho hodnotu, nebo jej přidat ručně z administrace článku.

Pod editorem, v jednom z metaboxů najdete dialog nadepsaný jako „Uivatelská pole“. Pokud jej nevidíte, musíte povolit jeho zobrazení. Pod hormím okrajem stránky je malá záložka „Nastavení zobrazených informací“, kde zaškrtnete příslušný checkbox.

Pak najděte na stránce tento metabox

Jak vidíte, můžete každou hodnotu uživatelského pole změnit, nebo můžete konkrétní custom field smazat.

Ve spodní části metaboxu pak můžete vytvořit nové uživatelské pole

Tip: pokud nechcete, aby se uživatelské pole zobrazovalo v tomto metaboxu, dejte na začátek jeho názvu podtržítko. Například _tajne_pole se nezobrazí a uživatel jej tak nebude moci přepsat.

Ostatní uživatelská pole

V článku jsme se věnovali především postům, protože zde jsou custom fieldy nejvíce používané. Avšak kromě wp_postmeta, existují i tabulky wp_commentmeta a wp_usermeta, jenž fungují obdobně.

Takže, když budete chtít přidat k uživateli například jeho hmotnost, budete postupovat obdobně, pouze s odpovídajícími funkcemi.

Závěr

V tomto článku jsem chtěl popsat, jak fungují uživatelská pole a protože WordPress je rájem pluginů, tak máte možnost vytvářet custom fieldy „klikacím způsobem“, například díky výbornému pluginu Advanced custom field.

V každém případě zvažte, kdy má smysl použít robustní plugin a kdy je lepší, napsat několik řádků php.

Co můžeme čekat od nové WooCommerce 2.4 ?
Co můžeme čekat od nové WooCommerce 2.4 ?
14 Čvc, 2015
Zobrazení uživatelského pole předchozího a následujícího článku
Zobrazení uživatelského pole předchozího a následujícího článku
22 Čvc, 2015

Looking for something?