कस्टम सूची तालिका कक्षाओं में थोक क्रियाओं को कैसे नियंत्रित किया जाता है?


9

मैं वर्डप्रेस डैशबोर्ड में प्रदर्शित करने के लिए एक कस्टम डेटा टेबल पर काम कर रहा हूं। तालिका एक प्लगइन में निर्मित डेटाबेस तालिका से आबाद होती है।

मैं इस क्षेत्र में मेरे अधिकांश कोडिंग प्रश्नों के लिए प्रदान की गई वर्डप्रेस कस्टम लिस्ट टेबल उदाहरण का उपयोग कर रहा हूं, लेकिन उदाहरण के लिए बल्क एक्शन से निपटने के लिए कुछ भी नहीं है। यहाँ प्रलेखित उदाहरण के लिए लिंक है: http://wordpress.org/extend/plugins/custom-list-table-example/

थोक क्रियाओं को संसाधित करने के लिए, उदाहरण केवल यह प्रदान करता है:

    function process_bulk_action() {

    //Detect when a bulk action is being triggered...
    if( 'delete'===$this->current_action() ) {

        wp_die('Items deleted!');
    }

}

मैं जानना चाहता हूं कि कार्रवाई के लिए चुनी गई वस्तुओं को कैसे खींचना है ताकि मैं उन्हें हटा सकता हूं या तदनुसार उनकी डेटाबेस प्रविष्टियों को संपादित कर सकता हूं।

जवाबों:


11

मान लें कि आप मानक column_cb () फ़ंक्शन का उपयोग कर रहे हैं, तो सूची तालिका $ _GET में एक सरणी में चयनित पंक्तियों की आईडी को पास कर देगी, जिसे आप सूची तालिका के कंस्ट्रक्टर में 'एकवचन' को सौंपे गए।

यहाँ एक विशिष्ट column_cb () है:

function column_cb($item){
        return sprintf(
            '<input type="checkbox" name="%1$s[]" value="%2$s" />',
            /*$1%s*/ $this->_args['singular'],  //Let's simply repurpose the table's singular label ("video")
            /*$2%s*/ $item->id             //The value of the checkbox should be the record's id
        );
    }

उदाहरण के लिए, मान लें कि मेरे पास एक सूची तालिका है जो वीडियो प्रदर्शित करती है। कंस्ट्रक्टर ऐसा दिखेगा:

function __construct(){
        global $status, $page;

        //Set parent defaults
        parent::__construct( array(
            'singular'  => 'video',     //singular name of the listed records
            'plural'    => 'videos',    //plural name of the listed records
            'ajax'      => false        //does this table support ajax?
        ) );

    }

इसलिए, यदि आप सूची तालिका में तीन पंक्तियों की जांच करते हैं, तो बल्क एक्शन सूची से "हटाएं" का चयन करें, और हिट लागू करें, आप $ _GET ['वीडियो'] का उपयोग करके चयनित पंक्तियों तक पहुंच सकते हैं।

function process_bulk_action() {

        //Detect when a bulk action is being triggered...
        if( 'delete'===$this->current_action() ) {
            foreach($_GET['video'] as $video) {
                //$video will be a string containing the ID of the video
                //i.e. $video = "123";
                //so you can process the id however you need to.
                delete_this_video($video);
            }
        }

    }

धन्यवाद! "एडिट" बल्क एक्शन को कैसे लागू किया जाए, इस पर कोई विचार अन्य वर्डप्रेस टेबल की तरह ही काम करता है?
चिउबाका

आप इसे एक समान तरीके से संभाल सकते हैं, सिवाय इसके कि UI बहुत अधिक शामिल होगा। मैं शायद इस तरह से एक मामले में डिफ़ॉल्ट process_bulk_actions () विधि का उपयोग नहीं करूंगा, क्योंकि सबसे उपयोगी इंटरफ़ेस शायद एक होगा जो ग्रिड पंक्तियों को संपादन योग्य क्षेत्रों में बदलता है। उस स्थिति में, आपको अभी भी चयनित आइटम $ _GET सरणी में मिलते हैं, लेकिन HTML को सूची तालिका वर्ग में आउटपुट करने के तरीके को ओवरराइड करना होगा। एक परिदृश्य का बहुत अधिक जटिल है, लेकिन जिस तरह से आप आईडी का उपयोग करते हैं वह समान है।
नैट डुडेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.