Erweitertes Suchformular mit Filtern für benutzerdefinierte Taxonomien und benutzerdefinierte Felder

Ich möchte ein erweitertes Suchformular für einen bestimmten benutzerdefinierten Post-Typ erstellen, mit Filtern für die benutzerdefinierten Post-Typen, benutzerdefinierte Felder, benutzerdefinierte Taxonomien und für separate benutzerdefinierte Post-Typen-Eigenschaften (Felder und Taxonomien), die Links zu den ersten sind Post-Typ mit einem benutzerdefinierten Beziehungsfeld.

Ich habe vor kurzem mit WPs benutzerdefinierte Post-Typen, Felder und Taxonomien begonnen, ich liebe es bisher, aber um das Beste daraus zu machen, würde ich gerne in der Lage sein, es richtig zu suchen. Muss ich das manuell machen? Wenn das so ist, wie?

PS. Wenn es wichtig ist, verwende ich die Plugins: Erweiterte benutzerdefinierte Felder und benutzerdefinierte Beitragstyp-Benutzeroberfläche .

Im Folgenden habe ich ein Beispiel für die functionsweise der Filterung und deren Zusammenhang mit den obigen Beitragstypen beschrieben.

Benutzerdefinierte Suchmaske für WordPress, gefiltert nach benutzerdefinierten Feldern und benutzerdefinierten Taxonomien

Solutions Collecting From Web of "Erweitertes Suchformular mit Filtern für benutzerdefinierte Taxonomien und benutzerdefinierte Felder"

Ich denke so, du würdest dich am besten selbst schreiben.

Werfen Sie einen Blick auf: http://www.catalysthomes.co.uk/homes-for-sale/

Eigenschaften werden in ein CPT geladen und ich habe meine eigene benutzerdefinierte Suche in der Seitenleiste. Von dieser Suche wird eine Reihe von Dingen wie Taxonomien, benutzerdefinierte Felder und Reihenfolge nach Datum Preis etc. gesucht.

Wie erreiche ich das? Ich übergebe das Formular an eine Seitenvorlage und von dort aus beschäftige ich mich mit den Postdaten und erstelle eine neue WP_Query basierend auf den Suchkriterien. Ich verwende Sitzungen, um die Suchvariablen zu speichern, damit ich die Ergebnisse paginieren kann.

WP_Query ist sehr mächtig. Werfen Sie einen Blick auf: http://codex.wordpress.org/Class_Reference/WP_Query

Dort können Sie mit meta_query mehrere benutzerdefinierte Felder abfragen und tax_query , um Ihre Taxonomien abzufragen, außerdem gibt es noch mehr. Im Folgenden wird beschrieben, wie meins gebaut wurde, um Ihnen eine Idee zu geben.

Vorlagendatei:

  < ?php $temp = $wp_query; $wp_query = NULL; $args = array(); ?> < ?php include("functions/Homes-for-sale/propertyrawresults.php"); ?> < ?php include("functions/Homes-for-sale/propertysearchresults.php"); ?> < ?php $args['post_type'] = "homes-for-sale"; $args['showposts'] = 10; $args['paged'] = $paged; $wp_query = new WP_Query($args); ?> < ?php include("functions/Homes-for-sale/propertylistlayout.php"); ?> 

Rohergebnisse

 < ?php if($_POST['sortby']) { $_SESSION['prop_selectedsortby'] = $_POST['sortby']; } switch($_SESSION['prop_selectedsortby']) { case "name-asc": $args['order'] = "ASC"; $args['orderby'] = "title"; break; case "name-desc": $args['orderby'] = "title"; break; case "price-asc": $args['order'] = "ASC"; $args['orderby'] = "meta_value_num"; $args['meta_key'] = "chb_homes_for_sale_specifics_fmv"; break; case "price-desc": $args['orderby'] = "meta_value_num"; $args['meta_key'] = "chb_homes_for_sale_specifics_fmv"; break; case "date-asc": $args['order'] = "ASC"; break; default: /* No need to set arguments here as wp query defaults */ break; } $selectedsortby[$_SESSION['prop_selectedsortby']] = " selected=\"selected\""; ?> 

Suchergebnisse

 < ?php if( ! empty( $_SESSION['s_property_ptype'] ) ) { $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_types_nbrs', 'value' => $_SESSION['s_property_ptype'] ); } if( ! empty( $_SESSION['s_property_development'] ) ) { $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_ofdevelopment', 'value' => $_SESSION['s_property_development'] ); } if( isset( $_SESSION['s_property_area'] ) && 0 != $_SESSION['s_property_area'] ) { $args['tax_query'][] = array( 'taxonomy' => 'areas', 'field' => 'id', 'terms' => array( (int) $_SESSION['s_property_area'] ), ); } $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_specifics_bedrooms', 'value' => $_SESSION['s_property_bedrooms_min'], 'compare' => '>=', 'type' => 'SIGNED' ); $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_specifics_bedrooms', 'value' => $_SESSION['s_property_bedrooms_max'], 'compare' => '< =', 'type' => 'SIGNED' ); $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_specifics_bathrooms', 'value' => $_SESSION['s_property_bathrooms_min'], 'compare' => '>=', 'type' => 'SIGNED' ); $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_specifics_bathrooms', 'value' => $_SESSION['s_property_bathrooms_max'], 'compare' => '< =', 'type' => 'SIGNED' ); $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_specifics_fmv', 'value' => $_SESSION['s_property_min_price'], 'compare' => '>=', 'type' => 'SIGNED' ); $args['meta_query'][] = array( 'key' => 'chb_homes_for_sale_specifics_fmv', 'value' => $_SESSION['s_property_max_price'], 'compare' => '< =', 'type' => 'SIGNED' ); ?> 

Listen-Layout Nur eine Standard-WP-Schleife zum Anzeigen von Postauszügen und Informationen.

Versuchen Sie Taxonomy Picker Plugin zusammen mit Relevanssi. Killer-Kombination.

http://www.squidoo.com/taxonomy-picker-wordpress-plugin http://wordpress.org/extend/plugins/relevanssi/

Schauen Sie sich das Relevanssi Plugin an, es könnte tun was Sie suchen: http://wordpress.org/extend/plugins/relevanssi/

Wenn jemand Schwierigkeiten damit hat, Brady’s Lösung oben zu implementieren (wie ich es getan habe), ist hier ein Hinweis: Es scheint, dass WordPress Probleme mit der Weitergabe von Sitzungsdaten hat, so dass Sie wahrscheinlich etwas extra tun müssen, damit es richtig funktioniert. Die Probleme werden hier besprochen

In functionen.php:

 function init_sessions() { if (!session_id()) { session_start(); } } add_action('init', 'init_sessions'); 

In deiner Vorlage:

 /** * Enable sessions */ if (!session_id()) session_start(); 

Für mich hat die Installation von Peter Woosters Plugin ” Simple Session Support ” den Zweck erfüllt.