插件输出的条件标记

时间:2013-10-03 作者:Dannyw24

我仍然是一个新手,所以像这样的小问题有时会让我停滞不前。

我基本上构建了一个自定义插件,可以在链接旁边显示pdf图像,我知道这很基本,但我的问题是,我需要$title1文本在某些页面模板上具有不同的颜色,因此我尝试使用条件更改输出代码,但它似乎无法在浏览器中解析。

如果条件仅为,则代码现在已被解析。菜单小部件div在所有页面模板上获取输出,而不是。将其替换为白色,使我可以使用css对其进行样式设置。

IMAGES常量在函数中定义。php文件。

这是我的密码

    class donor_pdf_plugin extends WP_Widget {

// Constructor
function donor_pdf_plugin() {
parent::WP_Widget(false, $name = __(\'Pdf footer description\', \'donor_pdf_plugin\'));
}

// Widget form creation
function form($instance) {

// Check values
if($instance) {
$link = esc_attr($instance[\'link\']);
$link1 = esc_attr($instance[\'link1\']);
$link2 = esc_attr($instance[\'link2\']);
$link3 = esc_attr($instance[\'link3\']);
$title = esc_attr($instance[\'title\']);
$title1 = esc_attr($instance[\'title1\']);
$title2 = esc_attr($instance[\'title2\']);
$title3 = esc_attr($instance[\'title3\']);
} else {
$link = \'\';
$link1 = \'\';
$link2 = \'\';
$link3 = \'\';
$title = \'\';
$title1 = \'\';
$title2 = \'\';
$title3 = \'\';
}
?>

       <p>
       <label for="<?php echo $this->get_field_id(\'link\'); ?>"><?php _e(\'Menu link\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'link\'); ?>" name="<?php echo $this->get_field_name(\'link\'); ?>" type="text" value="<?php echo $link; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'link1\'); ?>"><?php _e(\'Menu link1\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'link1\'); ?>" name="<?php echo $this->get_field_name(\'link1\'); ?>" type="text" value="<?php echo $link1; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'link2\'); ?>"><?php _e(\'Menu link2\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'link2\'); ?>" name="<?php echo $this->get_field_name(\'link2\'); ?>" type="text" value="<?php echo $link2; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'link3\'); ?>"><?php _e(\'Menu link3\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'link3\'); ?>" name="<?php echo $this->get_field_name(\'link3\'); ?>" type="text" value="<?php echo $link3; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'title\'); ?>"><?php _e(\'Menu title\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'title\'); ?>" name="<?php echo $this->get_field_name(\'title\'); ?>" type="text" value="<?php echo $title; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'title1\'); ?>"><?php _e(\'Menu title1\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'title1\'); ?>" name="<?php echo $this->get_field_name(\'title1\'); ?>" type="text" value="<?php echo $title1; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'title2\'); ?>"><?php _e(\'Menu title2\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'title2\'); ?>" name="<?php echo $this->get_field_name(\'title2\'); ?>" type="text" value="<?php echo $title2; ?>" />
       </p>
       <p>
       <label for="<?php echo $this->get_field_id(\'title3\'); ?>"><?php _e(\'Menu title3\', \'wp_widget_plugin\'); ?></label>
       <input class="widefat" id="<?php echo $this->get_field_id(\'title3\'); ?>" name="<?php echo $this->get_field_name(\'title3\'); ?>" type="text" value="<?php echo $title3; ?>" />
       </p>





      <?php // end of widget form creation ?> 
<?php
}

// Widget update
function update($new_instance, $old_instance) {
$instance = $old_instance;
// Fields
$instance[\'link\'] = strip_tags($new_instance[\'link\']);
$instance[\'link1\'] = strip_tags($new_instance[\'link1\']);
$instance[\'link2\'] = strip_tags($new_instance[\'link2\']);
$instance[\'link3\'] = strip_tags($new_instance[\'link3\']);
$instance[\'title\'] = strip_tags($new_instance[\'title\']);
$instance[\'title1\'] = strip_tags($new_instance[\'title1\']);
$instance[\'title2\'] = strip_tags($new_instance[\'title2\']);
$instance[\'title3\'] = strip_tags($new_instance[\'title3\']);

return $instance;
}

// Widget display
function widget($args, $instance) {
extract($args);
$link = $instance[\'link\'];
$link1 = $instance[\'link1\'];
$link2 = $instance[\'link2\'];
$link3 = $instance[\'link3\'];
$title = $instance[\'title\'];
$title1 = $instance[\'title1\'];
$title2 = $instance[\'title2\'];
$title3 = $instance[\'title3\'];



if(!is_home()) {
echo "<div class=\\"menu-widget\\">
<p><a href=\\"$link\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\"> $title</a></p>
<p><a href=\\"$link1\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title1</span></a></p>
<p><a href=\\"$link2\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title2</a></p>
<p><a href=\\"$link3\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title3</a></p>
</div>";
} else {
echo "<div class=\\"white\\">
<p><a href=\\"$link\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\"> $title</a></p>
<p><a href=\\"$link1\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title1</span></a></p>
<p><a href=\\"$link2\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title2</a></p>
<p><a href=\\"$link3\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title3</a></p>
</div>";

}
}
}


// Register widget
add_action(\'widgets_init\', create_function(\'\', \'return register_widget("donor_pdf_plugin");\'));
?>
未被解析的代码就是这个位。

} else {
echo "<div class=\\"white\\">
<p><a href=\\"$link\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\"> $title</a></p>
<p><a href=\\"$link1\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title1</span></a></p>
<p><a href=\\"$link2\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title2</a></p>
<p><a href=\\"$link3\\"><img src=\\"" . IMAGES . "/pdf.png\\"/><span class=\\"pdf-description\\">$title3</a></p>
</div>";

}

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

您的代码没有错,可能唯一的问题是您正在使用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>\';
  }

}

结束

相关推荐

如何使用php从外部访问WordPress数据库中的数据

我想与iOS应用程序共享特定wordpress数据库表中的数据。客户端希望通过wordpress表单插件输入数据,这些插件在wp数据库中创建自己的表。我所研究的插件本身没有API,wordpress REST API的示例都使用AJAX,我不熟悉AJAX和/或只能访问wordpress帖子或用户数据中的信息。有没有一种方法可以通过php做到这一点,而不需要直接访问数据库?我担心数据库结构的变化和更新可能会破坏应用程序。