Archive for the ‘WordPress’ Category

wordpress30

WordPressのサイドバーの「最近の投稿」Widgetの表示が気に入らなかったので改変してやろうと思い立ちました。(具体的にはタイトルに設定している<br/>が「最近の投稿」の項目にもついてきて汚く改行がされているのを直したかったのです)

まずは普通にWordPressのダッシュボード→外観→テーマ編集からサイドバーのphpをいじって適用してみたんだけど、なぜか反映されません・・・。

「えー?」ってなもんでネットで調べるとテーマの中にsidebar.phpが含まれていない場合は/wp-includes/widgets.phpに~とか書いてあったり、そもそもsidebarはwidget使ってる時は引っ張ってこられないよ等々の情報が錯綜して(頭の中で)めんどくせー事になったぜ・・・。

と思っていた矢先に素晴らしいプラグインを見つけました。

■ PHP Code Widget

です。名前の通りwidgetの中でPHPが実行できるようになる代物です。

プラグインをインストールしたら、外観→ウィジェットにPHP Codeという項目が増えてます。ここにPHPのコードを書くことで実行してくれます。

タイトルを「最近の投稿」と入力して

<ul class="recentEntry">
<?php
foreach(wp_get_recent_posts(5) as $post){
	$title = $post['post_title'];
	$title = str_replace("<br/>", "", $title);
    echo '<li><a href="'. get_permalink($post['ID']) . '" title="' . $post['post_title'] . '">' . $title . '</a></li>';
}
?>
</ul>

という内容を書きました。タイトルから<br/>を削除して「最近の投稿」の項目に加えるという形です。
MRB氏のサイトを参考にさせてもらいました。

これで思惑通りのwidgetが完成しました。このプラグイン、アイデア次第で色々できそうですね~。

これまた一時間くらいハマりました。
WordPressには管理画面上で外観編集(CSS編集)が出来るエディタが備わっているのですが、
そいつを使ってスタイルシートの変更をしようとすると403 forbiddenエラー。

ftpを使って書き込み側 wp-admin/theme-editor.php と書き込まれ側 style.cssのパーミッションを777に変更しても変わらず。
.htaccessの設定が云々という書き込みを海外のBBSで見つけたのでそれを施してもみてもNG。

仕方ないのでロリポのサポートの人にメールで尋ねてみると、WAF(Web Application Firewall)の設定をOFFにしてね。
という解答。

恥ずかしながらWAFって何?状態だったので調べてみました。

WAFとは、外部ネットワークからの不正アクセスを防ぐためのソフトウェア(あるいはハードウェア)であるファイアーウォールの中でも、Webアプリケーションのやり取りを把握・管理することによって不正侵入を防御することのできるファイアウォールのことである。
WAFの特徴としては、従来のファイヤーウォールがネットワークレベルで管理していたことに対して、WAFはアプリケーションのレベルで管理を行う、といった点を挙げることができる。WAFでは、プログラムに渡される入力内容などを直接に検査することによって、不正と見なされたアクセス要求を遮断するという仕組みが採用されている。クライアントの操作するWebブラウザとWebサーバを仲介するかたちで存在し、ブラウザとの直接的なやり取りをWAFが受け持つ。そのことによってSQLインジェクションやクロスサイトスクリプティング、強制ブラウジングといった要求に対して、「攻撃」と見なして拒絶することができる。
参照元:http://www.sophia-it.com/content/WAF

という事でアプリケーションレベルでのファイヤーウォールという事です。始めて知りました。
んで、ロリポップの管理画面を見てみるとWAFの項目が確かにありました。
webツールの中の一番下にnewで追加されてますね。


これを開いて、WAFの設定を無効にしてやれば問題なく編集が出来るようになりました。

ちなみに記事の投稿時においても一部タグの文字列を文中に含んでいた場合、アクセス出来なかったりしました。(403エラー)
と言う事で結構これで困っている人多いんじゃなかろうか、WAF設定にはお気をつけください。