Suchfilter über Plugin erstellen

Ich benutze WordPress für Immobilien-Projekt, dafür verwende ich ein Thema zusammen mit einem Plugin (Immobilien Real Estate) zu Immobilien. Also ich glaube, dass dies nicht neben dem Punkt ist … Meine Frage ist einfach, ich habe mehrere benutzerdefinierte meta_key wie property_baths (Badezimmer), property_beds (Zimmer) und etc … Was ich tun möchte, ist ein Filter erstellen, ein Erweiterte Suche im WordPress-Management, im Tab “Posts”. Ich brauche auch, dass diese Suche kumulativ sein muss, zum Beispiel wenn die “Badezimmer” und die “Räume” beide gefüllt sind, sollten Beiträge entsprechend gefiltert werden, was gefüllt wurde.

Nach vielem Suchen habe ich einen Weg gefunden, dies zu tun, indem ich ein Plugin erstelle, aber den Code, den ich hier habe, es gibt nur 1 Meta_Schlüssel mit deinem Meta_Wert, ich brauche es um mehrere Meta_Key mit ihren Werten zu übergeben …

Was ich bisher habe ist folgendes:

add_action( 'restrict_manage_posts', 'wpse45436_admin_posts_filter_restrict_manage_posts' ); function wpse45436_admin_posts_filter_restrict_manage_posts(){ $type = 'property'; if (isset($_GET['post_type'])) { $type = $_GET['post_type']; } //only add filter to post type you want if ('property' == $type){ //change this to the list of values you want to show //in 'label' => 'value' format $values = array( 'Banheiros' => 'property_baths', 'Quartos' => 'property_beds' ); $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:''; foreach ($values as $label => $value) { printf ( '', $value, $value == $current_v? ' value="'.$current_v.'"':'', $label ); } } } add_filter('parse_query', 'wpse45436_posts_filter'); function wpse45436_posts_filter( $query ){ global $pagenow; $type = 'property'; if (isset($_GET['post_type'])) { $type = $_GET['post_type']; } if ( 'property' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['property_baths']) && $_GET['property_baths'] != '') { $query->query_vars['meta_key'] = 'property_baths'; $query->query_vars['meta_value'] = $_GET['property_baths']; } } 

Mit diesem Code (plugin) kann ich nur 1 meta_key filtern, das muss ich so machen, dass ich mehrere “meta_keys” mit ihren Werten verwenden kann.

Ich habe versucht, Schleife, ich versuchte Array, aber nichts hat funktioniert. Ich hoffe jemand kann mir helfen … Danke im Voraus …

Solutions Collecting From Web of "Suchfilter über Plugin erstellen"

Sie können mehr als einen Filteraufruf hinzufügen, sodass jeder Ihrer benutzerdefinierten meta_keymeta_key in einem separaten Code verarbeitet werden kann und bei der Ausführung die Abfrage kumulativ anpasst.

Sehen Sie sich vielleicht den Filter pre_get_posts und nicht parse_query (obwohl die von mir vorgeschlagene Lösung in jedem Fall funktionieren könnte). pre_get_posts gibt Ihnen Zugriff auf die aktuelle Abfrage, bevor es von WordPress ausgeführt wird, und Sie begrenzen die Posts, die die Abfrage von der database pre_get_posts .

Ich habe diesen Code nicht getestet: Es ist nur eine Bearbeitung hier gegen Ihren Code, um Ihnen zu zeigen, wie Sie damit umgehen könnten (überprüfen Sie daher die Syntax für Fehler).

Sie würden am Ende mit so etwas enden:

 add_filter('pre_get_posts', 'wpse45436_property_baths_posts_filter'); function wpse45436_property_baths_posts_filter( $query ){ global $pagenow; $type = 'property'; if (isset($_GET['post_type'])) { $type = $_GET['post_type']; } if ( 'property' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['property_baths']) && $_GET['property_baths'] != '') { $query->query_vars['meta_key'] = 'property_baths'; $query->query_vars['meta_value'] = $_GET['property_baths']; } } add_filter('pre_get_posts', 'wpse45436_property_beds_posts_filter'); function wpse45436_property_beds_posts_filter( $query ){ global $pagenow; $type = 'property'; if (isset($_GET['post_type'])) { $type = $_GET['post_type']; } if ( 'property' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['property_beds']) && $_GET['property_beds'] != '') { $query->query_vars['meta_key'] = 'property_beds'; $query->query_vars['meta_value'] = $_GET['property_beds']; } } 

Weitere Informationen zum pre_get_posts Filter finden Sie im Codex