मैं एक कस्टम फ़ील्ड के लिए इंटरफेस दिखाने चाहते हैं केवल जब एक निश्चित टेम्पलेट एक विशेष वर्डप्रेस पेज को सौंपा गया है।
कोई विचार?
मैं एक कस्टम फ़ील्ड के लिए इंटरफेस दिखाने चाहते हैं केवल जब एक निश्चित टेम्पलेट एक विशेष वर्डप्रेस पेज को सौंपा गया है।
कोई विचार?
जवाबों:
इस स्थिति से निपटने का सबसे अच्छा तरीका जावास्क्रिप्ट है। इस तरह, जब भी चयनित मूल्य बदलता है, तो आप संबंधित मेटाबॉक्स को तुरंत छिपा / दिखा सकते हैं।
का प्रयोग करें wp_enqueue_script()
में functions.php
व्यवस्थापक क्षेत्र में एक कस्टम JavaScript फ़ाइल को लोड करने के लिए:
add_action('admin_enqueue_scripts', 'my_admin_script');
function my_admin_script()
{
wp_enqueue_script('my-admin', get_bloginfo('template_url').'/my-admin.js', array('jquery'));
}
स्क्रिप्ट ही, जिसमें jQuery की आवश्यकता होती है, बस पेज टेम्पलेट ड्रॉपडाउन सूची में चयनित मूल्य के आधार पर एक मेटाबॉक्स छुपाता है या दिखाता है। इस उदाहरण में, मैं केवल डिफ़ॉल्ट पृष्ठ टेम्पलेट के चयन के मामले में पोस्ट थंबनेल के लिए मेटाबेस दिखा रहा हूं:
(function($){
$(document).ready(function() {
var $page_template = $('#page_template')
,$metabox = $('#postimagediv'); // For example
$page_template.change(function() {
if ($(this).val() == 'default') {
$metabox.show();
} else {
$metabox.hide();
}
}).change();
});
})(jQuery);
और, बस मज़े के लिए, यहाँ एक छोटी, कम क्रिया, एक ही स्क्रिप्ट का संस्करण है:
(function($){
$(function() {
$('#page_template').change(function() {
$('#postimagediv').toggle($(this).val() == 'default');
}).change();
});
})(jQuery);
केवल मेटाबेस को रेंडर करने के बजाय इसे jQuery के साथ छिपाने के लिए आप इसका उपयोग कर सकते हैं। एकमात्र अंतर यह है कि मेटाबॉक्स को छिपाने / दिखाने के लिए ड्रॉप-डाउन फ़ील्ड को बदलने के बाद 'अपडेट' का चयन करना पड़ता है।
function add_meta_box() {
global $post;
if(!empty($post)) {
$pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
if($pageTemplate == 'your-page-template-here.php' ) {
add_meta_box( $id, $title, $callback, 'page', $context, $priority, $callback_args );
}
}
}
add_action( 'add_meta_boxes', 'add_meta_box' );
बस वांछित के रूप में लाइनों 6 और 7 अद्यतन करें।