आईडी द्वारा व्यवस्थापक में खोज पोस्ट


10

मैं आईडी द्वारा पोस्ट के माध्यम से खोज करने का एक तरीका ढूंढ रहा हूं, अधिमानतः कस्टम पोस्ट प्रकारों के समर्थन के साथ। मैं उम्मीद कर रहा था कि इस कार्यक्षमता को सक्षम करने वाला एक प्लगइन होगा, लेकिन मैं कुछ भी खोजने में विफल रहा हूं। किसी भी विचार बहुत सराहना की जाएगी, धन्यवाद।


क्या आप बता सकते हैं कि आप आईडी द्वारा खोज का क्या मतलब है, हर पोस्ट में एक अद्वितीय आईडी है, यह खोज संभवतः किसी एकल परिणाम से अधिक कैसे प्राप्त कर सकती है?
t31os

@ t31os एक एकल परिणाम वही है जो मुझे चाहिए :)। मैं व्यवस्थापक बैकएंड में आईडी द्वारा पदों का पता लगाने में सक्षम होने का उल्लेख कर रहा हूं। यदि आप domain.com/wp-admin/edit.php पर जाते हैं, तो आपके पास शीर्ष पर एक खोज क्षेत्र है, और आप आसानी से पोस्ट शीर्षकों के माध्यम से खोज कर एक पोस्ट का पता लगा सकते हैं। मुझे वही करने में सक्षम होना चाहिए, लेकिन आईडी का उपयोग करना। कहते हैं, '1343' दर्ज करें, 'खोज' दबाएँ, पोस्ट # 1343 प्राप्त करें।
परेरा

यह फ्रंटएंड खोज के लिए कैसे काम करता है?
क्रिसो

जवाबों:


13

यकीन नहीं है कि मैं समझता हूं कि आप आईडी द्वारा क्वेरी क्यों करना चाहते हैं, लेकिन यह कहा कि यह एक हैकरी तरह से संभव है (मुझे यह तरीका पसंद है क्योंकि यह सरल है)।

add_action( 'parse_request', 'idsearch' );
function idsearch( $wp ) {
    global $pagenow;

    // If it's not the post listing return
    if( 'edit.php' != $pagenow )
        return;

    // If it's not a search return
    if( !isset( $wp->query_vars['s'] ) )
        return;

    // If it's a search but there's no prefix, return
    if( '#' != substr( $wp->query_vars['s'], 0, 1 ) )
        return;

    // Validate the numeric value
    $id = absint( substr( $wp->query_vars['s'], 1 ) );
    if( !$id )
        return; // Return if no ID, absint returns 0 for invalid values

    // If we reach here, all criteria is fulfilled, unset search and select by ID instead
    unset( $wp->query_vars['s'] );
    $wp->query_vars['p'] = $id;
}

आप सभी तब नियमित रूप से खोज बॉक्स का उपयोग करते हुए खोज करते हैं #जो संख्यात्मक आईडी के एक (हैश) उपसर्ग का उपयोग करता है ।

#123

.. 123 की आईडी के साथ पोस्ट वापस करें।

मुझे यकीन है कि ऐसा करने के लिए और अधिक जटिल मार्ग हो सकते हैं, लेकिन मुझे इस दृष्टिकोण के साथ कोई समस्या नहीं दिखती है, जब तक कि आपके पास बहुत सारे पद नहीं हैं जिनके शीर्षक हैश से शुरू होते हैं (लेकिन आप हमेशा हैश की अदला-बदली कर सकते हैं) एक और चरित्र)।

उम्मीद है की वो मदद करदे। :)


@ t310s यह काम करता है, बहुत बहुत धन्यवाद! एकमात्र (हालांकि विशुद्ध रूप से कॉस्मेटिक) मुद्दा मुझे यह है कि मुझे जो खोज परिणाम मिल रहे हैं उनमें सबसे ऊपर है: "के लिए खोज परिणाम" - जबकि "# 123" के लिए खोज परिणाम आदर्श होंगे। अन्यथा यह वही है जो मुझे चाहिए था, फिर से धन्यवाद।
पाइरेरा

यह क्वेरी से ठीक पहले खोज शब्दों को अनसुना करने का एक दुर्भाग्यपूर्ण पक्ष-प्रभाव है, लेकिन अब मुझे edit.php पर एक और नज़र आ गई है मैं एक आसान सुधार देख सकता हूं ... :) unset()निम्नलिखित के लिए कॉल अपडेट करें .. unset( $wp->query_vars['s'], $_GET['s'] );और खोज शब्द खोज गायब हो जाएगा जब आईडी खोज कर रहा है .. ps मदद करने के लिए खुश .. :)
t31os

दिन में बहुत देर हो गई लेकिन मैं इस पोस्ट पर ठोकर खा गया और get_search_queryफ़िल्टर में हुक करके ... के लिए खोज परिणामों को फिर से आबाद करना संभव है । add_filter( 'get_search_query', function() { return $_GET['s']; } );
माइक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.