投稿日:

WordPressの投稿画面で、記事のカテゴリーを1つしか選べないようにする


WordPressの投稿画面で、記事のカテゴリーを1つしか選べないようにする必要があって、ぐぐってみたら、次のページが見つかりました。
http://kachibito.net/wordpress/limit_checkbox.html

…ただ、思っていたのとちょっと違って、僕的にはラジオボタン的に動作して欲しかったので、改訂版を書いてみました。アイデアはそのまま頂きました。

…もちっと違う方法…というか正攻法というと、そもそものカテゴリ選択を radio ボタンにできないかな?とも思うのですが、今回は時間が無かったので、とりあえずこれでOKとしました。

投稿日:

とりあえず使う git コマンド


バージョン管理システムを使った事の無い方へ「とりあえず使ってみて」と git を勧めたい時、最初に覚えてもらいたいコマンドだけ集めてみました。

  • バージョン管理はソースコードをディレクトリごと丸ごとコピー
  • 何か変更して戻りたい時、ひたすら ctrl+Z(command+Z)
  • ファイルを複製して末尾に .bk20120307 とか

↑みたいな感じの方に、とりあえず「ぉ、これ便利じゃん」って思えるぐらいのものです。リモートとか、細かな説明とか、ショートカットとか抜きです。

 

git init
初期化。git で管理したいディレクトリで実行。.git ディレクトリが作成される

git add .
ワークツリー内のファイルを追加する

git add -u
ワークツリーの管理下のファイルの更新を記録する。削除されたファイルも反映される

git rm <fileName>
ワークツリー内のファイルを 削除する

git commit
リポジトリにインデックスの内容をコミットする。
ログファイルが開くので、次の情報を書いて保存(:wq)する
—-
コミット内容の要約¶

変更理由などの説明…¶
—-

git commit –amend
一つ前のコミットに上書きする。

git reset –hard HEAD
最新のコミットの状態まで戻る。

git reset –hard HEAD^
一つ前のコミットの状態まで戻る。

git branch <branchName>
新しいブランチを作る。

git checkout <branchName>
ブランチを切り替える。

git branch -d <branchName>
ブランチを削除する。

git branch
ブランチの一覧を見る。

git merge <branchName>
現在のブランチに、別のブランチをマージする
⇒編集ファイルが重複しているとき、手動で解決する必要がある

git rebase <branchName>
現在のブランチに、オリジナルブランチの変更を取り込む
⇒編集ファイルが重複しているとき、手動で解決する必要がある

gitk
GUIを起動する。ログとかの閲覧はこれが一番便利。

git diff –color
index に反映されていない変更を表示する。
git add されていない変更を表示できるので、最後の add から変更した箇所を見れる。

git status
git commit した時の更新内容を確認です。

  • 変更は、インデックスに入れてから、コミットする
    1. git add でインデックスに入れる
    2. git commit でリポジトリに入る
  • 逆に言うと、リポジトリに入れたくない変更はインデックスに入れない

発展

もうちょっと詳しく、あともう少しーは、以下など参考になります。

 

 

投稿日:

MacOSX Lion に Homebrew で MySQL をインストールのメモ


簡単にインストールできたんですが、少し手間取ったところもあり、メモを残しておきます。

まずはとりあえず、MySql を brew でインストールします。

上手く行きました。

でも次にどうしたら良いか分からなかったので、検索しまして、こちらを参考に進めました。

このあと、mysql_secure_installation するのですが、パスワードを求められます。

ところがこれが、何を入れても、上手くいかない。ここでしばしハマりました。

アレコレ試した結果、先に mysql.server start して、mysql_secure_installation で上手くいきました。エラーメッセージに /tmp/mysql.sock に接続できないなど、出て来ていたが、そういうことなのか?(どういうこと?)と中途半端な納得で、ここはまあOKとさせて頂きました。

手順まとめ

いちおう手順をまとめておきます。

なお、UTF8 にするには、/etc/my.cnf に設定を置かないと、という情報もありましたが、何もしなくても以下の通り大丈夫みたいだったので、何か問題が出てくるまで、上の手順までとしておきます。

起動スクリプトの設定

OS起動時に mysql が自動で起動するように設定します。mysql のバージョンは合わせてください。
もし、~/Library/LaunchAgents が無い場合は、先に作ってから実行します。

コピーした plist を変更します。

