Включить родительскую таксономию в постоянную ссылку на страницу дочерней таксономии - PullRequest
0 голосов
/ 14 июля 2020

Я, честно говоря, сильно заблудился и мог бы воспользоваться некоторыми инструкциями, чтобы завершить проект, над которым я работал

У меня одна иерархическая таксономия, округ, который я использую в двух своих настраиваемые типы сообщений, план этажа и готовые.

Я пытаюсь настроить постоянные ссылки на страницы настраиваемой таксономии, которые будут отображаться как:

{post-type} / {parent-tax} / {child-tax}

Прямо сейчас вы можете перейти к одному из пунктов или, поэтому floorplans / {parent-tax} и floorplans / {child-tax} приведут к одной и той же таксономии округа. php шаблон. Вы можете сделать то же самое для готовых / {parent-tax} и готовых / {child-tax}.

Однако, если вы просматриваете таксономию напрямую и переходите к дочерней таксономии , URL-адрес будет отображаться как county / {parent-tax} / {child-tax}.

Я не могу понять, как добавить родительскую таксономию к постоянной ссылке дочерней таксономии, когда вы повторная навигация по базе пользовательских типов сообщений. floorplans / {parent-tax} / {child-tax} и готовые / {parent-tax} / {child-tax} - это 404.

Нужно ли мне писать правило перезаписи? Я немного не понимаю, как это сделать. Я внимательно следил за этим руководством , чтобы мои родительские и дочерние таксономии отображались в самих постоянных ссылках типа поста, но последняя часть головоломки - иметь возможность переходить к определенным страницам дочерней таксономии c для каждого типа сообщения и включить родительскую таксономию в этот URL.

Мои правила перезаписи на данный момент выглядят почти так же, как и руководство, которое я связал,

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules)
{
    $newRules  = array();
    $newRules['floorplan/(.+)/(.+)/?$'] = 'index.php?floorplan=$matches[2]'; // my custom structure will always have the post name as the 5th uri segment
    $newRules['ready-made/(.+)/(.+)/?$'] = 'index.php?ready_made=$matches[2]'; // my custom structure will always have the post name as the 5th uri segment

    $newRules['floorplan/(.+)/(.+)/'] = 'index.php?county=$matches[1]'; // my custom structure will always have the post name as the 5th uri segment
    $newRules['ready-made/(.+)/(.+)/'] = 'index.php?county=$matches[1]'; // my custom structure will always have the post name as the 5th uri segment

    $newRules['floorplan/(.+)/?$']                = 'index.php?county=$matches[1]';
    $newRules['ready-made/(.+)/?$']                = 'index.php?county=$matches[1]';
    return array_merge($newRules, $rules);
}

Я добавил эти два средние ценности думают, что это будет нацелено на структуру постоянных ссылок для родительского налога / дочернего налога, за которым ничего не стоит, но я не уверен, как собрать все вместе. Любые подсказки будут очень признательны!

1 Ответ

0 голосов
/ 15 июля 2020

, чтобы ответить на мой собственный вопрос,

вот последняя функция перезаписи для достижения желаемых результатов:

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules)
{
    $newRules  = array();
    $newRules['floorplan/(.+)/(.+)/(.+)/?$'] = 'index.php?floorplan=$matches[3]';
    $newRules['ready-made/(.+)/(.+)/(.+)/?$'] = 'index.php?ready_made=$matches[3]';

    $newRules['floorplan/(.+)/(.+)/?$'] = 'index.php?county=$matches[2]';
    $newRules['ready-made/(.+)/(.+)/?$'] = 'index.php?county=$matches[2]';

    $newRules['floorplan/(.+)/?$']                = 'index.php?county=$matches[1]';
    $newRules['ready-made/(.+)/?$']                = 'index.php?county=$matches[1]';
    return array_merge($newRules, $rules);
}

Я как бы сколотил это из других ответов stackoverflow, но, насколько я могу судить, эти переписывания по существу говорят: для данного URL-адреса отобразить тип записи / тип таксономии / et c, где matches[x] - это фактический заголовок страницы того, что вы пытаетесь дисплей.

...