Используйте add_rewrite_rule в дочерних категориях без префикса / category / - PullRequest
0 голосов
/ 28 февраля 2019

Я создал этот фильтр с целью создания URL-адресов для AMP-версии моего веб-сайта:

function r_amp_add_rewrite_rules() {
    global $wp_rewrite;

    add_rewrite_rule('([^/]+)/amp/?$',
    'index.php?amp=1&category_name=$matches[1]',
    'top');

    add_rewrite_rule('([^/]+)/amp/'.$wp_rewrite->pagination_base.'/?([0-9+])/?$',
    'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
    'top');

    add_rewrite_rule('([^/]+)/([^/]+)/amp/?$',
    'index.php?amp=1&category_name=$matches[1]/$matches[2]',
    'top');

    add_rewrite_rule('([^/]+)/([^/]+)/amp/'.$wp_rewrite->pagination_base.'/?([0-9]{1,})/?$',
    'index.php?amp=1&category_name=$matches[1]/$matches[2]&paged=$matches[3]',
    'top');

    add_rewrite_rule('([^/]+)/amp/?$',
    'index.php?amp=1&pagename=$matches[1]',
    'top');

    add_rewrite_rule('amp/?$',
    'index.php?amp=1&page_id=7',
    'top');

}
add_filter('init', 'r_amp_add_rewrite_rules', 9999);

function r_amp_query_vars( $vars ) {
    array_push($vars, 'amp');
    return $vars;
}
add_filter( 'query_vars','r_amp_query_vars' );

Все отлично работает, кроме одной вещи ... У меня установлен Yoast SEO с возможностьюудалите префикс "category" из слагов категорий, и у меня также есть категории с родителем, то есть категории с URL этого типа:

/ slug-main / name-category-child /

При использовании опции yoast seo для удаления URL-адреса / category / AMP выдается ошибка 404.

/ slug-main / name-category-child / amp /

А при отключенной опцииошибки нет, но я хочу удалить префикс категории ...

/ category / slug-main / name-category-child / amp /

Что я могу с этим сделать?

Я попытался установить этот плагин: https://wordpress.org/plugins/accelerated-mobile-pages/ и попробовать, если то же самое произошло, и да, это также происходит ... Хотя я хочу исправить это в своем коде, так как яделать AMP-версию моей темы без плагинов ...

Спасибо.

...