Instance
\'“实例”实际上是“面向对象编程实例”中的一个元素:您有一个特定的类(即您编码为类的特定小部件),当您在站点上使用它时,您就创建了它的一个特定实例;您创建了一个您可以操纵的对象。但您可以有一个以值“hello”为标题的实例,另一个以“hello world”为标题的实例(同一类不同实例)(因此,同一类的两个小部件具有不同的属性)。
Values in these widgets
如果您有特定于实例的值,您可以在小部件类代码中指定这些值,例如,您可以将它们以表单的形式显示给最终用户进行操作。不用担心保存到数据库,后台的widget类会处理这个问题。
如果该小部件的所有实例的值都相同,则可以从设置的选项中获取该值,但它们永远不会在表单中显示给用户。
(正如您所知,使用add\\u选项,您可以向wp\\u options表中添加一个新选项。)
对于widget,有一个中间层(widget工厂)可以将widget选项保存在此wp\\u选项表中,因此您无需手动添加这些选项并更新这些选项,即可查看此打开的wp\\u选项并浏览此表的内容。
如果您仍然希望访问自己的选项值,则应在小部件代码中添加常规选项代码(此后,此设置可以在小部件屏幕中更改,而不是在您自己的插件屏幕中更改)。
如果您希望直接使用该值,则不使用自己的选项值,而只使用小部件中的选项值可能更容易。
如果您使用它来操纵另一个值,那么您可以更好地添加一个过滤器,然后钩住这个过滤器来操纵小部件中使用的值(而不是直接读取选项值)
因此,首先构建一个小部件,例如:
/**
* Constructor
*/
function __construct()
{
$widget_ops = array(\'classname\' => \'widget_icons_latest\', \'description\'
=> __(\'Shows your latest ♥ WP-Favicons which corresponds (after some time caching) \'.
\'with the latest outgoing links you published on your website. You can style \'.
\'the icons by using the stylesheet in the text widget settings under the ♥ WP-favicons \'.
\'Context settings.\'));
$control_ops = array(\'width\' => 200, \'height\' => 350);
parent::__construct(\'WPFaviconsLatest\', __(\'♥ Show Latest WP-Favicons\'), $widget_ops, $control_ops);
}
然后,在widget方法中,您可以设置初始值,例如,查看$title,您会看到它首先查看widget的这个实例(指拖到widget栏的这种类型的特定widget)是否已经设置了标题,如果没有,则会分配默认值。如果要使用保存在数据库中的某个选项的默认值,可以将固定值替换为从选项表中读取的值,但为什么要这样做呢?您还可以看到下面的值“25”,它是非常硬编码的,也许这是从您在插件管理屏幕中自己设置的数据库选项表中获取的一个很好的值(因此将25替换为get选项)
/**
* (non-PHPdoc)
* @see WP_Widget::widget()
*/
function widget($args, $instance) {
extract( $args );
echo $before_widget;
$title = apply_filters( \'widget_title\', empty($instance[\'title\']) ? \'\' : $instance[\'title\'], $instance, $this->id_base);
$amount = empty($instance[\'amount\']) ? 25 : $instance[\'amount\'];
$instance[\'text\'] = $this->specificOutput($amount, false);
$text = apply_filters( \'widget_text\', $instance[\'text\'], $instance );
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
<div class="widget_icons_latest"><?php echo $text; ?></div>
<div class="widget_icons_latest">by <a href="http://wordpress.org/extend/plugins/wp-favicons/">WP-Favicons</a></div>
<?php
echo $after_widget;
}
update方法仅在值发生更改时更新这些值。表单方法在小部件的管理屏幕中显示表单。