You code is not wrong, probably the only problem is that you are using is_home()
when you need is_front_page
.
However, just for a tip, I want show how your code can be semplified a lot:
class donor_pdf_plugin extends WP_Widget {
static $fields = array();
// Constructor
function donor_pdf_plugin() {
self::$fields = array(
'link' => __('Menu link', 'wp_widget_plugin'),
'link1' => __('Menu link 1', 'wp_widget_plugin'),
'link2' => __('Menu link 2', 'wp_widget_plugin'),
'link3' => __('Menu link 3', 'wp_widget_plugin'),
'title' => __('Menu title', 'wp_widget_plugin'),
'title1' => __('Menu title 1', 'wp_widget_plugin'),
'title2' => __('Menu title 2', 'wp_widget_plugin'),
'title3' => __('Menu title 3', 'wp_widget_plugin'),
);
parent::WP_Widget(false, $name = __('Pdf footer description', 'donor_pdf_plugin'));
}
// Widget form creation
function form($instance) {
foreach ( self::$fields as $field => $label) {
$value = isset($instance[$field]) ? esc_attr($instance[$field]) : '';
$id = $this->get_field_id($field);
printf( '<p><label for="https://wordpress.stackexchange.com/questions/116698/%s">%s</label>', $id, esc_html($label) );
$format="<input class="widefat" id="https://wordpress.stackexchange.com/questions/116698/%s" name="https://wordpress.stackexchange.com/questions/116698/%s" type="text" value="https://wordpress.stackexchange.com/questions/116698/%s"/></p>";
printf( $format, $id, $this->get_field_name($field), esc_attr($value) );
}
}
// Widget update
function update($new_instance, $old_instance) {
return array_map('sanitize_text_field', $new_instance);
}
// Widget display
function widget($args, $instance) {
$class = is_front_page() ? 'white' : 'menu-widget';
printf('<div class="https://wordpress.stackexchange.com/questions/116698/%s">', $class);
$format="<p><a href="https://wordpress.stackexchange.com/questions/116698/%s"><img src="https://wordpress.stackexchange.com/questions/116698/%s"/><span class="pdf-description">%s</a></p>";
$icon = IMAGES . '/pdf.png';
for ($i=0; $i<4; $i++) {
$u = $i == 0 ? '' : $i;
if ( empty($instance['link' . $u]) || empty($instance['title' . $u]) ) continue;
printf($format, esc_url($instance['link' . $u]), $icon, $instance['title' . $u]);
}
echo '</div>';
}
}