Установите пользовательские хлебные крошки в WordPress / Genesis, которые отличаются от заголовка сообщения / страницы

Моя компания разрабатывает собственную дочернюю тему для сборок WordPress / Genesis, которую мы используем в качестве стандарта для всех наших клиентов. Для SEO у нас иногда есть более длинные заголовки страниц, которые плохо выглядят в сухарях. то есть "Кирпичные Услуги В Sometown". В конечном итоге это выглядит так:

Home / Brick Services In Sometown / Acme Bricks

Мы хотим иметь поле в редакторе страниц / постов, которое позволяет нам вводить пользовательский текст для хлебных крошек, чтобы он выглядел следующим образом:

Home / Services / Acme Bricks

Я знаю, как добавить соответствующие мета-блоки в бэкэнд и добавить введенную информацию в мета post / page, но я вижу единственный способ добиться этого с помощью этих дополнительных данных для хлебных крошек - это редактировать файлы основных тем Genesis, которые я не хочу делать Я хотел бы достичь этого в рамках дочерней темы, чтобы обновление не доставляло хлопот.

Если бы мне нужно было отредактировать основной файл Genesis breadcrumb.php, я бы сделал что-то вроде:

$ub_breadcrumb = esc_html( get_post_meta( $post->ID, '_ub_breadcrumb', TRUE ) );
if ( !empty( $ub_breadcrumb )) {

//* Add the custom page title for breadcrumbs if value is set
$crumbs[] = $ub_breadcrumb;
} else {

//* Add the current page title
$crumbs[] = get_the_title( $post->ID );
}

Это из основного файла genesis / lib / classes / breadcrumb.php в строке 363. Я бы также сделал нечто подобное для предков текущей страницы / поста в разделе выше.

Есть ли другой способ сделать это без редактирования файлов основной темы? Мы пытаемся сохранить все это в дочерней теме, чтобы она была обновленной (насколько это возможно).

Благодарю. Для Google это странная вещь, поэтому я не нашел ничего, кроме встроенных фильтров крошки в Genesis, но они не охватывают заголовок поста / страницы.

2 ответа

Решение

Я не обновлял его некоторое время, но вы можете попробовать мой плагин:

https://github.com/GaryJones/genesis-single-breadcrumbs

Скриншот полей, добавленных с помощью плагина Genesis Single Breadcrumbs

Это частичный ответ: в файле functions.php дочерней темы (не родительской темы) вы можете удалить заголовок сообщения из крошки следующим образом:

function be_remove_title_from_single_crumb( $crumb, $args ) {
  return substr( $crumb, 0, strrpos( $crumb, $args['sep'] ) );
}
add_filter( 'genesis_single_crumb', 'be_remove_title_from_single_crumb', 10, 2 );

с http://www.billerickson.net/code/remove-post-title-from-breadcrumb/

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

Также см. http://rickrduncan.com/wordpress/customize-genesis-breadcrumb для ссылки на все аргументы по умолчанию из основной функции:

public function __construct() {
    //* Default arguments
    $this->args = array(
        'home'                    => __( 'Home', 'genesis' ),
        'sep'                     => __( ' <span aria-label="breadcrumb separator">/</span> ', 'genesis' ),
        'list_sep'                => ', ',
        'prefix'                  => sprintf( '<div %s>', genesis_attr( 'breadcrumb' ) ),
        'suffix'                  => '</div>',
        'heirarchial_attachments' => true,
        'heirarchial_categories'  => true,
        'labels' => array(
            'prefix'    => __( 'You are here: ', 'genesis' ),
            'author'    => __( 'Archives for ', 'genesis' ),
            'category'  => __( 'Archives for ', 'genesis' ),
            'tag'       => __( 'Archives for ', 'genesis' ),
            'date'      => __( 'Archives for ', 'genesis' ),
            'search'    => __( 'Search for ', 'genesis' ),
            'tax'       => __( 'Archives for ', 'genesis' ),
            'post_type' => __( 'Archives for ', 'genesis' ),
            '404'       => __( 'Not found: ', 'genesis' )
        )
    );
}
Другие вопросы по тегам