कस्टम टैक्सोनॉमी और कस्टम फ़ील्ड के लिए फ़िल्टर के साथ उन्नत खोज फ़ॉर्म


30

मैं एक विशिष्ट कस्टम पोस्ट प्रकार के लिए एक उन्नत खोज फ़ॉर्म बनाना चाहता हूं, जिसमें कस्टम पोस्ट प्रकार कस्टम फ़ील्ड, कस्टम टैक्सोनॉमी, और एक अलग कस्टम पोस्ट प्रकार के गुण (फ़ील्ड और टैक्सोनोमी) के लिए फ़िल्टर हैं, जो पहले लिंक होंगे कस्टम रिलेशनशिप फ़ील्ड का उपयोग करके पोस्ट प्रकार।

मैंने हाल ही में WP कस्टम पोस्ट प्रकारों, फ़ील्ड्स और टैक्सोनॉमीज़ के साथ शुरुआत की है, मैं इसे अभी तक प्यार करता हूं, लेकिन इसे सबसे अच्छा बनाने के लिए मैं इसे ठीक से खोजना चाहूंगा। क्या मुझे इसे मैन्युअल रूप से करने की आवश्यकता है? यदि हां, तो कैसे?

पुनश्च। यदि यह मायने रखता है, तो मैं प्लगइन्स का उपयोग कर रहा हूं: उन्नत कस्टम फ़ील्ड और कस्टम पोस्ट प्रकार UI

नीचे मैंने एक उदाहरण दिया है कि फ़िल्टरिंग कैसे दिखेगी और यह ऊपर के प्रकारों से कैसे संबंधित हो सकता है।

कस्टम फ़ील्ड और कस्टम टैक्सोनॉमी द्वारा फ़िल्टर किए गए वर्डप्रेस कस्टम खोज फ़ॉर्म


यदि किसी को ब्रैडी के समाधान को ऊपर लागू करने में कठिनाई हो रही है (जैसा कि मैंने किया था) यहां एक संकेत है: ऐसा प्रतीत होता है कि वर्डप्रेस को सत्र डेटा पास करने में कुछ समस्याएं हैं, इसलिए आपको इसे ठीक से काम करने के लिए कुछ अतिरिक्त करना होगा। यहाँ मुद्दों पर चर्चा की गई है: frank-verhoeven.com/using-session-in-wordpress मेरे लिए पीटर वूस्टर के "सिंपल सेशन सपोर्ट" प्लगइन को स्थापित करने के लिए इस ट्रिक को किया। पोस्ट के टिप्पणी अनुभाग में प्लगइन का लिंक है।
स्टीव

जवाबों:


16

मुझे लगता है कि कुछ इस तरह से आप खुद लिख रहे होंगे।

पर एक नज़र डालें: http://www.catalysthomes.co.uk/homes-for-sale/

गुण CPT में लोड किए गए हैं और साइडबार में मेरी अपनी कस्टम खोज है। उसमें से कई चीजों को खोजना जैसे कि टैक्सोनोमी, कस्टम फील्ड और ऑर्डर ऑफ डेट प्राइस आदि।

तो मैं इसे कैसे प्राप्त करूं? मैं प्रपत्र को एक पेज टेम्प्लेट में प्रस्तुत करता हूं और वहां से मैं पोस्ट डेटा से निपटता हूं और खोज मानदंडों के आधार पर एक नया WP_query बनाता हूं। मैं सत्रों का उपयोग खोज चर को संग्रहीत करने के लिए करता हूं ताकि मैं परिणामों को पृष्ठांकित कर सकूं।

WP_Query बहुत शक्तिशाली है। देखिए: http://codex.wordpress.org/Class_Reference/WP_Query

वहां आप meta_queryकई कस्टम फ़ील्ड को क्वेरी करने के लिए उपयोग कर सकते हैं और tax_queryअपनी टैक्सोनॉमी को क्वेरी करने के लिए उपयोग कर सकते हैं , इसके अलावा और भी बहुत कुछ है। नीचे बताया गया है कि कैसे मेरा निर्माण आपको एक विचार देने के लिए किया गया है।

