‘WordPress’ カテゴリーのアーカイブ

WordPress:admin_head-ページフック名って?

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

admin_headフックを使って、cssやjavascriptを読み込ませていたんだけど、プラグインによって重複したり、全ての管理ページでcssとjavascriptを読みにいってるみたいだったので、なんか回避方法はないものかとWordPressのドキュメントを読んでいたら、こんなフックがあった。

  • admin_head-ページフック名
  • admin_head-プラグイン管理ページ名

どういう意味なのか、さっぱりわかんない。
wordpress ページフック名 でググってみたが、よさげな情報が出てこない。うーむ。
先人の知恵を拝借するために、Eclipse内で、正規表現を使って
admin_head-[\w]+?
で検索したら、admin_head-プラグイン管理ページ名を使ってるプラグインがあったー!

add_action('admin_head-wp-postratings/postratings-manager.php', 'ratings_header_admin');

なるほど。プラグインディレクトリからのパスを書くのか。
じゃあ、admin_head-ページフック名ってどうするの?

答えは、

// 新規投稿画面でのみ、hoge_header_include関数を呼び出す
add_action('admin_head-post-new.php', 'hoge_header_include');
// 投稿編集画面でのみ、hoge_header_include関数を呼び出す
add_action('admin_head-post.php', 'hoge_header_include');

おそらく、/wp-admin/****.phpの****.phpをadmin_head-****.phpで指定すればよさそう。
はぁ〜、めっちゃはまったので、とりあえず備忘録として残します。


WordPress: プラグイン開発でログを出す方法

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

まあプラグイン開発じゃなくてもいいんだけど。
プラグインを開発していると、テーブルを新たに作成して、投稿したタイミングでそのテーブルにデータを保存ということもあるかと思うんですが、フックであるsave_postのタイミングのデータをvar_dumpとかで出力できないんじゃないかと思って(そういえば試してないな…)、ログファイルに出力する方法を探していた。

functions.phpに、

  • debug_fopen($log_file, $mode);
  • debug_fwrite($fp, $message);
  • debug_fclose($fp);

という関数があったので、これを使うこととした。

ただし、これらの関数はWordPressのデバッグモードでしか動かないらしい。デバッグモードにするには、$GLOBALS['debug']を1に設定しなければならないらしいのだが、どこで設定すればいいのか見つけられなかったので、wp-config.phpの最後に以下を追加した。

// wp-config.phpに追加
$GLOBALS['debug'] = 1;

その後、プラグインのクラスにデバッグログを保存するためのメソッドを追加。各プラグインディレクトリ内のlogディレクトリ内にdebug.logというファイルを作成して追記していく仕様にした。

// プラグインファイルで処理担当のクラスを実装
class hoge{
	/**
	 * プラグインのログディレクトリにデバッグログを保存する
	 * @param $message ログファイルに出力するメッセージ
	 * @return void
	 **/
	function debug_log($message){
		$message = date('Y-m-d H:i:s') . ' ' . $message . "\n";
		$log_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR . 'debug.log';
		$fp = debug_fopen($log_file, 'a+');
		debug_fwrite($fp, $message);
		debug_fclose($fp);
	}
}

ひょっとしたらもっとスマートな方法があるのかもしれないけど、ログを残す方法としては、いいのではないかと。プラグイン用の基底クラスが欲しくなるな〜、とかいって。


WordPress:コメントを降順(新しい順)に表示する方法

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

仕事でWordPressを使った開発をしてるんですが、そのときに、最新のコメント順に出力しなければならなくなった。設定で新規コメント順にできるのかな?と思っていたのだが、どうも出来ないっぽい。

ググッてみたところ、WordPressのコメントを扱うプログラムを強制的に修正(SQLの書き換え)を行ってる例があったが、頻繁にアップグレードを繰り返すWordPressのことを考えると到底やる気が起きない。$commentsは自動的に取得されるので、再度クエリでコメントを取得するのはシステムに負荷がかかって勿体無いなぁ~、でもそれしかないのかなと思っていたら、神がかり的な超簡単な解決方法を見つけた。

