Wordpress小部件选择页面

时间:2018-02-13 22:27:53

标签: php wordpress

嗨,请告诉我,我在哪里弄错了?我想在页面表单站点添加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;
    }

1 个答案:

答案 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()