您的代码没有错,可能唯一的问题是您正在使用is_home()
当你需要的时候is_front_page
.
然而,作为一个提示,我想展示如何对代码进行大量的符号化:
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="%s">%s</label>\', $id, esc_html($label) );
$format = \'<input class="widefat" id="%s" name="%s" type="text" value="%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="%s">\', $class);
$format = \'<p><a href="%s"><img src="%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>\';
}
}