Co jsou to uživatelská pole, neboli custom fields

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“.

Čtěte  Plugin Shortcodes4all sada shortcodů v jednom balení

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:

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.

nastaveni-zobrazenych-informaci

Pak najděte na stránce tento metabox

uzivatelska-pole

 

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

nove-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.

Čtěte  Nový editor pro WordPress Gutenberg opouští React

 

 

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Related posts

Leave a Reply

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *