Зачастую 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') {
?>