Как отображать и стилизовать метаданные записей в WordPress

Опубликовано: 2017-10-26

Styling Post Meta Data

Вы когда-нибудь замечали дату или категорию в сообщении блога? Это так называемые «метаданные поста» — важная часть поста в блоге. Это помогает предоставлять краткие метаданные о содержании вашего блога.

При правильном использовании метаданные публикации могут улучшить пользовательский опыт; скажем, посетитель интересуется только определенной темой, тогда мета-категория может помочь ему сокращать сообщения по категориям, чтобы они могли просматривать сообщения по этой конкретной теме, а не видеть все сообщения. Или, если вы хотите просматривать сообщения только определенного автора, метаданные сообщений могут помочь вам в этом.

В этом посте я покажу вам, как отображать и стилизовать метаданные поста.

Что такое метаданные публикации и как они могут помочь моему блогу?

Раздел метаданных сообщения содержит соответствующую информацию о сообщении в блоге, такую ​​как дата публикации, имя автора, категории, теги и пользовательские таксономии и т. д.

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

Сколько метаданных публикации вы должны отображать?

Расположение метаданных поста варьируется от темы к теме. Некоторые могут отображать его перед заголовком поста, некоторые — после заголовка, а некоторые — сразу после контента.

Post Meta Data

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

Теперь давайте посмотрим, как вы можете настроить и добавить метаданные записи.

Настройка метаданных публикации

Как уже упоминалось, мета-положение поста варьируется от темы к теме. Здесь мы будем работать над определенной темой — в данном случае это тема TwentySeventeen по умолчанию, поэтому имейте в виду, что код и страницы могут отличаться от вашей темы.

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

Как правило, вы найдете метатеги сообщений в index.php , single.php , archive.php и на страницах шаблонов контента .

Простой код будет выглядеть так:

опубликовано

 <?php the_time('F jS, Y'); ?> с помощью <?php the_author_posts_link(); ?> <?php edit_post_link(); ?>

Этот код будет отображать что-то вроде этого Дата публикации по имени автора с кнопкой редактирования (только если вы вошли в панель управления).

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

Во-первых, вам нужно будет создать дочернюю тему, прежде чем вносить какие-либо изменения.

Мы будем работать над отдельной страницей поста, и вот как она выглядит со стороны.

Post Meta from front-end

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

В теме TwentySeventeen шаблон single.php используется для отображения одного поста. Теперь найдите get_template_part и обратите внимание на путь к шаблону, в нашем случае это путь:

 get_template_part('шаблон-части/пост/контент', get_post_format());

Теперь по пути открываем content.php и ищем раздел entry-header .

 <header class="entry-header">

<?php

если ('сообщение' === get_post_type()) {

эхо '<div class="entry-meta">';

если ( is_single() ) {

двадцать семнадцать_опубликовано_на();

} еще {

эхо двадцать семнадцать_время_ссылка();

двадцать семнадцать_edit_link();

};

echo '</div><!-- .entry-meta -->';

};

 

если ( is_single() ) {

the_title('<h1 class="entry-title">', '</h1>');

} elseif ( is_front_page() && is_home() ) {

the_title('<h3 class="entry-title"><a href="' .esc_url(get_permalink()) . '" rel="bookmark">', '</a></h3>');

} еще {

the_title('<h2 class="entry-title"><a href="' .esc_url(get_permalink()) . '" rel="bookmark">', '</a></h2>');

}

?>

</заголовок>

<!-- .entry-header -->

Мы можем видеть двадцать семнадцать_постированных_на(); здесь вызывается функция для отображения метаданных поста, мы должны отредактировать эту функцию. Вы найдете эту функцию в файле template-tags.php .

Совет: проверьте файл function.php темы, чтобы получить имя файла и путь.

Найдите двадцать семнадцать_постированных_он() и скопируйте и вставьте всю функцию в файл function.php вашей дочерней темы (если у вас нет файла function.php в вашей дочерней теме, создайте пустой файл с тем же именем).

Здесь мы будем использовать значки шрифтов Awesome, самый простой способ использовать шрифт Awesome в WordPress — установить плагин Better Font Awesome.

 если (! function_exists('twentyseventeen_posted_on')):

/**

* Печатает HTML с метаинформацией о текущей дате/времени поста и авторе.

*/

функция двадцать семнадцать_posted_on () {

// Получить имя автора; оберните его ссылкой.

$byline = спринтf(

/* переводчики: %s: автор сообщения */

__('%s', 'двадцать семнадцать'),

'<span class="author vcard"><a class="url fn n" href="' .esc_url(get_author_posts_url(get_the_author_meta('ID') )) . '"><i class="fa fa-user" ария-скрытый="true"></i>' . получить_автор() . '</a></span>'

);

// Наконец, давайте запишем все это на страницу.

эхо '<span class="posted-on">' . двадцать семнадцать_время_ссылка() . '</span><span class="byline"> ' . $ автор . '</span>';

}

конец;

Теперь вы можете увидеть значок пользователя рядом с именем автора.

Совет: вы можете внести эти изменения непосредственно в файл content.php , но рекомендуется следовать структуре темы.

Добавление метаданных публикации

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

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

двадцать семнадцать > части шаблона > пост > content.php до двадцати семнадцати дочерних > части шаблона > пост > content.php

Теперь вам нужно написать новую функцию.

Думаете, это тяжело? На самом деле это не так, вот что вам нужно сделать.

Большинство тем будут отображать категорию и теги где-то в сообщении, вам просто нужно найти файл и скопировать код в свою функцию, вот и все.

В нашем случае в TwentySeventeen категория темы и теги размещаются после контента. Теперь нам нужно следовать нашему предыдущему рабочему процессу.

Откройте content.php и посмотрите, какая функция используется для категории и тегов.

 <?php

