如果某些小部件具有特定的值,则将脚本/样式入队

时间:2021-02-07 作者:Mirajul Momin

我想构建一个小部件,通过它可以将各种社交媒体共享按钮添加到前端。在widget表单中,将有许多用于社交媒体的复选框。由于这些共享按钮需要不同的脚本或html标记,我必须从后端将其排队。排队时,我必须检查选中了哪些复选框。但是我如何从我的widget类之外获得这些值呢?假设我的代码如下:

<?php
 
class My_Widget extends WP_Widget {
 
    public function __construct() {
        // some stuff goes here
    }

    
 
    public function form( $instance ) {
?>
<label for="<?php echo $this->get_field_name( \'facebook\' ); ?>">Facebook</label>
<input type="checkbox" id="<?php echo $this->get_field_id( \'facebook\' ); ?>" name="<?php echo $this->get_field_name( \'facebook\' ); ?>" value="facebook">
<br>
<label for="<?php echo $this->get_field_name( \'twitter\' ); ?>">Twitter</label>
<input type="checkbox" id="<?php echo $this->get_field_id( \'twitter\' ); ?>" name="<?php echo $this->get_field_name( \'twitter\' ); ?>" value="twitter">
   <?php 
/* And I also take some input such an icon image
 that will be used to render widget in front end */
}
 public function widget( $args, $instance ) {
        /* Here I render widget output
such as social icon. But I also have to enqueu
some scripts(based on what user selected/checked)
 some maybe should be added just after 
opening body tag or in head and some may be
 in footer. In footer it can be added from here 
but in head or after opening body tag
 it cannot be because it is too late 
 */
    }
    public function update( $new_instance, $old_instance ) {
        // saving process goes here
    }
}
 
?>

1 个回复
最合适的回答,由SO网友:Mirajul Momin 整理而成

实际上,这些类型的任务是针对插件的,而不是针对小部件的。根据widget实例的值,可以将脚本排队到页脚而不是页首或紧跟在body标记之后。这背后的原因是可以在函数内部检查实例值widget 控件类的。功能widget 在调用某个动态侧栏时调用,并且必须在以下情况下发生wp_head()wp_body_open 钩子已经启动,但仍有机会将脚本排队到页脚。

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'