2

更新:看起来他们正在被保存,但是当表单在管理员中重新加载时(保存后),当前值没有显示在下拉框中。我有“选定”的行,但我不确定为了让它们显示当前值而缺少什么。

我正在尝试创建一个小部件,允许您从两个单独的下拉菜单中选择 CTA 和登录页面。下拉菜单是根据两种运行良好的自定义帖子类型填充的。我的问题是我不知道如何将值保存到数据库中(即,单击管理员中小部件上的保存不会将值提交到数据库。

这是我的小部件类中的相关函数,称为 cta_widget。(我省略了第二个下拉列表的代码,因为它是相同的)。

<?php
function update($new_instance, $old_instance)
{
    $instance = $old_instance;

    /* Strip tags (if needed) and update the widget settings. */
    $instance['cta_id'] = $new_instance['cta_id'];
    $instance['url_id'] = $new_instance['url_id'];

    return $instance;
}

function form($instance) {
    /* Set up some default widget settings. */
    $defaults = array('cta_id' => '23', 'url_id' => '28');
    $instance = wp_parse_args((array)$instance, $defaults);
?>
<p> 
    <label
        for="<?php echo $this->get_field_name('cta_id'); ?>"><?php _e('CTA:'); ?></label>

    <select name="<?php echo $this->get_field_name('cta_id'); ?>"
            id="cta_id<?php echo $this->get_field_name('cta_id'); ?>"
            style="width:100%;">
        <option value=""></option>

        <?php

        $posts = get_posts(
            array(
                'post_type'   => 'locable_ctas',
                'numberposts' => -1
            )
        );
        if ($posts) {

            foreach ($posts as $p) {
                if ($p == $selected) {
                    $selected = "selected = 'selected'";
                } else {
                    $selected = "";
                }
                echo '<option value="' . $p->ID . '" ' . $selected . '>' . $p->post_title . '</option>';
            }
        }

        ?>
    </select>
</p>
}
4

1 回答 1

0

我想到了。这是其他有同样问题的人的代码。

function form( $instance ) { 

        $cta = $instance['cta_id']; 
        $lp = $instance['lp_id'];       

        /* Set up some default widget settings. */  
        $defaults = array( 'cta_id' => '', 'lp_id' => '');  
        $instance = wp_parse_args( (array) $instance, $defaults );   

        ?>

        <p>  

        <?php echo 'CTA: '.$cta;?>
        <?php echo 'LP: '.$lp.'<br/>';?>

        <label for="<?php echo $this->get_field_name( 'cta_id' ); ?>"><?php _e( 'CTA:' ); ?></label> 

            <select name="<?php echo $this->get_field_name( 'cta_id' ); ?>" id="cta_id<?php echo $this->get_field_name( 'cta_id' ); ?>" style="width:100%;">
            <option value=""></option>

            <?php

            $posts = get_posts(
                array(
                    'post_type'  => 'locable_ctas',
                    'numberposts' => -1
                )
            );
            if($posts)
            {

                foreach( $posts as $p )
                {
                    if ($p->ID==$cta)
                    {
                        $is_selected = "selected = 'selected'";
                    }
                    else
                    {
                        $is_selected = "";
                    }
                    echo '<option value="' . $p->ID . '" '.$is_selected.'>' .$p->post_title  . '</option>';
                }
            } 

        ?>
        </select>

        </p>

        <p>  

        <label for="<?php echo $this->get_field_name( 'lp_id' ); ?>"><?php _e( 'LP:' ); ?></label> 

            <select name="<?php echo $this->get_field_name( 'lp_id' ); ?>" id="<?php echo $this->get_field_name( 'lp_id' ); ?> style="width:100%;"">
            <option value=""></option>

            <?php

            $posts = get_posts(
                array(
                    'post_type'  => 'locable_lps',
                    'numberposts' => -1
                )
            );
            if($posts)
            {
                foreach( $posts as $p )
                {
                    if ($p->ID==$lp)
                    {
                        $is_selected = "selected = 'selected'";
                    }
                    else
                    {
                        $is_selected = "";
                    }
                    echo '<option value="' . $p->ID . '" '.$is_selected.'>' .$p->post_title  . '</option>';
                }
            } 

        ?>
        </select>

        </p>            

        <?php  
    }  
于 2013-08-25T03:19:09.577 回答