स्पष्ट रूप से मुझे मल्टीपार्ट हैंडलिंग की अनुमति देने के लिए कस्टम पोस्ट प्रकार मेटाबॉक्स फॉर्म को संशोधित करने के लिए निम्नलिखित add_action
ट्रिगर को कॉल करना होगा:
add_action('post_edit_form_tag', [__CLASS__,'form_multipart_encoding'])
लेकिन मेरे प्लगइन के इस add_action
तर्क में, मेरे पास $post, get_the_ID()
, आदि तक पहुंच नहीं है। इस क्रिया को केवल तभी सक्रिय करना संभव है जब व्यवस्थापक स्क्रीन में मेरा निश्चित CPT देख रहा हो?
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पर देखकर आप हमेशा देख सकते हैं कि हुक किन तर्कों से गुजरता है। ए>।
मेरी राय में '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' );
नए सवाल
wordpress
यह टैग वर्डप्रेस सामग्री प्रबंधन प्रणाली के बारे में प्रोग्रामिंग-विशिष्ट प्रश्नों के लिए है। ऑफ-टॉपिक प्रश्नों में थीम डेवलपमेंट, वर्डप्रेस एडमिनिस्ट्रेशन, मैनेजमेंट बेस्ट प्रैक्टिस, सर्वर कॉन्फिगरेशन आदि शामिल हैं। ये सबसे अच्छे वर्डप्रेस डेवलपमेंट स्टैक एक्सचेंज साइट (https://wordpress.stackexchange.com) पर पूछे जाते हैं।