我们开发了一个新的WordPress网站,专门为这个网站开发了一个新主题。
一些相同类型的小部件(例如两个“书签”小部件)的样式应该不同(即具有不同的CSS)。
我的问题:在这种情况下,我应该使用两个书签小部件还是将其硬编码到主题中?
我可以为这些具有ID的小部件专门编写CSS,但这似乎不雅观,尤其是因为如果有人删除了我的小部件,然后添加自己的类似小部件,它将被破坏。
Widgetize还是硬代码?
我们开发了一个新的WordPress网站,专门为这个网站开发了一个新主题。
一些相同类型的小部件(例如两个“书签”小部件)的样式应该不同(即具有不同的CSS)。
我的问题:在这种情况下,我应该使用两个书签小部件还是将其硬编码到主题中?
我可以为这些具有ID的小部件专门编写CSS,但这似乎不雅观,尤其是因为如果有人删除了我的小部件,然后添加自己的类似小部件,它将被破坏。
Widgetize还是硬代码?
$wp_registered_widgets
并根据其参数构建小部件。您可以轻松拦截它们:dynamic_sidebar_params
要将类添加到目标特定的小部件,请执行以下操作:// SHOW the params for better insights
function wpse44903_dump_sidebar_params( $params )
{
echo \'<pre>\';
print_r( $params );
echo \'</pre>\';
return $params;
}
add_filter( \'dynamic_sidebar_params\', \'wpse44903_dump_sidebar_params\' );
然后,您可以简单地更改您需要的任何内容(取决于您的情况):// ALTER the params to your needs
function wpse44903_alter_sidebar_params( $params )
{
// remove trailing and leading white space and use only lower case characters to be on the save side of things
if ( \'YOUR WIDGET NAME\' === trim( strtolower( $params[0][\'widget_name\'] ) ) )
{
// do whatever you need to do.
// @example:
foreach ( $wp_registered_widgets as $widget )
if ( in_array( $params[0][\'widget_name\'], $widget ) )
print_r( $widget );
}
return $params;
}
add_filter( \'dynamic_sidebar_params\', \'wpse44903_alter_sidebar_params\' );
注意:这没有经过测试,可能需要一些bug修复。一定要转身WP_DEBUG
到TRUE
在wp配置中。php文件。在我看来,选择widget路线显然是一条干净的道路。请注意,您还可以manually display a widget in the sidebar via the the_widget()
function. 这样用户就无法删除小部件。
另一种方法可能是在小部件中构建样式选择下拉列表,以便用户能够选择适用的样式。然后,您可以在小部件中向小部件包装器添加CSS类。优于基于可以更改的ID的样式,如mywidget-5
.
在wordpress中,在不同的页面上可以有不同的小部件,我的意思是,我有一个表单小部件,它必须只显示在posts页面上,它应该只显示在single上。php这可能吗?他们有这个插件吗?