Jalara Studio

aktualisiert am
17. 04. 2019

In WordPress bestimmte Beiträge aus den Suchmaschinen fernhalten

# # #


Der folgende Artikel zeigt wie du Google oder andere Suchmaschinen davon abhalten kannst, einen Beitrag zu indexieren.

Robots-Anweisung

Soll ein Beitrag nicht indexiert werden, muss dies dem Crawler mit folgender Robots-Anweisung im <head>-Bereich einer Website mitgeteilt werden:

<meta name="robots" content="noindex, follow">

WordPress besitzt für diese Ausgabe die Funktion wp_no_robots().1

Codeschnipsel

Mit folgendem Codeschnipsel, eingefügt in die Datei functions.php des Child-Themes oder in ein seitenspezifisches Plugin wird verhindert, dass die Beiträge mit den Beispiel-Titeln Osterüberraschung und Pfingst-Rundgang nicht in den Suchmaschinen indexiert werden:

function add_meta_robots_noindex_follow() {
     if ( is_single( array( 'Osterüberraschung', 'Pfingst-Rundgang' ) ) ) {
        wp_no_robots();
    }
}
add_action( 'wp_head', 'add_meta_robots_noindex_follow' );

Plugin

Wer kein Child Theme nutzt oder die Einstellung vom Bearbeitungsbereich aus vornehmen möchte, kann ein SEO-Plugin wie Yoast SEO2 nutzen oder selbst ein seitenspezifisches Plugin für die Ausgabe eine Meta-Box z.B. namens Indexierung anlegen, um bequemer ein Benutzerdefiniertes Feld auslesen und bearbeiten zu können. Lege für das eigene Plugin einen Ordner namens seitenspezifisches-plugin im Verzeichnis wp-content/plugins am und speicher darin eine PHP-Datei z.B. namens index.php mit folgendem Inhalt:

<?php 
/* Plugin Name: Seitenspezifisches Plugin */

// Noindex Box
// =======================

// Noindex im Head-Bereich ausgeben
function noindex_im_head(){
    if ( noindex_box__get_meta( 'noindex_box' ) ) {
        wp_no_robots();
    }
}
add_action('wp_head','noindex_im_head');

// Noindex Box: get_post_meta()
function noindex_box__get_meta( $value ) {
    global $post;
    $field = get_post_meta( $post->ID, $value, true );
    if ( ! empty( $field ) ) {
        return is_array( $field ) ? stripslashes_deep( $field ) : stripslashes( wp_kses_decode_entities( $field ) );
    } else {
        return false;
    }
}

// Noindex Box: add_meta_box()
function noindex_box__add_meta_box() {
    add_meta_box(
        'noindex_box_-noindex',
        __( 'Indexierung', 'noindex_box_' ),
        'noindex_box__html',
        'post',
        'side',
        'default'
        );
}
add_action( 'add_meta_boxes', 'noindex_box__add_meta_box' );

// Noindex Box: 'noindex_box__html'
function noindex_box__html( $post) {
        wp_nonce_field( '_noindex_box__nonce', 'noindex_box__nonce' ); ?>
<p><input type="checkbox" name="noindex_box" id="noindex_box" value="noindex" <?php echo ( noindex_box__get_meta( 'noindex_box' ) === 'noindex' ) ? 'checked' : ''; ?>>
<label for="noindex_box"><?php _e( 'Beitrag nicht indexieren', 'noindex_box_' ); ?></label> </p><?php
}

// Noindex Box: update_post_meta()
function noindex_box__save( $post_id ) {
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
        if ( ! isset( $_POST['noindex_box__nonce'] ) || ! wp_verify_nonce( $_POST['noindex_box__nonce'], '_noindex_box__nonce' ) ) return;
        if ( ! current_user_can( 'edit_post', $post_id ) ) return;

        if ( isset( $_POST['noindex_box'] ) )
               update_post_meta( $post_id, 'noindex_box', esc_attr( $_POST['noindex_box'] ) );
        else
               update_post_meta( $post_id, 'noindex_box', null );
}
add_action( 'save_post', 'noindex_box__save' );

Nach der Aktivierung des Plugins findest du im Bearbeitungsbereich die Meta Box Indexierung, mit der du per Klick den Beitrag aus den Suchmaschinen fernhalten kannst:

Links