Выполнить шорткод WordPress в хлебных крошках Genesis - PullRequest
0 голосов
/ 12 сентября 2018

Я создал шорткод [год] для динамического отображения текущего года.Я включил его в заголовок поста, используя этот фильтр:

add_filter( 'the_title', 'do_shortcode' );

Шорткод успешно выполняется в заголовке поста, но отображается как в хлебных крошках.Я использую Genesis Framework, так есть ли способ заставить его работать и в хлебных крошках Genesis?

1 Ответ

0 голосов
/ 12 сентября 2018

Использование фильтра the_title, как вы это сделали, должно работать нормально (я только что проверил и подтвердил, что он работает на моем локальном сайте).

Фактически, иногда это может быть проблематичным фильтром, потому что люди ожидают, что он будет фильтровать только заголовок страницы, но в действительности он фильтрует the_title всякий раз, когда он извлекается из базы данных, включая заголовок страницы, хлебные крошки, имя элемента меню и т. д.

Тем не менее, если не работает по какой-то причине, у Genesis есть удобный класс Genesis_Breadcrumb.В частности, он имеет фильтр genesis_breadcrumb_args, который позволяет удалить «Вы здесь:» и т. Д. При условии, что используемая тема реализует Хлебные крошки Genesis , а не некоторые пользовательскиете, у вас фактически есть доступ к менее используемому фильтру genesis_build_crumbs.

Метод build_crumbs() возвращает массив имен страниц / записей, которые вы можете изменить, используя простой цикл foreach или array_map.

Примите следующую функцию:

function so52299149_breadcrumbs( $crumbs ) {
    $new_crumbs = array_map( function($val){
        return do_shortcode( $val );
    }, $crumbs);

    return $new_crumbs;
}
add_filter( 'genesis_build_crumbs', 'so52299149_breadcrumbs' );

Для этого нужно запустить каждый элемент в массиве $crumbs через функцию do_shortcode(), давая вам желаемый результат.Опять же, как у вас, add_filter( 'the_title', 'do_shortcode' ); должно работать - так что проверьте, как используемая вами дочерняя тема реализует панировочные сухари, особенно если не работает вышеуказанная функция - если это так, то естьскорее всего, что-то еще в игре.

...