(Начинающий) Как заставить условный оператор работать в виджете WordPress? - PullRequest
0 голосов
/ 30 января 2012

Я работаю над виджетом WordPress и по какой-то причине не могу заставить работать оператор if.Я пытаюсь проверить, является ли переменная пустой и если переменная не пуста, чем я хочу отобразить изображение.Если переменная пуста, я не хочу показывать изображение.Вот утверждение:

    if (empty($facebook)) {
        echo '';

    } else { 
        echo '<a href="'.$facebook.'"><img src="'.get_option('siteurl').'/wp-content/themes/SimplePhoto/widgets/facebook.png" /></a>';

    }

Прямо сейчас, когда я запускаю виджет, значок Facebook отображается независимо от того, что.отображает его на внешнем интерфейсе:

    function form($instance) {
    $defaults = array( 'title' => 'My Info', 'Facebook' => '', 'Twitter' => '' ); 
    $instance = wp_parse_args( (array) $instance, $defaults );
    $title = $instance['title'];
    $facebook = $instance['facebook'];
    $twitter = $instance['twitter'];
    ?>
        <p>Title: <input class="widefat" name="<?php echo $this->get_field_name( 'title' ); ?>"  type="text" value="<?php echo esc_attr( $title ); ?>" /></p>
        <p>Facebook: <input class="widefat" name="<?php echo $this->get_field_name( 'facebook' ); ?>"  type="text" value="<?php echo esc_attr( $facebook ); ?>" /></p>
        <p>Twitter: <textarea class="widefat" name="<?php echo $this->get_field_name( 'twitter' ); ?>" / ><?php echo esc_attr( $twitter ); ?></textarea></p>
    <?php
}

//save the widget settings
function update($new_instance, $old_instance) {
    $instance = $old_instance;
    $instance['title'] = strip_tags( $new_instance['title'] );
    $instance['facebook'] = strip_tags( $new_instance['facebook'] );
    $instance['twitter'] = strip_tags( $new_instance['twitter'] );

    return $instance;
}

//display the widget
function widget($args, $instance) {
    extract($args);

    echo $before_widget;
    $title = apply_filters( 'widget_title', $instance['title'] );
    $facebook = empty( $instance['facebook'] ) ? '&nbsp;' : $instance['facebook'];
    $twitter = empty( $instance['twitter'] ) ? '&nbsp;' : $instance['twitter']; 

    if ( !empty( $title ) ) { echo $before_title . $title . $after_title; };


    if (empty($facebook)) {
        echo '';

    } else { 
        echo '<a href="'.$facebook.'"><img src="'.get_option('siteurl').'/wp-content/themes/SimplePhoto/widgets/facebook.png" /></a>';

    }

    echo $after_widget;
}

}

Ответы [ 2 ]

1 голос
/ 30 января 2012

сделать это

$facebook = empty( $instance['facebook'] ) ? '' : $instance['facebook'];
0 голосов
/ 30 января 2012

Вы уверены, что ваша переменная на самом деле пуста?попробуйте заменить что-то, что вы знаете, является истинным (или ложным), чтобы проверить ваш синтаксис

...