tumblrの画像を表示させるウィジェットの作成。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

自tumblrの画像を表示させるやつの続き。
編集中です。

一区切りしたら工程をまとめようと思っているうちに二転三転して随分時間も経ってしまい、初期の失敗などを忘れてしまった、勿体無い。

作成途中だけど) tumblrの画像を表示させるウィジェットのコード。

[php]
<?php
//widgets_initアクション時にwpMkTumblrInit関数を実行
add_action(‘widgets_init’,’wpMkTumblrInit’);

//registerに登録
function wpMkTumblrInit(){
//ウィジェットのクラス名を登録
register_widget(‘wp_mk_tumblr’);
}
[/php]

[php]
class wp_mk_tumblr extends WP_Widget {

//コンストラクタ
function wp_mk_tumblr() {
$widget_ops=array(
‘description’=>’説明|タンブラーの画像を表示’
);
parent::WP_Widget(false,$name=’タイトル|タンブラー画像’,widget_ops);
}
[/php]

[php]
//管理画面入力フォーム
function form( $instance ) {
//$instanceから現在の設定を読み込みます。$instanceは連想配列らしい
$account=esc_attr($instance[‘account’]);
$imagesNum=esc_attr($instance[‘imagesNum’]);
$mytitle=esc_attr($instance[‘mytitle’]);
?>

<!– widget内の設定form –>
<p><label for="<?php echo $this->get_field_id(‘mytitle’); ?>">
<?php _e(‘mytitle’); ?>
<input class="widefat" id="<?php echo $this->get_field_id(‘mytitle’); ?>" name="<?php echo $this->get_field_name(‘mytitle’); ?>" type="text" value="<?php echo $mytitle; ?>" /></label></p>

<p><label for="<?php echo $this->get_field_id(‘account’); ?>">
<?php _e(‘Tumblr ID:’); ?>
<input class="widefat" id="<?php echo $this->get_field_id(‘account’); ?>" name="<?php echo $this->get_field_name(‘account’); ?>" type="text" value="<?php echo $account; ?>" /></label></p>

<p><label for="<?php echo $this->get_field_id(‘account’); ?>">
<?php _e(‘imagesNum:’); ?>
<input class="widefat" id="<?php echo $this->get_field_id(‘imagesNum’); ?>" name="<?php echo $this->get_field_name(‘imagesNum’); ?>" type="text" value="<?php echo $imagesNum; ?>" /></label></p>

<!– /widget内の設定form –>

<?php
}
[/php]

[php]
//登録内容のアップデート
function update( $new_instance, $old_instance ) {
$instance=strip_tags($new_instance[‘mytitle’]);
$instance=strip_tags($new_instance[‘account’]);
$instance=strip_tags($new_instance[‘imagesNum’]);

return $new_instance;
}
[/php]

xmlの読み込み位置はこの場所でいいのかなぁ
[php]
//登録内容の表示
function widget( $args, $instance ) {
extract($args);
$account=apply_filters(‘widget_title’,$instance[‘account’]);
$imagesNum=apply_filters(‘widget_title’,$instance[‘imagesNum’]);
$mytitle=apply_filters(‘widget_title’,$instance[‘mytitle’]);

echo $before_widget;
if($mytitle)
echo $before_title . $mytitle . $after_title;
echo ‘<ul>’;

/*xml読み込み*/
$xml=simplexml_load_file("http://".$account.".tumblr.com/api/read?type=photo&num=".$imagesNum."");
if($xml){
foreach($xml->posts->post as $postar){

$pu=$postar->{"photo-url"}[5];
$pubig=$postar->{"photo-url"}[0];
$pc=$postar->{"photo-caption"};
$plu=$postar->{"photo-link-url"};

/*html*/
?>
<li>
<a href="<?php echo $pubig ?>" rel="shadowbox[tumblr-photo];player=img;">
<img src="<?php echo $pu ?>" title="<?php echo $plu ?>">
</a>
</li>
<?php
/*html*/
}
}else{
echo ‘xmlがない’;
}

echo $after_widget;/*ウィジェットを閉じる時のタグ*/
?>
</ul>
<?php
}
}
?>
[/php]

参考サイト

WordPress Codex 日本語版

オリジナルメニューとか管理画面の作成とか|最初は[設定]の中に設定画面を作ろうと思っていた。

サイドバーウィジェット

なんていうか、ウィジェットというものをイマイチ理解してなかった(今もだけど)。

管理画面のformから設定を変更・保存するような機能をわざわざつけなくても
自分でテーマを弄ってるから、追加したい機能を呼び出す記述とhtmlソースを挿入したい場所に挿入しておいて、ウィジェット風に作ったモノをwp-content/plugins/にupして、管理画面からプラグインを有効化すれば使えてたし、それでいいと思ってた。
理由は、単純にそっちの方が少ない手順で出来る気がしたから。

だって全部ウィジェットから設定出来たとしても、自分の好きな場所に表示させる為には結局functions.phpのregister_sidebarsを変更しなきゃだめだし、sidebarを挿入したい部分(header.phpやfooter.phpやsidebar.phpの任意の場所)にdynamic_sidebarも書かなきゃならないんでしょう?

けどそれは自分の手が届く範囲だけの話なんですよね。
WordPressを使ってる人たちが、みんな自分でphpを編集して運用してるかといったらそうじゃないし、実際うちも難しい事はまださっぱりわからないわけで。

いつか自作のプラグインを他の人にも使ってもらいたくなって配布を始めた時に、だれでも管理画面から有効にするだけで簡単に導入できる事とか、バグを見つけて修正したウィジェットやWordPressのVerアップに対応したモノを早急に反映してもらう事とか、すごく大事なんじゃないかと考えを改めたわけです。

さんざん他所様のプラグインを活用させてもらってて、WordPress上から更新が出来る事がどれほど便利か気づいてたはずなのに気づいてなかったという、、、なんていうか実に恥ずかしいなぁ。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す


You can add images to your comment by clicking here.