2017-10-24 1 views
0

Ich versuche, ein Menü in schema.org zu erstellen, aber irgendwie wird es nicht gültig. Dies hat mit den Eigenschaften hasMenuSection & hasMenuItem zu tun. Was mache ich falsch in diesem Code?Schema.org Menütyp Eigenschaft hasMenuSection & hasMenuItem

<div itemscope itemtype="http://schema.org/Menu" itemref="restaurant-info-footer"> 
<meta itemprop="url" content="<?php the_permalink(); ?>"> 
<meta itemprop="mainEntityOfPage" content="<?php the_permalink(); ?>"> 
<meta itemprop="inLanguage" content="<?php echo get_locale(); ?>"> 
<h2 itemprop="name"><?php echo get_the_title($menu_id); ?></h2> 

<?php if (! empty($menu_price) && ! is_null($menu_price) && $hide_prices) : ?> 
    <span itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 
     <meta itemprop="price" content="<?php echo number_format($menu_price, 2, ',', '.'); ?>"> 
     <meta itemprop="priceCurrency" content="EUR"> 
    </span> 
<?php endif; ?> 

<div class="courses" itemscope itemprop="hasMenuSection" itemtype="http://schema.org/hasMenuSection"> 
    <?php foreach ($courses as $course) : ?> 
     <div class="course" itemscope itemprop="MenuSection" itemtype="http://schema.org/MenuSection"> 
      <div class="course-holder" style="background-image: url(<?php echo $course['image']; ?>);"> 
       <h3 itemprop="name"><?php echo $course['name']; ?></h3> 
      </div> 
      <div class="course-dishes" itemscope itemprop="hasMenuItem" itemtype="http://schema.org/hasMenuItem"> 
       <?php foreach ($course['dishes'] as $dish) : ?> 
        <?php $dish = $dish['dish']; ?> 
        <div class="dish" itemscope itemprop="MenuItem" itemtype="http://schema.org/MenuItem"> 
         <h4 itemprop="name"><?php echo get_the_title($dish); ?></h4> 
         <?php if (! empty(get_field('more-price', $dish)) && ! is_null(get_field('more-price', $dish)) && ! $hide_prices) : ?> 
          <span class="more-price">(<?php _e('addition', 'croy-plugin'); ?> <?php the_field('more-price', $dish); ?>)</span> 
         <?php endif; ?> 
         <?php if (get_field('vegan', $dish)) : ?> 
          <span class="vegan" itemprop="suitableForDiet" content="http://schema.org/VeganDiet"></span> 
         <?php endif; ?> 
         <p itemprop="description"><?php the_field('subtitel', $dish); ?></p> 
         <?php if (! empty(get_field('price', $dish)) && ! is_null(get_field('price', $dish)) && ! $hide_prices) : ?> 
          <div class="price" itemprop="offers" itemtype="http://schema.org/offers" itemscope> 
           <p itemprop="price"><?php echo number_format(get_field('price', $dish), 2, ',', '.'); ?></p> 
           <meta itemprop="priceCurrency" content="EUR"> 
          </div> 
         <?php endif; ?> 
        </div> 
       <?php endforeach; ?> 
      </div> 
     </div> 
    <?php endforeach; ?> 
</div> 

Der Debugger die folgenden Fehler sagt:

hasMenuSection is not a valid target type for the property hasMenuSection.

hasMenuItem is not a valid target type for the property hasMenuItem.

Während Angebote und MenuItem gut sind.

Irgendwelche Vorschläge?

Antwort

3

hasMenuSection ist eine Eigenschaft, kein Typ. Daher ist der folgende Code, in dem Sie itemscope zweimal festlegen, einmal für hasMenuSection (das kein Typ ist) und eins für MenuSection, das keine Eigenschaft ist, falsch.

<div class="courses" itemscope itemprop="hasMenuSection" itemtype="http://schema.org/hasMenuSection"> 
    <?php foreach ($courses as $course) : ?> 
     <div class="course" itemscope itemprop="MenuSection" itemtype="http://schema.org/MenuSection"> 

Der Code sollte wie folgt sein. itemscope wird einmal verwendet, um einen neuen Bereich zu deklarieren. itemprop bezieht sich auf den Namen der Eigenschaft. itemtype bezieht sich auf den darin enthaltenen Typ.

<div class="courses"> 
    <?php foreach ($courses as $course) : ?> 
     <div class="course" itemscope itemprop="hasMenuSection" itemtype="http://schema.org/MenuSection"> 

Gleiches gilt für hasMenuItem

<div class="course-dishes" itemscope itemprop="hasMenuItem" itemtype="http://schema.org/hasMenuItem"> 
    <?php foreach ($course['dishes'] as $dish) : ?> 
     <?php $dish = $dish['dish']; ?> 
     <div class="dish" itemscope itemprop="MenuItem" itemtype="http://schema.org/MenuItem"> 

sollte später

<div class="course-dishes"> 
    <?php foreach ($course['dishes'] as $dish) : ?> 
     <?php $dish = $dish['dish']; ?> 
     <div class="dish" itemscope itemprop="hasMenuItem" itemtype="http://schema.org/MenuItem"> 

Ein verwandter Fehler sein wird durch einen ähnlichen Fehler verursacht.

<div class="price" itemprop="offers" itemtype="http://schema.org/offers" itemscope> 

Angebote ist kein Typ, es ist die Eigenschaft. itemprop="offers" ist korrekt bei der Deklaration einer Eigenschaft, aber itemtype sollte Offer, nicht Angebote, die nicht existiert. Die oben finden Sie die folgende Fehlermeldung erhalten:

offers is not a known valid target type for the offers property.

Deshalb sollte es

sein
<div class="price" itemscope itemprop="offers" itemtype="http://schema.org/Offer"> 
Verwandte Themen