允许用户在WordPress小工具中输入快捷码

时间:2014-05-10 作者:MJ135

这是我的第一个小部件,所以我是新手,但我希望能够向用户可以设置的小部件添加6个不同的短代码。

问题是,如何让插件允许用户这样做,以及如何让插件执行短代码?

1 个回复
SO网友:s_ha_dum

非常粗糙,部分cribbed from the Codex, 但这应该让你开始:

class My_SC_Widget extends WP_Widget {

  private $shortcodes = array(
    \'sc1\' => \'[sc1]\',
    \'sc2\' => \'[sc2]\',
    \'sc3\' => \'[sc3]\',
  );

  function __construct() {
    // Instantiate the parent object
    parent::__construct( false, \'My SC Widget\' );
  }

  function widget( $args, $instance ) {
    if (isset($instance[\'my_shortcode_widgets\']) && array_key_exists($instance[\'my_shortcode_widgets\'],$this->shortcodes)) {
      echo do_shortcode($this->shortcodes[$instance[\'my_shortcode_widgets\']]);
    }
  }

  function update( $new_instance, $instance ) {
    // Save widget options
    if (isset($new_instance[\'my_shortcode_widgets\']) && array_key_exists($new_instance[\'my_shortcode_widgets\'],$this->shortcodes)) {
      $instance[\'my_shortcode_widgets\'] = $new_instance[\'my_shortcode_widgets\'];
    }

    return $instance;
  }

  function form( $instance ) {
    echo \'<select name="\'.$this->get_field_name(\'my_shortcode_widgets\').\'">\';
      foreach ($this->shortcodes as $k => $v) {
        echo \'<option value="\'.$k.\'" \'.selected( $instance[\'my_shortcode_widgets\'], $k ).\'>\'.$k.\'</option>\'; 
      }
    echo \'</select>\';
  }
}

function myplugin_register_widgets() {
  register_widget( \'My_SC_Widget\' );
}

add_action( \'widgets_init\', \'myplugin_register_widgets\' );

结束