今回はWordPressのプラグイン作り第2段として、管理画面のあるプラグインを製作します。前回は挨拶をするものなので、少しは意味を持たせようと思います。今回はTwitter APIを利用して、WordPressからツイートしてみましょう(ㆁᴗㆁ✿)

残念ながら私は毎日業務でプログラムを書いているわけではないので、色々やっているうちに忘れてしまう危険があります・・・!!そんなわけで、プログラム系もぼちぼち記事にしていこうと思います。

バックナンバー

  1. WordPress プラグイン 簡単作成 Hello Dollyをカスタマイズ
  2. WordPress 管理画面 プラグイン作成 Twitter APIで投稿
  3. WordPress ウィジェット プラグイン 作成
  4. WordPress DBを使ったプラグイン 作成 昔ながらのアクセスカウンターを作る

 

開発者として登録しよう

登録さえ行えば、あなたもTwitter Developerの一員です~!

 

 

 

環境に合わせて登録して、APIとアプリをTwitterに登録してトークン等を取得して下さい。ここの手順はGoogleで検索すると良い記事が見つかるはずなので割愛します。

 

 

やりたいこと・機能

  1. 管理画面にメニューを追加
  2. メニューからTwett投稿ページに飛ぶ
  3. Twitter APIを使用してつぶやく。
  4. 3についてはTwitterOAuthライブラリを活用する

複雑になるのでそんなに多くはありません。

この投稿機能が実装出来たら、特定のハッシュタグで検索して、関連するTweetを自動収集していく機能などをつけていくのも面白いかもしれません。

 

composerよりTwitterOAuthライブラリの導入を行います

これでTwitterOAuthライブラリがインストールされました。composerは便利ですね。

 

TwitterOAuthについて

TwitterOAuth

TwitterOAuthを使うことにより、TwitterAPIとアプリが簡単に連携できるようになります。使い方や実装方法は下記URLをご覧下さいませ。

https://twitteroauth.com/

 

 

WordPress 公式リファレンスを見てみよう

@see WordPress Codex 管理画面の追加

WordPressやWordPress独自関数を自分が作ったわけではないのだから、リファレンスを見ないと始まりません。見ていきます。

 

 

管理メニューを追加するには、次の3つのステップが必要です。

  1. メニュー作成用のコードを含む関数を作成する
  2. admin_menu/en アクションフックを使用してステップ1で作成した関数を登録する。ネットワーク に管理メニューを追加する場合は、代わりにnetwork_admin_menu/en を使用する。
  3. メニュー項目をクリックした際に表示されるページ、または画面の HTML 出力を作成する

新米プラグイン開発者が見落としがちなのがステップ2です。メニュー作成用のコードは単純に呼び出せません。コードは関数の中に入れ、この関数を登録する必要があります。

なるほどですね。

 

 

ポイントとなる関数

パラメータの値 :

page_title
メニューが選択された際にページのタイトルタグに表示されるテキスト
menu_title
管理画面のメニュー上での表示名
capability
ユーザーがこのメニュー表示する際に必要な権限。フォームの処理に Settings API を使用している場合は ‘manage_options’ を使用してください。ユーザーがオプションを保存できません。
menu_slug
このメニューを参照するスラッグ名。このメニュー固有の必要があります。Version 3.0 以前は file パラメータ、または handle パラメータと呼ばれていました。function パラメータを省略する場合、menu_slug にはメニューページコンテンツの表示を処理する PHP ファイルを指定する必要があります。
function
メニューページのコンテンツを表示する関数
技術的には functionパラメータはオプションですが、指定されていない場合、WordPress は基本的にインクルードされた PHP ファイルが、関数の呼び出しなしで管理画面を生成するものと仮定します。ページ生成コードはメインのプラグインファイル内の関数に実装できます。
function パラメータを指定する場合は menu_slug パラメータに任意の文字列を使用できます。?page=my-super-plugin/admin-options.php の代わりに ?page=my_super_plugin_page のようなページを使用できます。
function は次の2つのどちらかの方法で参照する必要があります:
関数がプラグイン内のクラスのメンバーである場合、array( $this, ‘function_name’ ) として参照する必要があります。
その他のすべての場合、関数名を使用すれば十分です。
icon_url
このメニューで使用されるアイコンの URL 。このパラメータはオプション。
position
このメニューが表示されるメニュー順の位置。このパラメータを省略すると、デフォルトではメニュー構造の一番下に表示されます。現在のメニュー位置について参照するには、メニューがロードされた後で print_r($GLOBALS[‘menu’]) を使用してください。

管理画面にページを追加するリファレンスを見てみよう。大まかな流れと実装に必要な関数に対する引数の意味を把握します。

 

 

ざっくり作っていきます。

動けばいいかなという程度にがしがしつくります。歯ブラシのように。

 

Twitter APIからツイートする部分

ここですね。

後はよくあるフォームアプリのやり方。自身のページにPostして、Postを受け取ってデータを登録することで、1ファイルで処理が出来ます。

 

 

クラス化します。

クラス化することによって、他のプラグインの関数との衝突を避けることが出来ます。保守性の向上や、共通した処理をサブルーチンとして使いまわしが出来るなど利便性メリットがあります。クラスで処理がまとまっているので読みやすくもなります。

 

 

 

ここが重要 “管理メニューへ追加する為のフック登録”

クラスのメソッドをフックする場合は、add_action()関数を使ってフックとして登録する必要があります。今回はadd_action()でtweet_admin_hook関数を指定して管理メニューへの追加処理を行っています。もしフックの登録を行わないと『Call to undefined function add_menu_page()』というエラーになるはず。

 

実際に動かしてみよう!

まずは有効化してみましょう。

 

結果

twitter api wordpress プラグイン 作成

メニューが出ましたね。

 

 

twitter api wordpress プラグイン 作成

Tweetを投稿してみましょう。トークン等はTwitterの開発者画面から取得して下さいね。

 

 

Twitterを見てみる

twitter api wordpress プラグイン 作成

きちんと投稿されていますね!

WordPressって本当に良くできてますよね、フレームワークのようです。ちょっとした機能であれば、少ないコード量でWordPressのプラグインを手軽に実装できます。興味があればチャレンジしてみてはいかがでしょうか。

次はどうしましょう。プラグイン用のオリジナルのテーブルを作成して何かデータを入れる処理の御紹介が出来るといいかなと考えています。

 

お疲れ様です。

金広 優 (エンジニア)
この記事を書いた人:金広 優 (エンジニア)

システムガーディアン爆弾処理班。アクセス負荷対策などNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。