J'ai finalement abandonné.Comment activer automatiquement les widgets WordPress? (Nouvelle classe Widgets_API WP_Widget)
Je développe quelque chose sur WordPress 2.8.4. Je suis impressionné par l'aisance de l'API des nouveaux widgets qui vous permet d'utiliser extend WP_Widget et de créer facilement des widgets ayant plusieurs instances. Mais je suis confronté à un problème. Comment puis-je activer automatiquement le widget lors de l'activation d'un thème?
J'ai essayé d'utiliser:
add_action('sidebars_widgets', array('sidebar-1', array('uc_tagcloud')));
Mais sans succès. le problème est que l'API New wordpress crée des identifiants de widget et ajoute automatiquement un identifiant unique à la fin de l'ID. Donc je ne peux pas comprendre. J'ai essayé la solution ci-dessus mais l'ID de widget réel en affichant le code source affiche toujours uc_tagcloud-2 ou 3 ou 4. etc .. une nouvelle instance chaque fois que j'ajoute le widget.
J'apprécierais n'importe quelle pensée, j'ai profondément pensé à cela et ai cherché sur Internet pendant des heures maintenant. Donc c'est ma dernière chance.
Je ne veux pas que les utilisateurs les traînent et les activent manuellement.
Voici un exemple de widget que j'ai développé. Cela fonctionne bien si je fais glisser et le mettre dans la barre latérale pertinente. Mais je ne sais pas comment .. ma question est: comment puis-je activer automatiquement dans la barre latérale spécifique sans draggin manuellement (WP_Widget nouvelle API Widgets)
Ceci est du code de widget:
<?php
/**********************************************************************
Widget: Tag Cloud List
**********************************************************************/
class uc_tagcloud extends WP_Widget {
// Constructor
function uc_tagcloud() {
$widget_ops = array('description' => __('A list of your blog tags for your sidebar','ucms'));
$this->WP_Widget('uc_tagcloud', __('ultimaCMS - Tag Cloud','ucms'), $widget_ops);
}
// Display Widget
function widget($args, $instance) {
extract($args);
$title = esc_attr($instance['title']);
$num = intval($instance['num']);
echo $before_widget.$before_title.$title.$after_title;
// Display widget content
?>
<?php wp_tag_cloud('smallest=9&largest=22&number='.$num); ?>
<?php
echo $after_widget;
}
// When Widget Control Form Is Posted
function update($new_instance, $old_instance) {
if (!isset($new_instance['submit'])) {
return false;
}
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['num'] = intval($new_instance['num']);
return $instance;
}
// DIsplay Widget Control Form
function form($instance) {
global $wpdb;
$instance = wp_parse_args((array) $instance, array('title' => __('Tag Cloud','ucms'), 'num' => 100));
$title = esc_attr($instance['title']);
$num = intval($instance['num']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:','ucms'); ?></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('num'); ?>"><?php _e('Number of tags:','ucms'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('num'); ?>" name="<?php echo $this->get_field_name('num'); ?>" type="text" value="<?php echo $num; ?>" />
<br /><small>Enter 0 to display all tags</small>
</p>
<input type="hidden" id="<?php echo $this->get_field_id('submit'); ?>" name="<?php echo $this->get_field_name('submit'); ?>" value="1" />
<?php
}
}
### Initiate widget
add_action('widgets_init', 'uc_tagcloud_init');
function uc_tagcloud_init() {
register_widget('uc_tagcloud');
}
?>
Il est très simple, la nouvelle API je l'aime. Mais je ne peux pas obtenir comment activer automatiquement une instance du widget sur une barre latérale spécifique. De l'aide?
Je pense que ce n'est pas possible. Dans Wordpress MU WP force l'administrateur réseau pour activer le plugin, semble être le même sur WP. En fait je préfère activer et configurer mon widget avant de le mettre sur mon site. –