根据小部件中的用户选项使用wp_enQueue_style

时间:2011-08-18 作者:skycrew

我目前正在为我的网站开发wordpress小部件。此小部件将在我的网站中提取用户的最新帖子,并显示在他们的博客中。

在小部件中,用户可以选择对小部件使用他们的css或我的css

我在我的小部件中使用了这段代码,它的工作非常完美,但这段代码将始终加载css。

add_action( \'widgets_init\', \'load_my_widgets\' );

function load_my_widgets() {
    register_widget( \'My_Widget\' );
    wp_register_style( \'my_widget_css\', \'http://mydomain.com/css/my-widget.css\' );
    wp_enqueue_style( \'my_widget_css\' );
}
问题是如何根据用户选项启用CSS?我试过这样的东西,但不管用

function widget( $args, $instance ) {
    $own_css = isset( $instance[\'own_css\'] ) ? true : false;

    if ( ! $own_css ) {
        wp_enqueue_style( \'my_widget_css\' );
    }
}

3 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

这有点草率,因为不管怎样,样式仍将被排队。

在显示小部件的代码中,根据用户是否选择了自己的样式更改CSS选择器:

<?php
$prefix = $instance[\'own_style\'] ? \'ownstyle_\' : \'pluginstyle_\';

//then....
?>
<div id="<?php echo $prefix; ?>selector"> ...</div> etc
用户可以通过这种方式使用自定义样式的小部件和默认样式的小部件。将您的样式分别排列在其自己的函数中。

add_action( \'wp_print_scripts\', \'wpse26241_enqueue\' );
function wpse26241_enqueue()
{
    if( is_admin() ) return;
    if( is_active_widget( \'My_Widget\' ) )
         wp_enqueue_style( \'my_style\' );
}

SO网友:skycrew

最后,我根据用户选项加载CSS。

如何:将我的widget类扩展到WP\\u widget

在我的小部件构造函数中,我只需调用下面的代码,就可以获得用户选项。

$settings = $this->get_settings();
根据用户选项,我可以使用wp\\u enqueue\\u样式。

SO网友:Chip Bennett

您需要将该选项从小部件中拉出,并使其成为插件选项。

例如,如果register_setting() 选项数组名称为plugin_myplugin_options (其中“myplugin”是您的插件slug),您可以添加一个布尔选项,use_plugin_css, 如果true 将使用插件的CSS,如果false 将使用用户的CSS。

因此,请更改widgets_init 回调如下内容:

function load_my_widgets() {
    register_widget( \'My_Widget\' );
    $myplugin_options = get_option( \'plugin_myplugin_options\' );
    if ( $myplugin_options[\'use_plugin_css\'] ) {
        wp_register_style( \'my_widget_css\', \'http://mydomain.com/css/my-widget.css\' );
        wp_enqueue_style( \'my_widget_css\' );
    }
}
另外,如果这是一个公开发布的插件,您需要namespace 所有函数调用。e、 g.变更function load_my_widgets() {}function myplugin_load_widgets() {}, 其中“myplugin”是您的插件slug。注册自定义样式或脚本也是如此;改变my_widget_cssmyplugin_css, 其中“myplugin”是您的插件slug。

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?