我在下面创建了以下小部件,在任何情况下都根本不保存。但它确实进入了更新方法,至少。
<?php
namespace FreyaTheme\WidgetManagement;
use Freya\Factory\Pattern;
class CustomRecentPostsWidget extends \WP_Widget {
public function __construct() {
parent::__construct(
'custom-recent-posts',
'Custom Recent Posts',
array ('description' => 'Allows you to show up to two latest posts from a catgeory of your choice.')
);
}
public function widget($args, $instance) {
var_dump($args, $instance);
}
public function form($instance) {
if (isset($instance['error'])) {
echo $instance['error'];
}
?>
<lable for="<?php echo $this->get_field_id('catgeory_name') ?>"> Type in category name </lable>
<input type="text" id="<?php echo $this->get_field_id('catgeory_name') ?>" required="true" placeholder="something" name="<?php echo $this->get_field_id('catgeory_name') ?>" value="<?php echo $instance['category_name'] ?>">
<?php
}
public function update($newInstance, $oldInstance) {
$instance = array();
$oldValue = '';
var_dump($newInstance, $oldInstance); die();
if (isset($oldInstance['category_name'])) {
$oldValue = $oldInstance['category_name'];
}
if (empty($newInstance['category_name'])) {
$instance['error'] = '<div class="flash-error">Category name cannot be blank.</div>';
$instance['category_name'] = $oldValue;
return $instance;
}
$term = term_exists($newInstance['catgeory_name'], 'category');
if ($term === 0 && $term === null) {
$instance['error'] = '<div class="flash-error">Category name does not exist.</div>';
$instance['category_name'] = $oldValue;
return $instance;
}
$instance['category_name'] = $newInstance['category_name'];
return $instance;
}
}
超级超级基础。没有什么我们都没有看过一百次。在提交表单时,var_dumps
函数中的update
如何输出:
array (size=0)
empty
array (size=1)
'category_name' => string '' (length=0)
那是怎么回事?我可以放入&#34;香蕉&#34;我一无所获。