Очень странным для меня в WordPress оказалось отсутствие каких-либо намеков на SEO — оптимизацию. Пришлось искать дополнения. Поставил себе Yoast SEO и в принципе пока доволен. Есть все необходимое. Единственное, что мне не понравилось, так это ранжирование постов в sitemap.xml. Так как посты — основной контент моего сайта, то приоритет 60% для поста меня крайне не устраивал.
С настройками в целом проблем не возникло, но, к сожалению я не нашел, где я могу выставить приоритеты постов руками. И действительно, чуть погуглив обнаружил, что это функцию разработчики убрали.
This was indeed removed for individual posts and pages. Instead you would need to set a filter.
Ну фильтр, так фильтр.
Необходимая функция нашлась в файле /wp-content/plugins/wordpress-seo/inc/class-sitemaps.php
Открываем, ищем там функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// // private function calculate_priority( $post ) { $return = 0.6; if ( $post->post_parent == 0 && $post->post_type == 'page' ) { $return = 0.8; } $front_id = get_option( 'page_on_front' ); if ( isset( $front_id ) && $post->ID == $front_id ) { $return = 1.0; } /** * Filter: 'wpseo_xml_post_type_archive_priority' - Allow changing the priority of the URL * Yoast SEO uses in the XML sitemap. * * @api float $priority The priority for this URL, ranging from 0 to 1 * * @param string $post_type The post type this archive is for. * @param object $p The post object. */ $return = apply_filters( 'wpseo_xml_sitemap_post_priority', $return, $post->post_type, $post ); return $return; } |
В первом условии IF мы видим, что страницам ($post->post_type == 'page'
) с нулевым уровнем вложенности ($post->post_parent == 0
) отдается приоритет 0.8
. И ничто не мешает нам добавить свое условие, только для записей блога. Модифицированная функция будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// // private function calculate_priority( $post ) { $return = 0.6; if ( $post->post_parent == 0 && $post->post_type == 'page' ) { $return = 0.8; } // наша модификация. Постам приоритет 80% if ( $post->post_type == 'post') { $return = 0.8; } $front_id = get_option( 'page_on_front' ); if ( isset( $front_id ) && $post->ID == $front_id ) { $return = 1.0; } /** * Filter: 'wpseo_xml_post_type_archive_priority' - Allow changing the priority of the URL * Yoast SEO uses in the XML sitemap. * * @api float $priority The priority for this URL, ranging from 0 to 1 * * @param string $post_type The post type this archive is for. * @param object $p The post object. */ $return = apply_filters( 'wpseo_xml_sitemap_post_priority', $return, $post->post_type, $post ); return $return; } |
Три важных замечания:
- Данная статья актуальна для версии Yoast SEO 2.3.5. Хотя, я сильно сомневаюсь, что что-то кардинально изменится в последующих версиях.
- Чтобы обновить карту сайта сразу после данных манипуляций, выключите и заново включите XML карту сайта в настройках Yoast SEO.
- После обновления плагина наша модификация канет в Лету. Так что не забудьте дописать пару строк своего кода в обновленный плагин.
Разработчикам спасибо! Страница плагина: https://yoast.com/wordpress/plugins/seo/
Реклама: