Özel bir alan arabiriminin yalnızca belirli bir şablon belirli bir WordPress sayfasına atandığında gösterilmesini istiyorum.
Herhangi bir fikir?
Özel bir alan arabiriminin yalnızca belirli bir şablon belirli bir WordPress sayfasına atandığında gösterilmesini istiyorum.
Herhangi bir fikir?
Yanıtlar:
Bu duruma yaklaşmanın en iyi yolu JavaScript kullanmaktır. Bu şekilde, seçilen değer her değiştiğinde, ilgili meta kutuyu anında gizleyebilir / gösterebilirsiniz.
Kullanım wp_enqueue_script()
içinde functions.php
yönetici alanında özel bir JavaScript dosyası yüklemek için:
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 gerektiren betiğin kendisi, sayfa şablonu açılır listesindeki seçilen değere göre bir meta kutusunu gizler veya gösterir. Bu örnekte, varsayılan sayfa şablonunun seçilmesi durumunda yalnızca yazı küçük resimleri için meta kutuyu gösteriyorum:
(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);
Ve sadece eğlence için, aynı komut dosyasının daha kısa, daha az ayrıntılı bir sürümü:
(function($){
$(function() {
$('#page_template').change(function() {
$('#postimagediv').toggle($(this).val() == 'default');
}).change();
});
})(jQuery);
Meta kutuyu yalnızca jQuery ile gizlemek için oluşturmak yerine bunu kullanabilirsiniz. Tek fark, meta kutunun gizlenmesinin / gösterilmesinin açılır alanı değiştirdikten sonra 'Güncelle' seçeneğini seçmesidir.
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. ve 7. satırları istediğiniz gibi güncelleyin.