在WordPress中创建自定义小工具通常涉及以下步骤:
- 定义小工具类:创建一个继承自
WP_Widget
的类。 - 注册小工具:使用
register_widget()
函数将你的小工具类注册到WordPress。 - 实现小工具的表单和前端显示:在小工具类中实现
form()
,update()
, 和widget()
方法。
以下是一个简单的例子,展示如何创建一个自定义小工具:
<?php
// 在主题的 functions.php 文件中或者在一个单独的插件文件中添加以下代码
class My_Custom_Widget extends WP_Widget {
// 构造函数,设置小工具名称等
public function __construct() {
parent::__construct(
'my_custom_widget', // 小工具ID
'My Custom Widget', // 小工具名称
array( 'description' => 'A custom widget for my theme' ) // 小工具描述
);
}
// 输出小工具在前端显示的内容
public function widget( $args, $instance ) {
echo $args['before_widget']; // 在小工具周围添加一些HTML
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
}
// 输出小工具的实际内容
echo '<div class="my-custom-widget-content">';
echo esc_html__( 'Hello, World!', 'text_domain' );
echo '</div>';
echo $args['after_widget']; // 在小工具周围添加一些HTML
}
// 输出小工具在后台的表单
public function form( $instance ) {
$title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( 'New title', 'text_domain' );
?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Title:', 'text_domain' ); ?></label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
</p>
<?php
}
// 更新小工具的实例
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
return $instance;
}
}
// 注册小工具
function my_custom_widget_register() {
register_widget( 'My_Custom_Widget' );
}
add_action( 'widgets_init', 'my_custom_widget_register' );
这段代码定义了一个名为"My Custom Widget"的小工具,它有一个标题字段,并在小工具的显示区域输出"Hello, World!"。
__construct()
方法设置了小工具的基本信息。widget()
方法定义了小工具在前端显示的内容。form()
方法定义了小工具在后台管理界面中的表单。update()
方法处理小工具表单的更新。
最后,通过register_widget()
函数注册了小工具,并通过add_action()
将其添加到WordPress的widgets_init
动作中。
在将上述代码添加到你的主题的functions.php
文件或创建一个插件后,你应该能够在WordPress后台的“外观” > “小工具”中看到并添加你的自定义小工具。