カスタムメニューのソース的整形

カスタムメニューをデフォルトのまま導入すると
最初のliタグが改行されずに吐き出されてしまう。
この問題を手っ取り早く解決するには、
”ulタグを自動的に入れない”という以下のようなテンプレートタグを使う方法がある。

<?php wp_nav_menu( array( 'items_wrap' => '%3$s' ) ); ?>

その代り自分で直接header.phpにulタグを書き込む必要がある。
デフォルトだと”menu-”という接頭語的なものが自分が設定した
メニューのタイトルに付くが、これも回避できる。
Id名とかClass名はできるだけ短い方が良いと思うし、
必ず一緒に付くclassも必要がないと感じれば省くことができる。
因みに、下のように書くとデフォルトで吐き出されるcontainerタグも無しにできる。
また、前述したテンプレートと合体して使うこともできる。

<?php wp_nav_menu( array( 'container' => '' ) ); ?>

リストタグに付くやたら長くて多いId名やClass名を省くやり方は
多くの方が説明していらっしゃるので、そちらを参照してください。

カスタムメニューで任意のアイテムに”current”を付ける

例えば、このブログのような運営をしている場合、メニューの「WEBLOG」というところには
index.phpにより表示される記事のページにしか”current”というクラス名は付かない。
言い換えれば、投稿やコメントの個別ページ、カテゴリー、アーカイブ、検索などのページには
“current”は付かない。
これをWEBLOGに関するところでは全部”current”が付くようにする方法は、
WordPress Codexに条件分岐のテンプレートタグとして以下のように載っています。

<?php
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
     if(is_single() && $item->title == "Blog"){ //この行は状況により変更が必要
             $classes[] = "special-class";
     }
     return $classes;
}
?>

因みに”is_single()”の条件分岐だと投稿やコメントの個別ページにしか”current”は付かないようだ。
“is_singular()”だとカテゴリー、アーカイブ、検索のページまでカバーされる。
ただ、注意しないとブログのトップページに”current”が重複して付いてしまったり、
他のアイテムを表示しているときにも同時に”current”が付いてしまう。
除外するための”!is_xxx()”(”xxx”のところには”single”,”singular”,”page”などが入る)を
忘れないようにしよう。

“weblog”というタイトルの公式テーマが登場して・・・

ちょっと都合が悪いことになってしまった。
というのも、このブログはサイトアドレス (URL)とテーマフォルダ名を同一にしていたため、
更新のお知らせが表示されるようになったのだ。
自分自身は更新ボタンなんかまずクリックすることはないだろうが、
新し物好きの人やセキュリティを重視する人などは進んでクリックするかもしれない。
デフォルトのファイルが同じでない限り、誤って更新すると大変なことになりそうだ。
この問題の対策としては、functions.phpファイルに更新のお知らせが表示されないような
コードを書き加えるか、サイトのアドレスとテーマフォルダ名を異なるものにするしかないようだ。
筆者自身は前者の対策がベターだと思う。
ただ、コードによっては特定のテーマだけを対象にできないものもあるので注意が必要だ。
後者の対策は色々と変更しなければならない点が多いので、あまりお勧めできない。
上の二つしかないと書いておきながら何だが、
他の対策としてはstyle.CSSファイルのバージョン番号を上げておくというのもあるそうだ。
ひょっとして、これが一番手っ取り早かったりして・・・。

既存サイトの子テーマフォルダ名を変更するとき

注意点がいくつかある。
もちろん、フォルダ名をただ変えただけでは駄目だ。
先ず、テーマを有効化し直さないといけない。
これで万事OKかと思ったら、そうは問屋が卸さない。
ディレクトリをphpのコードで取得していた場合は何の問題もないが、
画像などタグの直入力でアップしていた場合は変更が必要だ。
あと、ウィジェットで使っていたものは使用停止中になるので、
戻してやる必要がある。
タグの入力し直しが多い場合は、データベースを弄った方が楽かもしれない。

検索結果に欲しいヒット件数

検索結果:○○○ の下辺りに、
何件の記事がヒットしたかの件数表示があれば有難いと思うのは筆者だけだろうか。
ググってみると、件数取得のコードはたったの一行です。
前後に文章を入れてCSSのためのタグを加えたとしても一行で済みます。
編集するファイルはテーマフォルダ内のsearch.phpです。
この編集は絶対にお勧めです。

スクロールしたときにサイドバーを追従させる

