我已经安装了“Widget Logic”插件。我已经创建了自己的小部件“Buzz”。我有一个侧栏,其中有我的自定义小部件“Buzz”的多个实例。
现在,在Widgets admin页面上,当侧栏被打开并且侧栏中的所有小部件都被关闭时,您可以看到小部件名称和小部件实例标题(如果指定了名称)。
例如,如果我有两个标题不同的“Buzz”小部件实例,在小部件管理页面上,它看起来像:
Buzz: Title 1
Buzz: Title 2
我想做的是在小部件管理页面的“小部件名称:小部件实例标题”行下显示为小部件实例指定的“小部件逻辑”值。例如:
Buzz: Title 1
Displayed on: is_front_page()
Buzz: Title 2
Displayed on: is_page("page_slug")
希望这是有意义的。
如果有人能帮我解决这个问题,我将不胜感激:如何获取“Widget Logic”输入框中指定的值,并将其显示在Widget admin页面上的Widget实例标题下。
非常感谢,Dasha
最合适的回答,由SO网友:Bainternet 整理而成
我几乎可以肯定,如果不破解核心文件,就无法做到这一点(服务器端),但幸运的是,我懂一点jQuery,我已经想出了这个黑客功能,它可以很好地完成这项工作:
function widget_logic_hack(){
global $pagenow;
if ($pagenow == \'widgets.php\'){
?>
<script>
function hack_logic(){
jQuery(\'input[id$="widget_logic"]\').each(function()
{
if (jQuery(this).val().length === 0){}else{
var id = this.id;
var value = jQuery(this).val();
//alert(value);
id = id.replace(\'-widget_logic\',\'\');
var currenttitle = jQuery("[id$=\'"+ id +"\']").find(\'h4\').html();
if (currenttitle.indexOf(\'Displayed on:\') !=-1 ){
var ncurrenttitle = currenttitle.substring(0,(currenttitle.indexOf(\'Displayed on:\')));
//alert(ncurrenttitle);
jQuery("[id$=\'"+ id +"\']").find(\'h4\').html(ncurrenttitle + \'Displayed on: <span class="in-widget-title">\' + value + \'</span>\');
}else{
jQuery("[id$=\'"+ id +"\']").find(\'h4\').html(currenttitle + \'<br /> Displayed on: <span class="in-widget-title">\' + value + \'</span>\');
}
}
});
}
jQuery(document).ready(function(){
setTimeout("hack_logic()",500);
jQuery(\'#savewidget\').live(\'click\', function() {
setTimeout("hack_logic()",5500);
return true;
});
});
</script>
<style>.widget .widget-top {height: 40px !important;}</style>
<?php
}
}
add_action(\'admin_footer\',\'widget_logic_hack\');