قیمت هتل: فعال کردن ناوبری خزنده و برچسب‌گذاری قیمت

این راهنما نحوه برچسب‌گذاری وب‌سایت شما با میکرودیتاها و ویژگی‌های ناوبری را شرح می‌دهد تا خزنده دقت قیمت گوگل بتواند به‌طور خودکار در قیف رزرو شما پیمایش کند و نرخ اتاق‌های شما را تأیید کند.

برای مشاهده مشخصات فنی کامل تمام ویژگی‌های داده‌های ساختاریافته موجود (شامل مالیات‌های جزئی، هزینه‌ها و جزئیات اتاق)، به مرجع داده‌های ساختاریافته قیمت هتل مراجعه کنید.


از ویژگی‌های سفارشی data-nav-* HTML برای حاشیه‌نویسی عناصر تعاملی و اعلام مراحل قیف فروش استفاده کنید تا خزنده بتواند جریان رزرو شما را پیمایش کند.

۱.۱ اعلان مرحله بالای صفحه ( data-nav-stage )

هر صفحه‌ای در قیف رزرو شما که نرخ‌ها را نمایش می‌دهد، باید مرحله خود را اعلام کند و آن را به تگ <body> یا یک تگ wrapper اصلی (مانند <div> ، <section> یا <main> ) متصل کند. این به خزنده می‌گوید که کدام مرحله از جریان رزرو فعال است و بعداً به رفع مشکلات کمک می‌کند.

  • data-nav-stage (توصیه شده): مرحله فعال قیف فروش را اعلام می‌کند. اگرچه کاملاً الزامی نیست، اما مشخص کردن نام‌ها (برای مثال، "landing" ، "room-selection" ، "checkout" ، "ready-for-payment" ) به شناسایی مرحله فعال در طول اعتبارسنجی کمک می‌کند.

۱.۲ نشانگر مرحله نهایی ( data-nav-stage-final )

در صفحه آخر که قیمت‌ها را قبل از ورود اطلاعات شخصی یا پرداخت کاربر نمایش می‌دهد، پرچم مرحله نهایی را در کنار اعلان مرحله (برای مثال، data-nav-stage="ready-for-payment" ) به کانتینر بالای صفحه خود اضافه کنید.

  • data-nav-stage-final (اختیاری): در صفحه قیمت نهایی قبل از پرداخت، روی "true" ( data-nav-stage-final="true" ) تنظیم کنید. این به خزنده نشان می‌دهد که این صفحه، صفحه نهایی است و قیمت را می‌توان برای اعتبارسنجی استخراج کرد. این صفحه باید شامل ساختار قیمت با برچسب‌گذاری ریزداده باشد.

۱.۳ ویژگی‌های تعامل مسیر بحرانی

در صفحات میانی، عناصر تعاملی (دکمه‌ها یا لینک‌ها) را که کاربر را در مسیر بحرانی رزرو پیش می‌برند، برچسب‌گذاری کنید. اگر چندین اقدام در یک صفحه مورد نیاز است، ترتیب اجرا را مشخص کنید. خزنده قبل از تلاش برای استخراج قیمت در صفحه نهایی، ترتیب مشخص شده را دنبال می‌کند.

ویژگی مقدار مورد نیاز هدف
data-nav-criticalpath "true" دکمه/لینک اجباری که خزنده برای پیشروی باید روی آن کلیک کند را علامت‌گذاری می‌کند.
data-nav-interactiontype "CLICK" اعلام می‌کند که برای پیشبرد جریان، یک عمل کلیک لازم است.
data-nav-interactionorder "1" ، "2" ، ... اگر چندین عمل در یک صفحه مورد نیاز باشد، توالی اجرا را اعلام می‌کند.

مثال ناوبری مینیمال

<button data-nav-criticalpath="true"
        data-nav-interactiontype="CLICK"
        data-nav-interactionorder="1">
  Continue
</button>

۲. اعلام قیمت (ریزداده)

در آخرین صفحه قابل دسترسی قیف رزرو خود (قبل از ورود اطلاعات شخصی یا پرداخت)، پیشنهاد قیمت (یک پیشنهاد قیمت) را با برچسب‌های میکرودیتا برچسب‌گذاری کنید. فقط یک پیشنهاد باید در صفحه برچسب‌گذاری شود که نشان می‌دهد خزنده کدام نرخ را استخراج می‌کند، که مربوط به نرخ انتخاب شده در گوگل قبل از ورود کاربر به وب‌سایت شما است. برای جزئیات بیشتر در مورد تعریف پارامترهای صفحه فرود، به متغیرها و شرایط مراجعه کنید.

