Вопрос или проблема
Я пытаюсь добавить два уровня в свою навигацию по хлебным крошкам. У меня сейчас:
Главная > CPT Пост
Что я должен иметь (или что я хочу иметь):
Главная > Страница 1 > Страница 2 > CPT Пост
Итак, мне нужно добавить 2 ссылки в то, что у меня сейчас.
Используя это в качестве начала…:
add_filter( ‘wpseo_breadcrumb_links’, ‘yoast_seo_breadcrumb_append_link’ );
function yoast_seo_breadcrumb_append_link( $links ) {
global $post;
if ( is_single ( 123456 ) ) {
$breadcrumb[] = array(
'url' => site_url( '/blog/' ),
'text' => 'Блог',
);
array_splice( $links, 1, -2, $breadcrumb );
}
return $links;
}
…Я понимаю, как это построить, но просто пока недостаточно хорош, чтобы вставить это туда.
Можешь объяснить это мне? Пример полезен для обучения (для меня и других). Я действительно ценю помощь.
Мое быстрое и грязное решение заключалось в том, чтобы вложить 2 массива и перебрать их. Вам нужно будет жестко закодировать ваши URL на n-м уровне. Этот пример выделяет конкретный тип пользовательского поста.
function yoast_seo_breadcrumb_append_link( $links ) {
global $post;
if ((is_singular('team-members'))) {
$breadcrumbs[] = array(
array(
'url' => site_url('/our-firm/'),
'text' => 'Наша компания'
),
array(
'url' => site_url('/our-firm/our-professionals/'),
'text' => 'Наши специалисты'
)
);
foreach ($breadcrumbs as $breadcrumb) {
array_splice($links, 1, -2, $breadcrumb);
}
}
return $links;
}
Ответ или решение
Чтобы добавить два уровня в хлебные крошки (breadcrumbs) на сайте WordPress с использованием плагина Yoast SEO, вам необходимо будет модифицировать массив, который отвечает за вывод хлебных крошек. В вашем случае, вы хотите видеть следующую структуру: «Главная > Страница 1 > Страница 2 > CPT Пост».
Шаги для достижения цели:
-
Фильтрация хлебных крошек: В WordPress через функцию
add_filter
вы можете перехватить массив хлебных крошек и модифицировать его. -
Создание необходимых уровней: Вам нужно будет создать массив с необходимыми ссылками и вставить его в правильное место в текущем массиве хлебных крошек.
Пример реализации:
add_filter('wpseo_breadcrumb_links', 'yoast_seo_breadcrumb_append_link');
function yoast_seo_breadcrumb_append_link($links) {
global $post;
// Проверяем, является ли текущий пост нужным типом (например, 'team-members')
if (is_singular('your_custom_post_type')) {
// Определяем новые хлебные крошки
$new_breadcrumbs = array(
array(
'url' => site_url('/page-1/'),
'text' => 'Страница 1'
),
array(
'url' => site_url('/page-2/'),
'text' => 'Страница 2'
)
);
// Вставляем новые крошки после первой ссылки
array_splice($links, 1, 0, $new_breadcrumbs);
}
return $links;
}
Объяснение кода:
-
Фильтрация: Мы используем
add_filter
для изменения хлебных крошек. Функцияyoast_seo_breadcrumb_append_link
принимает текущее состояние массива хлебных крошек. -
Проверка типа поста: Условие
is_singular('your_custom_post_type')
проверяет, является ли текущий пост определённого типа. Замените'your_custom_post_type'
на идентификатор вашего пользовательского типа поста. -
Создание нового массива крошек: В данном случае мы создаём массив
$new_breadcrumbs
, где каждая крошка имеетurl
иtext
. -
Вставка новых крошек: Функция
array_splice
позволяет модифицировать массив хлебных крошек, добавляя новые уровни в нужное место. Здесь мы добавляем новые крошки после первой ссылки, сохраняя порядок.
Заключение:
Использование данного кода позволяет эффективно добавлять дополнительные уровни в хлебные крошки вашего сайта на WordPress. Это не только улучшит навигацию, но и создаст более понятную структуру для пользователей и поисковых систем, что положительно скажется на SEO. Если у вас есть дополнительные вопросы или нуждаетесь в помощи с другими аспектами разработки, пожалуйста, дайте знать!