投稿画像を取得するには

記事に投稿されている画像を取得するには、添付ファイルを取得するget_children()でimageを指定する。画像のURLのほか、タイトルやサイズなどのメタ情報も取得することもできる。

[sourcecode language=’php’]
$attachments = get_children(array(‘post_parent’ => $id, ‘post_type’ => ‘attachment’, ‘post_mime_type’ => ‘image’));
if (is_array($attachments) ){
foreach($attachments as $attachment){
$image = wp_get_attachment_url(intval($attachment->ID));
echo ‘

JavaSciptライブラリを読み込む

テーマやプラグインでJavaScriptを読み込む場合は、アクションフックのwp_print_scriptsを使用する。

[sourcecode language=’php’]
function add_myscript() {
wp_enqueue_script(‘myscript’, ’JavaScriptのフルパス’);
}

add_action(‘wp_print_scripts’, ‘add_myscript’);
[/sourcecode]

jQueryに依存したJavaScriptを読む込む場合は以下のようになる。wp_enqueue_script(‘jquery’);を行うことで、jQueryが2重に読み込まれることがなくなる。

[sourcecode language=’php’]
function add_myscript() {
wp_enqueue_script(‘jquery’);
wp_enqueue_script(‘myscript’, ’JavaScriptのフルパス’, array(‘jquery’));
}

add_action(‘wp_print_scripts’, ‘add_myscript’);
[/sourcecode]

プラグインでCSSを指定する

テーマではデフォルトでstyle.cssを使用するようになっている。
プラグインでも外部CSSファイルを使うことが可能だ。

プラグインで外部CSSファイルを指定するにはwp_register_style()で登録し、wp_enqueue_style()で読み込ませる。たとえば自分で用意したcssファイルを使いたい場合は、アクションフックのwp_print_stylesで以下のように記述する。wp-headではなくて、wp_print_stylesというのに気がつくのに時間を要した。

[sourcecode language=’php’]
function regist_my_css(){
wp_register_style(‘my_css’, ‘(CSSのフルパス1)’, array(), ”, ‘screen’ );
wp_register_style(‘my_css’, ‘(CSSのフルパス2)’, array(), ”, ‘screen’ );
wp_enqueue_style (‘my_css’);
}

add_action(‘wp_print_styles’, ‘regist_my_css’);
[/sourcecode]

プラグインをローカライズするには

英語で表示されるプラグインでも、翻訳機能を使って日本語で表示することができる。

外国語に対応しているプラグインであれば、potという拡張子のファイルが用意されいてる。
例えば、example.pot
Poeidtというアプリケーション(Windows用)を使って、example.potを翻訳する。
[ファイル]-[POTファイルをもとに新しいカタログを作成する]メニューでpotファイルを読み込む
必要箇所を翻訳し、名前を付けて保存する。
日本語化する場合、このときのファイル名はexample-ja.poにすること。
保存と同時にexample-ja.moが作成される

プラグインで指定してあるディレクトリにmoファイルをコピーする
load_plugin_textdomain(‘example’, PLUGINDIR . ‘/example/languages’);

プラグイン中で翻訳される箇所は、__(や_eの箇所となる。

詳細ページでコメント表示をカスタマイズ

コメント表示をカスタマイズするには、コメントの配列$commentを回して表示する。
$commentはテーマのcomments.phpからのみ参照できる変数となっている。

[sourcecode language=’php’]
foreach ($comments as $comment) {
custom_comments($comment, null, null);
}
[/sourcecode]

WordPress 2.7よりコールバックを指定することができる。
[sourcecode language=’php’]
wp_list_comments(‘type=comment&callback=custom_comments’);
[/sourcecode]

関数custom_comments()はfunctions.phpに作成しておく。

[sourcecode language=’php’]
function toriko_custom_comments($comment, $args) {

$GLOBALS[‘comment’] = $comment;

?>

  • さん

ActivePerlでMySQL

XAMPPでPerlが動くようになったものの、そう簡単にMTのインストールは進まなかった。MySQLがない模様だ。SQLiteで済ませようとしたのに、MT5からデータベースがMySQLのみになっていることにここで気づいた。

ActivePerlでMySQLをインストールしなければならない。ハードルをクリアするとまたすぐに次のハードルが現れる。ActivePerlに付いてくるPPMというツールを使うらしいのだが、実行しようとするとネットに接続中のまま「応答なし」となる。Firewallのせいということに気がつくのも時間がかかった。また今日も挫折しそうになる。
ググりまくって、PPMを実行するまえにコマンドプロンプトで
C:\>set HTTP_PROXY=http://[プロキシ名]:[ポート番号]
とするといいらしいと知った。
続けて、
C:\usr\bin> PPM install DBD-Mysql
とするとなにやらジャカジャカとインスールが始まった。コマンドプロンプトを活用するとは、ン十年ぶりのことだ。かくしてPerlでMySQLが使えるようになった。

ここからはMTのウィザードに従ってスムーズに進み、First Blogを作成するまでが完了した。

XAMPPでActivePerl

XAMPPのPealアドオンをインストールしてPerlが動くようになったと思ったのもつかの間、肝心のMTのインストールが進まなかった。
http://localhost/mtos/mt.cgi
にアクセスすると
DBI object version 1.607 does not match $DBI::VERSION 1.604
というエラーが表示された。MySQLを使用するためのDBIのバージョンが違うといっているらしい。ググっても対応方法が分からない。

http://localhost/mtos/mt-check.cgi
で実行環境をチェックしてみると、やはり途中でエラーが出ていることが分かった。

お手上げモードでググっているうちに、XAMPPのアドオンPerlを使うよりも、ActivePerlというものがよいらしいことを知り、とりあえずこちらを試すことにした。
XAMPPのapacheとMySQLを停止し、Perlアドオンをアンインストールする。
ActivePerl 5.10.1のmsiをダウンロードして実行する。インストール先は”c:\usr\”を指定するとよい。こうするとperlのパスが”/usr/bin/perl”となり、CGIファイルのパスを修正せずに済むのだ。

apacheとMySQLを再開してmt-check.cgiにアクセスすると、エラーが消え「システムのチェックを完了しました。」が表示された。まだ足りないモジュールはあるようだ。ここまで時間がかかったものの、自力でなんとかなったのは嬉しい!やっとMTのインストールができる(か?)。

コメントフォームに項目を追加する

アクションフックのcomment_formで、コメントフォームに項目を挿入することができる。
以下はチェックボックスを追加する例。

[sourcecode language=’php’]
add_filter(‘comment_form’, ‘addMyControl’);

function addMyControl() {
_e(‘
サンプル
‘);
}
[/sourcecode]

ただし、テンプレート(comments.php)に以下の記述が必要である。
[sourcecode language=’php’]
ID); ?>
[/sourcecode]
デフォルトテーマにはこの記述がある。
使用中のテーマにこの記述がない場合は、挿入したい箇所にこれを記述すればよい。

トップページに表示するカテゴリを限定する

トップページに表示するカテゴリを限定するには、
index.phpで記事一覧を表示するループの前でquery_postsを使用する

[sourcecode language=’php’]
query_posts($query_string . “&cat=(カテゴリID)”);
while (have_posts()) : the_post();
// 処理
endwhile;
wp_reset_query();
[/sourcecode]

category_name=(カテゴリスラッグ)というのも使える。