Совместимость sitemap All in One SEO Pack и Polylang
-
Всем привет.
Если в Polylang снять галочку «Исключить язык по-умолчанию из URL», то sitemap.xml появятся ссылки вида https://www.example.com/ru/post-sitemap.xml , и если по ней перейти, то там будет «пусто», а если убрать /ru, то всё будет работать. По этой причине у меня основной язык был скрыт из URL для того, чтобы sitemap работал должным образом. Но
После 3 часов дебага плагина AIO SEO, я нашёл то место, где добавляется это злосчастное /ru. Проблема кроется в файле: \wp-content\plugins\all-in-one-seo-pack\app\Common\Traits\Helpers\ThirdParty.php :232
public function localizedUrl( $path ) { $url = apply_filters( 'wpml_home_url', home_url( '/' ) );
Здесь используется фильтр от плагина WPML, который и меняет URL. Решение простое. добавить в тему(other.php или function.php) , или создать свой плагин, который будет заменять wpml_home_url
add_filter('wpml_home_url', 'custom_wpml_home_url'); function custom_wpml_home_url($url) { if ($url === home_url('/')) { return $url; } return home_url('/'); }
Теперь можете смело включать отображение основного языка в URL.
P.S. Чтобы ускорить генерацию *sitemap.xml, можно оптимизировать запрос в файле ll-in-one-seo-pack/app/Common/Sitemap/Query.php , я закомментировал оригинальные строчки
// Set defaults. //$fields = '
p
.ID
,p
.post_title
,p
.post_content
,p
.post_excerpt
,p
.post_type
,p
.post_password
, '; $fields = 'p
.ID
, '; $fields .= 'p
.post_parent
,p
.post_date_gmt
,p
.post_modified_gmt
,ap
.priority
,ap
.frequency
'; $maxAge = ''; if ( ! aioseo()->sitemap->helpers->excludeImages() ) { $fields .= ',ap
.images
'; } // Order by highest priority first (highest priority at the top), // then by post modified date (most recently updated at the top). //$orderBy = 'ap
.priority
DESC,p
.post_modified_gmt
DESC'; $orderBy = 'p
.post_modified_gmt
DESC';
- Тема «Совместимость sitemap All in One SEO Pack и Polylang» закрыта для новых ответов.