it-swarm.dev

Jak zpracovat hierarchii s vlastními typy příspěvků

Jsem se přestěhoval do WordPress na několik dní a byl docela ohromen všemi dostupnými funkcemi, pluginy a leštěné motivy. Strávil jsem několikrát četbu dokumentace o tématech a vlastních typech. Dosud tak dobře ... Teď, když se snažím dělat skutečné věci, zdá se (ale možná mi něco chybí), že WP má některá závažná omezení.

Chci přijít s klasickým ISV ​​webem. Typická hierarchie by byla:

  • Produkty
  • - Výrobek A
  • ---- Přehled
  • ---- Historie vydání
  • ------- Vydání 1.5
  • ------- Vydání 1.4
  • ------- Vydání 1.3
  • ------- atd.
  • ---- Funkce
  • ---- atd.
  • - Výrobek B
  • ---- Přehled
  • Položka seznamu
  • atd...

Se zaměřením na historii vydání jsem přišel s:

  • vlastní typ obsahu: "release".
  • vlastní taxonomie k určení produktu přidruženého ke konkrétní "verzi".
  • Vytvořil jsem šablonu pro zobrazení seznamu „vydání“.
  • Vytvořil jeden-release.php k zobrazení detailu vydání.
  • Vytvořená stránka založená na mé šabloně.

