Wie erstelle ich mein eigenes Schema für eine Website in WordPress?

Oft gehört Schema bereits zur Standardfunktionalität eines jeden SEO-Plugins, das zusätzlich auf der Website installiert ist. Kleine Anpassungen, und alles ist fertig. Aber es gibt eine Nuance! Erstens ist in der kostenlosen Version des Plugins die Möglichkeit, das Schema zu bearbeiten, nicht verfügbar, und zweitens verwendet es die meisten standardmäßigen (gemeinsamen) Arten von Schemata Organisation, Artikel, Produkt, etc.

In diesem Fall ist es sinnvoll, ein eigenes Schema zu erstellen, das alle Informationen enthält, die wir für notwendig erachten.

Für die Schema-Generierung gibt es einen niedrigfunktionalen Dienst von Google Markup-helper, aber in unserem Fall benutze ich aktiv Chatgpt, es generiert die notwendige Art von Schema-Markup sehr gut.

Wo soll man anfangen?

Standardschema deaktivieren

Fügen Sie die folgenden Zeilen in die Datei functions.php ein. Das All in One SEO Plugin wird als Beispiel genommen.

				
					
add_filter( 'aioseo_schema_disable', 'aioseo_disable_schema' );

function aioseo_disable_schema( $disabled ) {
   return true;
}
				
			

Hinzufügen zusätzlicher Felder für Spuren und Datensätze

Im Textkörper der Seite und des Artikels wird ein zusätzliches Feld angezeigt, in das Schema-Markup eingefügt werden sollte.

				
					function benutzerdefiniertes_schema_metabox_hinzufuegen() {
    add_meta_box(
        'benutzerdefiniertes_schema_metabox',
        'Feld für neues Schema',
        'render_benutzerdefiniertes_schema_metabox',
        array('post', 'page'), // Beitragstypen, an die die Metabox angehängt wird
        'normal', // Position der Metabox (normal, erweitert, Seite)
        'hoch' // Priorität der Metabox (hoch, Kern, Standard, niedrig)
    );
}
add_action('add_meta_boxes', 'benutzerdefiniertes_schema_metabox_hinzufuegen');

function render_benutzerdefiniertes_schema_metabox($post) {
    // Wert des Metafeldes abrufen, falls er bereits existiert
    $schema_code = get_post_meta($post->ID, '_benutzerdefiniertes_schema_code', true);

    // Eingabefeld für den Schema-Code anzeigen
    echo '<textarea id="benutzerdefiniertes_schema_code" name="benutzerdefiniertes_schema_code" style="width:100%;" rows="10">' . esc_textarea($schema_code) . '</textarea>';
}

function benutzerdefiniertes_schema_code_speichern($post_id) {
    // Überprüfen, ob es sich um einen automatischen Speicherprozess handelt
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // Benutzerberechtigungen überprüfen
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    // Überprüfen, ob der Feldwert übermittelt wurde
    if (isset($_POST['benutzerdefiniertes_schema_code'])) {
        // Den Feldwert im Metafeld speichern, sichere HTML-Tags zulassen
        update_post_meta($post_id, '_benutzerdefiniertes_schema_code', wp_kses_post($_POST['benutzerdefiniertes_schema_code']));
    }
}
add_action('save_post', 'benutzerdefiniertes_schema_code_speichern');

function benutzerdefiniertes_schema_json_ausgeben() {
    // Das aktuelle Post-Objekt abrufen
    global $post;

    // Wert des Metafeldes mit dem Schema-Code abrufen
    $schema_code = get_post_meta($post->ID, '_benutzerdefiniertes_schema_code', true);

    // Überprüfen, ob ein Wert existiert
    if ($schema_code) {
        // Den JSON-Code in einem <script>-Tag ausgeben
        echo '<script type="application/ld+json">' . wp_kses_post($schema_code) . '</script>';
    }
}
add_action('wp_head', 'benutzerdefiniertes_schema_json_ausgeben');

				
			

Erstellung eines gemeinsamen Schemas für alle Seiten der Website

Als allgemeines Schema für alle Seiten der Website können Grundtypen verwendet werden, die die wichtigsten Aspekte der Website und ihres Inhalts abdecken, z. B. WebSite, WebPage, Organization.

Der folgende Code fügt ein gemeinsames Schema für die russische und ukrainische Version der Website hinzu (fügen Sie den Code erneut in functions.php ein)

Zu Ihrer Erleichterung haben wir einen Schema-Generator mit den gängigsten Typen auf unsere Website gestellt.

				
					function add_schema_script() {
    if (function_exists('icl_object_id')) {
        $current_language = apply_filters('wpml_current_language', NULL);

        // Russische Version
        if ($current_language == 'ru') {
            ?>
<script type='application/ld+json'> 
{
  "@context": "http://www.schema.org",
  "@type": "MedicalOrganization",
  "name": "Health Care Solutions Inc.",
  "url": "https://healthcaresolutions.com",
  "logo": "https://healthcaresolutions.com/logo.svg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Wellness Avenue",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "USA"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1 (555) 123-4567"
  }
}
 </script>
            <?php
        }
        // Ukrainische Version
        elseif ($current_language == 'uk') {
            ?>
 <script type='application/ld+json'> 
{
  "@context": "http://www.schema.org",
  "@type": "MedicalOrganization",
  "name": "Health Care Solutions Inc.",
  "url": "https://healthcaresolutions.com",
  "logo": "https://healthcaresolutions.com/logo.svg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Wellness Avenue",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "USA"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1 (555) 123-4567"
  }
}
 </script>
            <?php
        }
    }
}
add_action('wp_head', 'add_schema_script');
				
			

Nützliche Artikel