嗨,请告诉我,我在哪里弄错了?我想在页面表单站点添加select。选择已显示页面,但是当我更新小部件时,重新加载。
function form($instance) :
<label for="<?php echo $this->get_field_id( 'link' ); ?>"><?php _e( 'Select:' ); ?></label>
<select id="<?php echo $this->get_field_id( 'link' ); ?>" name="<?php echo $this->get_field_id( 'link' ); ?>">
<?php
$pages = get_pages( $args );
$selected = $instance['link'];
foreach ( $pages as $page ) {
$onlyLink = get_page_link( $page->ID );
$onlyName = $page->post_title;
if ($selected == $page) {
echo '<option selected="selected" value="' . $onlyLink . '">'.$onlyName.'</option>';
} else {
echo '<option value="' . $onlyLink . '">'.$onlyName.'</option>';
}
}
?>
</select>
function update:
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['text'] = strip_tags($new_instance['text']);
$instance['button_text'] = strip_tags($new_instance['button_text']);
$instance['link'] = stripslashes($new_instance['link']);
return $instance;
}
答案 0 :(得分:1)
对于name
属性,请在其值中使用$this->get_field_name()
:
<select id="<?php echo $this->get_field_id( 'link' ); ?>" name="<?php echo $this->get_field_id( 'link' ); ?>">
所以:
<select id="<?php echo $this->get_field_id( 'link' ); ?>" name="<?php echo $this->get_field_name( 'link' ); ?>">
[编辑] 我相信答案是:
在form()
函数中,替换:
if ($selected == $page)
用这个:
if ($selected == $onlyLink)
此外,您应该定义$args
变量,或者替换以下内容:
$pages = get_pages( $args );
这一个:
$pages = get_pages();
但是再一次,请记住这一点:
对于name属性,请在其值
中使用$this->get_field_name()