デフォルトでは mysql が落ちると再起動しようとし続ける設定らしいので、落ちた時の自動再起動を off にします。
plist をエディタで開いて <key>KeepAlive</key> の次の行にある 値を、以下のように「<false/>」に変更します。

設定を読み込んで完了です。

投稿日:

WordPress プラグインの作り方(WP初級のPHPerさん向け)


WordBench神戸

最近まで「WordPressって何?」って感じだった僕ですが、今更ながらに WordPress を使ってみています。今日は、WordBench 神戸の勉強会にて教わったプラグインの作り方をまとめてみました。

お題は「顔文字チェンジャー」!

記事本文の内容の中の「。」のテキストを任意の顔文字に置換しちゃう楽しいプラグインです。なお、本記事は PHP は分かる人向けに書いていますー。

プラグイン制作の準備

WordPress プラグインは、/wp-content/plugins/ ディレクトリ内に作成します。
ここでは、/wp-content/plugins/moji-changer/ を作成します。またそのディレクトリ内に、プラグインディレクトリと同名のファイル、moji-changer.php を作成します。
結果、以下のようなディレクトリとファイルが出来ます。

moji_changer.php を開いて、スクリプト冒頭に、下記のようなメタ情報を書きます。

まずこれだけで WordPress はこのプラグインを認識してくれるですね。
管理画面でプラグインの一覧に表示されているので確認できます。

この状態で、プラグインを有効化しておいてください。

でもこれだけだともちろん何も起こらないです。
行いたい処理を追加していきます。

記事本文のテキストを加工してみる

上のメタ情報の下に続けて、以下のコードを書いてみます。

add_filter

フィルターフックを登録する WordPress の関数です。

第1引数にフックの種類を登録します。ここでは、the_content を指定しています。
‘the_content’ は、記事本文が画面表示される前に呼び出されるフックの指定です。

第2引数は、そのフックで実行される関数を指定します。
ここでは、moji_changer_content_filter を登録しています。
そして、ここに登録した名前の関数を自分で作成します。

moji_changer_content_filter

この関数は、$content で記事本文のテキストを受け取って、「。」を「 (*´艸‵*)ウフッ♪」の顔文字に変換して返しています。

これで OK です。
ブログの記事画面を開いてみると、記事中の「。」が「 (*´艸‵*)ウフッ♪」になって、なんだか素敵なブログになっていると思います。

add_filter について、詳しくはコチラ:
http://wpdocs.sourceforge.jp/関数リファレンス/add_filter

管理画面ヘの設定ページの追加

変換される顔文字を、管理画面で設定出来るようにしてみましょう。
上記のコードに続けて、次のコードを書いてみます。

これだけで、管理画面をリロードすると、サイドバーにメニューが追加されます。また、メニューをクリックすると、「設定画面をここに書くよ!」と表示されます。

ここで、add_action、add_menu_page は、WordPress の関数です。moji_changer_admin_menu は、管理画面を登録する関数で、moji_changer_edit_setting は、設定ページの本体を出力する関数です。

以下、順に見ていきます。

add_action

アクションフックを登録する WordPress の関数です。
第1引数にフックの種類を登録します。ここでは、admin_menu を指定しています。‘admin_menu’ は、管理画面メニューの基本部分が配置された後に実行されるフックの指定です。

第2引数は、そのフックで実行される関数を指定します。
ここでは、moji_changer_admin_menu を登録しています。

add_action について、詳しくはコチラ:
http://wpdocs.sourceforge.jp/関数リファレンス/add_action

moji_changer_admin_menu

上述の add_action での登録で呼ばれる関数です。
ここでは、add_menu_page を呼び出し、管理画面メニューを追加しています。

add_menu_page

管理画面にカスタムページを追加する WordPress の関数です。
第1引数は、追加するカスタムページの名前です。
第2引数は、カスタムページへアクセスするためのメニューの項目名。このメニューは、管理画面サイドバーのトップレベルに表示されます。
第3引数は、カスタムページを利用できる権限の制限。ここでは、administrator で管理者とします。
第4引数は、(たぶん)カスタムページを特定する名前。つまり、url パラメータになります。
第5引数が、(やっと)管理画面の本体となる関数です。管理画面の内容などを出力します。

…なんか長くなりましたが、要するに↓みたいな感じですね♪

 add_menu_page について、詳しくはコチラ:
