Vývojář

Jak u WordPress na vlastní typ příspěvků (Custom Post Types)

WordPress je úžasný redakční systém pro tvorbu obsahu a využívání vlastních typů příspěvků (anglicky Custom Post Types) přináší další skvělé možnosti. V tomto článku si ukážeme jak vytvořit vlastní typ příspěvků a jak s ním dále pracovat.

Vlastní typ příspěvků začal být skvěle využitelný ve verzi WordPress 2.8, kdy byla přidána funkce register_post_type(), která tuto možnost nabídla všem.

Co vlastní typy příspěvků ve WordPress umí

Vlastní typy příspěvků nejsou nic jiného než klasické příspěvky s jinou hodnotou u post_type v databázi. Typ příspěvků pro klasické příspěvky je post, stránky používají page, přílohy používají attachment a tak dále.

Nyní si můžete vytvořit vlastní typ příspěvků pro obsah jaký na webu chcete mít. Pro knihy, recence, zájezdy, produkty…

Správným postupem tvorby získáte následující vlastnosti:

  • Vlastní typ příspěvků se zobrazí ve WordPress administraci jako nová položka menu. S vlastním přehledem a stránkou “vytvořit”.
  • URL adresa http://mojestranka.cz/vlastnitypprispevku/ bude sloužit jako archiv.
  • Kategorie a štítky mohou být dostupné i pro vlastní typ příspěvků, případně si můžete vytvořit vlastní taxonomii.

Mimo výše zmíněné možnosti, můžete určit také kde se vlastní typ příspěvků zobrazí v menu, zda v něm bude fungovat hledání, kteří uživatelé si jej mohou zobrazit atd.

Různé typy obsahu mají různé požadavky na data. Například u klasických příspěvků chcete specifikovat autora, rubriku, datum atd. U vlastního typu příspěvků “Knihy” chcete specifikovat autora knihy, žánr, vydavatele a další. K tomu skvěle slouží vlastní meta boxy, které jednoduše vytvoříte a spravujete.

Vlastní meta boxy přidají další boxy do stránky sloužící pro úpravu/tvorbu příspěvku. Nejčastěji využívají uživatelské pole (custom fields) a ty také lze k tomu také využít, ale oddělením některých uživatelských polí jako meta boxů můžete vytvořit mnohem uživatelsky přívětivější prostředí.

Práce s vlastními typy příspěvků

Pro efektivní tvorbu vlastních typů příspěvků musíte být seznámeni s následujícím:

  • Tvorba vlastních typů příspěvků,
  • Tvorba vlastních taxonomií,
  • Tvorba vlastních meta boxů.

Tvorba vlastních typů příspěvků

První věcí je vytvoření samotného vlastního typu příspěvků. Ideálně byste k tomu měli vytvořit vlastní plugin nebo použít functions.php child theme.

function my_custom_post_zajezd() {
  $args = array();
  register_post_type( 'zajezd', $args ); 
}
add_action( 'init', 'my_custom_post_zajezd' );

V té nejjednodušší formě se vytvoří vlastní typ příspěvků, který nemá vlastně žádné nastavení. Nebude veřejný, nebude se zobrazovat v administraci, zprávy budou stejné jako u příspěvků. Pro úpravu tohoto nastavení budeme muset použít jedny z nejčastějších nastavení a přiřadíme je, k prozatím prázdnému, $args.

