Вопрос или проблема
Я хотел бы добавить разметку схемы блог-постинга, чтобы каждый новый пост автоматически оптимизировался для богатых данных. Некоторые коды на вебе запутанные и требуют обновлений для каждого поста, также плагин не лучший вариант, так как это пользовательская тема, мы пытаемся минимизировать использование плагинов. Есть ли код, который я могу добавить в файл single.php, чтобы каждая страница имела правильные структурированные данные без плагинов или дополнительных изменений в админке или для каждого поста? Спасибо!
Я думаю, что вам следует использовать JSON-LD.
Вот отличный гид о том, как это сделать от CSS-Tricks.
Обзор:
-
Определите элементы схемы, которые вам понадобятся для ваших постов
-
Используйте functions.php (или включенный .php файл, как вы организуете дополнительные функции вашего сайта, будет вполне нормально, я обычно создаю свой собственный .php файл).
-
Определите ваши значения json с переменными вашего сайта и постов в массиве (шаг 5 руководства). Преимущество этого метода в том, что все ACF и WordPress доступны вам таким образом. Вы можете использовать краткое содержание, контент, заголовок и т. д.
-
Запустите ваш json скрипт в заголовке страниц ваших постов.
Пример из руководства:
add_action('wp_head', function() {
$schema = array(
// Сообщите поисковым системам, что это структурированные данные
'@context' => "http://schema.org",
// Сообщите поисковым системам, какой тип контента они смотрят
'@type' => get_field('schema_type', 'options'),
// Предоставьте поисковым системам имя сайта и адрес
'name' => get_bloginfo('name'),
'url' => get_home_url(),
// Укажите адрес компании
'telephone' => '+49' . get_field('company_phone', 'options'), // необходим код страны
'address' => array(
'@type' => 'PostalAddress',
'streetAddress' => get_field('address_street', 'option'),
'postalCode' => get_field('address_postal', 'option'),
'addressLocality' => get_field('address_locality', 'option'),
'addressRegion' => get_field('address_region', 'option'),
'addressCountry' => get_field('address_country', 'option')
)
);
}
Пример из руководства:
echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
Это, безусловно, лучший метод, который я нашел, просто потому, что вы можете использовать все, что доступно в WordPress в шаблоне, включая ACF, и вы можете добавлять условия для выполнения скрипта на конкретных страницах.
Ответ или решение
Схема BlogPosting и Структурированные Данные без Плагинов
В современном веб-разработке большая роль уделяется улучшению видимости сайтов в поисковых системах, и одним из ключевых инструментов для этого являются структурированные данные. В частности, такие данные, как Schema Markup, позволяют более эффективно взаимодействовать с поисковиками и показывать контент в более привлекательном виде с помощью "богатых результатов". В этом контексте использование схемы BlogPosting может существенно улучшить представление ваших публикаций.
Зачем использовать структурированные данные?
Структурированные данные помогают поисковым системам понять контент вашей страницы и вывести его в специальном формате, что в свою очередь может привести к повышению кликабельности ваших ссылок и, как следствие, к увеличению трафика на сайт. Схема BlogPosting включает в себя такие важные элементы, как заголовок, автор, дата публикации, изображение и прочее.
Решение без использования плагинов
Если у вас уникальная тема, и вы хотите минимизировать использование плагинов, вы можете добавить код напрямую в файл вашего шаблона single.php
. Это позволит автоматически добавлять нужную схему для каждой публикации. В этом поможет использование JSON-LD, который является наиболее рекомендуемым форматом структурированных данных.
Пример реализации
-
Определите необходимые элементы схемы: Обозначьте, какие данные из вашей публикации хотите сделать структурированными. Обычно это заголовок, содержание, дата, автор и т.д.
-
Редактирование файла functions.php: Добавьте следующий код в замыкающем блоке в файле
functions.php
или в отдельном файле, который вы используете для дополнительных функций.
add_action('wp_head', function() {
if (is_single()) {
global $post;
$schema = array(
'@context' => "http://schema.org",
'@type' => "BlogPosting",
'headline' => get_the_title($post->ID),
'author' => array(
'@type' => 'Person',
'name' => get_the_author_meta('display_name', $post->post_author)
),
'datePublished' => get_the_date(DATE_ISO8601, $post),
'dateModified' => get_the_modified_date(DATE_ISO8601, $post),
'image' => get_the_post_thumbnail_url($post->ID, 'full'),
'articleBody' => get_the_content($post->ID),
'url' => get_permalink($post->ID),
'publisher' => array(
'@type' => 'Organization',
'name' => get_bloginfo('name'),
'logo' => array(
'@type' => 'ImageObject',
'url' => get_site_icon_url()
)
)
);
echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
}
});
- Объяснение кода:
- Используется хук
wp_head
, который позволяет вставить код в<head>
секцию каждой страницы. - Проверка на то, что это страница поста с помощью
is_single()
. - Генерация массива
$schema
, который включает ключевые элементы вашей статьи, такие как заголовок, автор, дата публикации и модификации, изображение и контент. - Использование функции
json_encode()
для создания скрипта, который затем выводится на страницу.
- Используется хук
Заключение
Используя описанный метод, вы без особых усилий интегрируете структурированные данные BlogPosting на своем сайте. Это позволит вашим публикациям стать более доступными для поисковых систем и привлечь больше внимания пользователей. Такой подход не требует дополнительных манипуляций через админ-панель, облегчая поддержание вашего сайта и снижая зависимость от внешних плагинов. Убедитесь, что каждая публикация вашего блога правильно оформлена с учетом предложенного кода, и наблюдайте за улучшениями в SEO вашей страницы.