我创建了一个简单的一次性小部件,让管理员在主页上更改一些副本,但小部件没有显示其内容。
在主页上,我有以下代码:<?php the_widget(\'home_widget\'); ?>
这是小部件本身的源代码,它出现在我的函数中。php文件(Jeff Starr的Clean Markup Widget):
// Clean Markup Widget @ http://perishablepress.com/clean-markup-widget/
add_action(\'widgets_init\', create_function(\'\', \'register_widget("home_widget");\'));
class home_widget extends WP_Widget {
function __construct() {
parent::WP_Widget(\'home_widget\', "home page box",
array(\'description\'=>"The contents of the home page box"));
}
function widget($args, $instance) {
extract($args);
$markup = $instance[\'markup\'];
if ($markup) echo $markup;
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance[\'markup\'] = $new_instance[\'markup\'];
return $instance;
}
function form($instance) {
if ($instance) $markup = esc_attr($instance[\'markup\']);
else $markup = __(\'Sample markup\', \'markup_widget\'); ?>
<p>
<label for="<?php echo $this->get_field_id(\'markup\'); ?>"><?php _e(\'Markup/text\'); ?></label><br />
<textarea class="widefat" id="<?php echo $this->get_field_id(\'markup\'); ?>" name="<?php echo $this->get_field_name(\'markup\'); ?>" type="text" rows="16" cols="20" value="<?php echo $markup; ?>"><?php echo $markup; ?></textarea>
</p>
<?php }
}
这个小部件在管理工具中看起来和工作都很完美,我可以添加文本并保存它,等等。但是主页上没有显示任何内容。如何让它显示小部件内容?
需要明确的是:当我将小部件放在管理界面的侧栏中时(因为您必须这样做),我不想显示侧栏(因为我在那里有其他小部件)。我只想让这个一次性小部件在主页上显示它的内容。非常简单。
最合适的回答,由SO网友:s_ha_dum 整理而成
如果可以充分识别,可以强制在后端修改的特定小部件显示出来。我认为这很容易出错。
你应该能够the_widget
如果您将足够的详细信息传递给(最多)three 参数--如下所示:
the_widget(\'home_widget\',array(\'markup\' => \'Yay\'));
但您无法从后端配置它。
我建议,如果要使用小部件,请为小部件创建一个侧栏。