WordPressのカスタマイズとプラグイン、CSSテクニック、SEOの話題など。
In: php
24 2月 2010最近ようやくPHPのオブジェクト指向の勉強を始めまして。遅ぇよ!ってな話ですが、「人生に遅すぎることはない」という安藤百福氏の名言を引用して話を先に進めたいと思います。
さて、オブジェクト指向ということは「クラスを作って、それをオブジェクトとして呼び出す」ということになります。
newでクラス名を指定してインスタンスとして呼び出します。
(砂の状態のイマジンに対して、契約して実体化させるようなイメージです。)
<?php $y = new dacelo(); $y->test(); class dacelo { public $name = 'dacelo'; function test() { echo "hello\n"; echo $this->name; } }
実行結果
hello dacelo
daceloクラスの中では、メンバー変数としてnameが設定され、クラスの中でそれを$thisで呼び出しています。
<?php dacelo::test(); class dacelo { public $name = 'dacelo'; function test() { echo "test\n"; echo $this->name; } }
実行結果
test PHP Fatal error: Using $this when not in object context in /home/dacelo/tmp/test.php on line 14 Fatal error: Using $this when not in object context in /home/dacelo/tmp/test.php on line 14
メソッド(クラスの中の関数)を直接呼び出すには、コロン:を2つ付けて呼び出します。
このとき、インスタンスを作成していないので、$thisが使えません。フェイタルエラーになります。
$thisが自分として指し示すべきオブジェクトが存在していないということですね。
ではこのスタティック呼び出しはどういうときに使うかというと、クラスの中のメソッドのみを、関数のように使いたいという時に使います。
普通にその辺にぽっこり用意している関数との違いは、クラスでカプセル化することによって、名前空間の解決(関数名が被ったりしない)ということです。
以上!Ciao!
In: WordPress
5 2月 2010WordPressで、管理画面と任意のURLを自動的にHTTPにしてくれる便利プラグイン、AdminSSL。個人サイトではあまりSSL自体使いませんが、お問い合わせページ等でHTTPS必須の企業サイトでWordPressを使っている場合は必須のプラグインなんじゃないでしょうか。
さて、そのAdminSSLを有効にしたら、ブラウザが「自動転送が無限ループ」で終了してしまった場合。
これはたいていの場合、単純にブラウザのクッキーを一端削除すれば直ります。
それでも直らない場合は、こちらを。
plugins/admin-ssl-secure-admin/includes/https.php
//$tmp1[] = “wp-login.php”;
をコメントアウトすることで回避。
それでも直らない場合、WordPressのコアファイルをドキュメントルートではなく1階層下(例:URLはhttp://example.comだけどWordPressはhttp://example.com/wordpress/などの場合)に出るエラーの可能性があります。これの対処法は現在のところ「siteurlとhomeを同一にしよう」、つまりWordPressもDocumentRootに置こう、ということしかありません。
In: Linux
28 1月 2010phpだと、スクリプト内に他のスクリプトを読んでくるときは
include()
require()
などを使います。
シェルスクリプトの場合
シェルスクリプトでは、中に書かれているのは全てシェルのコマンドなので、中でもシェルを実行するようにすればいいわけです。
例えば
test.sh
include.sh
というスクリプトがあり、test.shの中でinclude.shを使いたい場合は
source include.sh
もしくは
. include.sh
などすればOKというわけですね。
In: apache
27 1月 2010apacheのServerAliasには、果たしてどのくらいまで登録できるのか?
検証してみました。
【結論:8719byteまでOK】
ドメイン数ではなく、文字数で限界が設定されていました。
In: JavaScript
20 1月 2010IEでは、setAttributeが使えないと言うことが判明。
setAttributeは、第1引数で指定したプロパティの属性を第2引数に書き換えるメソッドで、クリックしたらある部分を非表示にする(display:none)とかで使えるかと思ってたんですが、実はIEでは使えなかった。
この場合IEでは、代わりにstyle.cssText=”"という記述にする必要があります。これはIE以外でも使えるのでこっちに統一せざるを得ませんね。
例:id:hogehogeの部分を非表示にしたいとき
<button id="detail_btn" onclick="javascript:displayNone(); return false;"> 非表示にする </button> <div id="hogehoge"> ここが非表示になる </div>
function displayNone の中身は
これが
document.getElementById("hogehoge").style.cssText = "display:none;";
こうなる
document.getElementById("hogehoge").setAttribute("style","display:none;");
In: php
19 1月 2010手っ取り早く、ページ内に他のページのヘッダー部分とかメニューの一部とかを表示したい、と思うことが結構あるので、再利用できるように関数化しました。
function ripping_html($source,$start,$end){ $html_source = file_get_contents("$source"); $rip_source = preg_replace('/\n/', ' ', $html_source); $pattern= "/$start(.*)$end/"; preg_match($pattern, $rip_source, $match); echo $match[0]; }
引っ張ってくる対象ページのURLと、HTMLソース内の開始シグナル、終了シグナルを引数で指定します。
string ripping_html ( resource $context, string $start , string $end )
例
ripping_html('http://blog.dacelo.info/example.html', '<html>', '<end>');
最近、自力でWebサービスを作ってみたいなあ、ということでCakePHPをちょこちょこいじってます。
参考書としては、まずは入門編ということでakiyan.comのakiyanさんこと秋田真氏の本

Fast CakePHP
を見ていたんですが、この本は1.1系用なのでちょっと古いところがあるんですね。
サンプルチュートリアルのタスクリストアプリケーションを作ってたんですが、こんなエラーが出ます。
Warning (512): Method HtmlHelper::input does not exist [CORE\cake\libs\view\helper.php, line 148]
1.2系になってHTMLヘルパーの仕様が変わったようで、$htmlじゃなくて$formというのを使います。
1.1
input(‘Task/content’) ?>
submit(‘タスク追加’) ?>
1.2
input(‘Task/content’) ?>
end(‘タスク追加’) ?>
これでOKです。
In: apache
5 1月 2010皆様、明けましておめでとうございます。いやぁ、早いものでこのブログも2年目なんですね。今年もちょぼちょぼと更新してまいりますのでよろしくお願いいたします。
さて、今回はsafe_modeについて。
phpのsafe_modeは、PHP6で正式に削除されることが決定しているので、使わないことが推奨されているんですが、まぁ諸々の事情で使わざるを得ないことがあります。
通常、php.iniでon/offを切り替えるんですが、使うんであれば限定的に、あるサイトのバーチャルホストの中だけで有効にしたい、というような気持ちってありますね。
そんなときは、httpd.confにて次のように書きます。
DocumentRoot /home/blog.dacelo.info/
ServerName blog.dacelo.info
AllowOverride All
Options ExecCGI FollowSymlinks
php_admin_flag safe_mode on
これで、blog.dacelo.infoの中でだけsafe_modeがonになりました。
In: WordPress
24 12月 2009WorePress2.7以降から導入された『自動アップデート』はとても便利な機能なんですが、アップデートの途中でネットワークが切れたりなどして終わってしまうと、こんなエラーが出てにっちもさっちもいかなくなります。
Briefly unavailable for scheduled maintenance. Check back in a minute.
コンソールやFTPから、手動で最新ファイルに上書きしてもこのエラーは消えてくれません。管理画面へのログインも出来ない。
これは、自動アップデートをする際のロックファイルがドキュメントルートに残ったままになってしまうのが原因です。
WordPressの自動アップデートは、アップデート中にアクセスがあって不具合が生じるのを防ぐために、自動アップデートの開始時にルートの位置に
.maintenance
というファイルを設置します。
このファイルは自動アップデートの終了時に自動的に削除されるんですが、先述のように自動アップデート自体が途中で終了してしまうと、このファイルが残ったままなにもできなくなります。
そんなときは、このファイルを手動で削除してから、全体を最新ファイルで上書きすればOKです。
In: Hardware
22 12月 2009DellのVOSTROシリーズはハードディスクが増設できる。
以下、VOSTRO 200の増設方法。
- 既設のHDを外す。
ロックレバーを引いて、HDを上に、その後手前にずらすと外れる。
※ 下段のねじ位置に切り欠きがあるのでそれに沿って移動する。- ねじの取り付け
既設HDを参考に同じねじ位置にねじを取り付ける。
既設のものは、ねじ頭が四角い特殊なものだが、すこし浮かせてねじをとりつければ問題なし。- SATAケーブルの取り付け
HDを取り付けてしまうとSATAケーブルが接続しにくくなるので、先
に取り付けておく。- 追加HDの取り付け
1の手順の要領で、HDを取り付ける- 既設HDの再取り付け
- 電源ケーブルの取り付け
- SATAケーブルをマザーボードに接続
- F2キーを押しながらPCの電源を入れ、BIOS画面を呼び出す。
- 追加したハードディスクがBIOSレベルで認識できているか確認
- Windowsを起動
- 基本的には自動的にインストールされるはず。デバイスマネージャー(コントロールパネル->システムとメンテナンス内)のディスクドライブにHDが追加されているか確認。
- このままでは、フォーマットされておらず未定義領域となっているはずなので、コントロールパネル->システムとメンテナンス、管理ツール項目にあるハードディスク パーティションの作成とフォーマット」を選択し、追加したHDを右クリックのメニューからフォーマットを実行する。
(Oさんありがとうございます)
ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。
最近のコメント