http://codex.wordpress.org/Function_Reference/add_menu_page

moji_changer_edit_setting

最後に、管理画面本体となる関数です。
管理画面の画面表示を行ったり、データの保存や読み出しなど必要な処理を行います。ここではとりあえず、echo で「設定画面をここに書くよ!」と出力しているだけですが、これによって、管理画面に「設定画面をここに書くよ!」と表示されました。

わぉっ。簡単だ!

管理メニューの追加について、詳しくはコチラ:
http://wpdocs.sourceforge.jp/管理メニューの追加

管理画面で実際に設定できるようにする。

さて、管理画面で実際に設定できるようにしてみますが、これもすごく簡単です。上で書いた moji_changer_content_filter と moji_changer_edit_setting の2つの関数を、以下のように書き換えてみます。

フォームの action を空にしているので、設定画面の表示時にも、顔文字の登録時にも、いずれも同じ moji_changer_edit_setting 関数がコールされることに注意すると、PHPer なら動作は容易に想像できると思います。

get_option、update_option

ここで、get_optionupdate_option という2つの新しい WordPress の関数が登場しています。これは、WordPress の単純なデータストア API です。

という書式で、データを保存したり、取り出したりできます。

こういう単純な API があると便利ですね!
注意点として、キー名は WordPress 全体で共通なので、他のプラグインや機能と重複しないように注意して設定する必要があります。

これで、管理画面に顔文字を登録するフォームが完成し、[登録] ボタンから顔文字の変更が出来るようになりました。驚くほど簡単です!

以下、ここまでのコードをまとめて掲載します。

発展

わくわく楽しいプラグインが出来ました♪
何か鬱憤がたまったら、プラグインを有効化して変な顔文字いっぱいのブログにしてスッキリしてやります。

そこで、もうすこし自由度を増すために、もう少しだけプラグインを改造してみました。名前も、「顔文字チェンジャー」改め、「文字チェンジャー」です。

php のファイルは以下の2ファイルになりました。

moji-changer.php

 setting.html.php

以上です。

大きな変化はありませんが、WordPress 的なポイントとしては、get_option、update_option 関数が、単純なプリミティブな値以外にも、配列などを保存できるということです。これは素敵。便利ですねー!

 

 

投稿日:

MacOSX Lion + MAMP + WSGI で Python の HelloWorld


表題通りですが、MacOSX Lion 上の MAMP で Python WSGI Web Application を動かす為のセットアップめもです。
ネットに色々と情報はあるのですが、画像とかを静的にアクセスするための情報などと一緒になったものは見当たらなかったので、ここにメモしておきます。なお、本記事は次のツールは準備済のお話です。

  • MAMP(http ポートを80番に変更)
  • Python
  • Homebrew

では、まずは mod_wsgi をインストールします。
コンソールを立ち上げて Homebrew でインストールします。
超ー簡単です。

実行するとインストールログがツラツラと表示されますが、その中に、丁寧に以下のような説明まで書いてあります。このパスが mod_wsgi 本体っすね。探さなくと良いので、ちょっと嬉しい配慮です。

上記の情報をもとに、httpd.conf に mod_wsgi を登録します。

僕的に httpd.conf には MAMP の modules のパスを記述したかったので、シンボリックリンクを作成しました。

それから MAMP の httpd.conf を変更します。

次の行を追加。

それから、wsgi アプリケーションのエントリポイントを WSGIScriptAlias で登録します。

僕の場合、MAMP でバーチャルホストしてるので以下のような記述になりました。

WSGIScriptAlias が、wsgi アプリケーションのエントリポイントとなる Python スクリプトのパスです。ここでは、Alias で記述された項目を除いてルート以下の全てのリソースへのアクセスを /wsgi/public/main.py に送っています。

Alias の記述は、favicon や javascript、画像ファイルなどを静的に表示するためのおまじないです。ww
この記述が無いと、全てのリクエストは /wsgi/public/main.py に送られます。
ここでは、 /style/、/lib/、/media/ 以下の全てのファイルと、robots.txt、favicon.ico を、静的にアクセスできるように設定しています。

 

仕上げに、バーチャルホストの為に hosts にエントリを追加します。

 

あとはアプリケーションをごにょごにょと準備します。

/wsgi/public/main.py

以上です。

ブラウザで http://dev.wsgisample.jp/ へアクセスすると Hello World! が表示されます。

参考