0

以下のコードでは、「widget」関数の $line_above 変数の値に基づいて、$widget_ops の「classname」配列を変更しようとしています。配列をアドレス指定して値を変更する方法がわかりません。

これは可能ですか?

class my_widget extends WP_Widget {

    function my_widget() {
        $widget_ops = array('classname' => 'test', 'description' => __( "test") );
        $control_ops = array('width' => 450, 'height' => 100, 'id_base' => 'my_widget' );
        $this->WP_Widget('my_widget', __('Test: test'), $widget_ops, $control_ops);
    }

    function widget( $args, $instance ) {
        extract($args);
        $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
        $text = apply_filters( 'widget_text', $instance['text'], $instance );
        $line_above = isset( $instance['line_above'] ) ? $instance['line_above'] : false;

        if($line_above){
            //TRYING TO ALTER THE CLASS HERE BASED ON VARIABLE
            $widget_ops['classname'] .= " border-top";
        }
    }
}
4

1 に答える 1

0

あなたはそれをグローバルにすることができます:

class my_widget extends WP_Widget {

    private $widget_ops;

    function my_widget() {
        $this->widget_ops = array('classname' => 'test', 'description' => __( "test") );
        $control_ops = array('width' => 450, 'height' => 100, 'id_base' => 'my_widget' );
        $this->WP_Widget('my_widget', __('Test: test'), $this->widget_ops, $control_ops);
    }

    function widget( $args, $instance ) {
        extract($args);
        $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
        $text = apply_filters( 'widget_text', $instance['text'], $instance );
        $line_above = isset( $instance['line_above'] ) ? $instance['line_above'] : false;

        if($line_above){
            //TRYING TO ALTER THE CLASS HERE BASED ON VARIABLE
            $this->widget_ops['classname'] .= " border-top";
        }
    }
}
于 2013-02-04T19:46:49.683 に答える