我正在为wordpress编写一个插件,我有一个类文件,如下所示:
class pgboxdata{
protected $boxesdata;
public function pgboxdata(){
if(get_option('fixed_boxes_data')){
$this->boxesdata = maybe_unserialize(get_option('fixed_boxes_data'));
}
else {
$this->addbox('PG Fixed Box','500','300','pg-btn-tl','#fff','everywhere');
}
}
public function addbox($title,$width,$height,$place,$backcolor,$page){
$data = $this->boxesdata;
$uniqueid;
$uniqueid = $this->generate_id();
$data []= array(
'theid' => $uniqueid,
'title' => $title,
'width' => $width,
'height' => $height,
'backcolor' => $backcolor,
'btnpos' => $place,
'page' => $page
);
$this->updateit($data);
}
function generate_id(){
if(is_array($this->boxesdata)){
$count = count($this->boxesdata);
if($count > 0){
$releasedid = "fixedboxarea".$count+1;
return $releasedid;
}
else {
$releasedid = "fixedboxarea".$count;
return $releasedid;
}
}
else
return 0;
}
function updateit($data){
if(is_array($data)){
$this->boxesdata = $data;
update_option('fixed_boxes_data' , maybe_serialize($data));
return true;
}
}
}
在我的插件中,我创建了这个类的新对象,我打电话给addbox
,如下所示:
$datasender = new pgboxdata();
$datasender->addbox($_POST['box_name'],$_POST['box_width'],$_POST['box_height'],$_POST['btnplace'],$_POST['bgcolor'],$_POST['selectedplace']);
但问题是第一次方法generate_id返回正确的值(返回:fixedboxarea0)但是从第二次开始它总是返回1! 谁能告诉我为什么会这样? 使用函数generate_id的原因是我希望每个具有指定前缀的框都有唯一的id,但即使我不知道这种方法是否正确。
答案 0 :(得分:1)
那是因为您正在递增$count
var以及字符串连接。正确的表达方式是:
$releasedid = "fixedboxarea" . ($count + 1);