2016-10-07 3 views
0

ich diese sehr kurze Funktion, die verstehe ich nicht, und der Kommentar ist lächerlich:Diese Verwendung von posts_where() Funktion ist nicht klar

// This function makes the meta query work 
function my_posts_where($where) { 
    $where = str_replace("meta_key = 'bonuses_%", "meta_key LIKE 'bonuses_%", $where); 
    return $where; 
} 
add_filter('posts_where', 'my_posts_where'); 

Die Meta betreffende Abfrage ist eine Standard-WP-Abfrage mit array_push($args['meta_query'],$bonusesArgs); drängen $ bonusArgs (die Meta-Abfrage) hinein.

Ohne die Funktion my_posts_where funktioniert die Meta-Abfrage nicht. Und ich habe keine Ahnung warum (und auch nicht der Entwickler anscheinend ...!)

Ich hoffe, dass jemand die my_posts_where Funktion erklären kann - was es tut, habe ich überall hingeschaut und kann keinen Sinn machen davon.

Antwort

1

Nun .. alles wie es scheint ist zu tun, die Meta-Abfrage in einem anderen wieder aufzubauen, aber anstelle einer direkten =

wie eine Suche nach dem Wert in der Zeichenfolge durchführt, anstelle einer direkten Gleichheit mit LIKE .

So scheint es, dass diese Funktion völlig überflüssig ist, wenn die ursprüngliche Meta-Abfrage nur den compare = 'LIKE' Wert verwendet.

Aber ohne den gesamten Code zu sehen, wäre es wirklich schwer zu sagen, welche Auswirkungen das haben könnte. Aber egal, was es gibt, gibt es bessere Möglichkeiten, mit einem Abfrageobjekt zu interagieren, als ein seltsames str_replace auf seinen Daten auszuführen.

Verwandte Themen