اگرچه گوگل از سلسله مراتب کامل در مرجع داده‌های ساختاریافته قیمت هتل (شامل نرخ‌های پایه تفصیلی، مالیات‌های فردی، هزینه‌ها و جزئیات اتاق) کاملاً پشتیبانی می‌کند، اما یک درخت داده ساختاریافته ساده‌شده را نیز می‌پذیرد تا برچسب‌گذاری قیمت هتل‌ها در صفحات وب شما را آسان‌تر کند.

قیمت کل اقامت برای نرخ‌های موجود اجباری است. اگر برنامه سفر یا اتاق موجود نیست یا تمام شده است، در قسمت makesOffer بدون ذکر قیمت، https://schema.org/SoldOut را اعلام کنید. priceSpecification :

<div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
  <meta itemprop="availability" content="https://schema.org/SoldOut"/>
  Sold Out
</div>

برای اطلاعات بیشتر، به مشخصات ملک availability مراجعه کنید.

۲.۱ درخت داده ساختاریافته ساده‌شده

برای ساده‌سازی تگ‌گذاری در صفحات رزرو، فقط کافی است هتل اصلی و کانتینر رزرو، تاریخ اقامت ( YYYY-MM-DD )، تعداد اتاق‌ها و یک پیشنهاد شامل کل قیمت اقامت را اعلام کنید:

Hotel / LodgingReservation (Root Container)
├── identifier                   [Meta/Attribute] Hotel ID
├── name                         [Visible text] Hotel Name
├── checkinTime / checkoutTime   [Visible text with YYYY-MM-DD in content="..."] Stay Dates
├── numAdults / numChildren      [Visible text] Occupancy
└── makesOffer (Offer)
    └── priceSpecification (CompoundPriceSpecification)
        ├── priceCurrency        [ISO Code, such as "USD"] Currency
        └── price                [Visible text] Total Stay Price (Taxes & Fees Included)

۲.۲ قوانین دید بحرانی

برای اطمینان از استخراج قیمت قابل اعتماد، هنگام برچسب گذاری HTML خود، این قوانین مشاهده را دنبال کنید:

  • قیمت کل اقامت باید قابل مشاهده باشد: عدد قیمت قابل مشاهده را مستقیماً در صفحه با استفاده از itemprop="price" برچسب گذاری کنید. از فراداده پنهان ( <meta> ) یا مقادیر ویژگی ( value="..." یا content="..." ) برای عدد قیمت استفاده نکنید.
  • تاریخ‌های اقامت قابل خواندن توسط ماشین: تا حد امکان تاریخ‌های اقامت قابل مشاهده در صفحه را برچسب‌گذاری کنید. در صورت نیاز، می‌توانید از ویژگی content="..." در عناصر <span> برای ارائه قالب استاندارد YYYY-MM-DD هنگام نمایش تاریخ قابل مشاهده استفاده کنید (برای مثال، <span itemprop="checkinTime" content="2026-08-10">August 10, 2026</span> ).
  • فیلدهای غیرقابل مشاهده: فیلدهایی که مستقیماً در صفحه نمایش داده نمی‌شوند (مانند شناسه هتل یا کد ارز) می‌توانند از تگ‌های <meta> یا ویژگی‌های content="..." استفاده کنند.

۳. مثال‌ها

مثال‌های کامل زیر نحوه برچسب‌گذاری مراحل میانی قیف فروش و صفحات پرداخت نهایی را با ویژگی‌های ناوبری و میکرودیتا نشان می‌دهند.

مثال ۱: صفحه میانی با دکمه قابل کلیک

قطعه کد زیر یک صفحه انتخاب اتاق میانی ( room-selection ) را نشان می‌دهد که یک دکمه اقدام مسیر بحرانی برای پیشبرد جریان دارد:

<body data-nav-stage="room-selection">
  <!-- Main page content -->
  <button class="btn-continue"
          data-nav-criticalpath="true"
          data-nav-interactiontype="CLICK"
          data-nav-interactionorder="1">
    Book This Room
  </button>
</body>

مثال ۲: صفحه قیمت نهایی با نشانگر مرحله و حداقل ریزداده‌ها

قطعه کد زیر آخرین صفحه قبل از پرداخت ( ready-for-payment ) را نشان می‌دهد که در آن data-nav-stage-final="true" در wrapper اعلان شده و قیمت اقامت معتبر به وضوح نمایش داده می‌شود:

