किसी पृष्ठ पर ACF के साथ बनाए गए फ़ील्ड के कस्टम के सभी मान प्रदर्शित करें


9

मैं कस्टम फ़ील्ड बनाने के लिए उन्नत कस्टम फ़ील्ड / ACF का उपयोग कर रहा हूं । उनमें से एक चेकबॉक्स की एक सूची है जो कुछ विकल्प ( विकल्प 1, विकल्प 2, विकल्प 3 ...) प्रदर्शित करती है

अब मैं इस क्षेत्र के सभी विकल्पों को एक अलग पृष्ठ पर दृश्यपटल पर प्रदर्शित करना चाहता हूँ जैसे:

विकल्प:
- विकल्प 1
- विकल्प 2
- विकल्प 3
- ...

मैं ACF से कुंजियों के साथ सभी विकल्पों को कैसे पुनः प्राप्त कर सकता हूं?


कृपया थोड़ा और स्पष्ट करें कि आप क्या हासिल करने की कोशिश कर रहे हैं। ACF फ्रंटएंड पर कस्टम फ़ील्ड के आउटपुट को दिखाने के लिए बनाया गया है, न कि फ्रंटएंड इनपुट की अनुमति देने के लिए।
सिकीहिपि

जवाबों:


16

get_field_objectACF समारोह एक विशेष क्षेत्र के लिए जानकारी और विकल्प प्राप्त करने के लिए इस्तेमाल किया जा सकता।

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

फ़ील्ड कुंजी

एक बार आपके पास चाबी होने के बाद, आप फ़ील्ड ऑब्जेक्ट को लोड कर सकते हैं और इसके मान को आउटपुट कर सकते हैं:

$field_key = "field_5039a99716d1d";
$field = get_field_object($field_key);

if( $field )
{
    echo '<select name="' . $field['key'] . '">';
        foreach( $field['choices'] as $k => $v )
        {
            echo '<option value="' . $k . '">' . $v . '</option>';
        }
    echo '</select>';
}

यह अच्छा होगा यदि हम नाम का संदर्भ दे सकते हैं, जितनी आसानी से कुंजी का उपयोग करना है। इस तरह से अगर यह एक प्लगइन में है और कभी भी इसे सक्षम करने के साथ वर्डप्रेस के एक और उदाहरण पर परीक्षण करने की आवश्यकता है, तो आपको कुंजी का शिकार करने और इसे फिर से बदलने की ज़रूरत नहीं है क्योंकि आपके पर्यावरण बी में
klewis

0

यदि कोई चेकबॉक्स चेक किया गया था, तो आप कुछ आउटपुट करने का प्रयास कर रहे हैं:

<?php if(in_array('news', get_field('checkbox') )): ?>
    <h1>News was ticked!</h1>
<?php endif; ?>

यदि आप चेक किए गए विकल्पों की सूची प्रदर्शित करने का प्रयास कर रहे हैं, तो इसका उपयोग करें:

<p>Categories: <?php get_field('checkbox'); ?></p>

यह आपको मूल्यों की एक सरणी देगा जिसे आप एक foreachघोषणा के साथ प्रबंधित कर सकते हैं । उपयोग करने the_field('checkbox')से आपको विकल्पों में से एक अल्पविराम से अलग स्ट्रिंग मिल जाएगी जिसे आप विभाजित कर सकते हैं।

मेरा सुझाव है कि आप ACF की साइट पर जाएं और प्रलेखन के माध्यम से जाएं। इस प्रकार के अधिकांश प्रश्नों का उत्तर वहां विस्तार से दिया जाएगा, और डेवलपर अपने समर्थन मंचों में भी सक्रिय है।

