プチ改造

4時間くらいガッと集中してまたサイトの改装を行っていた。今回のはいよいよSQLにも手を出してみた。PHPなんて触るのめっちゃ久々だけど、今年に入って触る機会が増えてきているのはWordpressを弄り倒してるのが原因だろう。

で、今回やったのはウィジェットにタグのプルダウンメニューを追加という、比較的地味なもの。ググればそこそこ出てくるのだけど、色々未記載の罠なんかもあったので備忘録ついでに記しておこう。

元々ウィジェットにタグクラウドっていう標準タブ表示機能があったのだけど、割とタグが多いので見栄えが悪いってことで、プルダウンメニューにしてスッキリしようと思ったのが事の発端。

とりあえず今回採用した方法のベースは、色々な関数書いておける「functions.php」で全タグを取得してループ文回してプルダウンメニューを構築するっていう関数を、ウィジェットに追加するっていう手法。

詰まったところ①、functions.phpにはサクッと書いてアップできたんだけど、ウィジェットのテキストメニューに関数実行のコード追加しようとしてもうまく保存できない。今回初の試みだったけど、今までテキストにHTMLタグならうまく埋め込めてたので、同じようにPHPも埋め込めるんだろと思ってたけど、どうやらそうではないらしい。

調べてみたら、プラグイン入れてPHP埋め込めるようにするか、functions.phpにテキストに埋め込められるようにする関数記述すればいけるってことが分かった。プラグインは色々互換性が云々言われてたので後者を採用してみたんだけど、うまく動かなかったので今度は前者を採用してみたらすんなり動きそうだったので、そっちを採用することに。

ちなみに今回採用したプラグインは「PHP Code Widget」というもの。ウィジェットにメニュー追加されてそこにテキスト同様コードを埋め込めるようになった。こうなりゃあえてfuntions.phpに関数仕込んで実行するのもアレだって思ったので多少見栄え悪いけどウィジェット内にそのままコード書き込むことにした。

で、詰まったところ②、こうして埋め込んだPHPが砂時計がクルクル回って保存できない。なんかフリーズしてんのか、いくら待ってもうんともすんとも言わない。やっぱプラグインが問題なのかとか色々調べてみたんだけど、どうやらそうではないらしい。

結果として「WAF」とかいう、不正アクセスや不正コード入力されることを防止するセキュリティが自動的に働いて、悪そうなPHPを自動的に排除しようとしていたらしい。サイトのコンパネでWAF無効化設定があったので無効化したところ、無事埋め込みに成功。

ここでとりあえず当初の目的だった埋め込みには成功したんだけど、ここからはプラスα。タグの件数を表示させたいってのとソート順変更、ついでに最近使ってないようなタグは排除したいってことで標準で用意されてるタグ取得関数を捨てて自分でSQL打った結果をメニューにしちゃえっていう発想に至った。

テーブル構造はデータ移行時に割と理解したつもりだし、仕事で腐るほどSQL打ってるのでそこはそんなに苦なく作れた。ここ3年で使用したタグに絞り、タグ名の後ろに件数も表示するようにして、並び順も件数の降順でソートしたら「仕事」が揺るがない上位をキープしそうだったので最近使用したタグの降順にした。

これで期待通りのプルダウンメニューの完成。あとはおまけでサイドメニューを周りのブログに合わせて右に持っていき、RSSのアイコンが見栄え悪かったので廃止してトップメニューにRSSのリンクを追加した。

大分満足して自分でもよくやった感がある。しかしやってる途中で思ったけど、やっぱり無駄なタグ付けが多い。キーワードだけでタグ付けしたのがほとんどなので、本来の意味を成さないタグが多めなのはいつか整理したい。いつになるか分かったもんじゃねぇけど。

コメント

error: Content is protected !!
タイトルとURLをコピーしました