有什么想法吗?
#1 楼
解决这种情况的最佳方法是通过JavaScript。这样,无论何时更改选定的值,您都可以立即隐藏/显示相关的metabox。在
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,仅根据页面模板下拉列表中的所选值隐藏或显示一个metabox。在此示例中,我仅在选择默认页面模板的情况下显示帖子缩略图的metabox:
(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);
评论
哇谢谢你!我将尽快对此进行测试,并将相应地进行报告。
–乔纳森·沃尔德
2011年5月26日15:11
太棒了...这就是我所需要的。对我来说完美。谢谢!!!
–罗斯
2011年6月14日在21:14
抱歉,我是javascript的真正初学者,我知道那是我需要的东西,但是似乎我无法以正确的方式进行操作...所以我不确定是否了解我必须在javascript文件中进行更改。是否可以对像我这样的nooby进行更多说明? ;)
–user12082
2012年1月15日13:26
#2 楼
您可以使用此方法,而不是仅通过jQuery来显示该metabox来隐藏它。唯一的区别是,隐藏/显示metabox要求在更改下拉字段后选择“更新”。。
评论
如果不需要“实时”运行(即更改页面模板不需要使元框立即显示/消失),请参阅以下相关问题:wordpress.stackexchange.com/questions/48611/…@StephenHarris感谢您的评论。我总结了WPAlchemy MetaBox类,该类在设置中包含“每个模板”选项。