संपादित करें: यदि आप एक गतिशील क्वेरी बनाने के लिए एक पृष्ठ में उपलब्ध विकल्पों के आउटपुट की सूची चाहते हैं, तो मेरे पास बस बात है। यह एक टुकड़ा है जिसे मैंने कल एक दिए गए कस्टम फ़ील्ड कुंजी (ACF का उपयोग करके) से मेटा मानों की सूची खींचने के लिए बनाया है। मैंने इसे आपके लिए काफी सामान्य बना दिया है। अजाक्स अनुरोध को संभालने के लिए जेएस का एक और हिस्सा है, और परिणामी पदों को आउटपुट करने वाले php के बजाय जटिल टुकड़ा। मैं वास्तव में उन लोगों को फिर से नहीं लिख सकता - जेएस मानक WP फॉरवर्ड-अजाक्स कॉल / प्रतिक्रिया है, और पीएचपी उन 12 अलग-अलग एसीएफ क्षेत्रों के लिए सशर्त जांच का एक गड़बड़ है जो हम प्रदर्शित कर रहे हैं (जिनमें से 2 पुनरावर्तक हैं)। मूल बातें यह कोड यहाँ हैं, बटन onClickएक अलग JS फ़ाइल में ajax फ़ंक्शन को कॉल करता है, और ajax फ़ंक्शन के लिए php स्वयं अनिवार्य रूप से क्वेरी के लिए तर्कों की एक सरणी सेट करता है,$selectedOptionया $_POST['option']मेटा_वेल्यू के रूप में। यह एक को खिलाया जाता है new WP_Query( $args );, जो बाद में एक लूप में उपयोग किया जाता है, जिसके उत्पादन को वापस js के माध्यम से add_action('wp_ajax_the_ajax_hook', 'fetch_option_list');और को खिलाया जाता है add_action( 'wp_ajax_nopriv_the_ajax_hook', 'fetch_option_list' ); //for non logged-in users

 // Get list of meta_values for given meta_key and post_type (page, post, custom post type)
 function meta_list($key = '', $type = '', $status = 'publish'){
 global $wpdb;
    $r = $wpdb->get_col($wpdb->prepare( "
    SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = '%s'
    AND p.post_status = '%s'
    AND p.post_type = '%s'
    ORDER BY pm.meta_value ASC", $key, $status, $type));
    return $r;
}

 // ADD EG A FORM TO THE PAGE
 function meta_ajax_frontend(){
    $formlist = meta_list('metakey', 'posttype');
    echo '<form id="optionSelect">';
    echo '<select id="optionList" name="optionList">';
    foreach($formlist as $fl => $val) {
        echo '<option>' . $val . '</option>';
    }
    echo '</select>';
    echo '<input name="action" type="hidden" value="the_ajax_hook" />
    <input id="submit_button" value = "Search" type="button" onClick="fetch_meta();" />
    </form>
    <div id="meta_list">
    Please select an option from the list
    </div>';
 }

एमएम, अगर मैं ऐसा करता हूं, तो मैं "पोस्ट" को सौंपे गए विकल्पों को आउटपुट करूंगा, मुझे पूरी सूची के विकल्पों के रूप में "पेज" में सभी विकल्पों को दिखाने की आवश्यकता है।
बॉब

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

एक और आरोप के साथ हाय im बॉब, मुझे उनके साथ एक तरह का "मेनू" बनाने के लिए बैकएंड के विकल्पों की आवश्यकता है। मुझे लगता है कि आपका कोड पोस्ट और उन्हें सौंपे गए विकल्पों को पुनः प्राप्त करता है। जब आप पोस्ट बनाते हैं, तो मुझे बैकएंड पर दिखाई देने वाले विकल्पों की सूची की आवश्यकता होती है। मैं आपके कोड के साथ काम करता रहूंगा यह देखने के लिए कि क्या मैं कुछ पता लगा सकता हूं। थैंक्स @SickHippie
-क्रूगर

नहीं, यह उस चेकबॉक्स से चुने गए विकल्पों की सूची को खींचता है - यह कहना है, यह कहता है "यहाँ चेकबॉक्स है, ऐसे पद हैं जिन्हें मान 'विकल्प 1', 'विकल्प 2', 'विकल्प 4' निर्दिष्ट किए गए हैं और ऐसा ही है। यह शाब्दिक रूप से उस meta_key के आधार पर meta_value सूची को खींचता है। मुझे इसकी आवश्यकता एक डायनामिक सूची के लिए है, लेकिन यदि आपने एक ड्राफ्ट पोस्ट बनाई है तो सभी चेकबॉक्स चयनित होंगे यह आपके लिए एक सरणी में सभी विकल्पों को खींच लेगा। यह एक सरणी है। मैं foreachलूप का उपयोग कर रहा हूं । बाद के कार्य ajax के माध्यम से पदों की सूची लाते हैं, लेकिन मैंने उस बिट को छोड़ दिया।
सिकीहिपि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.