Найчастіше Schema вже є в стандартному функціоналі будь-якого SEO плагіна, який додатково встановлюється на сайт. Невеликі налаштування, і все готово. Але є нюанс! По-перше, на безкоштовній версії плагіна можливості редагування схеми немає, а по-друге, там використовуються найстандартніші (найпоширеніші) типи схем Organization, Article, Product тощо.
У такому разі є сенс зробити свою Schemu, яка міститиме всю ту необхідну інформацію, яку ми вважатимемо потрібною.
Для генерації схеми є малофункціональний сервіс від Google Markup-helper, але в нашому випадку я активно використовую Chatgpt, він дуже навіть відмінно генерує необхідний тип розмітки Schema.
З чого ж почати?
У файл functions.php додаємо такі рядки. Для прикладу взято плагін All in One SEO.
add_filter( 'aioseo_schema_disable', 'aioseo_disable_schema' );
function aioseo_disable_schema( $disabled ) {
return true;
}
У тілі сторінки та статті з’явиться додаткове поле, куди і потрібно буде додавати розмітку Schema.
function add_custom_schema_metabox() {
add_meta_box(
'custom_schema_metabox',
'Поле для нової Schema',
'render_custom_schema_metabox',
array('post', 'page'), // Типи записів, до яких прив'язується метабокс
'normal', // Позиція метабоксу (normal, advanced, side)
'high' // Пріоритет метабоксу (high, core, default, low)
);
}
add_action('add_meta_boxes', 'add_custom_schema_metabox');
function render_custom_schema_metabox($post) {
// Отримуємо значення метаполя, якщо воно вже існує
$schema_code = get_post_meta($post->ID, '_custom_schema_code', true);
// Виводимо поле для введення коду схеми
echo '';
}
function save_custom_schema_code($post_id) {
// Перевіряємо, чи є запит автозбереженням
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// Перевіряємо права користувача
if (!current_user_can('edit_post', $post_id)) {
return;
}
// Перевіряємо, чи було передано значення поля
if (isset($_POST['custom_schema_code'])) {
// Зберігаємо значення поля в метаполі з дозволеними тегами HTML
update_post_meta($post_id, '_custom_schema_code', wp_kses_post($_POST['custom_schema_code']));
}
}
add_action('save_post', 'save_custom_schema_code');
function output_custom_schema_json() {
// Отримуємо поточний об'єкт запису
global $post;
// Отримуємо значення метаполя з кодом схеми
$schema_code = get_post_meta($post->ID, '_custom_schema_code', true);
// Перевіряємо, чи існує значення
if ($schema_code) {
// Виводимо JSON-код у тегу ';
}
}
add_action('wp_head', 'output_custom_schema_json');
Загальна схема: для всіх сторінок сайту можна використовувати базові типи, які охоплюють основні аспекти сайту та його вмісту, наприклад WebSite, WebPage, Organization.
Наступний код додає загальну схему для російської та української версії сайту (код додаємо знову таки до functions.php)
Для зручності, ми на нашому сайті розмістили генератор Schema, з найбільш популярними її типами.
function add_schema_script() {
if (function_exists('icl_object_id')) {
$current_language = apply_filters('wpml_current_language', NULL);
// Рос версія
if ($current_language == 'ru') {
?>