Wer ACF verwendet, der baut in seine WordPress Website extra Felder ein, die im Editor gefüllt und dann auf der Website an beliebiger Stelle ausgegeben werden können. Leider werden diese Felder nicht bei der WordPress Suche berücksichtigt. Mit dem folgenden Code kannst du deine Suche aufmotzen und auch auf Felder von Advanced Custom Fields erweitern.
Inhaltsverzeichnis:
So baust du ACF Felder in die WP Suche ein
Dieser folgende Code gehört in die functions.php deines Themes (oder Child-Themes). Speichern. Fertig. Mehr ist wirklich nicht zu tun.
// Make the search to index custom /** * Extend WordPress search to include custom fields * http://adambalee.com * * Join posts and postmeta tables * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_join */ function cf_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', 'cf_search_join' ); /** * Modify the search query with posts_where * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where */ function cf_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', 'cf_search_where' ); /** * Prevent duplicates * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_distinct */ function cf_search_distinct( $where ) { global $wpdb; if ( is_search() ) { return "DISTINCT"; } return $where; } add_filter( 'posts_distinct', 'cf_search_distinct' );
Weitere Infos zum Code findest du auf der Homepage des Coders, dem ich sehr dankbar bin, dass er mir einen Shortcut zu einer optimierten Suche für eine meiner Websites geliefert hat.
Suchperformance nach Anpassung
Die Suchperformance hat bei mir ein klein wenig gelitten. Allerdings ist das nur dann relevant, wenn man wirklich viel Suchvolumen auf der Site hat. Dann müsste man den Code ggfs. noch auf Performance hin optimieren. Da die Suche aber ansonsten nicht die Performance der Site beeinflusst, ist das zu vernachlässigen.