@php // Ajouter le schéma Recipe pour les articles de la catégorie "recettes" $isRecipePost = is_singular('post') && (has_category('recettes') || has_category(39)); if ($isRecipePost) { $title = wp_strip_all_tags(get_the_title()); $imageUrl = get_the_post_thumbnail_url(null, 'full'); // Le champ "image" est requis : on ne sort le schéma que si présent if ($imageUrl) { // Description via l'extrait, fallback sur le contenu tronqué $excerpt = get_the_excerpt(); if (empty($excerpt)) { $content = get_post_field('post_content', get_the_ID()); $excerpt = mb_substr(wp_strip_all_tags($content), 0, 200); } $description = wp_strip_all_tags($excerpt); // Auteur et dates $authorName = get_the_author_meta('display_name', get_post_field('post_author', get_the_ID())); $datePublished = get_the_date('c'); $dateModified = get_the_modified_date('c'); // Champs ACF (minutes) -> ISO 8601 duration $prepMin = function_exists('get_field') ? (int) (get_field('recipe_prep_time') ?: 0) : 0; $cookMin = function_exists('get_field') ? (int) (get_field('recipe_cook_time') ?: 0) : 0; $toDuration = function ($minutes) { return $minutes > 0 ? ('PT' . (int) $minutes . 'M') : null; }; $prepTime = $toDuration($prepMin); $cookTime = $toDuration($cookMin); $totalTime = ($prepMin + $cookMin) > 0 ? ('PT' . ($prepMin + $cookMin) . 'M') : null; // Catégories et mots-clés $categories = array_map(function ($term) { return $term->name; }, get_the_category() ?: []); $tags = get_the_tags(); $keywords = $tags ? implode(', ', array_map(function ($t) { return $t->name; }, $tags)) : ''; $recipe = [ '@context' => 'https://schema.org', '@type' => 'Recipe', 'name' => $title, 'image' => $imageUrl, ]; if (!empty($description)) { $recipe['description'] = $description; } if (!empty($authorName)) { $recipe['author'] = ['@type' => 'Person', 'name' => $authorName]; } if (!empty($datePublished)) { $recipe['datePublished'] = $datePublished; } if (!empty($dateModified)) { $recipe['dateModified'] = $dateModified; } if (!empty($prepTime)) { $recipe['prepTime'] = $prepTime; } if (!empty($cookTime)) { $recipe['cookTime'] = $cookTime; } if (!empty($totalTime)) { $recipe['totalTime'] = $totalTime; } if (!empty($categories)) { $recipe['recipeCategory'] = implode(', ', $categories); } if (!empty($keywords)) { $recipe['keywords'] = $keywords; } echo ''; } } ?>