स्पष्ट रूप से मुझे मल्टीपार्ट हैंडलिंग की अनुमति देने के लिए कस्टम पोस्ट प्रकार मेटाबॉक्स फॉर्म को संशोधित करने के लिए निम्नलिखित add_action ट्रिगर को कॉल करना होगा:

add_action('post_edit_form_tag', [__CLASS__,'form_multipart_encoding'])

लेकिन मेरे प्लगइन के इस add_action तर्क में, मेरे पास $post, get_the_ID(), आदि तक पहुंच नहीं है। इस क्रिया को केवल तभी सक्रिय करना संभव है जब व्यवस्थापक स्क्रीन में मेरा निश्चित CPT देख रहा हो?

1
Zach Smith 22 जुलाई 2019, 23:46

2 जवाब

सबसे बढ़िया उत्तर

post_edit_form_tag में तर्क के रूप में वर्तमान पोस्ट ऑब्जेक्ट शामिल है। आप अपने कस्टम enctype को एक विशिष्ट पोस्ट प्रकार तक सीमित करने के लिए ऐसा कुछ कर सकते हैं: function

post_edit_form_tag($post) {
    if($post->post_type === 'your_custom_post_type'){
        echo ' enctype="multipart/form-data"';
    }
}  

इससे आपका enctype केवल उस विशिष्ट पोस्ट प्रकार के लिए दिखाई देगा जिस पर आप इसे चाहते हैं। और वर्डप्रेस प्लगइन्स के लिए सही "पैटर्न" है। developer.wordpress.org

0
TheGentleman 23 जुलाई 2019, 15:53

मेरी राय में 'post_edit_form_tag' कार्रवाई डिफ़ॉल्ट पोस्ट और कस्टम पोस्ट को प्रभावित करेगी। WP प्रलेखन के अनुसार: डिफ़ॉल्ट पोस्ट संपादन पृष्ठ के लिए टैग पर लागू होता है (जिसका उपयोग पृष्ठों और कस्टम पोस्ट प्रकारों के लिए किया जाता है)। यह फॉर्म स्टार्ट टैग के अंत में और क्लोजिंग ब्रैकेट से पहले होता है।

https://codex.wordpress.org/Plugin_API/Filter_Reference/post_edit_form_tag

कस्टम मेटाबॉक्स को ठीक से सेट करने के लिए कस्टम-मेटा-बॉक्स-wpshed देखें। https://github. com/istefan/custom-meta-box-wpshed/blob/master/custom-meta-box-wpshed.php

add_action( 'post_edit_form_tag' , 'post_edit_form_tag' );

function post_edit_form_tag( ) {
        echo ' enctype="multipart/form-data"';
}

/**
  * Save the Meta box values
  */
function wpshed_meta_box_save( $post_id ) {

   // Stop the script when doing autosave
   if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
   // Verify the nonce. If insn't there, stop the script

   if( !isset( $_POST['wpshed_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['wpshed_meta_box_nonce'], 'my_wpshed_meta_box_nonce' ) ) return;

   // Stop the script if the user does not have edit permissions
   if( !current_user_can( 'edit_post', get_the_id() ) ) return;
   // Save the textfield
    	
   // Make sure the file array isn't empty and process the FILE
   if(!empty($_FILES['wpshed_file']['name'])) {
   }

}
add_action( 'save_post', 'wpshed_meta_box_save' );
0
Eduardo Estevez Nunez 23 जुलाई 2019, 05:12