آنچه در این مقاله میخوانید [پنهانسازی]
اسکیما Article برای وبلاگ یعنی افزودن داده ساخت یافته (Structured Data) از نوع Article/BlogPosting یا TechArticle به صفحه پست تا عنوان، خلاصه، نویسنده، زمان انتشار، تصویر و ناشر به شکل قابل فهم برای موتورهای جستجو مشخص شود. برای پیاده سازی درست کافی است نوع مناسب را انتخاب کنید، فیلدهای ضروری را با مقدارهای واقعی پر کنید، آن را به صورت JSON-LD در قالب یا افزونه سئو تزریق کنید و سپس با ابزارهای اعتبارسنجی بررسی کنید.
اسکیما Article چیست و برای وبلاگ فنی چه نوعی مناسب است؟
اسکیما Article یک توصیف استاندارد از محتوای مقاله است که به موتور جستجو میگوید این صفحه یک نوشته وبلاگ/خبر/مطلب فنی است و جزئیات کلیدی آن چیست. برای وبلاگهای فنی معمولا دو انتخاب داریم:
- BlogPosting: مناسب بیشتر پستهای وبلاگی. با دستورالعملهای گوگل سازگار و امنترین گزینه عمومی.
- TechArticle: زیرنوع تخصصی برای مطالب فنی. اگر محتوا آموزشی فنی با کد/دستور/پیشنیاز است، میتوانید از این نوع استفاده کنید. ممکن است مزیت نمایشی مستقیمی در نتایج نداشته باشد، اما معنای دقیقتری منتقل میکند.
معیار انتخاب: اگر سایت شما یک وبلاگ فنی است و اغلب پستها آموزش، تحلیل یا راهنما هستند، BlogPosting گزینه پیشفرض خوبی است. اگر مطلب مشخصا یک «آموزش فنی» با کد و مراحل است، تغییر @type به TechArticle منطقی است.
فیلدهای ضروری و پیشنهادی برای اجرای صحیح
برای پوشش دستورالعملهای موتورهای جستجو، این ویژگیها را حداقل پر کنید:
- headline: عنوان کوتاه و واقعی مقاله (ترجیحا تا 110 کاراکتر).
- description: خلاصه دقیق و یکتا (نه تکرار عنوان).
- author: شیء Person با name (نام نمایشی نویسنده).
- datePublished و dateModified: تاریخها با فرمت W3C/ISO 8601.
- image: حداقل یک تصویر شاخص با ابعاد کافی (ترجیحا 1200 پیکسل عرض).
- mainEntityOfPage: شیء WebPage با @id برابر آدرس قانونی صفحه.
- publisher: Organization با name و logo (ImageObject با url و ابعاد پیشنهادشده).
فیلدهای مفید دیگر:
- articleSection: نام دسته بندی (مثلا «سئو»).
- wordCount: تعداد تقریبی کلمات.
- inLanguage: کد زبان (fa-IR).
- برای TechArticle: میتوانید proficiencyLevel یا dependencies را توصیف کنید (اختیاری).
یک نمونه اسکیما آماده برای وبلاگ فنی
این نمونه حداقلیِ سازگار با گوگل را میتوانید بر اساس محتوای خود پر کنید. اگر مطلب کاملا فنی است، مقدار BlogPosting را به TechArticle تغییر دهید.
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "عنوان مقاله فنی شما",
"description": "خلاصهای دقیق، یکتا و حاوی ارزش اصلی مطلب.",
"author": {
"@type": "Person",
"name": "نام نویسنده"
},
"datePublished": "2026-10-17T09:20:00+03:30",
"dateModified": "2026-10-17T12:00:00+03:30",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/your-post-slug"
},
"image": [
"https://example.com/path/cover-1200x630.jpg",
"https://example.com/path/cover-800x418.jpg"
],
"publisher": {
"@type": "Organization",
"name": "نام وبسایت",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/path/logo-112x112.png",
"width": 112,
"height": 112
}
},
"articleSection": "سئو",
"inLanguage": "fa-IR",
"wordCount": 1200
}پیاده سازی در وردپرس بدون افزونه
اگر افزونه سئو شما اسکیما Article تولید نمیکند یا به اسکیما سفارشی نیاز دارید، این کد را در functions.php پوسته فرزند یا افزونه اختصاصی خود قرار دهید. این کد برای صفحات single پست، JSON-LD معتبر میسازد و به head اضافه میکند.
<?php
// افزودن اسکیما Article/BlogPosting برای نوشتهها
add_action('wp_head', function () {
// اگر افزونه سئو شما اسکیما تولید میکند، برای جلوگیری از دوبل شدن، از همین ابتدا return کنید.
if (defined('WPSEO_VERSION') || defined('RANK_MATH_VERSION')) {
return;
}
if (!is_single()) {
return;
}
global $post;
$post_id = $post->ID;
// عنوان
$title = wp_specialchars_decode(get_the_title($post_id), ENT_QUOTES);
// توضیح: اولویت با خلاصه (Excerpt)، در غیر این صورت برداشت امن از محتوا
$desc = has_excerpt($post_id)
? get_the_excerpt($post_id)
: wp_trim_words(wp_strip_all_tags(get_post_field('post_content', $post_id)), 40, '');
// نویسنده
$author_name = get_the_author_meta('display_name', $post->post_author);
// تاریخها با فرمت ISO
$published = get_the_date(DATE_W3C, $post_id);
$modified = get_the_modified_date(DATE_W3C, $post_id);
// پیوند قانونی
$permalink = get_permalink($post_id);
// تصویر شاخص با ابعاد
$images = [];
if (has_post_thumbnail($post_id)) {
$thumb_id = get_post_thumbnail_id($post_id);
$img_full = wp_get_attachment_image_src($thumb_id, 'full');
if (!empty($img_full)) {
$images[] = [
'@type' => 'ImageObject',
'url' => esc_url($img_full[0]),
'width' => (int) $img_full[1],
'height' => (int) $img_full[2],
];
}
}
// ناشر و لوگو (از نام سایت و آیکون سایت)
$site_name = get_bloginfo('name');
$logo_url = get_site_icon_url(512);
// اگر محتوای شما آموزشیِ فنی است میتوانید BlogPosting را به TechArticle تغییر دهید
$schema = [
'@context' => 'https://schema.org',
'@type' => 'BlogPosting',
'headline' => $title,
'description' => $desc,
'author' => [
'@type' => 'Person',
'name' => $author_name,
],
'datePublished' => $published,
'dateModified' => $modified,
'mainEntityOfPage' => [
'@type' => 'WebPage',
'@id' => esc_url($permalink),
],
'publisher' => [
'@type' => 'Organization',
'name' => $site_name,
],
'articleSection' => implode(', ', wp_list_pluck((array) get_the_category($post_id), 'name')),
'inLanguage' => 'fa-IR',
];
if (!empty($images)) {
$schema['image'] = $images;
}
if ($logo_url) {
$schema['publisher']['logo'] = [
'@type' => 'ImageObject',
'url' => esc_url($logo_url),
'width' => 512,
'height' => 512,
];
}
echo '<script type="application/ld+json">' .
wp_json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) .
'</script>';
}, 99);
نکته امنیتی/کیفی: مقدارها را از فیلدهای واقعی پست بگیرید، تاریخها را با DATE_W3C چاپ کنید، توضیح را کوتاه و یکتا نگه دارید و از دوبل شدن اسکیما با افزونهها جلوگیری کنید.
اگر از افزونه سئو استفاده می کنید
بسیاری از افزونههای سئو به صورت پیشفرض Article/BlogPosting تولید میکنند. برای جلوگیری از تداخل:
- سورس صفحه را باز کنید و دنبال عبارت “@type”: “Article” یا “BlogPosting” بگردید. اگر موجود است، معمولا به اسکیما دستی نیاز ندارید.
- اگر به اسکیما سفارشی نیاز دارید، در تنظیمات افزونه تولید Article را غیرفعال کنید یا از هوک/فیلترهای اختصاصی آن برای ویرایش فیلدها بهره بگیرید.
- پس از هر تغییر، با ابزارهای اعتبارسنجی (بخش بعد) خروجی را تایید کنید.
اعتبارسنجی و بررسی نتیجه
برای مطمئن شدن از اجرای صحیح:
- Rich Results Test: آدرس صفحه را تست کنید و خطا/هشدارها را برطرف کنید.
- Schema Markup Validator: ساختار و انواع داده را بررسی کنید.
- Search Console: پس از ایندکس، وضعیت صفحه و دادههای ساخت یافته را در گزارشها نگاه کنید.
نکته: نمایش Rich Result برای Article تضمینشده نیست، اما اسکیما تمیزی که با محتوای واقعی همخوان است شانس کسب نمایش بهتر، درک موضوع توسط موتور جستجو و استخراج پاسخ در نتایج مبتنی بر هوش مصنوعی را افزایش میدهد.
خطاهای رایج و راه حل
- دوبل شدن اسکیما: هم قالب و هم افزونه سئو اسکیما میسازند. یکی را غیرفعال یا اسکیماها را یکی کنید.
- تاریخهای اشتباه یا بدون منطقه زمانی: از DATE_W3C استفاده کنید و مطمئن شوید datePublished از dateModified قدیمیتر نیست.
- تصویر با ابعاد نامناسب یا در دسترس نبودن: تصویر شاخص با عرض حداقل ~1200 پیکسل بگذارید و از URL مطمئن استفاده کنید.
- publisher نامعتبر: برای سایتهای محتوامحور معمولا Organization با لوگو مناسب است، نه Person.
- description تکراری یا بسیار کلی: خلاصه یکتا از متن واقعی بنویسید؛ تکرار عنوان کفایت نمیکند.
- mainEntityOfPage نادرست: از URL قانونی صفحه (همان canonical) استفاده کنید.
- ناهماهنگی با محتوای صفحه: اگر نوع را TechArticle گذاشتهاید اما مطلب آموزشی فنی نیست، آن را به BlogPosting برگردانید.
چک لیست سریع اجرای اسکیما Article
- نوع مناسب را انتخاب کنید: BlogPosting به عنوان پیشفرض، TechArticle برای آموزشهای فنی.
- headline، description، author، datePublished، dateModified، image، publisher و mainEntityOfPage را پر کنید.
- اسکیما را فقط یک بار در صفحه خروجی بدهید.
- از ابزارهای اعتبارسنجی برای یافتن خطا و هشدار استفاده کنید.
- پس از انتشار، تغییرات محتوا را با بهروزرسانی dateModified منعکس کنید.
گام بعدی چیست؟
اسکیما را برای تمام پستهای منتشرشده و آینده استاندارد کنید، سپس به سراغ تکمیل دادههای ساخت یافته مکمل بروید (مانند BreadcrumbList و FAQ برای صفحات مناسب). با هر انتشار یا ویرایش، اعتبارسنجی را تکرار کنید تا خروجی همواره تمیز و قابل اتکا بماند.



