Здравствуйте!
Использовал на сайте
хлебные крошки от wp-kama.ru.
В крошках подставляются значения из заголовков страниц, что не очень удобно для меня, поскольку названия слишком длинные и иногда это не совсем красиво, да и цель в моей задаче было показать в крошках кратко и сжато содержание заголовков страниц.
Для этой задачи я использовал плагин Advanced Custom Fields. Создал группу полей, создал поле my_title_field и указал его в шаблонах страниц. Если поле заполнено, то в хлебных крошках на странице показывается его значение, но если не заполнено, то значение берется из заголовка страницы.
Примечание: задача реализовать эту возможность
на статичных страницах - никаких рубрик, категорий, постов и т.д.
В коде хлебных крошек я прописал несколько строк для проверки заполненности поля и выводе соответствующего значения если поле заполнено или не заполнено:
$my_title_field = get_field('my_title_field');
$title = ($title != $my_title_field && !empty($my_title_field)) ? $my_title_field : $title;
Эти строчки помогли решить задачу и, в итоге, если я нахожусь на странице любой вложенности, то значение из произвольного поля подставляется в хлебные крошки по текущей странице, но не срабатывает для других страниц верхних уровней.
Допустим есть 3 страницы с заголовками:
- страница с заголовком "Москва" - в ней я не указываю значение произвольного поля
- страница с заголовком "Портреты ручной работы в Москве" - указываю значение поля "Портреты"
- страница с заголовком "Семейные портреты ручной работы" - указываю значение поля "Семейные"
Итак, цель, чтобы получилось следующее в хлебных крошках:
Главная > Москва > Портреты > Семейные
А получается так:
Главная > Москва > Портреты ручной работы в Москве > Семейные
т.е. на текущей странице показывается значение "Семейные", а на странице родительской верхнего уровня не показывается "Портреты", а выводится значение из заголовка, но если я перейду на страницу "Портреты", то значение поля будет выводится
Главная > Москва > Портреты
Вот и вопрос, как сделать так, чтобы значения произвольных полей подставлялись в хлебные крошки для всех страниц, даже, если я буду находиться на странице 5 или 6-го уровня вложенности?
Ниже фрагмент кода отвечающий за вывод хлебных крошек с моим произвольным полем
get_field('my_title_field')
:
function _add_title( $add_to, $obj, $term_title = '' ){
$arg = & $this->arg; // упростим...
$title = $term_title ? $term_title : esc_html($obj->post_title); // $term_title чиститься отдельно, теги моугт быть...
$show_title = $term_title ? $arg->show_term_title : $arg->show_post_title;
$my_title_field = get_field('my_title_field');
$title = ($title != $my_title_field && !empty($my_title_field)) ? $my_title_field : $title;
// пагинация
if( $arg->pg_end ){
$link = $term_title ? get_term_link($obj) : get_permalink($obj);
$add_to .= ($add_to ? $arg->sep : '') . sprintf( $arg->linkpatt, $link, $title ) . $arg->pg_end;
}
// дополняем - ставим sep
elseif( $add_to ){
if( $show_title )
$add_to .= $arg->sep . sprintf( $arg->title_patt, $title );
elseif( $arg->last_sep )
$add_to .= $arg->sep;
}
// sep будет потом...
elseif( $show_title )
$add_to = sprintf( $arg->title_patt, $title );
return $add_to;
}
Буду рад любой помощи и подсказкам!