it-swarm-eu.dev

Jak změnit strukturu permalink pro vlastní typ příspěvku a jeho taxonomie?

Toto je repost dřívější otázky, kterou jsem měl, ale nyní mohu jít do podrobností, abych to mohl plně vyřešit.

Opět platí, že s (normálními) příspěvky, které mění permalink, je stejně snadné jako nastavení> Permalink a jeho změnou na cokoliv, co se vám líbí, jako je široce použitý %category%/%postname%.html. To vše funguje. Kdyby to bylo tak jednoduché pro vlastní typ příspěvku a také jeho taxonomie.

To je to, co se mi líbí.

  1. http://mywordpress.com/portfolio.html - Zobrazit všechny příspěvky ve všech kategoriích.
  2. http://mywordpress.com/portfolio/music/ - Zobrazit všechny příspěvky v této kategorii.
  3. http://mywordpress.com/portfolio/music/trance/ - Zobrazit všechny příspěvky v této (dětské) kategorii.
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Zobrazit příspěvek.

Dosud jsem měl následující:

  1. Nejprve jsem vytvořil custom_post_type pojmenovaný project a a taxonomy project_category .
  2. Vytvořil jsem stránku Portfolio a dal jí šablonu stránky, která bude obsahovat seznam všech příspěvků post_type = project. Jak mohu přidat .html do permalink stránek? Nyní odkazuje na http://mywordpress.com/portfolio zatímco chci http://mywordpress.com/portfolio.html . To by mělo vyřešit první problém.
  3. Pak to bude těžké, protože nevíme, jak mnoho subkategorií tam, možná ani žádné. Takže struktura, po které jsme, je portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. V tomto bodě jsem stále uvízl. Myslím, že bych měl nějakým způsobem přidat poslední kategorii do cesty a předat ji podél kategorie project_category , která by měla vést k souboru taxonomie.php, kde můžu správně zpracovat.
  4. Já jsem to neřešil, ale měl by mít něco společného s %postname%.html na konci něčeho.

Doufám, že můj problém je jasný a že existují stateční vývojáři, kteří mi pomohou řešit tento problém, který mě již zaneprázdnil čtyři dny!

9
Mark

Ok, myslím, že bych mohl mít řešení. Nemám ponětí, jestli je to správný způsob, jak toho dosáhnout, ale teď je to jediná věc, která vypadá, že funguje.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}
4
Mark

Po bouchání hlavu na hodiny, našel jsem tento plugin velmi užitečné.

https://wordpress.org/plugins/custom-post-type-permalinks/

Níže je uveden snímek možností, které poskytuje.

 enter image description here 

1
Mohd. Umar

2 Různé metody:

* Viz poznámky ve spodní části tohoto příspěvku.


například chcete mít takovou strukturu permalinků:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-post

Nejprve , možná budete muset nastavit permalinks na /% category% /% postname% . Pak...




METODA 1:

vytvořit STANDARDNÍ kategorie (MAIN_CATEGORY, SUB_CAT_1, and etc..) a zaregistrovat CUSTOM POST, včetně tohoto parametru:

'taxonomies'    => array('category'..)

a používat tyto kódy ke změně permalinks: https://wordpress.stackexchange.com/a/195643/33667
Poté, co bude publikováno CUSTOM POST (pokud je připojeno v kategorii), bude adresa URL:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



METODA 2:

(p.s. tato metoda nedoporučujeme pokud plánujete publikovat stovky nebo tisíce příspěvků)

registrujte CUSTOM POST (pojmenovanýMAIN_CATEGORY), včetně těchto parametrů:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

pak publikujte vlastní příspěvky, jako je tento:   
(tj. publikovat několik vlastních příspěvků , pojmenovaných SUB_CAT_2, SUB_CAT_1... Poté, když publikujete další příspěvek, ale zvolte SUB_CAT_2 jako rodič.





[.] p.s.
1) Pokud jste nováček, zkontrolujte: Registrovat CUSTOM POST a Registrace CUSTOM POST pomocí TAXONOMY
2) pokud budete potřebovat funkci vyhledávání pro dílčí úrovně, pak použijte vlastní vyhledávací dotaz

0
T.Todua