function my_custom_post_zajezd() {
  $labels = array(
    'name'               => _x( 'Zájezdy', 'zakladni jmeno prispevku' ),
    'singular_name'      => _x( 'Zájezd', 'jednotne zakladni jmeno prispevku' ),
    'add_new'            => _x( 'Přidat nový', 'zajezd' ),
    'add_new_item'       => __( 'Přidat nový zájezd' ),
    'edit_item'          => __( 'Upravit zájezd' ),
    'new_item'           => __( 'Nový zájezd' ),
    'all_items'          => __( 'Všechny zájezdy' ),
    'view_item'          => __( 'Zobrazit zájezd' ),
    'search_items'       => __( 'Hledat zájezd' ),
    'not_found'          => __( 'Žádný zájezd nebyl nalezen' ),
    'not_found_in_trash' => __( 'Žádný zájezd nebyl nalezen v koši' ), 
    'parent_item_colon'  => '',
    'menu_name'          => 'Zájezdy'
  );
  $args = array(
    'labels'        => $labels,
    'description'   => 'Obsahuje zájezdy a jejich parametry',
    'public'        => true,
    'menu_icon'     => 'dashicons-palmtree',
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
    'has_archive'   => true,
  );
  register_post_type( 'zajezd', $args ); 
}
add_action( 'init', 'my_custom_post_zajezd' );
  • labels – možnost, která definuje různé informace k vlastnímu typu příspěvků. Výše jsem je rozepsal, aby to bylo jasnější a srozumitelnější.
  • description – krátký popis vlastního typu příspěvků.
  • public – nastavení, které když je nastavené na true ovlivňuje celou řadu dalších nastavení (spojeních s viditelností).
  • menu_icon – ikonka u názvu v menu, vybrat si ji můžete v sekci Dashicon.
  • menu_position – definuje pozici vlastních příspěvků v menu. Číslo 5 jej umístí za Příspěvky. Čím vyšší číslo zvolíte, tím nižší bude pozice v menu.
  • supports – tato možnost určí výchozí WordPress nastavení dostupné při úpravě vlastního typu příspěvků. Ve výchozím nastavení je zobrazený pouze titulek a editor obsahu. Pokud chcete přidat podporu pro komentáře, revize nebo typy příspěvků (post formats), musíte je specifikovat. Celý list argumentů najdete v jejich sekci v kodexu.
  • has_archive – pokud nastaveno na true vytvoří se archiv na URL adrese http://mojestranka.cz/vlastnitypprispevku/
Vlastní typ příspěvku v menu
Vlastní typ příspěvku v menu

Jakmile máte toto nastavené, měli byste v menu vidět vlastní typ příspěvku. Dále byste měli být schopni vytvořit a zobrazit seznam příspěvků v administraci a zobrazit příspěvky na stránce.

Poznámka: Pokud nepůjde příspěvky zobrazit na stránce, tak přeuložte trvalé odkazy.

Vlastní zprávy

WordPress vytváří velké množství zpráv spuštěných různou akcí uživatele. Aktualizace, publikování, hledání atd. V administraci jsou tyto stránky ve výchozím nastavení napojeny na ty od klasických příspěvků. Text pro tyto zprávy můžete jednoduše změnit použitím hooku post_updated_messages.

