it-swarm.com.de

Wie kann ich Bilder (mit einer Miniaturansicht) in den Suchergebnissen anzeigen lassen?

Die Kurzfassung

Ich habe eine Wordpress-Site (Gazette Theme Base) mit vielen Bildmedien erstellt. Alle haben Beschreibungen, Bildunterschriften und Titel, werden jedoch nicht in den Suchergebnissen angezeigt. mit Relevanssi konnte ich deren Titel und Beschreibung erscheinen lassen, aber es wurde kein Bild gezeigt! Wie kann ich dafür sorgen, dass Bildmedien in den Suchergebnissen mit Bildminiaturen angezeigt werden?

Kontext:

Ich habe eine Produktportfolio-Website für einen Schmied erstellt. Jede Seite hat mehrere Bildergalerien: Zum Beispiel hat "Benutzerdefinierte Teile" verschiedene Arten von Messern, Schwertern und anderen Teilen mit eindeutigen Namen, "Achsen" hat verschiedene Standardachsen, die er produziert, und so weiter. Da Kunden nach einer bestimmten Beschreibung suchen, ohne zu wissen, wo sie lebt, werden sie wahrscheinlich viel suchen. Ich habe jedoch festgestellt, dass die Standardsuche von Wordpress nicht sehr hilfreich ist und Bildmedien vollständig ausschließt. Wenn ich zum Beispiel nach "Damaskus" suche, erhalte ich keine Ergebnisse, obwohl die Beschriftung, Beschreibung und der Titel Dutzende von Bildern mit Damaskus enthalten! Ich habe Relevanssi installiert, wodurch alle relevanten Medien in den Suchergebnissen angezeigt werden, aber keines der Bilder wird tatsächlich angezeigt:

 enter image description here 

Wenn bei der Suche ein Beitrag, eine Seite oder ein anderes Element mit einem ausgewählten Bild gefunden wird, wird die Miniaturansicht des Bildes angezeigt. Da Bilder nicht über dieses Feld verfügen (scheinen), weiß ich nicht, wie sie eine Miniaturansicht anzeigen sollen. Ich kenne die Wordpress-API einfach nicht gut genug, um zu wissen, wo ich suchen oder was ich tun soll. Welche PHP Aufrufe brauche ich, um diese Bilder erscheinen zu lassen, oder gibt es ein Plugin, das genau das macht, wonach ich suche? (Ich bin kein Webentwickler, aber ich habe einen softwaretechnischen Hintergrund und einige grundlegende Weberfahrungen.)

Danke im Voraus!

1
Dylan Knowles

Dies muss in der Suchergebnisvorlage Ihres Themas behandelt werden. Wenn das Thema von der Stange ist, werden Miniaturbilder für Anhänge wahrscheinlich nicht unterstützt, da - wie Sie erfahren haben - Anhänge normalerweise nicht in den Suchergebnissen angezeigt werden.

Dies liegt daran, dass in einem normalen Thema jedes Ergebnis die Funktion the_post_thumbnail() verwendet, um die Miniaturansicht anzuzeigen. Unter der Haube ist das abgebildete Bild selbst ein Pfosten vom Anbau-Typ. Diese Funktion ermittelt die ID des ausgewählten Bildes des Posts und verwendet diese ID in wp_get_attachment_image() , die das Bild/die Miniaturansicht für einen Anhang ausgibt.

Da Anhangs-Posts keinausgewähltes Bild haben, da es sich bereits um Anhänge handelt, zeigt diese Funktion nichts an.

Um das Bild für einen Anhangpost anzuzeigen, muss die Vorlage daher prüfen, ob es sich bei dem Post um einen Anhang handelt. Überspringen Sie in diesem Fall the_post_thumbnail() und wechseln Sie direkt zu wp_get_attachment_image() mit der ID des Posts. Sie können an diesem Beispiel sehen, dass auf der Anhangsvorlage das Bild angezeigt wird.

In der Praxis würde dies ungefähr so ​​aussehen:

if ( get_post_type() === 'attachment' ) {
    echo wp_get_attachment_image( get_the_ID(), 'large' );
} else {
    the_post_thumbnail( 'large' );
}

Die genaue Bildgröße , die anstelle von 'large' verwendet werden soll, hängt davon ab, was Ihr Design bereits verwendet.

Dazu müssten Sie Ihre Designdateien ändern, und die genaue Datei hängt vom ursprünglichen Design ab. Sie müssen Ihre Designdateien mit der Vorlagenhierarchie abgleichen um festzustellen, welche Dateien tatsächlich verwendet werden. Um welche Datei es sich auch handelt, Sie sollten Ihre Änderungen vornehmen, indem Sie ein Child Theme erstellen. Auf diese Weise wird sichergestellt, dass die Änderung vor Aktualisierungen Ihres Themas geschützt ist, bei denen normalerweise alle Änderungen gelöscht werden.

Eine andere Methode, bei der Vorlagen nicht geändert werden müssen (Sie müssen jedoch ein untergeordnetes Design oder ein benutzerdefiniertes Plug-in erstellen, um den Code einzufügen), ist das Filtern der Anforderung für die Post-Thumbnail-ID.

Tiefgehend verwendet the_post_thumbnail()get_post_meta( $post->ID, '_thumbnail_id', true );, um die ID des Anhangs abzurufen, der das für den Beitrag vorgesehene Bild ist. Sie können dies so filtern, dass, wenn WordPress diesen Metawert für einen Beitrag anfordert und der Beitrag ein Anhang ist, stattdessen die ID des Anhangs zurückgegeben wird.

Sie können dies mit dem get_post_metadata Filter tun:

function wpse_300128_attachment_post_thumbnail( $value, $post_id, $meta_key, $single ) {
    if ( get_post_type( $post_id ) === 'attachment' && $meta_key === '_thumbnail_id' ) {
        return $single ? $post_id : array( $post_id );
    }
}
add_filter( 'get_post_metadata', 'wpse_300128_attachment_post_thumbnail', 10, 4 );

Wenn dieser Filter aktiviert ist, erhält WordPress jedes Mal, wenn es versucht, die Miniaturbild-ID eines Anhangposts abzurufen, die ID. Der Rückgabewert ist entweder nur die ID oder ein Array, das die ID basierend auf dem Wert von $single enthält. Dies ist so, dass das Ergebnis das erwartete Format ist, unabhängig davon, ob der ursprüngliche Aufruf $single auf true oder false gesetzt hat.

2
Jacob Peattie