Archive for the ‘Plugin’ Category.

Akismet

今日現場から家に帰るまでの60分くらいで、スパムTBが10件くらい来ていました。
ちょっと調子に乗られてるなと思ったので、AkismetというWordpressでは結構有名なプラグインを入れました。

使用するにはWordpress.comに登録してAPI Keyを取得する必要があります。

明日どうなってるか。別ブログで試していますが、今のところ完璧にガードしてます。


WordPressプラグインの作成(4)

WordPressプラグインの作成(3)の続きです。

せっかく作成したPluginなので、WordpressのPluginディレクトリに公開したいと思います。
WordPress.orgのプラグインディレクトリに自作プラグインを登録する方法に詳しく書かれているのでそのままやってみます。

WordPress.orgのアカウントを取得する

http://wordpress.org/support/register.phpからアカウントを取得します。
ユーザ名、emailが必須なのでそれを入力します。
Wordpress.comのアカウントと同じなのかと思ったら違うものなので注意。

プラグインの登録申請を出す

http://wordpress.org/extend/plugins/add/

プラグイン名、プラグイン説明を記入して待ちます。
今回は、2日位で返事が来ました。

SVNからチェックアウト

SVNクライアントならEclipseのPluginでもいいとは思いますが、SubversionのクライアントはTortoiseSVNが一番操作性がいいです。
登録申請の返事に記載のある、Subversionのリポジトリをローカルの作業フォルダにチェックアウトします。
チェックアウトすると「trunk」「branches」「tags」フォルダがチェックアウトされるので(ちょうどちょっと前に書いた記事が役に立った)

readme.txtの準備

これが一番大変でした。
英語部分は翻訳サイトのやつでもとりあえず大丈夫だとは思いますが、Donate linkでPayPalを色々調べていたら時間がかかってしまいました。

Wordpress.orgリポジトリにコミット

readme.txtとプラグインのファイル(my-css-editor.php)をtrunkに保存してコミットします。
コミットの際にWordpress.orgアカウントが必要になってきます。

タグ付け

現在のバージョン名でタグ付をします。今回は0.2なので、tags/フォルダを選択状態でTortoiseSVNのBranch/Tagを選び、先URLを「tags/0.2」にしてOKを押します。

確認

タグ付してからしばらくすると
http://wordpress.org/extend/plugins/browse/updated/

に表示されていました。
URLは「http://wordpress.org/extend/plugins/my-css-editor/」です。
なんだか嬉しい。英語は大丈夫だろうか。
次は更新時の方法を記載したいと思います。


WordPressプラグインの作成(3)

WordPressプラグインの作成(2)の続きです。

前回は管理画面で表示できるまでが出来ましたが、その設定値はどこに保存するか?というのが問題です。

Creating Options Pagesを見ると、すごく簡単そう。
WordPress MUでも、ブログ毎に設定が保存されるようなので、これが使えそうです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function wp_head() {		
	echo "\n<!-- My CSS Editor $this->version -->\n";
	if( get_option($this->option_name) ){
		echo '<style type="text/css">';
		echo '<--';
		echo get_option($this->option_name);
		echo '-->';
		echo '</style>';
	}
}
 
function edit_setting() {
	if ( isset($_POST['action']) && $_POST['action'] == 'update' ){
		update_option($this->option_name, $_POST['css_value']);
		echo '<div id="message" class="updated fade"><p><strong>Your Style Sheet was preserved. </strong></p></div>';
	}elseif(isset($_POST['action']) && $_POST['action'] == 'delete'){
		delete_option($this->option_name);
		echo '<div id="message" class="updated fade"><p><strong>Your Style Sheet setting was deleted. </strong></p></div>';
	}
	echo '<div class="wrap">';
	echo '<h2>Edit of your Style Sheet</h2>';
	echo '<form>option_name}\"",  ' action="'.$_SERVER['REQUEST_URI'].'" method="post">';
	wp_nonce_field('update-options');
	echo '<table class="form-table">';
 
	echo '<p>Your Style Sheet setting can be made by editing the text area. <br />';
	echo 'The setting can be deleted with the delete button. </p>';
	echo '<tr valign="top">';
	echo '<th scope="row">$this->option_name</th>';
	echo '<td>';
	echo '<textarea name="css_value">';
 
	if($settings = get_option($this->option_name)){
		echo $settings;
	}else{
		;
	}
 
	echo '</textarea>';
 
	echo '</td>';
	echo '</tr>';
	echo '</table>';
	echo "function delete_setting(){alert('delete?');document.getElementById('action').value='delete';document.getElementById('{$this->option_name}').submit();}";
	echo '';
	echo '<p> </p>';
	echo '<p> </p>';
	echo '</form>';
	echo '</div>';
}

コード書いてもちょっと見難いのですが、
名前を「My CSS Editor」に変更しました。
wp_head()関数では、$this->option_nameでオプションを取得して表示させています。(option_nameというインスタンス変数にオプション名を持たせています)
edit_setting()関数では、つまりは、actionというhiddenの値で、updateとdeleteを切り替えています。
メッセージはプラグインを公開するためにとりあえず英語にしました。
あとは、国際化とWordpress.comに公開することです。