なんじゃこりゃ~~~

 前から管理画面にエラーが出ていたのは知っていたけど、見て見ぬ振りを続けてはや1年。
 いつの間にかブログ本体にまで出て、ログインもできずパス再設定しようと思ったら画面真っ白。そこにエラーだけ表示されているホラーみたいな状態に。
 使っていないテーマやプラグインも結構入っていたので、この機会に大掃除した。
 メモるまでもないような内容だけど、一応簡単に記録しておく。

①WordPressからのエクスポートはできないので、DBだけバックアップ。
②サーバー上のデータを全部ダウンロード(uploadディレクトリは必須、wp-configの内容や自作以外のテーマ・プラグインはメモっておく)。
③サーバー上のデータを削除。
④WordPressを新規インストール・設定。
⑤uploadディレクトリの中身をアップロード。
⑥テーマやプラグインを再インストール・有効化。
⑦その他諸々設定。

 再インストールしても「すでにインストールされています」と出るしDBがそのままなので記事も無事だけど、あれだけ意味不明なエラーが羅列されていればPHP素人の自分にはどうしようもなく(ノ∀`) 作り直した方が早いわ!っていう。

 それにしても、WordPressのエディターが進化していてびっくり。ビジュアルモードで<br>と<p>を使い分けられるようになってる……!
 これは一番欲しかった機能で、プラグインを使ってもなかなか上手く行かなくて、結局HTMLモードでちまちま編集していた。今更な気はするけど、公式が対応してくれるとは思っていなかったのですごくありがたい。
 昔からお世話になっているプラグインもまだ更新され続けていて、すごいなぁと思ったり。仕事ならともかく、趣味でも相当好きでないとなかなか続けるのは難しそう。バージョンアップについて行くのって大変だよなぁ……。

カスタムフィールドの画像のランダム表示

○1つの投稿ページのカスタムフィールドに複数の画像を登録し、ランダムに表示。

○カスタムフィールドの追加にはAdvanced Custom Fieldsを使用。

○返り値は画像ID、プレビューサイズはサムネイルに設定。

<?php 
	$size = 'thumbnail'; //表示する画像サイズを指定
	$fields = get_fields(); //カスタムフィールドの画像を全て取得
	$fields_ex = array_diff($fields, array('')); //空の配列を削除
	$random = array_rand($fields_ex); //配列をランダムにする
	$image = wp_get_attachment_image_src($fields[$random], $size); //選ばれし画像

	if(!($random == false || $random == '')) { //画像があるかチェック
		echo '<img src="'.$image[0].'" width="'.$image[1].'" height="'.$image[2].'" />';
	}else {
		echo '画像なんてなかったんだ';
	}
?>

 if文にfalseと空の2つを指定しているのは、どちらかよくわからないから。

 空の時もあればなぜかfalseが返ってくることもあって、その条件がわからなかったので、両方入れておいただけ☆ だめにんげん。

 

 もっといいやり方があるかもしれ(略)。

 いいんだよ……とりあえず動けば……。

複数カテゴリ対応のパンくず

 パンくずの関数やプラグインなんて山ほどあるし、複数カテゴリ対応のコードも見かけるけど、自分の希望の形になるものがなかったので作ってみた。

 複数カテゴリに対応させたもので、楽天のようにずらずら出てくるあれ。

 

 ホーム > カテゴリ1 > 記事タイトル

 ホーム > カテゴリ2 > 記事タイトル

 

 こんなやつ。投稿時にチェックを入れたカテゴリを全て表示する。

 2パターンあるけど、とりあえずノーマルな形のものをぺたり。

 

 function.phpに記述↓

function bcNavi() {
    $category = get_the_category();
    foreach($category as $cat){
        $str. = '<ul class="bcNavi clearfix">';
        $str. = '<li><a href="'. home_url() .'">HOME</a></li>';
        $str. = '<li>&gt;</li>';
        if ($cat->parent) {
            $parent = get_category($cat->parent);
            $str. = '<li><a href="'. home_url() .'/?cat='. attribute_escape($parent->cat_ID) .'">'.$parent->cat_name .'</a></li>';
            $str. = '<li>&gt;</li>';
        }
        $str. = '<li><a href="'. home_url() .'/?cat='. attribute_escape($cat->cat_ID) .'">'. $cat->cat_name .'</a></li>';
        $str. = '<li>&gt;</li>';
        $str. = '<li>'. the_title() .'</li>';
        $str. = '</ul>';
    }
    echo $str;
}

※/?cat=の部分は、パーマリンク設定によって変更する必要あり。これはデフォルトの設定の場合。

 

 テンプレートに記述↓

<?php echo bcNavi(); ?>

 

 これの難点は、3階層目までしか対応していないこと。

 

 ホーム > カテゴリ1 > カテゴリ2 > 記事タイトル

 

 ここまでが限界。将来的にカテゴリがどんどん増えるページにはNG、祖先カテゴリが表示されなくなってしまう。

 

 自分はとりあえず3階層目まであれば十分だったので作り込んではいないのだけど、いずれ完成はさせた方がいい……のかな。

 でも、4階層まであるようなページはユーザビリティの面でどうかと思うので、気が向いたらやるということで(逃)。