foreach(array_reverse($comments) as $comment){
    // 配列の中身を逆順に展開するため、
    // コメントが新しいものから表示される
}

なるほど~、array_reverseかぁ~!と唸ってしまった。
どうもSQLでDESCで取得するしかないという固い頭になっていたので、
この解決方法は素晴らしいと思った。元に戻したければ、array_reverseを取ればいいんだし。

参考情報はここから↓
http://wordpress4cms.net/177/


WordPress:cforms2で、メール送信できないエラー

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

仕事でWordPressを使ってサイトの作っているのだが、お問い合わせのページを作るのに、cform2を使おうかと思って、今調査中。ローカル環境(Windows)で設置したあと、グローバル環境(Linux)にコピーしたら、動かなかったので、調査したところ、原因が発覚したのでメモしとく。

http://wordpress4cms.net/202/

/cforms/js/cforms.jsの、/cforms/lib_ajax.phpを指しているパスが違った。

var sajax_uri = 'http://localhost/wp-content/plugins/cforms/lib_ajax.php';

になってたので、

var sajax_uri = '/wp-content/plugins/cforms/lib_ajax.php';

に変更した。

このようにしたところ、500 Internal Server Error発生。ムムム。
/cforms/abspath.phpで設定されているWordPressへのパスがWindows上のパスのままだったので、
Linux上のパスに変更したところ、ちゃんとメール送信できた。

とりあえず、メールは送信できたのだが、まだメールのエンコードがUTF-8のままなので、ISO-2022-JPに変更する方法を調査する必要がある。


MODxのイベントログ対策

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

MODxにログインしてみたら、イベントログが溢れるくらい大きくなっていた。もちろん、エラーログだ。なぜこんなことになったのだろうか?色々と直していたはずなのに…。

どうもちゃんと動いているけれど、エラーログは裏でめちゃくちゃ出してるということだった。よく考えたら、WordPressを自動アップデートした影響かもしれないと思って、ログの意味を調べていたら、下記のサイトを見つけた。

http://tkfm.net/log/eid334.html

このサイトの情報を基に、=&を=に変更、 コンストラクタをコメントアウトしていった。冷静にログを見たら、コンストラクタが既にあるのに、また定義されてまっせーということだ。Wordpressとしては、PHP4とPHP5で動くようにということでしょうな。

これにて、ようやくイベントログが静かになった。
おちおちWordPressのバージョンアップもできんな~…。複雑な気分。


xreaでwordpress2.7にアップグレードする方法

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

xreaで、wordpress2.7を使ってるんですが、アップグレードしたにも関わらず、

wordpress2.7にアップグレードしてください

って出続ける…。なんでだ!

そう思っていたら、WordPress本家のサイト

2.7 英語版へすでにアップグレードを済ませたにも関わらず更新のお知らせが
管理画面に表示されている場合、自動アップグレード機能を使って 2.7 日本語版に
更新する事ができます。
ツール>アップグレードのパネルで、「2.7–ja をダウンロード」というボタンの
左にある「自動アップグレードを実行」ボタンをクリックすれば、
日本語版の最新ファイルへアップグレードされます。

と書いてありました。とりあえずやってみることにする。

ちなみにxreaの場合です。

  1. WordPressにログイン->ツール->アップグレード->自動アップグレードを選択する
  2. ホスト名:******.s311.xrea.com(******はxreaのアカウント名。s311は任意のサーバに変更)
  3. ユーザ名:******
  4. パスワード:XXXXXX(もちろんここはそれぞれのFTPパスワード)
  5. 接続方式:FTP(私はFTPにした)
  6. 開始ボタンをクリック

にしたらアップグレードできました!
s311.xrea.comでやっても、WordPressのインストールディレクトリが見つからないと怒られました(>_<)

ちなみに、MODx経由のWordPress Integratorを使ってる人は、
wp-settings.phpの=&を=のみに置換しないとエラーになるので要注意!!


