/ / Wordpress Admin Panel Search überschreiben - PHP, WordPress, Suche

Override Wordpress Admin Panel Search - PHP, WordPress, Suche

Ich versuche, Post - Meta in die Liste aufzunehmenWordPress Admin Panel Suche. Ich habe eine erneute Suche durchgeführt und festgestellt, dass ich den Filter "pre_get_posts" verwenden kann, um das Post-Meta in der Abfrage festzulegen. Also habe ich den folgenden Code geschrieben

 function custom_search_query( $query ) {
if( is_admin() && $query->is_search) {
$custom_fields = array(
// put all the meta fields you want to search for here
["key" => "property-ref-code", "compare" => "LIKE"],
["key" => "property-status", "compare" => "="],
["key" => "price", "compare" => "="],
["key" => "rent-price", "compare" => "="],
["key" => "bedrooms", "compare" => "="],
);

$meta_query = $query->get("meta_query");

if (empty($meta_query))
{
$meta_query = array();
}
$meta_query[] = array("relation" => "OR");
foreach($custom_fields as $cf) {

$meta_query[] = array(
"key" => $cf["key"],
"value" => $query->query_vars["s"],
"compare" => $cf["compare"],
);
}
$query->set("meta_query", $meta_query);
}

}
add_filter( "pre_get_posts", "custom_search_query");

Dieser Code gibt jetzt nicht nur nichts zurückaber es bricht auch die WordPress-Suche. Was ich meine. Wenn Sie diesen Code deaktivieren, können Sie nach dem Titel des Beitrags suchen. Falls vorhanden, werden einige Ergebnisse zurückgegeben. Wenn Sie dann den Code aktivieren und nach dem Post-Titel suchen, wird nichts zurückgegeben. Grundsätzlich möchte ich Objekte nach Preis, Referenzcode usw. suchen, die Postmetafelder sind, die ich gemacht habe. Kann mir jemand helfen, die WordPress-Suche zu erweitern, wenn ich nach einer zu durchsuchenden Eigenschaft und den angegebenen meta_keys suche

Vielen Dank

Antworten:

-1 für die Antwort № 1

Das Problem könnte sein, dass if (empty($meta_query_args))Gibt immer true als zurück $meta_query_args sind nicht definiert. So werden die eigentlichen meta_queries aus der Suche entfernt.


-1 für die Antwort № 2
function extend_admin_search( $query ) {

// Extend search for document post type
$post_type = "document";
// Custom fields to search for
$custom_fields = array(
"_file_name",
);

if( ! is_admin() )
return;

if ( $query->query["post_type"] != $post_type )
return;

$search_term = $query->query_vars["s"];

// Set to empty, otherwise it won"t find anything
$query->query_vars["s"] = "";

if ( $search_term != "" ) {
$meta_query = array( "relation" => "OR" );

foreach( $custom_fields as $custom_field ) {
array_push( $meta_query, array(
"key" => $custom_field,
"value" => $search_term,
"compare" => "LIKE"
));
}

$query->set( "meta_query", $meta_query );
};
}

add_action( "pre_get_posts", "extend_admin_search" );