Adresa URL stránky, která zobrazuje seznam „verzí“, se v podstatě vejde do hierarchie (/ products/product-a/release-history /). Adresa URL vlastního typu příspěvku však bude něco jako: /% post_type% /% post_slug%/(tj:/release/version 1.2 /

Snažím se po dobu 2 dnů najít řešení, jak přijít s koherentním schématem URL.

Snažil jsem se použít vlastní příspěvek permalinks plugin přijít s URL, která by zahrnovala mé vlastní taxonomii představující produkt (lepší než nic, i když to není dokonalé), ale z nějakého důvodu plugin nefunguje na mé straně.

Celkově, pokud mi něco chybí, Custom Post Types zní skvěle, ale jsou to docela noční můra, pokud nemáte plochou strukturu. Určitě bych upřednostnil koncept vlastního typu obsahu, který není závislý na adrese URL nebo snadný způsob, jak připojit typ vlastního příspěvku na libovolné úrovni v hierarchii stránek.

To znamená, že mi může chybět úplně. Má někdo nějaký nápad, zkušenosti při nastavování stránek s tímto typem hierarchie? Jakákoliv pomoc ...

[Aktualizace]

Ne zcela jisti, jaké jsou úmluvy při aktualizaci zde, ale nechám původní text pro přehlednost. Účelem této aktualizace je objasnit a doplnit další podrobnosti.

Produkty
Vytvořeno WP stránka 'Produkty' - žádný rodič - URL: http: /// produkty /

Produkt A (konkrétní produkt)
Vytvořeno WP stránka 'Produkt A' - nadřazený: 'Produkty' - URL: http: /// produkty/produkt-a /

Přehled
Vytvořeno WP stránka 'Přehled' - nadřazený: 'Produkt A' - URL: http: /// produkty/produkt-a/přehled /

Zprávy (seznam vydání pro konkrétní produkt)
Vytvořená stránka WP Co je nového - použila šablonu, která zobrazuje seznam všech dostupných verzí (každé vydání má odkaz pro zobrazení podrobností daného vydání) - nadřazený: ' Produkt A '- URL: http: /// produkty/produkt-a/produkt-vydání /.
Zprávy jsou implementovány pomocí vlastního typu (viz níže). Proto bylo velmi snadné implementovat šablonu a odkaz na uvolnění permalinků. I když jsem to ještě neimplementoval, moje myšlenka byla, že šablona bude zobrazovat seznam vydání pro jakýkoli produkt založený na taxonomii (ID produktu) definované na úrovni stránky. Mohl bych tedy mít jinou stránku s použitím stejné šablony, která by zobrazovala vydání pro jiný produkt, a to tak, že k této jiné stránce bude připojena správná taxonomie „product-id“.

Vydání (detail vydání)
Zprávy jsou implementovány pomocí Vlastního typu příspěvku (nazýváme to „vydání produktu“). Kromě toho používám vlastní taxonomii (produkt-id) k připojení každého vydání ke konkrétnímu produktu (zřejmě nechci vytvořit další typ vlastního příspěvku pro vydání související s jiným produktem).
Vytvořil soubor 'single-product-release.php' pro zobrazení specifického vydání. Problém s tímto přístupem je, že se zobrazí konkrétní vydání s následující adresou URL: http://<root>/product-releases/release-xx

  • Není to opravdu popisné, nejméně můžeme říci (měl bych alespoň získat identifikátor produktu v url)
  • to poněkud rozbije hierarchii (ačkoli jeden mohl jistě argumentovat ohledně jestliže to je špatné nebo ne)\t

Moje možnosti (pokud vidím jako nováčka WordPressu)

Zbavte se věcí permalink
Možná bych mohl zobrazit detail vydání pomocí nějaké šablony a předat nějaký argument v adrese URL. Mohl bych použít tuto šablonu se stránkou, která by šla přesně tam, kde chci v hierarchii.
Samozřejmě ne přístup, který bych následoval ... z mnoha důvodů zde nebudu podrobně popisovat (to je už dlouhý post/otázka).

Najít způsob, jak přidat (nebo spíše předponu) hodnotu „ID produktu“ do permalink typu Vlastní příspěvek
Mohli bychom mít něco jako http: /// product-a/product-release/release-x. Musel bych akceptovat, že vydání žije poněkud mimo „přirozenou“ hierarchii, která by byla http: /// products/product-a/product-release/release-x.
Mohl bych jít ještě dále předponou s 'produkty' - něco jako/produkty /% product-id% /% product-release% /. Zajímalo by mě, zda by toto pravidlo pro přepsání nebylo v rozporu se stránkami vytvořenými na stránce „Produkty“ ...

Jakýkoli vstup byl oceněn.

[Aktualizace]

Realizoval jsem přístup navrhovaný bobdy. To funguje dobře pro můj typ obsahu, ale to bude v rozporu s WP stránky, které jsou smíšené v hierarchii. Pomocí kódu básně jsem přišel s následujícím typem oprávnění pro svůj vlastní příspěvek typu vydání produktu:
/products/%product-id%/product-releases/%product-release%
Budu proto mít správnou adresu URL produktu pro zobrazení detailu vydání pro konkrétní produkt. tj. /products/my-great-product/product-releases/release-1-5/

Chci však mít ve směsi nějaké WP stránky:

  • /products/my-great-product/ by měl poskytnout přehled o produktu.
  • /products/my-great-product/product-releases/should zobrazit seznam vydání + podrobnosti o nejnovější verzi.

Zpočátku to zní přirozeně, vytvořit WP stránky k tomu, co potřebuji. Uspořádám hierarchii stránek tak, aby stránky zapadly do přesného schématu adres URL. Tento přístup však bude v rozporu s přepisem URL používaným pro typ uživatelského obsahu „vydání produktu“ a stránky nebudu moci procházet (404).

Ale Ale Ale...

Takže jaké jsou nyní mé možnosti

Zrušení myšlenky použití WP
No, myslím, že budu trvat na tom víc. Kromě tohoto problému existuje mnoho věcí, které se s WP líbí.

Použít Pod CMS
Ačkoli jsem to ještě netestoval. Zní to jako Nice framework/tool. Ztratil bych však schopnost snadno přeložit můj obsah pomocí WPML.
Skutečnost, že budou moci používat vlastní typy příspěvků namísto své vlastní tabulky ve verzi 2.0, jim jistě dovolí spoléhat se na aktuální pluginy pro účely překladu. To, co připravují na verzi 2.0, zní zajímavě. Místo vlastních tabulek budou moci použít vlastní typ příspěvku.
Pod CMS 2.0 by mohlo být ŘEŠENÍ .

Používání stránek WP namísto typu vlastního vydání produktu
Myšlenkou by bylo vytvořit stránku pro každé vydání produktu (s produktovou verzí jako rodičem). Předpokládám, že musí být snadné procházet podřízené stránky pro zobrazení seznamu verzí.
Je zřejmé, že má určité nevýhody:

  • Aktuální rozhraní stránky administrátora nemusí být velmi praktické pro práci se stovkami stránek ...
  • Vzhledem k tomu, že stránka je již specializovaným typem vlastního příspěvku (pokud vím), musela bych si zapamatovat konkrétní vlastní pole, která potřebuji pokaždé, když používám stránku typu pseudoobsahu, pokud nechci vytvořit všechna pole, která mohou na celém webu. Pokud se mě zeptáte, je to docela hrozné řešení.

Nahradit WP stránek některým typem vlastního příspěvku
Nejste si jisti možnými pravidly přepisu, ale tady je ten nápad. Namísto toho, abych měl přehledovou stránku, jsem mohl přijít s uživatelským typem „přehledu produktů“ a použít pravidlo přepisu permalink stejným způsobem, jaký jsem udělal pro vlastní typ příspěvku „vydání produktu“. Bude aktualizovat své poznatky.

Jsem si jistý, že nejsem jediný, kdo čelí této WordPress URL peklo. I když musím přiznat, že zobecnění "postu" do vlastního typu příspěvku je dost chytré, věci permalink jsou dodávány s vlastními omezeními.

Slovo opatrnosti - být nový s WP, možná jsem přehlédl něco zcela zřejmého

[Aktualizace]

Jak je to tak frustrující, zdá se, že je to prostě nemožné. Je zde určitě řešení, které zahrnuje některé složité přepisování URL, ale rozhodně nic nepodstatného pro přístup, který je však poměrně běžný.
V zásadě se domnívám, že v této fázi bychom měli vázat na spíše jednoduché schéma URL. Vyzkouší wordpress fórum, ale nemám moc naděje.

5
Frederic L

Při plánování složitějších stránek Wordpressu se snažím myslet na hierarchii stránek/url z hlediska výchozí WordPress databáze Schéma . Pak určete nejlepší URL přepsání schéma a datovou strukturu. Obecně jsem zjistil, že datové objekty, které jsou pro uživatele nejdůležitější, by měly existovat jako vlastní typ příspěvku nebo objekt Post, vztahy mezi vlastními příspěvky by měly používat vlastní taxonomie a jedinečné hodnoty by měly být uloženy v postmeta.

Konkrétněji , kdybych nabízel produkty s aktualizacemi verzí, mohl bych pro každý produkt vytvořit vlastní typ příspěvku (za předpokladu omezeného počtu celkových produktů s aktualizacemi verzí) a vytvořit nový příspěvek pro každou novou verzi ( WP ukládá příspěvky chronologicky ve výchozím nastavení, takže více verzí by mělo fungovat dobře). Jinými slovy, každé nové vydání by existovalo jako jeden příspěvek pod vlastním typem příspěvku a každý nový příspěvek bude obsahovat podrobnosti o tomto vydání. Poté můžete zobrazit podrobnosti posledního příspěvku na stránce pro vlastní typ příspěvku. Vynucením toho, aby každý příspěvek byl stránkovaný, byste měli mít také možnost mít oddělené adresy URL pro funkce atd. A měli byste být schopni je pěkně přepsat přepsáním adresy URL.

Vizuálně :

/products/%custom-post-type%/
/products/product-a/

/products/%custom-post-type%/archive/
/products/product-a/releases/

/products/%custom-post-type%/%post-name%/
/products/product-a/release-xx/

/products/%custom-post-type%/%post-name%/page/2/
/products/product-a/release-xx/features/
3
joelhaus

Myslím, že je třeba zavést funkci get_permalink (). Tento článek, který jsem uložil v poznámkách typu vlastního příspěvku, by mohl pomoci: http://shibashake.com/wordpress-theme/add-custom-taxonomy-tags-toour-wordpress-permalinks

0
bobdiaes