Benutzerdefinierte Felder (Custom Fields) in die Suche von WordPress integrieren
In diesem Artikel archivieren wir ein Snippet, mit dem ihr Benutzerdefinierte Felder (Custom Fields) in die WordPress-Suche integrieren könnt.
Mithilfe der sog. Benutzerdefinierten Felder (Custom Fields) kann der WordPress-Editor um zusätzliche Eingabefelder erweitert werden. Leider werden die Inhalte der Custom Fields bei der WordPress-Suche ignoriert und eventuell relevante Ergebnisse folglich nicht in den Suchergebnissen angezeigt. In diesem Beitrag archivieren wir ein Snippet, das Custom Fields zur WordPress-Suche hinzufügt.
Custom Fields in die Suche integrieren
Mit folgendem Snippet könnt ihr benutzerdefinierte Felder der WordPress-Suche hinzufügen. Fügt folgenden PHP-Code in eure functions.php ein:
<?php
// Verknüpfe Beiträge mit der »postmeta«-Tabellefunction kb_search_join( $join ) {global $wpdb;
if ( is_search() ) {$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';}return $join;}add_filter('posts_join', 'kb_search_join' );// Ändere den »Search Query« mit »posts_where« function kb_search_where( $where ) { global $pagenow, $wpdb;
if ( is_search() ) { $where = preg_replace ( "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where ); }
return $where; } add_filter( 'posts_where', 'kb_search_where' );
// Verhindere doppelte Ausgabefunction kb_search_distinct( $where ) {global $wpdb;
if ( is_search() ) {return "DISTINCT";}
return $where;}add_filter( 'posts_distinct', 'kb_search_distinct' );
?>
Das hat meinen Tag gerettet, Vielen Dank.
auch neulich gefunden, schön wenn man ein plugin über bord werfen kann :)