新しいブログに引っ越しました

tomotomoSnippetは新しいブログに移動しました
https://develtips.com/

2013-07-20

WordPressプラグインの作り方をかなりリアルに説明します。

またWordPressネタで恐縮です。今回はWordPressの勉強会であるWordBench大阪でプラグイン作成のワークショップをやって来ましたので、「どうやってWordPressプラグインを作るのか?」という疑問に対してカナリ生々しくお伝えしたいと思います。
@luchino__ に作ってもらいました

みんな、WordPressプラグイン作りたいって思ったりします?

現在、WordPressでメシ食ってる皆さんに聞きたいんですよね。そもそも、プラグイン作成に興味はあるのかと。僕はPHPerなので、デザインファイル(テーマ)に機能追加とか色々書き込むのが気持ち悪すぎて(functions.phpに機能追加のコードを書くことのこと)ふざけんな!と毎回思ってるわけです。
WordPressの機能追加はプラグインに書け!とね。

でもWPってお作法が多いじゃない?だから面倒だと思ってたのよね。そんな時に、今回WordBench大阪のイベント情報が入ってきて「参加するしか無い!」と思い、実際に参加して収穫が多かったので、アウトプットしたいと思います。

※今回のブログはWP触ったことある人なら誰でもプラグイン作れるように書いたので最後まで読んでくれるとうれいいです。

何はともあれ、プラグイン作るにはPHPわかんないとイケナイわけです。 「ピーエッチピー?」と眉をひそめる方、とりあえずコチラの記事を読んでください。 Pluginceptionを使って今すぐ始めるWordPressプラグイン開発

はい、読みましたか?プラグインの入れ物作るのは超カンタンですね。じゃあ早速プラグイン作りましょう。

ちょっと待て!お前は何のためにプラグインを作るんだ?

ちょーっと面倒くさいこと言いますよ?…すいません。
そこのアナタ、何のためにプラグイン作るんですか?プラグイン作るには目的をはっきりしましょうね。
勉強会中にTwitterで目的が決まる
今回、僕と一緒にプラグイン作成をしたるっちんは同じ目的のためにプラグイン作成をしました。(上記の画像をクリックすると原寸大で確認できるよ)

目的は「頻繁に変わるキャンペーンバナーを簡単に管理したい」

そう、ビジネスをしていると、キャンペーンは日々変わるし、バナーは効果の悪いものをすぐに下げて効果のいいものにしたい。そんなニーズは日常茶飯事。さらに、行動を喚起するCall to action(CTA)バナーは記事中のベストのタイミングで表示したい。
そんな訳で、管理画面でCTAを簡単に管理し、ショートコードで記事中の任意の場所に表示するプラグインを作りたいと、目的が決まりました。

この後の開発の流れは全部GitHubで確認できるので、合わせて見てください。

管理画面で管理するにはカスタム投稿タイプ

※カスタム投稿タイプがわからない人はこのあたりの記事が参考になるかも。

カスタム投稿タイプを使ってキャンペーンを作り、公開したものをショートコードで出力出来ればめちゃ便利よね。方向性は決まったので何はともあれ、先にプラグイン名を決めなくてはならない。今回はキャンペーン用のバナーを全部ダッシュボードで管理できるようにするので「WP Campaign Manager」に決定。ググっても、公式ディレクトリで検索しても見つからなかったので即決しました。

プラグインでカスタム投稿タイプを扱うにはregister_post_type()関数を使うということを詳しい人から教えてもらい、とりあえずPHPファイルに書き込む。

  1. <?php  
  2. # /wp-content/plugins/wp-campaign-manager/wp-campaign-manager.php  
  3. /* 
  4. Plugin Name: WP Campaign Manager 
  5. Plugin URI:  
  6. Description:  
  7. Version: 0.1 
  8. Author: Tomoyuki Sugita 
  9. Author URI: http://tomotomosnippet.blogspot.jp/ 
  10. License: GPLv2 or later 
  11. License URI:  
  12. */  
  13.   
  14. function wcm_init() {  
  15.   $labels = array(  
  16.     'name' => 'Books',  
  17.     'singular_name' => 'Book',  
  18.     'add_new' => 'Add New',  
  19.     'add_new_item' => 'Add New Book',  
  20.     'edit_item' => 'Edit Book',  
  21.     'new_item' => 'New Book',  
  22.     'all_items' => 'All Books',  
  23.     'view_item' => 'View Book',  
  24.     'search_items' => 'Search Books',  
  25.     'not_found' =>  'No books found',  
  26.     'not_found_in_trash' => 'No books found in Trash',   
  27.     'parent_item_colon' => '',  
  28.     'menu_name' => 'Books'  
  29.   );  
  30.   
  31.   $args = array(  
  32.     'labels' => $labels,  
  33.     'public' => false,  
  34.     'publicly_queryable' => true,  
  35.     'show_ui' => true,   
  36.     'show_in_menu' => true,   
  37.     'query_var' => true,  
  38.     'rewrite' => array'slug' => 'book' ),  
  39.     'capability_type' => 'post',  
  40.     'has_archive' => true,   
  41.     'hierarchical' => false,  
  42.     'menu_position' => null,  
  43.     'supports' => array'title''editor''author''thumbnail''excerpt''comments' )  
  44.   );   
  45.   
  46.   register_post_type( 'book'$args );  
  47. }  
  48. add_action( 'init''wcm_init' );  
ちなみにこの段階では、Codexのサンプルコードをコピペしただけです。
コピペしただけで目的の50%は達成しました。このあと2回コードを修正して、あっちゅーまに完成。
完成したプラグイン  (on GitHub)

プラグイン作成するのにプログラミングは殆ど不要です!

ここまで作成するのに僕は殆どプログラミングしませんでした。公式のCodexからコピペしてきてテキストを書き換えただけ。ホンマ楽でしたw
殆どプログラミングすることなく、投稿中に[wcm-show id=123]と書くだけでキャンペーン用バナーを表示することができました。

プラグイン作るにはどれだけWordPressを知っているかが重要

今回使ったテクニックはregister_post_type()add_action( 'init', $func_name )add_shortcode()だけだったんですが、でもこれって自力で調べようと思うと結構大変なのよね。今回はWordPressに詳しい人がいっぱいいるWordBenchだったからちょっと聞くだけで教えてくれる人が複数いました。こんな環境だったのであっさり作ることが出来たわけです。

こいつを公式プラグインにアップするには色々と…

めんどい事があります。ます、readme.txtを英語で書かなきゃいけないこと。
ああ、面倒くさい。でもご安心を。サンプルはコチラのページからゲット出来ます。コイツをコピーして、ちょちょちょっと書き換えればReadmeの完成です。(もちろんgoogle翻訳大活躍)
完成したらReadme validatorツールを使ってチェックします。

さぁ、公式プラグインにアップしよう!

と、行きたいところなんですが。。。詳しい人に聞いてからアップしようと思ったのでそこまでイケてません(笑)
続きは公式プラグインに登録できたあとの後日談をお待ち下さい。

僕が今までやってきたことはGitHubのコミットログを読むとすご~く良くわかると思いますので、皆さん参考にしてください^^
ForkしてもらってOKです!
Fork me on GitHub!!

0 件のコメント:

コメントを投稿

人気のエントリー