最近在做WordPress主题开发的时候,需要自定义一个小工具,方便用户在侧边栏的使用,在网上看到了是用register_sidebar_widget()来自定义,小工具是创建成功了,也可以正常使用,但是有一个很大的问题,就是当我使用过一次这个小工具后,在左侧可用小工具中就没有了这个小工具,也就是只能使用一次?请问这是什么问题啊,谢谢指教。
register_sidebar_widget()创建的小工具算是临时创建了一个小工具,他的特点就是只能使用一次,正确创建可重复使用的小工具你需要使用创建小工具基础类WP_Widget创建继承类的方式来实现,比如下面是一个创建投稿链接的一个小工具。
首先,讲下面的代码放到一个你自己命名的php文件中,比如tougao.php,然后放到你的主题中(具体放的位置根据你的需要)。
<?php class WP_Game_Tougao_Widget extends WP_Widget { /** * Constructor */ function __construct() { $widget_ops = array('classname' => 'mx_game_tougao', 'description' => '投稿链接'); parent::__construct('mx_game_tougao', $name='投稿链接', $widget_ops); } function widget($args, $instance) { extract( $args ); $title = apply_filters('widget_title', empty($instance['title']) ? '投稿链接' : $instance['title']); $tougao_description = strip_tags($instance['tougao_description']); $tougao_pagelink = strip_tags($instance['tougao_pagelink']); ?> <?php echo $before_widget; ?> <div class="game-tougao-widget-box"> <h3><?php echo $title;?></h3> <p><?php echo $tougao_description;?></p> <a href="<?php echo $tougao_pagelink;?>"><i class="iconfont icon-icon_fabu"></i><span>立即投稿</span></a> </div> <?php echo $after_widget; ?> <?php } function form($instance) { $title = strip_tags($instance['title']); $tougao_description = strip_tags($instance['tougao_description']); $tougao_pagelink = strip_tags($instance['tougao_pagelink']); ?> <p> <label for="<?php echo $this->get_field_id('title'); ?>"><?php esc_attr_e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('tougao_description'); ?>">投稿描述:</label> <textarea class="widefat" id="<?php echo $this->get_field_id('tougao_description'); ?>" name="<?php echo $this->get_field_name('tougao_description'); ?>"><?php echo $tougao_description;?></textarea> </p> <p> <label for="<?php echo $this->get_field_id('tougao_pagelink'); ?>">投稿页面链接:</label> <input class="widefat" id="<?php echo $this->get_field_id('tougao_pagelink'); ?>" name="<?php echo $this->get_field_name('tougao_pagelink'); ?>" type="text" value="<?php echo $tougao_pagelink; ?>" /> </p> <?php } function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['tougao_description'] = strip_tags($new_instance['tougao_description']); $instance['tougao_pagelink'] = strip_tags($new_instance['tougao_pagelink']); return $instance; } } register_widget('WP_Game_Tougao_Widget');//把你写的小工具文件创建成小工具 ?>
然后,在你的functions.php文件中引入这个文件就可以了。回头时间允许了,我们会针对创建自定义小工具录制一期视频教程。
@WordPress日记 非常感谢超哥的帮助!回复很及时,哈哈
Remember Me Forgot Password
No Account? Register
Get Vcode
Agreed the《Service Agreement》
Account Login Forgot Password?
2 个回答
register_sidebar_widget()创建的小工具算是临时创建了一个小工具,他的特点就是只能使用一次,正确创建可重复使用的小工具你需要使用创建小工具基础类WP_Widget创建继承类的方式来实现,比如下面是一个创建投稿链接的一个小工具。
首先,讲下面的代码放到一个你自己命名的php文件中,比如tougao.php,然后放到你的主题中(具体放的位置根据你的需要)。
然后,在你的functions.php文件中引入这个文件就可以了。回头时间允许了,我们会针对创建自定义小工具录制一期视频教程。
@WordPress日记 非常感谢超哥的帮助!回复很及时,哈哈