टेम्पलेट फ़ाइल:

  <?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"); ?>

कच्चे परिणाम

<?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\"";
?>

खोज परिणाम

<?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'
);
?>

सूची लेआउट पोस्ट अंश और जानकारी दिखाने के लिए बस एक मानक WP पाश।


इस उदाहरण के लिए हाय ब्रैडी, Thx। क्या मैं आपसे, यदि संभव हो तो, प्रपत्र साझा करने के लिए कह सकता हूं? इसमें, आपका URL इसे किस पर सबमिट कर रहा है?
सालोकिन

@ सालासिन - यह जानकारी उत्तर में दिए गए URL पर पृष्ठ के स्रोत को देखकर प्राप्त की जा सकती है
ब्रैडी

thx ब्रैडी, पेज टेम्पलेट का इतना यूआरएल?
सालोसिन

फ़ॉर्म उत्प्रेरित हो गया है ।uk आप स्रोत देख सकते हैं और देख सकते हैं कि फॉर्म कैसे काम करता है
ब्रैडी

क्या आप यह देखने के लिए जांच करते हैं कि क्या कस्टम टैक्सोनॉमी के पास कस्टम फील्ड के रूप में उनके साथ पोस्ट हैं? आप वास्तव में खोज फ़ॉर्म को कैसे पॉप्युलेट कर रहे हैं? @ ब्रैडी धन्यवाद
फिल हडसन

2

Relevanssi के साथ मिलकर Taxonomy Picker प्लगइन आज़माएं। हत्यारा संयोजन।

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


यह पोस्ट पोस्ट रिश्तों को ध्यान में नहीं रखता है, यह मेरी समस्या का कठिन हिस्सा है। यह टैक्सोनॉमी द्वारा पोस्ट्स को फ़िल्टर करने के लिए आसान है, मुझे उन्हें संबंधित पोस्ट के टैक्सोनॉमी (या कस्टम फ़ील्ड) को फ़िल्टर करने की आवश्यकता है।
पैक्स

0

Relevanssi प्लगइन पर एक नज़र डालें, यह वही कर सकता है जो आप देख रहे हैं: http://wordpress.org/extend/plugins/relevanssi/


यह उस दृष्टिकोण के अनुकूल नहीं है जिसकी मुझे ज़रूरत है (विशिष्ट फ़िल्टर के साथ), लेकिन यह एक बहुत ही दिलचस्प प्लगइन है, यह डिफ़ॉल्ट खोज फ़ंक्शन के लिए एक महान प्रतिस्थापन की तरह दिखता है, इसे इंगित करने के लिए बहुत बहुत धन्यवाद।
पाक्स

0

यदि किसी को ब्रैडी के समाधान को लागू करने में कठिनाई हो रही है (जैसा कि मैंने किया था) यहां एक संकेत है: ऐसा प्रतीत होता है कि वर्डप्रेस को पासिंग सत्र डेटा के साथ कुछ समस्याएं हैं इसलिए आपको इसे ठीक से काम करने के लिए कुछ अतिरिक्त करना होगा। यहां मुद्दों पर चर्चा की जाती है

फ़ंक्शन में।

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

अपने टेम्पलेट में:

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

मेरे लिए पीटर वूस्टर के " सिंपल सेशन सपोर्ट " प्लगइन को इंस्टॉल करने के लिए ट्रिक आई।


1
हाय स्टीव। यहाँ अपना पहला उत्तर पोस्ट करने के लिए धन्यवाद। खुशी है कि आप WPSE पर हैं। भविष्य के संदर्भ के लिए, उत्तर बाहरी लिंक पर पूरी तरह से नहीं आने चाहिए। यदि लिंक अक्षम है, तो आपका जवाब सौम्य हो जाता है। क्या आप नमूना प्रासंगिक कोड स्निपेट के एक जोड़े के साथ अपने जवाब को अपडेट करने का मन करेंगे?
ब्रायन फीगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.