私はこれを最後に諦めました。WordPressウィジェットを自動起動する方法は? (新しいWidgets_API WP_Widgetクラス)
私はWordPress 2.8.4で何かを開発しています。私はあなたがWP_Widgetを拡張し、複数のインスタンスを簡単に持つウィジェットを作成することを可能にする新しいウィジェットAPIの使いやすさに感心しています。しかし、私は問題に直面しています。
テーマのアクティブ化でウィジェットを自動アクティブ化するにはどうすればよいですか?私は使用しようとしました:
add_action('sidebars_widgets', array('sidebar-1', array('uc_tagcloud')));
しかし、成功しません。問題は、新しいWordPress APIがウィジェットIDを作成し、一意のIDを自動的にIDの末尾に追加することです。だから私はちょうどそれのハングアップを取得することはできません。上記の解決策を試しましたが、ソースコードを表示して実際のウィジェットIDを表示すると、常にuc_tagcloud-2または3または4..etcなどが表示されます。ウィジェットを追加するたびに新しいインスタンスが表示されます。
私は何か考えていただければ幸いです。私はそれについて深く考え、数時間インターネットを検索しました。これが私の最後のチャンスです。
私は基本的に、ユーザーが手動でドラッグして有効にしないようにしたいと考えています。
以下は、私が開発したサンプルウィジェットです。私がドラッグして関連するサイドバーに入れるとうまく動作します。しかし、私は私の質問はどのように...知らない:どのように私は(WP_Widget新しいウィジェットAPI)を手動でdragginことなく、特定のサイドバーに自動的にそれを有効にすることができ
これはウィジェットのコードです:
<?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');
}
?>
はそれは非常にですシンプルな、新しいAPI私はそれを愛する。しかし、私はどのように特定のサイドバー上のウィジェットのインスタンスを自動起動するのかを知ることができません。どんな助け?
私はそれはできないと思います。 Wordpress MU WPでは、ネットワーク管理者がプラグインを有効にするように強制しますが、WPでは同じようです。実際に私は自分のWebサイトに入れる前に自分のウィジェットをアクティブにして設定したいと思っています。 –