WordPressIntegrator:記事毎のページのコメント、トラックバック

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

WordPressIntegratorを使ってると、記事毎のページのコメント・トラックバックのところの文言が、コメントもトラックバックも受け付けているにも関わらず、受け付けていないという表記になってしまいます。

これを改善する方法は、wp-content/themes/使ってるテーマ/single.phpにて

<?php global $post; ?>

を追加すればよいです。

ただし、このままだと表示されるコメントへのリンクが切れています。
(base urlの影響で、http://example.com/blog/#respondのようになる)
自分的には、コメントはすぐ下にあるからということで、コメントへのリンクのみ削除しました。

<?php printf('コメントを残すか、ご自分のサイトから<a rel="trackback" href="%s">トラックバック</a>することができます', trackback_url(false)); ?>
MODxでつくる!最強のCMSサイト
MODxでつくる!最強のCMSサイト MODxフォーラムJapanese Co

おすすめ平均
starsもったいない・・
starsもっとスニペットの解説が欲しい・・
stars基本事項はバッチリ網羅
stars導入、設定、利用手引き書としての価値
starsMODxを使いこなすには絶対必要

Amazonで詳しく見る by G-Tools


WordPress2.7が出ました

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

WordPressのバージョンが2.7に上がりました。
このブログもさっそく更新しておきました。
MODxのWordPressIntegrator経由で使ってるので、ひょっとしたら後々不具合が出てくるかもしれません。。。
変更された点といえば、管理画面のメニューのインターフェイスが変わってます。
ヘッダーメニューだったのが、サイドバーメニューになってます。

全体的にユーザビリティがアップし、インターフェースの入れ替えも簡単、WordPress自体のアップデートもWebを通して行うことができるようです。わざわざダウンロードして、解凍して、本番環境にアップロードして、アップグレード処理を行わなくてもよくなったっぽいです。これはすごい。しかし、まだ試せていませんので、次回WordPressのバージョンが上がったら、試してみます。


WordPressプラグイン: Ktai Entryが動かない…

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

ケータイからの投稿に対応させたいな~と思って、最初はモブログくんを使おうとしました。外部サイトからXMLRPCを使って更新するという方式なんですが、私んところのWordPress2.6.5にだと、画像を添付すると更新できませんでした…。ちなみに文字だけだったら即更新されました。なんで添付したら更新されなかったんだろう?とりあえず、他の方法を探ってみることにしました。

次に、『WordPress2.2でつくる!最強のブログサイト』という本に載っているwp-shotというプラグインを使ってみましたが、いつまでたっても更新されず。ということで、ネットで検索してたらKtai Entryというのがあるらしいことを発見。wp-shotの後継というふうに書かれていたので、じゃあこっちでやってみるかと。

参考URL:
Ktai Entry (メール投稿プラグイン)
Ktai Entryで画像がアップされない

早速設定してみたんだけれど、更新されない!Ktai Entryのページではレンタルサーバでは基本的に動かないと書かれていたのだけれど、XREAでもCGI版にすれば動くように書いてあったので、まんま書いてあることをやってみたら、動かない…。

やったこと:
Ktai-Entryプラグインの追加・設定。
wp-admin/.htaccessに、

<files upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>

ktai_entry/.htaccessに、

<files post.php>
AddHandler application/x-httpd-phpcgi .php
</files>

を追加。でも動かず。うーん。

今日はもう遅くなってしまったので、また後日調査します。


サイトをMODxでリプレース

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

自転車で通勤しましょ♪をMODxでリプレースしました。ようやく叶った。まあこれで便利になったわけでもないですが。

またこのブログもMovabletypeから、WordPress Integratorを使って、WordPressに変えました。リプレースするまでは更新しないでおこうと思っていたため、ここのところ更新が滞っていましたが、これからはできるだけ更新しようと思います。

しかし、まだ問題があります。。。ブログの画像が表示されない。。。
デザインのほうはCSSでできるんですけど。ここらへんはまだ要調査ですね。


Get Adobe Flash playerPlugin by wpburn.com wordpress themes