我正在尝试自定义itheme的Exchange电子商务插件。我想添加目录功能 - 删除添加到购物车和立即购买按钮。因为作为交换,这些按钮是使用他们的超级小工具创建的,我认为删除这些按钮的最简单方法是删除超级小工具。所以我创建了一个函数:
if(!function_exists('exchange_catalogue')){
function exchange_catalogue(){
unregister_widget( 'IT_Exchange_Super_Widget' );
}
}
add_filter( 'widgets_init', 'exchange_catalogue');
但我明白了:
Notice: Undefined index: IT_Exchange_Super_Widget in /wp-includes/widgets.php on line 1356
我检查了是否有这样注册的小部件:
$widgets = array_keys( $GLOBALS['wp_widget_factory']->widgets );
print '<pre>$widgets = ' . esc_html( var_export( $widgets, TRUE ) ) . '</pre>';
刚刚将其添加到上面的函数中,并且小部件在那里(已列出)
$widgets = array (
...
26 => 'IT_Exchange_Super_Widget',
)
所以,如果它存在,并且我的函数将其删除,为什么我会收到此通知?
哦,我知道有一个选项,但只有你购买他们的扩展〜$ 200,这将增加一个... ...
编辑:
我试过这个:
if (isset( $GLOBALS['wp_widget_factory']->widgets['IT_Exchange_Super_Widget'] )) {
unset( $GLOBALS['wp_widget_factory']->widgets['IT_Exchange_Super_Widget'] );
}
并且
if (isset( $GLOBALS['wp_widget_factory']->widgets['IT_Exchange_Super_Widget'] )) {
unregister_widget( 'IT_Exchange_Super_Widget' );
}
但仍然得到通知。
答案 0 :(得分:0)
找到答案! :d
我只是把
if(!function_exists('exchange_catalogue')){
function exchange_catalogue(){
if (isset( $GLOBALS['wp_widget_factory'])) {
$GLOBALS['wp_widget_factory']->widgets['IT_Exchange_Super_Widget'] = null;
}
}
}
这种方式设置了小部件,但它什么都没有。所以它没有显示:D简单修复如果你想要交换商店的目录能力:)