プラグインの導入なしでやろうと色々試してみましたが、なかなか首尾よくいきません。
結局プラグインのお世話になることに。
筆者の感想としては、「Standard Widget Extentions」が設定が楽なので導入しやすいかと。
理由はテーマフォルダ内のファイルを弄る必要はまったくありませんし、
3カラムにも対応しているところが実に素晴らしい。
プラグインなしの挑戦をしているときに見つけたNGなスクリプトを幾つが挙げておきます。
・スクロールしたときにサイドバーは追従するが、ページトップに戻ってもサイドバーは戻らない。
・PCではちゃんと機能するが、スマホやタブレットではおかしな動きになる。

以前からずっと気になっていた、スクロールすると真っ白けになってしまうサイドバーからはもうオサラバです。
ただ、逆に固定や個別ページでコンテンツの方がサイドバーより短い場合は・・・?

ナビゲーションで少し遊んでみる(第二弾)

スクロールしてナビゲーションのメニューバーが一番上にきたときに、
固定されるというスクリプトを導入してみました。
DEMOはこのサイトで稼働中です。
原理は簡単らしいのですが、自分で書けるはずもなく
例によって親切な方がアップされている
スクリプトを使わせて頂いています。
メニューバーの幅が100%ではなく、しかも中央に持ってきたい場合は
CSSの設定もちょっとパズル的な要素がありますね。
メニューバーより上の部分を最初から固定するよりも
この例のようにした方が、表示できる部分が広がってスマートな感じがします。
もう一つ良い点を挙げるなら、前回の例だとdisplay:noneの部分を別に用意する必要がありますが、
この例ではその必要がありません。
まあ、他人が見て導入してみたくなるようなスクリプトを一度で良いから
自分で書いてみたいもんです。

「見守りケータイ」ならぬ「見守りスマホ」(続編)

格安SIMのデータ通信のみを使うので、筆者の場合はセルスタンバイ問題が発生した模様。
結局端末をroot化してモジュールを適用することにした。
だがしかし、新たなる問題の発生に気付く。
最初端末の電源を入れたときには確かにデバイスマネージャーは反応する。
しかし、しばらく経つと「位置情報を利用できません」というメッセージが出る。
これはもう使い物にならないのか。
他の端末で試したところ、いくら時間が経とうがデバイスマネージャーは
ちゃんと反応するのだ。
これは何を意味するかというと、端末がスリープ状態のときにGPS機能がONかOFFかが重要である。
GPS発信機として使う端末の方は、スリープ時にはGPS機能が働いていないようだ。
これはWi-Fi詳細設定で「スキャンを常に実行する」がONになっていないことが原因なのだろうか。
しかし、これをONにしておけば問題を解決することができるとしても、パッテリーの減りは速いはず。
バッテリー減りの速度を抑えつつスマホの位置を確認する方法はいくつかあるのだろうが、
調べたいときにLINE電話をかけることが有効だと思う。
例え電話を受けなかったとしても端末は一旦ONになるはずだからだ。
実際に試してみたところ、デバイスマネージャーは反応してくれた。
何を優先するか次第で人それぞれ運用の仕方は違ってくるのは当たり前のことだろう。
ただ、色々なやり方があることを知っておくことは悪いことではないと思う。
因みにiPhoneやiPadからでも、androidデバイスマネージャーのページを開けば
端末の位置が確認できる。

「見守りケータイ」ならぬ「見守りスマホ」

ちょっと身近に痴呆症が進んできた人がいて、
先日お出掛けした折に帰宅できない状態に陥ってしまったので、
色々と方策を考えるうちに出てきたのが「見守りスマホ」案です。
これって機能的にも金銭的にも十分成り立つものなのだろうか?
想像ばかりしていても先に話が進まないので、
実際に適当だと思われるスマホを購入して実験してみることに・・・。
4~5インチのディスプレイを持つスマホなど持って歩かせるのは現実的ではないと考えて、
2.4インチのものを使います。
価格的にもGPS発信の機能しか持っていないものと比べても、そんなに高くはないと思います。
むしろ安いぐらいではないでしょうか。
しかも電話やアプリも使えるので、本人は使えないとしてもお得感はあります。
肝心な通信方法ですが、もちろん格安のSIMカードを使います。
調べてみると、500メガまでだったら使用料が0円というのがあるので、それを利用します。
初期費用は3千円ちょっとかかりますが、データの使用量も動画など見ないでしょうから
無料ですむ範囲内だと思います。
では、どうやってスマホの位置を特定するか。
androidデバイスマネージャーで十分ではないでしょうか。
本人がどこかにスマホを置き忘れたりなんかすると万事休すですが。
幸い、LINEには特定の人にワンタップで電話できる機能があるので、
SOSボタンとして使えそうです。
最大の問題は、どのようにして本人に違和感なく携帯させることかなぁ。