v URL příspěvků se nezobrazí název podkategorie

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem v URL příspěvků se nezobrazí název podkategorie

Zvolené téma obsahuje celkem 8 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  admin a poslední změna je stará 8 let, 4 měsíce.

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)
  • Autor
    Příspěvky
  • #25768

    kuzmic11
    Participant

    Dobrý den

    chtěl bych poprosit o radu někoho, kdo se dobře vyzná v prostředí WordPress.

    Řeším tento problém:

    Mám připravenou stránku: Produkty a jako potomka mám stránku Hračky

    Produkty -> Hračky

    V příspěvcích jsem si založil kategorie: Produkty a potomka Hračky.

    Každému novému příspěvku zakřížkuji kategorie Produkty, Hračky abych potom v šabloně stránek: Produkty, Hračky zobrazoval jednotlivé posty.

    Tohle všechno funguje v pořádku.

    Jenomže jsem narazil na dva problémy:

    1. V URL příspěvku se mi zobrazuje pouze: /produkty/nazev_hracky, kategorie hračky se vůbec do URL nedostane

    2. Nedojde k zvýraznění aktivní položky v navigaci Produkty ani Hračky, pokud jste v detailu příspěvku.

    Pokud byste někdo věděl v čem by mohl být problém budu moc rád za pomoc. Případně pokud byste mi dali tip na někoho, kdo by tento problém mohl vyřešit budu rovněž moc rád. Klidně pište do SZ.

    Předem všem moc díky za přínosné reakce.

    #25769

    kuzmic11
    Participant

    Snad to někomu pomůže, ale to proč nedocházelo k zobrazení podkategorií bylo z toho důvodu, že podkategorie měly vyšší ID než rodičovská kategorie.

    #25770

    sjiamnocna
    Participant
    Web

    1. Kategorie se do permalinku (URL) mohou přidat pomocí tagu %category%, což předpokládám máte… Zde máte popis toho, co se zřejmě děje na vašem webu děje. Doslova je tam, že v adrese může být použita jen jedna rubrika (kategorie) a vždy je to ta první v abecedě (v případě podrubrik v uzavřené skupině)

    2. Toto jsem kdysi taky řešil, jde o to, že každý odkaz v menu se označuje třídou .current-menu-item pouze v případě, že jste na dané adrese (tedy archiv – výpis produktů / hráček…). Pokud to chcete jinak, můžete si napsat vlastní filtr, aby tuto třídu přidával pokaždé, když se v URL objeví například “hracky”. Pokud chvíli vydržíte, najdu příklad :)

    #25771

    kuzmic11
    Participant

    To by bylo perfektní. Jak jsem psal před vámi, povedlo se mi vyřešit tu hierarchii kategorií v URL. Bylo to tím, že rodičovská kategorie měla vyšší ID než potomek.

    Funguje tedy již: www.adresawebu.cz/produkty/hracky/nazev_hracky/

    Ted právě řeším jak udělat to, že pokud jste v detailu příspěvku = nazev_hracky tak aby se zvýraznila/přidala třída např: .current-menu-item všem položkám v navigaci do kterých příspěvěk spadá – produkty, hracky

    Věděl byste prosím jak na to?

    #25772

    sjiamnocna
    Participant
    Web
    function rbow_menuitems_classes($nav_items, $args) {
    
        if ($args->theme_location === 'rbow_topbar_menu') {
    
            $count = 0;
    
            for ($i = 1; $i <= count($nav_items); $i++) {
                
                $item = $nav_items[$i];
                
                if (strpos( $item->url, rb_oftype() ) > -1) $item->classes[] = 'current-menu-item';
                
                $item->classes[] = 'item-' . $i;
    
                if (isset($item->post_title))
                    $count++;
            }
        }
        return $nav_items;
    }

    funkce rb_oftype() vrací název typu příspěvku (custom post type) a ten potom vyhledá v adrese. Pokud se tam nachází, přidá se k položce current-menu-item.

    Dále se k položkám menu přidají třídy číslované od 1 – pro potřeby CSS stylů :)

    No a nakonec se to musí spustit; :)
    add_filter('wp_nav_menu_objects', 'rbow_menuitems_classes', 11, 2);

    #25773

    kuzmic11
    Participant

    rbow_topbar_menu je potřeba upravit např. podle názvu ID hlavní navigace v hlavičce? Nebo to tak může zůstat?

    #25774

    sjiamnocna
    Participant
    Web

    rbow_topbar_menu je název menu (tedy parametr theme_location ve wp_nav_menu), te to kvůli identifikaci a propojení registrovaného menu s místem, kde se má načíst

    ____

    Edit: asi je to to ID menu v hlavičce :)

    A ještě upozorním, že asi potřebujete upravit funkci pro kategorii, takže toto asi nebude fungovat úplně, jak chcete.

    #25775

    kuzmic11
    Participant

    Hmmm, zkusil jsem to doplnit, ale zatím to žádné třídy nepřidává :-(. Já už bych si to pak upravil, jen dostat k té položkce nějaký identifikátor.

    Nekoukl byste na to prosím přímo na webu? Asi budete vědět lépe jak já. Vše bych vám rád zaplatil, pokud byste měl zájem – ondonki@gmail.com

    #25787

    admin
    Keymaster
    Web

    @kuzmic11: Tak jsem to celé pročetl a jsem poněkud zmaten :-) Myslím, že to je celé špatně navržené a z toho vyplývají oba zmiňované problémy (jak URL konflikty, tak neaktivní položky menu).

    1) Nerozumím vůbec logice stránek a příspěvků:

    – Pokud máte stránky “Produkty” a “Hračky”, tak proč ještě vytvářet stejnojmenné rubriky (případně naopak)? Bohatě přece stačí samotné rubriky? Nehledě na to, že si vytváříte vzhledem k použité struktuře trvalých odkazů potenciální konflikty, např. adresa produkty/hracky bude zobrazovat stránku “Hračky”, ale zcela tím přijdete o možnost výpisu rubriky “Hračky” (stránka má přednost).

    – Pokud nejde o klasické příspěvky (blogposty), tak bych doporučil raději definovat vlastní typ obsahu (Custom Post Type).

    2) Problém s URL

    Vytvořil jsem rubriku “Produkty”, která dostala ID = 84.
    Následně jsem vytvořil podřazenou rubriku “Hračky”, která dostala následující (tedy vyšší) ID = 85.
    Struktura trvalých odkazů je nastavená takto: /%category%/%postname%/
    Vytvořil jsem testovací příspěvek a zařadil ho do podřazené rubriky “Hračky”, čímž automaticky patří i do nadřazené rubriky “Produkty” a není třeba ji tedy zaškrtávat.
    URL příspěvku je správně zobrazena takto: /produkty/hracky/nazev/
    V čem je tam tedy konkrétně problém?

    Pokud zaškrtáváte u příspěvku obě rubriky, tedy “Produkty” i “Hračky”, tak je sice relevantní odkaz, který správně uvedl @sjiamnocna, ale bohužel to tam mají špatně a není to řazené podle abecedy, ale naopak podle ID (nejstarší rubriky s nejnižším ID mají přednost). Tím se nám to sice trochu vysvětluje, ale hlavně je to celé NESMYSL. Proč to zaškrtávat u obou rubrik, když je jasné, že musí příspěvek patřit i do nadřazené rubriky a stačí zaškrtnout “Hračky”? Není třeba jít proti logice fungování WordPressu, ale naopak se ji pokusit maximálně využít…

    K menu se ještě dostaneme, ale nejdříve si musíme ujasnit výše uvedené, aby se to celé ještě více nezkomplikovalo…

    Duplicitní dotaz zde.

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti