定制Wordpress后台的Widget

Yxhds YW| 2013-03-20 WordPress, 教程 评论数( 0 )

Wordpress是款功能非常强大的CMS平台,具有极强的可扩展现性。开发者不仅可以利用其强大的API为其开发各类插件和模板,也可以自己定制它的后台。今天我们就来简单介绍一下如何对wordpress后台进行二次开发。

Wordpress的后台是由一个个Widget组成的,每个Widget完成一个特定的功能。你可以随意修改这些Widget的位置,甚至还可以创建删除Widget。下面是一个简单的例子。

添加Widget

首先我们要创建一个Widget类,继承自WP_Widget。 class Foo_Widget extends WP_Widget { public function __construct() { parent::__construct( 'foo_widget', // Widget的ID 'Foo_Widget', // Widget的名字 array( 'description' => __( 'A Foo Widget', 'text_domain' ), ) // 一个数组提供了Widget的一些基本信息。 ); } /** * 用于显示Widget界面内容的方法。 * 包含了两个数组类型的参数,$args和$instance * * $args中包含了4个值:before_title,after_title,before_widget,after_widget,分别是要显示在title和widget前后的html。 * $instance是当前Widget的一些属性设置 */ public function widget( $args, $instance ) { extract( $args ); $title = apply_filters( 'widget_title', $instance['title'] ); echo $before_widget; if ( ! empty( $title ) ) echo $before_title . $title . $after_title; echo __( 'Hello, World!', 'text_domain' ); echo $after_widget; } /** * 当Widget的表单被提交后,这个函数分被执行到。 * 它接受两个参数,分别是提交前的表单后提交后的表单。 * 同时,这个函数也要求有一个返回值: * - 当返回值为数组时,则是widget要保存的属性。 * - 当返回false时,不会对widget原有的属性进行更改。 */ public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = strip_tags( $new_instance['title'] ); return $instance; } /** * 要提交的表单了。 */ public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'text_domain' ); } ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /> </p> <?php } } // class Foo_Widget

这样我们就写好了一个Widget类,为了能让这个Widget显示在后台中,我们还需要一些工作。把Widget注册到Wordpress中。 add_action( 'widgets_init', create_function( '', 'register_widget( "foo_widget" );' ) );

删除不要的Widget

Wordpress为我们提供了很多Widget,但并不一定所有的widget都是自己想要的,如果你想要你的后台更简洁一些,可以移除一些Widget。方法如下: function unregister_default_widgets() { unregister_widget('WP_Widget_Pages'); unregister_widget('WP_Widget_Calendar'); unregister_widget('WP_Widget_Archives'); unregister_widget('WP_Widget_Links'); unregister_widget('WP_Widget_Meta'); unregister_widget('WP_Widget_Search'); unregister_widget('WP_Widget_Text'); unregister_widget('WP_Widget_Categories'); unregister_widget('WP_Widget_Recent_Posts'); unregister_widget('WP_Widget_Recent_Comments'); unregister_widget('WP_Widget_RSS'); unregister_widget('WP_Widget_Tag_Cloud'); unregister_widget('WP_Nav_Menu_Widget'); } add_action('widgets_init', 'unregister_default_widgets', 11); 在这个例子中,我们删掉了所有Wordpress默认的Widget。你可以根据自己的需要选择其中的一部分。

聚焦云计算,扫描二维码,关注HostUCan云计算

有好的文章希望站长之间帮助分享推广,猛戳这里我要投稿

您需要登录后才可以评论登录|注冊

暂无评论