Vergleichen Sie die Meta-Schlüsseltrennung

Ich habe einen Meta-Schlüssel namens $availability , der eine von vier Optionen haben kann, aber auch mehrere Werte, die durch eine Pipe getrennt sind: | .

Zum Beispiel könnte der Wert sein: severaltimes_week|oncetwice_month|occasionally .

Ich habe nicht den richtigen Vergleichsoperator für dieses Problem gefunden, welcher wird am besten funktionieren?

 if ( $_GET['ava1'] == "on" ) { $availability .= "severaltimes_week| "; } if ( $_GET['ava2'] == "on" ) { $availability .= "oncetwice_week| "; } if ( $_GET['ava3'] == "on" ) { $availability .= "oncetwice_month| "; } if ( $_GET['ava4'] == "on" ) { $availability .= "occasionally"; } $meta_args[] = array( 'key' => 'availability', 'value' => $availability, 'compare' => 'IN' ); 

Solutions Collecting From Web of "Vergleichen Sie die Meta-Schlüsseltrennung"

Sie können möglicherweise den LIKE Operator verwenden:

 $meta_args[] = array( 'key' => 'availability', 'value' => $availability, 'compare' => 'LIKE' ); 

Im Codex können Sie eine Liste von Vergleichsoperatoren sehen .

Alle von Ihnen aufgeführten Vergleichsoperatoren arbeiten mit ganzen Strings, außer LIKE , NOT LIKE , REGEXP , NOT REGEXP und RLIKE . Die Verwendung dieser Operatoren wird jedoch sehr ineffiziente und möglicherweise unzuverlässige Abfragen erzeugen. Sie kämpfen mit etwas von dem grundlegenden Design von MySQL mit dem, was Sie tun.

Speichern Sie Ihren “Verfügbarkeit” -Schlüssel so oft wie Sie möchten – das heißt, speichern Sie verschiedene Schlüssel in der database mit unterschiedlichen Werten und nicht als verkettete Zeichenfolge. Sie können dann diese Schlüssel / Werte mit einer Vielzahl von Operatoren nach Bedarf suchen, und zwar mit relativ effizienteren Abfragen.

Siehe auch: https://wordpress.stackexchange.com/a/88715/21376