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í.
Dosud jsem měl následující:
custom_post_type
pojmenovaný project a a taxonomy
project_category .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.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.%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!
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;
}
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.
* 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...
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
(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