Я создал этот фильтр с целью создания 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-версию моей темы без плагинов ...
Спасибо.