私はこれに従っているいくつかの本を持っています。私は自分のカスタムWPテーマを作ったが、うまくいきましたが、右側のサイドバーをウィジェットエリアにして、テンプレートにハードコードするのではなく、ウィジェットをウィジェットに変えたいと決めました。私はそこにtwitterフィードプラグインがたくさんあることを理解していますが、私はその経験のためにこれをやっています。テーマをウィジェット化し、カスタムウィジェットプラグインを作成する
プラグインファイル:
if (!function_exists('register_sidebar')) { register_sidebar(); }
function sp_rightSidebar()
{
register_sidebar(array(
'name' => 'Right Sidebar',
'id' => 'rightColumn',
'description' => __('The widget area for the right sidebar', 'simplePortfolio'),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="rightHeading">',
'after_title' => '</div>'));
}
add_action('init', 'sp_rightSidebar');
サイドバーのテーマファイル:ウィジェットエリアとしてサイドバーの登録
class sp_twitterWidget extends WP_Widget
{
function sp_twitterWidget()
{
parent::WP_Widget(false, $name = 'Custom Twitter Feed');
return;
}
function widget($args, $instance)
{
extract($args);
echo $before_widget;
echo $before_title;
echo $instance['title'];
echo $after_title;
$api_url = 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=';
$twitter_data = file_get_contents($api_url);
$twitter_data = json_decode($twitter_data);
for ($i=1;$i<=3;$i++):
echo '<p class="tweet">';
echo $twitter_data[$i]->text;
echo '<br /><span>';
echo date("F j", strtotime($twitter_data[$i]->created_at));
echo '</span></p>';
endfor;
echo $after_widget;
}
function update($new_instance, $old_instance)
{
return $new_instance;
}
function form($instance)
{
$theTitle = esc_attr($instance['title']);
echo '<p>';
echo '<label for="'.$this->get_field_id('title').'">
Title: <input class="widefat" id="'.$this->get_field_id('title').'" name="'.$this->get_field_name('title').'" type="text" value="'.$theTitle.'" />
</label>';
echo '</p>';
}
}
add_action('widgets_init', create_function('', 'return register_widget("sp_twitterWidget");'));
どんなに私は何をすべきか
<div id="rightColumn">
<?php if (!function_exists('sp_rightSidebar') || !sp_rightSidebar()): ?>
sp_rightSidebar is waiting.
<?php else: ?>
<?php dynamic_sidebar('sp_rightSidebar'); ?>
<?php endif; ?>
</div>
は、それが常に表示されます」 sp_rightSidebarがサイドバーで待っています」、他のテーマでウィジェットのプラグインをテストしたところ、うまくいきました。私のサイドバーに関するテーマファイル/サイドバーを正しく登録していないことを私は推測しています。右サイドバーウィジェット領域は、管理パネルのウィジェット領域に表示されますが、追加されたものはそこにとどまりません。
私はコードをダンプして人を見てもらう人には嫌いですが、間違っていると思われるものがあれば、あなたの意見をお寄せいただきたいと思います。
ありがとうございます!
これは意味があるので、アクティブであるかどうかをチェックするために変更しました。関数内で呼び出されるregister_sidebarアクションを変更しました。 私が前に言ったように、ウィジェットメニューのサイドバーに置いたものは何もそこにとどまっていないので、私はまだ無知なままです。 : -/ – user652650
@ user652650あなたのサイドバーIDは実際にはすべて小文字にする必要があるので、 'rightcolumn'です。 –