我一直在搜索如何在每个WordPress可用的小部件上添加一个额外的字段,比如Subtitle
在小部件的Title
.
有没有办法钩住每个可用的小部件?
我一直在搜索如何在每个WordPress可用的小部件上添加一个额外的字段,比如Subtitle
在小部件的Title
.
有没有办法钩住每个可用的小部件?
我知道插件Widget Logic 确实如此。
分解其代码后,摘录bellow将在所有小部件中输出一个textarea。
但请注意:
这只是一个概念证明,并且“保存字段”控件不存在。最好的解决方案可能是将插件分成几个部分,删除不需要的功能,然后添加自己的插件代码。插件代码不太容易阅读
if ( is_admin() )
{
add_action( \'sidebar_admin_setup\', \'widget_logic_expand_control\' );
}
// CALLED VIA \'sidebar_admin_setup\' ACTION
// adds in the admin control per widget, but also processes import/export
function widget_logic_expand_control()
{
global $wp_registered_widgets, $wp_registered_widget_controls, $wl_options;
// ADD EXTRA WIDGET LOGIC FIELD TO EACH WIDGET CONTROL
// pop the widget id on the params array (as it\'s not in the main params so not provided to the callback)
foreach ( $wp_registered_widgets as $id => $widget )
{ // controll-less widgets need an empty function so the callback function is called.
if (!$wp_registered_widget_controls[$id])
wp_register_widget_control($id,$widget[\'name\'], \'widget_logic_empty_control\');
$wp_registered_widget_controls[$id][\'callback_wl_redirect\'] = $wp_registered_widget_controls[$id][\'callback\'];
$wp_registered_widget_controls[$id][\'callback\'] = \'widget_logic_extra_control\';
array_push( $wp_registered_widget_controls[$id][\'params\'], $id );
}
}
// added to widget functionality in \'widget_logic_expand_control\' (above)
function widget_logic_empty_control() {}
// added to widget functionality in \'widget_logic_expand_control\' (above)
function widget_logic_extra_control()
{
global $wp_registered_widget_controls, $wl_options;
$params = func_get_args();
$id = array_pop($params);
// go to the original control function
$callback = $wp_registered_widget_controls[$id][\'callback_wl_redirect\'];
if ( is_callable($callback) )
call_user_func_array($callback, $params);
$value = !empty( $wl_options[$id] ) ? htmlspecialchars( stripslashes( $wl_options[$id ] ),ENT_QUOTES ) : \'\';
// dealing with multiple widgets - get the number. if -1 this is the \'template\' for the admin interface
$number=$params[0][\'number\'];
if ($number==-1) {
$number="%i%";
$value="";
}
$id_disp=$id;
if ( isset($number) )
$id_disp = $wp_registered_widget_controls[$id][\'id_base\'].\'-\'.$number;
// output our extra widget logic field
echo "<p><label for=\'".$id_disp."-widget_logic\'>My logic <textarea class=\'widefat\' type=\'text\' name=\'".$id_disp."-widget_logic\' id=\'".$id_disp."-widget_logic\' >".$value."</textarea></label></p>";
}
我在本地机器上安装了一个WP,试图用插件弄脏我的手。我希望从github克隆一个包含此插件代码的项目。然而,我没有插件内部的权限,作为一个没有su权限的普通用户,我无法做到这一点。(当然,我可以成为根并这样做,但我不认为这是应该的)。然后,默认情况下,WP安装中的文件夹将组设置为“tape”,这对我来说很奇怪。本地WP安装上内部文件夹的正确权限应该是什么?