если ( is_single() ) {

двадцать семнадцать_entry_footer();

}

?>

Здесь это двадцать семнадцать_entry_footer().

Теперь перейдите в файл template-tags.php и найдите двадцать семнадцать_entry_footer().

если (! function_exists('twentyseventeen_entry_footer')):

/**

* Печатает HTML с метаинформацией для категорий, тегов и комментариев.

*/

функция двадцать семнадцать_entry_footer () {

 

/* переводчики: используются между элементами списка, после запятой есть пробел */

$separate_meta = __( ', ', 'двадцать семнадцать');

 

// Получить категории для постов.

$categories_list = get_the_category_list($separate_meta);

 

// Получить теги для сообщений.

$tags_list = get_the_tag_list( '', $separate_meta );

 

// Мы не хотим выводить .entry-footer, если он будет пустым, поэтому убедитесь, что это не так.

если ( ( ( ( twoseventeen_categorized_blog() && $categories_list ) || $tags_list ) || get_edit_post_link() ) {

 

echo '<footer class="entry-footer">';

 

если ('сообщение' === get_post_type()) {

если ( ( $categories_list && twoseventeen_categorized_blog() ) || $tags_list ) {

echo '<span class="cat-tags-links">';

 

// Перед отображением убедитесь, что существует более одной категории.

если ( $categories_list && двадцать семнадцать_categorized_blog() ) {

эхо '<span class="cat-links">' . двадцать семнадцать_get_svg (массив («значок» => «открыть папку»)). '<span class="screen-reader-text">' . __('Категории', 'двадцать семнадцать') . '</промежуток>' . $категории_список . '</span>';

}

 

если ($tags_list) {

эхо '<span class="tags-links">' . двадцать семнадцать_get_svg (массив ('значок' => 'хэштег')). '<span class="screen-reader-text">' . __('Теги', 'двадцать семнадцать') . '</промежуток>' . $теги_список . '</span>';

}

 

эхо '</span>';

}

}

 

двадцать семнадцать_edit_link();

 

echo '</footer> <!-- .entry-footer -->';

}

}

конец;

Найдите код для категории и тегов, затем скопируйте и вставьте код в файл function.php вашей дочерней темы внутри новой функции, например:

если (! function_exists('twentyseventeen_post_meta')):

/**

* Печатает HTML с метаинформацией о текущей дате/времени поста и авторе.

*/

функция двадцать семнадцать_post_meta () {

/* переводчики: используются между элементами списка, после запятой есть пробел */

$separate_meta = __( ', ', 'двадцать семнадцать');

// Получить категории для постов.

$categories_list = get_the_category_list($separate_meta);

// Получить теги для сообщений.

$tags_list = get_the_tag_list( '', $separate_meta );

echo '<span class="cat-tags-links">';

// Перед отображением убедитесь, что существует более одной категории.

если ( $categories_list && двадцать семнадцать_categorized_blog() ) {

echo '<span class="cat-links"><i class="fa fa-folder-open" aria-hidden="true"></i><span class="screen-reader-text">' . __('Категории', 'двадцать семнадцать') . '</промежуток>' . $категории_список . '</span>';

}

если ($tags_list) {

echo '<span class="tags-links"><i class="fa fa-tags" aria-hidden="true"></i><span class="screen-reader-text">' . __('Теги', 'двадцать семнадцать') . '</промежуток>' . $теги_список . '</span>';

}

эхо '</span>';

};

конец;

Вы можете видеть, что я использовал значки шрифта awesome как для категорий, так и для тегов.

Стилизация метаданных вашего поста

Поскольку мы разместили наши метатеги в желаемом месте, пришло время изменить стиль.

Это очень просто, если вы знаете основы CSS. Давайте настроим нашу категорию и раздел тегов.

 .entry-header .cat-теги-ссылки {

размер шрифта: 14px;

}

.entry-header .cat-ссылки {

отступ справа: 5px;

}

Adjusted category and tags section

Теперь это выглядит иначе.

Но если вы хотите показать свой собственный значок вместо шрифта awesome или любого другого, вы можете использовать свое изображение в качестве фонового изображения в CSS следующим образом:

 .entry-header .cat-ссылки {

фон: url(category-img.jpg) слева по центру без повторов;

отступ слева: 5 пикселей;

отступ справа: 5px;

}

.entry-header .tags-links {

фон: url(tag-img.jpg) слева по центру без повторов;

отступ слева: 5 пикселей;

отступ справа: 5px;

}

После этого не забудьте удалить код шрифта awesome из вашего файла function.php .

Удалить любую мету сообщения

Удалить любую мету поста очень просто, просто найдите код и удалите его.

Meta tag duplication

Например, если вы видите нашу страницу с одним сообщением, категории и теги теперь отображаются в двух разделах. Если вы не хотите отображать его после содержимого, просто удалите категорию и код тега из функции двадцать семнадцать_entry_footer().

Таким образом, новый код будет выглядеть так в вашей дочерней теме.

 если (! function_exists('twentyseventeen_entry_footer')):

/**

* Печатает HTML с метаинформацией для категорий, тегов и комментариев.

*/

функция двадцать семнадцать_entry_footer () {

// Мы не хотим выводить .entry-footer, если он будет пустым, поэтому убедитесь, что это не так.

если (get_edit_post_link()) {

echo '<footer class="entry-footer">';

двадцать семнадцать_edit_link();

echo '</footer> <!-- .entry-footer -->';

}

}

конец;

Вывод

Как видите, метаданные поста могут отображаться разными способами, но лучше всего, если вы сначала получите базовое представление о структуре вашей темы и только потом, если возможно, вносите соответствующие коррективы. Это сводит к минимуму возможность поломки вашей темы. PS не забудьте сделать резервную копию.

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