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.
Mit Hilfe 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«-Tabelle
function 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 Ausgabe
function 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 :)