<body data-nav-stage="ready-for-payment" data-nav-stage-final="true">

  <!-- Root Container: Co-Typed Hotel & LodgingReservation -->
  <div itemscope itemtype="https://schema.org/Hotel https://schema.org/LodgingReservation">
    
    <!-- Hotel Identifier (Can be hidden meta tag) -->
    <meta itemprop="identifier" content="grand-view-001" />
    <h1 itemprop="name">Grand View Hotel</h1>
    
    <!-- Visible Stay Dates & Occupancy -->
    <p>
      Check-in: <span itemprop="checkinTime" content="2026-08-10">Aug 10, 2026</span> |
      Check-out: <span itemprop="checkoutTime" content="2026-08-15">Aug 15, 2026</span> |
      Guests: <span itemprop="numAdults">2</span> Adults, <span itemprop="numChildren">1</span> Child
    </p>

    <!-- Single Minimal Rate Offer -->
    <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
      <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
        
        <p class="summary-total">
          Total Stay Price (Taxes & Fees Included):
          
          <!-- 3-letter ISO Currency Code (can use content="" for hiding the 3-letter currency code while displaying a symbol) -->
          <span itemprop="priceCurrency" content="EUR">€</span>
          
          <!-- VISIBLE TOTAL STAY PRICE (Directly wrapped, no hidden attributes) -->
          <span itemprop="price">650.00</span>
        </p>

      </div>
    </div>

  </div>

</body>

۴. پیاده‌سازی خود را تأیید کنید

قبل از اعمال تغییرات، نشانه‌گذاری و برچسب‌گذاری ناوبری خود را آزمایش کنید تا مطمئن شوید که خزنده می‌تواند با موفقیت داده‌های قیمت‌گذاری شما را تأیید کند.

۴.۱ بررسی قیمت و ساختار ریزداده‌ها

شما می‌توانید از اعتبارسنج Schema.org یا تست نتایج غنی گوگل برای بررسی ریزداده‌های استخراج‌شده از URL صفحه یا محتوای HTML خود استفاده کنید. فیلدهای استخراج‌شده را با مشخصات موجود در مرجع داده‌های ساختاریافته قیمت هتل مطابقت دهید و مطمئن شوید که عنصر itemprop="price" شما یک آیتم قابل مشاهده در صفحه است.

۴.۲ تأیید ناوبری

برای تأیید تگ‌های خود، با کلیک راست روی صفحه وب خود و انتخاب Inspect (یا فشردن F12 ) برای بررسی HTML DOM، ابزار توسعه‌دهنده مرورگر را در گوگل کروم باز کنید.

تأیید کنید که پیاده‌سازی شما الزامات ناوبری زیر را برآورده می‌کند:

  • مرحله بالای صفحه اعلام شده است: هر صفحه در جریان رزرو شامل data-nav-stage="..." در تگ <body> یا root wrapper خود است و صفحه قیمت نهایی شامل data-nav-stage-final="true" است.
  • مسیر بحرانی کامل شده است: صفحات میانی عناصر تعاملی خود (دکمه‌ها یا پیوندها) را با data-nav-criticalpath="true" ، data-nav-interactiontype و data-nav-interactionorder مشخص کرده‌اند. اگر چندین اقدام وجود دارد، مطمئن شوید که شماره‌های سفارش به درستی تنظیم شده‌اند.

۴.۳ بررسی کیفیت نمایش و نشانه‌گذاری

تأیید کنید که ریزداده‌های شما تمام الزامات ساختار و قابلیت مشاهده را برآورده می‌کنند (برای جزئیات بیشتر، به درخت داده ساختاریافته ساده‌شده و قوانین حیاتی قابلیت مشاهده مراجعه کنید):

  • سلسله مراتب دقیق: مطمئن شوید که نشانه‌گذاری شما از ترتیب تودرتوی مورد نیاز (چه درخت ساده‌شده و چه مشخصات مرجع داده‌های ساختاریافته کامل) پیروی می‌کند. عناصر خارج از ترتیب یا عناصر تودرتوی نامناسب ممکن است توسط خزنده از دست بروند.
  • قیمت قابل مشاهده: itemprop="price" مستقیماً عدد قیمت قابل مشاهده را بدون ویژگی‌های پنهان یا برچسب‌های <meta> در بر می‌گیرد.
  • تاریخ‌های اقامت قابل خواندن توسط ماشین: checkinTime و checkoutTime حاوی ویژگی‌های استاندارد YYYY-MM-DD هستند (به صورت اختیاری با استفاده از ویژگی‌های content="..." ).
  • تگ‌گذاری مستقیم عنصر: تمام ویژگی‌های قابل مشاهده (نام هتل، تاریخ اقامت، تعداد اتاق‌ها) متن قابل مشاهده صفحه را در بر می‌گیرند.