我的wordpress自定义小部件搞乱了整个网站,一个小部件工作,添加更多的小部件,毁掉一切
我真的很喜欢wordpress,有很多插件和主题,我只是学习如何编写自己的自定义小部件 当我将小部件包含在主题函数中时,它可以正常工作。它显示在后端和前端,就像另一个小部件一样 我遇到的唯一问题是,当我添加/创建另一个小部件时,小部件(所有小部件)开始运行。我的wordpress自定义小部件搞乱了整个网站,一个小部件工作,添加更多的小部件,毁掉一切,wordpress,widget,Wordpress,Widget,我真的很喜欢wordpress,有很多插件和主题,我只是学习如何编写自己的自定义小部件 当我将小部件包含在主题函数中时,它可以正常工作。它显示在后端和前端,就像另一个小部件一样 我遇到的唯一问题是,当我添加/创建另一个小部件时,小部件(所有小部件)开始运行。 当我将小部件添加到小部件区域时,它会显示选项(表单),但随后选项突然消失 当我尝试在管理区域刷新页面(widget.php)时,该小部件上的选项看起来很正常,我可以修改该小部件上的值,并像普通小部件一样保存它 此行为会影响“我的管理”区
- 当我将小部件添加到小部件区域时,它会显示选项(表单),但随后选项突然消失
- 当我尝试在管理区域刷新页面(widget.php)时,该小部件上的选项看起来很正常,我可以修改该小部件上的值,并像普通小部件一样保存它
<?php
class chalax_try_widget extends WP_Widget {
/**
* Register widget with WordPress.
*/
function __construct() {
parent::__construct(
'chalax_try_widget', // Base ID
__('Chalax try List', 'text_domain'), // Name
array( 'description' => __( 'Widget untuk menampilkan daftar artikel/berita tertentu', 'text_domain' ), ) // Args
);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget( $args, $instance ) {
echo $args['before_widget'];
echo $args['before_title'].$instance['title1'].$args['after_title'];
echo "string";
echo $args['after_widget'];
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form( $instance ) {
if (isset($instance['title1'])) {
# code...
$title1=$instance['title1'];
}else{
$title1="jajal";
}
?>
<input id="<?php echo $this->get_field_id( 'title1' ); ?>" name="<?php echo $this->get_field_name( 'title1' ); ?>" value="<?php echo $title1 ;?>">
<?php
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title1'] = ( ! empty( $new_instance['title1'] ) ) ? strip_tags( $new_instance['title1'] ) : '';
return $instance;
}
} // class Foo_Widget
?>
小部件正在工作,
但是当我尝试添加另一个custome小部件时,请这样说
<?php
class chalax_try_widget extends WP_Widget {
/**
* Register widget with WordPress.
*/
function __construct() {
parent::__construct(
'chalax_try_widget', // Base ID
__('Chalax try List', 'text_domain'), // Name
array( 'description' => __( 'Widget untuk menampilkan daftar artikel/berita tertentu', 'text_domain' ), ) // Args
);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget( $args, $instance ) {
echo $args['before_widget'];
echo $args['before_title'].$instance['title1'].$args['after_title'];
echo "string";
echo $args['after_widget'];
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form( $instance ) {
if (isset($instance['title1'])) {
# code...
$title1=$instance['title1'];
}else{
$title1="jajal";
}
?>
<input id="<?php echo $this->get_field_id( 'title1' ); ?>" name="<?php echo $this->get_field_name( 'title1' ); ?>" value="<?php echo $title1 ;?>">
<?php
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title1'] = ( ! empty( $new_instance['title1'] ) ) ? strip_tags( $new_instance['title1'] ) : '';
return $instance;
}
} // class Foo_Widget
?>
然后问题来了
我遵循教程,甚至从codex复制此函数。如果执行上述操作,您应该会收到一个php错误。基本上,您两次使用相同的名称声明一个类(与两次声明一个函数的效果相同),只需重命名第二个类即可
此外,您还缺少注册小部件的代码,我假设它在那里,因为有些东西正在发生变化。如果没有,请添加它,它也会出现在codex中。感谢您的回复。我认为这是因为类的名称。