function my_updated_messages( $messages ) {
  global $post, $post_ID;
  $messages['zajezd'] = array(
    0 => '', 
    1 => sprintf( __('Zájezd aktualizován. Zobrazit zájezd'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Uživatelské pole aktualizováno.'),
    3 => __('Uživatelské pole smazáno.'),
    4 => __('Zájezd aktualizován.'),
    5 => isset($_GET['revision']) ? sprintf( __('Zájezd obnoven z revize %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Zájezd publikován. Zobrazit zájezd'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Product saved.'),
    8 => sprintf( __('Zájezd vložen. Zobrazit zájezd'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Zájezd naplánován na: %1$s. Zobrazit zájezd'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Koncept zájezdu aktualizován. Zobrazit zájezd'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );
  return $messages;
}
add_filter( 'post_updated_messages', 'my_updated_messages' );
Vlastní typ příspěvků - upravené zprávy
Vlastní typ příspěvků – upravené zprávy

Jak můžete vidět není to zrovna nejpřívětivější metoda jak spravovat zprávy. Ale nedá se s tím moc co dělat. Pokud chceme udělat administrační prostředí pro klienta nebo sebe dotažené do konce bez matoucích zpráv, je lepší to upravit.

Kontextová nápověda

Zajímavou funkcí, která ale není moc používána je kontextová nápověda.

Kontextová nápověda je možnost, která se zobrazí v pravém horním rohu vedle Nastavení zobrazených informací.

function my_contextual_help( $contextual_help, $screen_id, $screen ) { 
  if ( 'zajezd' == $screen->id ) {

    $contextual_help = '

Úprava zájezdů

Tato stránka umožňuje zobrazit/upravit detail zájezdu. Prosím ujistěte se, že jste vyplnil všchny dostupné boxy správnými údaji (obrázek, cena, destinace). Nepoužívejte pro tyto informace pole pro popis.

'; } elseif ( 'edit-zajezd' == $screen->id ) { $contextual_help = '

Zájezdy

Zájezdy zobrazují detailní nabídku pobytů. Jejich seznam můžete vidět na této stránce. Zájezdy jsou řazeny od nejnovějších po nejstarší.

Zájezdy můžete zobrazit/upravit pomocí kliknutí na jejich jméno.

'; } return $contextual_help; } add_action( 'contextual_help', 'my_contextual_help', 10, 3 );
Kontextová nápověda
Kontextová nápověda

Toto je opět trochu složitější použít, protože potřebujete vědět ID stránky, na které se nacházíte. Pokud použijete proměnou $screen, měli by jste být schopni ID získat jednoduše.

Shrnutí

Použili jsme tři funkce a vytvořili “kompletní” vlastní typ příspěvků.

  • register_post_type() pro vytvoření vlastního typu příspěvků
  • contextual_help pro tvorbu kontextové nápovědy
  • post_updated_messages pro úpravu zpráv

Vlastní taxonomie

Klasický blog používá kategorie a štíky k vytvoření organizované struktury. Nicméně stejná struktura nemusí dávat smysl při použití u vlastních typů příspěvků. Váš blog může být ohledně politiky, nápadů a inspirací, ale třeba v našem případě zájezdy těžko.

Z toho důvodu je možné vytvořit vlastní taxonomie.

function my_taxonomies_zajezd() {
  $args = array();
  register_taxonomy( 'destinace_zajezdu', 'zajezd' $args );
}

add_action( 'init', 'my_taxonomies_zajezd', 0 );

Podobně jako tomu je u vlastního typu příspěvků můžete vytvořit vlastní taxonomii poměrně jednoduše.

function my_taxonomies_zajezd() {
  $labels = array(
    'name'              => _x( 'Pobyty', 'taxonomy general name' ),
    'singular_name'     => _x( 'Pobyt', 'taxonomy singular name' ),
    'search_items'      => __( 'Hledat pobyt' ),
    'all_items'         => __( 'Všechny pobyty' ),
    'parent_item'       => __( 'Nadřezený pobyt' ),
    'parent_item_colon' => __( 'Nadřazený pobyt:' ),
    'edit_item'         => __( 'Upravit pobyt' ), 
    'update_item'       => __( 'Aktualizovat pobyt' ),
    'add_new_item'      => __( 'Přidat nový pobyt' ),
    'new_item_name'     => __( 'Nový pobyt' ),
    'menu_name'         => __( 'Pobyty' ),
  );
  $args = array(
    'labels' => $labels,
    'hierarchical' => true,
  );
  register_taxonomy( 'pobyty', 'zajezd', $args );
}
add_action( 'init', 'my_taxonomies_zajezd', 0 );

Jak můžete vidět, moc se toho nezměnilo. Přidali jsme nějaké popisky (labels) a povolili hierarchii. To aktivovalo styl taxonomie jako je u rubrik. Když to nastavíte na false (výchozí nastavení), bude taxonomie vypadat více jako štítky.

Existuje ještě další nastavení, ale je krásně popsané v kodexu u reference/register taxonomy.

Vlastní taxonomie
Vlastní taxonomie

Vlastní meta boxy

Meta boxy jsou boxy zobrazené ve WordPress adminsitraci při úpravě/tvorbě příspěvku. Je zde velké množství zabudovaných meta boxů jako box pro publikaci příspěvku, taxonomie, autora…

Tyto boxy si můžete vytvářet i sami.

Meta boxy jsou zamýšlené pro správu dat uložených v uživatelských polích. Jsou více uživatelsky přívětivější než výchozí uživatelské pole.

Tvorba meta boxů obsahuje tři kroky:

  • Definování samotného boxu.
  • Definování obsahu boxu.
  • Definování jak naložit s daty.

Definování meta boxu

add_action( 'add_meta_boxes', 'cena_zajezdu_box' );
function cena_zajezdu_box() {
    add_meta_box( 
        'cena_zajezdu_box',
        __( 'Cena zájezdu', 'textdomain' ),
        'cena_zajezdu_box_content',
        'zajezd',
        'side',
        'high'
    );
}

Kód výše vytvoří metabox s následujícími parametry:

  • Unikátním identifikátorem meta boxu
  • Nadpisem meta boxu
  • Funkcí, která zobrazí obsah boxu
  • Typu příspěvku, ke kterému box patří
  • Umístěním meta boxu
  • Prioritou meta boxu

Definování obsahu meta boxu

function cena_zajezdu_box_content( $post ) {
  wp_nonce_field( plugin_basename( __FILE__ ), 'cena_zajezdu_box_content_nonce' );
  echo '';
  echo ' Kč';
}

Tento jednoduchý box obsahuje pouze pole pro cenu. Součástí je i skryté pole wp_nonce_field, které slouží pro kontrolu autorizace. Je to z bezpečnostní prvek, protože tak můžeme určit, zda byla post hodnota skutečně odeslána z aktuální stránky.

Definování jak naložit s daty

Ve většině případů budete chtít uložit data jako uživatelská pole, ale nejste tím omezeni. Stejně tak můžete data poslat pomocí API nebo vygenerovat XML soubor. Nejčastější je však uložení dat jako uživatelská pole a ukážeme si jak se to dělá.

add_action( 'save_post', 'cena_zajezdu_box_save' );
function cena_zajezdu_box_save( $post_id ) {

  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
  return;

  if ( !wp_verify_nonce( $_POST['cena_zajezdu_box_content_nonce'], plugin_basename( __FILE__ ) ) )
  return;

  if ( 'zajezd' == $_POST['post_type'] ) {
    if ( !current_user_can( 'edit_page', $post_id ) )
    return;
  } else {
    if ( !current_user_can( 'edit_post', $post_id ) )
    return;
  }
  $cena_zajezdu = $_POST['cena_zajezdu'];
  update_post_meta( $post_id, 'cena_zajezdu', $cena_zajezdu );
}

Největší část této funkce je ohledně bezpečnosti. Nejdříve, pokud se provede autosave, tak se nic nestane, protože uživatel neodeslal formulář. Poté je otestován nonce a následuje kontrola práv. Jestliže toto vše projde, tak se data pomocí funkce update_post_meta() uloží.

Vlastní meta box
Vlastní meta box

Zobrazení vašeho obsahu

Poslední věcí, kterou zbývá je ukázat jak data zobrazit. Opět se podáváme jen na základy, protože možnosti jak pracovat s vlastními typy obsahu jsou obrovské.

Zobrazení příspěvků

Pokud jste vytvořili vlastní typ příspěvků s parametrem has_archive nastaveným na true, tak WordPress zobrazí seznam vašich příspěvků na stránce s archivy. Pro zobrazení stačí jít na http://mojestranka.cz/vlastnitypprispevku/.

Tato stránka používá soubor archive-[post_type].php pro zobrazení (u nás to je archive-zajezdy.php). Když soubor neexistuje je automaticky použit soubor archive.php. Když ani ten neexistuje využije se index.php.

Dalším způsobem jak vypsat vlastní typ příspěvků je využití vlastního dotazu s využitím WP_Query. Pro zobrazení příspěvků z určité vlastní taxonomie můžete využít následující vzor:

 'zajezd',
      'tax_query' => array(
        array(
          'taxonomy' => 'pobyty',
          'field' => 'slug',
        )
      )
    );
    $zajezdy = new WP_Query( $args );
    if( $zajezdy->have_posts() ) {
      while( $zajezdy->have_posts() ) {
        $zajezdy->the_post();
        ?>
          

Zobrazení meta dat

Metadata mohou být získány jednoduše pomocí fuknce get_post_meta(). V našem případě výše jsme uložili meta pole jménem cena_zajezdu. Hodnotu můžeme získat pomocí následující kódu:


Shrnutí na závěr

Jak můžete vidět tvorba různých typů obsahu pro WordPress je poměrně jednoduchá. Metody použité zde můžete využít jako základ a v administraci z nich vytvořit prakticky cokoliv.

Zdroj: The Complete Guide To Custom Post Types

Správa WordPress webu

Nemusíte na to být sami. Pomůžeme vám s pravidelnou údržbou i novými vylepšeními.

Více informací

31 názorů na “Jak u WordPress na vlastní typ příspěvků (Custom Post Types)”

  1. Zdravím, jakým způsobem u vlastního typu příspěvku aktivovat rubriky a tagy? Nejlépe tak, aby každý typ příspěvků měl vlastní tagy a kategorie.

  2. Zdravím, první jsem si to zkusil aplikovat na svoje proměnné, ale nešlo to, tak jsem to všechno zkopíroval jak to je na této stránce a admin je v pohodě, ale layout stále vypisuje, že zájezdy neexistují. Mám vytvořené dva zkušební zájezdy.
    Všechny funkce krom toho výpisu mám ve functions.php… výpis mám v index.php.
    Kde může být ještě problém?
    Díky za reakci

        1. Tomáš Cirkl

          Ve WordPress administraci v levém menu Nastavení -> Trvalé odkazy a tam to nastavení uložit.

          1. změnil jsem to i na “Název příspěvku”, ale pořád nic. Může být problém v tím, že to mám na localhostu a není to na webu? nebo je to jedno?

          2. Tak jsem zkusil ještě tento jednoduchý výpis podle WP codexu a ten funguje:
            $args = array( ‘post_type’ => ‘zajezd’, ‘posts_per_page’ => 10 );
            $loop = new WP_Query( $args );
            while ( $loop->have_posts() ) : $loop->the_post();
            the_title();
            echo ”;
            the_content();
            echo ”;
            endwhile;

  3. a ak by som si chcel pridat novy stlpec ako je napr. nazov, datum.. ako by som vedel pridat stlpec “Cena” tak aby mi tam zobrazovalo cenu s metaboxu?? 🙂

    da sa to?

  4. Zdravím,

    super článek. Právě uvažuju o jednom projektu, mohl bych požádat o radu?
    Co když těch vlastních typů příspěvků můžu mít více, ovšem mezi sebou provázaných. Příklad:
    Revizní technik: vyplním jméno, telefon, email

    Pak další typ příspěvku
    Provedená revize: vygenerované unikátní číslo a vybrat si z rozbalovacího menu jméno revizáka z Revizní technik.

    Nenapadlo mně teď jiné vzorové pojmenování, snad chápete, co mám na mysli. Lze toho dosáhnout pomocí vlastních příspěvků? Můžete mně nasměrovat na nějakou stránku, kde bych se o tom dozvěděl více?

    Děkuji.

    1. Zdeněk Vojáček

      Dobrý den,
      na pořádnou odpověď ste toho moc neřekl ale propojit je určitě jde.

      Můžete například vytvořit typ příspěvku Revizní technik a u něj do metaboxu to jméno a tak.
      Potom vytvoříte revize a do metaboxu si vypíšete select kde bude ID a jméno technika to si pak uložíte k revizi.

      Další řešení by bylo třeba mít Revizní techniky jako kategorii příspěvu Revize.

      Možností se mnoho aby sme našli ideální řešení chtělo by to kompletní zadání. Pokud to třeba budete chtít jen vypsat na webu tak není třeba ani dva typy příspěvku. Vyberte si třeba revizi a technika jen vyplňujte v metaboxu protože výpis pak bude rychlejší než když se bude načítat několik příspěvků.

      V tomto případě by možná bylo nejrozumnější použít uživatele jako Revizní techniky protože pak byste měl rovnou postaráno o výpis všech revizí provedených daným technikem.

      Snad sem Vám v tom neudělal moc velký zmatek:-)

      1. Komplexní zadání by bylo asi složité na pochopení, ale zkusím to 🙂
        Jde o to, že brácha dělá revize hasicích přístrojů. A páč je bordelář a staropracant, tak prostě má vytištěné formuláře, které ručně vypisuje. Když jde dělat novou revizi, prohledává papíry a hleá poslední číslo revize. Tak jsem mu chtěl udělat radost k narozeninám, že bych mu to zautomatizoval online, tak mi zkuste helpnout 🙂

        Revizní list obsahuje:
        Jméno revizáka + jeho ID číslo
        Místo, kde byla revize provedena (objednavatel)
        Typ hasičáku
        Datum kdy byla provedena revize
        Datum kdy má být opět provedena revize
        Textové pole, kde vypisuje co prováděl (výměna hadice, držáku a podobné ptákoviny)

        Kvůli konfortu bych mu vytvořil databázi revizáků (sice jsou tři, ale mění se)-čili možnost přidat jméno+ID
        Vytvořit adresář objednavatelů (více méně se nemění, zato přibývají)-takže opět možnost přdávat další
        Objednavatel má předem stanované typy HP a počty kusů-čili v souvislosti s objednavatelem přiřadit mu jeho seznam HP (abych nezapomněl, zobrazovat by se měl Typ HP, výrobní číslo)
        Datum provedení revize (klidně napsat ručně)-automaticky vygenerovat datum příští revize (+1 rok) klidně až po uložení
        Vypsat nějakou tu zprávu co se dělalo

        Čili asi žádná sranda. Jako teoreticky bych asi zvládl vytvořit typy příspěvků:
        revizní technik+id
        adresář

        ale díky absenci angličtiny tápu v tom, jak k vytvořenému kontaktu přidam jaké HP má (mohou se měnit)
        dále jak při vytváření samotné zprávy udělat, aby si např pomocí rozbalovacího menu vybral, revizáka, objednavatele (a s tím se ideálně zobrazil seznam HP ale nemusí být, chápu, že je to zálěžitost javascriptu a to už ej úúúplně španělskovietnamská vesnice)
        jak automaticky vygenerovat datum příští revize
        a navíc by bylo ideální, aby třeba měsíc před další revizí to poslalo email, že u toho a toho objednavatele se musí udělat revize (těch objednavatelů může být více v jednom termínu)

        Nu, asi nic snadného 🙂

  5. Dobrý den,

    mám menší problém s kódem.
    Ve funkci pro zobrazení meta-boxu vložím nonce pole pro kontrolu

    a ve funkci pro uložení při kontrole zda nejde o podvrh vyjde najevo, že je chyba. Nevím co s tím?
    Zkouším vše možné a stejně to pořád hlásí chybu. Poradí někdo?

    add_action( ‘add_meta_boxes’, ‘zajezd_cena_zajezdu_box’ );
    function zajezd_cena_zajezdu_box_content() {
    wp_nonce_field(basename(__FILE__), ‘cena_zajezdu_nonce_field’);
    }

    add_action(‘save_post’, ‘cena_zajezdu_box_save’);
    function cena_zajezdu_box_save( $post_id ) {

    if(!isset($_POST[‘ cena_zajezdu_nonce_fielde’ ] )) {
    // wp_die( __( ‘Nemůžete nic vykonat. ISSET’ ) );
    print ‘Nemůžete nic vykonat. ISSET’;
    } else {
    print ‘GÓÓÓL’;
    }

    $nonce = $_POST[ ‘cena_zajezdu_nonce_field’ ];
    if(!wp_verify_nonce( $nonce, ‘cena_zajezdu_nonce_field’ )) {
    wp_die( __( ‘Nemůžete nic vykonat. WP___WERIFY’ ) );
    } else {
    print ‘PROŠLO’;
    }
    }

    1. Zdeněk Vojáček

      Dobrý den,
      nelíbí se mi tam tam kontrola.

      “if(!wp_verify_nonce( $nonce, ‘cena_zajezdu_nonce_field’ ))”

      Tohle je podle mě špatně.

      Používám tohle a vždy mi to fungovalo.

      if (!isset($_POST[“cena_zajezdu_nonce_field”]) || !wp_verify_nonce($_POST[“cena_zajezdu_nonce_field”], basename(__FILE__)))
      return $post_id;

      1. Jo díky, takhle už to funguje správně, ono to fakt někde měli špatně napsané a já to tak použil a protože jsem to pořád louskal už mi z toho asi hrabalo.

        Díky moc!

  6. Dobrý den,

    díky za super návod. Chci se zeptat, zda jde nějak dostat do drobečkové navigace název vlastního štítku (ideálně s možností editace) a popis štítku (pokud jej vyplním v administraci, tak se nevypisuje)?

  7. Dobrý den,
    nevím, zda to patří k tomuto tématu, ale mám WP šablonu 2017 a chtěla bych přidat nějaký widget do postranního panelu, ale když ho v nastavení vložím do sidebaru, tak se mi tam neukáže. Nevíte, kde by mohla být chyba?
    Děkuji .

  8. Dobrý den.

    Nechtělo by to náhodou konečně předělat, aby to bylo tak jak má být? Proč nepoužít třídu a nezabalit to do ní? Už dávno běží PHP 7 a stále používáte zastaralých praktik? Co takhle jmenné prostory? K čemu asi jsou dobré? A další a další to základy PHP? Samozřejmě se člověk učí a celkem pomalu, ale vy už byste měl vědět daleko více a učit tedy pořádnému kódu a ne nějakému paskvilu.

    Váš kód je psán ve stylu z roku někdy 2010, kdy se ještě moc nepoužívalo tříd a dalších vymožeností.

    Nezlobte se, ale učit tohle nováčky, je prostě sprosté a nezodpovědné. Sice je hezké, že se alespoň o něco snažíte, ale je zde to ale. Proč neučit nováčky správným návykům a správným technikám? Od čeho je PHP OOP?

  9. Děkuji za návod! Vytvořila jsem si podle něj nový typ příspěvků. Jen se mi vytváření a editace tohoto vytvořeného typu příspěvků otevírá v jiném editoru, než defaultní typ příspěvků? Chtěla bych, aby byly i u custom typy příspěvků vytvářeny ve stejném editoru, jako default typ příspěvků. Čím to může být a jak to změnit? Děkuji!

      1. Děkuji za rychlou odpověď! A doplňuji, že web je vytvořen v Divi, ale při vytváření vlastních typů příspěvků bych ráda použila editor Gutenberg – ten se otevírá při vytváření defaultního typu příspěvků, zatímco custom typ příspěvků v Klasickém editoru. Máte prosím tip na plugin/nebo jiný postup, jak i custom typy příspěvků vytvářet v editoru Gutenberg? Děkuji!

          1. V Divi (Nastavení šablony > Nástroje na tvorbu > Pokročilé) vidím jen možnost zapnout Klasický editor, ten mám vypnutý. Pluginy mám zatím pouze Zalomení (ten to na ostatních webech nedělá) a Filter for Divi (ten by v tom prsty mít mohl, ale nemá k dispozici žádné nastavení, kde by se výchozí editor měnil). Nevadí, už jsem vše vyřešila přes defaultní příspěvky, jejich rubriky a tagy. Ale do budoucna to budu muset rozlousknout, protože mi přijde uživatelsky příjemné mít různé typy příspěvků odděleně 🙂

        1. Tak jsem si udělal chvilku a zkusil to, pro podporu blokového editoru (Gutenberg) u vlastního typu příspěvků je potřeba dát k $args:

          ‘show_in_rest’ => true,
          ‘supports’ => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘comments’ )

Diskuze

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

Nákupní košík

Neuteklo vám něco?

Pokrok a WordPress na nikoho nečekají, tak nám tu raději nechte e-mail, ať o nic nepřijdete!

Zkontrolujte svoji doručenou poštu nebo spam koš, abyste mohli svůj e-mail potvrdit.

Vylaďte WordPress stránky s naším tahákem

V e-booku najdete informace a rady pro WordPress od A do Z. Zadejte e-mail a my vám WordPress tahák pošleme.

Zkontrolujte svoji doručenou poštu nebo spam koš, abyste mohli svůj e-mail potvrdit.

Přejít nahoru