コーヒーアンドキーボード

コーヒーとキーボードにまみれて生活してます。一応専門はデジタルマーケ。

WordpressのパンくずリストはSEOを考えて構造化しよう

Wordpressパンくずリストを表示するときに、真っ先に候補に上がるのがプラグイン「Breadcrumb NavXT 」なのですが、これってGoogle先生が提唱する「構造化データ」としてはイケてないので、自分で書くことにします。

microdataを使うこと

itemscope , itemtype , itempropという属性を使うらしい。 例えばカテゴリだけ表示するとすると、

<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
    <a href="<?php get_category_link( $cat->cat_ID ); ?>>" itemprop="url" rel="home">
    <span itemprop="title"><?php echo $cat->cat_name ;?></span>
    </a>
</li>

と先程の属性を使って、Google先生にデータの構造を教えてあげるそうです。

条件分岐すること

  • 個別ページの場合 : 「Home > 親カテゴリ > 子カテゴリ > タイトル」
  • カテゴリアーカイブページ : 「Home > 親カテゴリ > 子カテゴリ > アーカイブページ番号」

のようにテンプレートによって表示する形式が異なるのでうまく分岐しないといけません。 だいぶ長ったらしい条件分岐になるのですが高橋のりさんのこの記事が大変参考になります。

初心者の頃は、こういう「ブログじゃない Webサイト」向けのカスタマイズって、とっても難しく感じました。そこで今回は、WordPress で「パンくずリスト」を作りながら、「関連するページ」を表示するために覚えたい Tips を見ていきたいと思います。なんでパンくずリストなのかというと … パンくずリストというのは、「現在表示されているページの種類によって、様々な関連するリンクを表示する必要がある」からなんです。パンくずリストを作成してみると、WordPress サイトの構築の基礎というか、考え方みたいなものがとっても勉強になると思うんです。ちょっと無理矢理な展開ですけど、パンくずリストを作りながら、サイドバーなどで応用のきくコードを見ていきましょう!

パンくずリストを作ってみるとWordPress でのサイト構築のコツがつかめるかもしれない(コード 付き)

ということで、頑張って自前で書くか。

WPのカスタムフィールドでCustom Fields Template以外にAdvanced Custom Fieldsを使う理由

なんかCustom Field Templateが一番オススメみたいですね。

そのおかげで Custom Field Template や Advanced Custom Fields, Types, Magic Fields その他のプラグインがあるのですが、データの持ち方をWordPressのカスタムフィールドから拡張しているものもあり、APIもまちまちです。上記の記法が素直に使えるのは Custom Fields Template くらいじゃないかと思います。こういうサードパーティ製のプラグインに頼らず、そこそこ入力しやすいインターフェイスがコアに実装されるのを待っているのですが、なかなか来ないですね。

ただし、カテゴリにカスタムフィールドが付けれない問題があるので、Advanced Custom Fieldsも使ったら良いよということらしいです。

正直、WordPressのカスタムフィールドのプラグインは『Custom Field Template』一択なのですが、『Custom Field Template』はカテゴリにカスタムフィールドを作成できません。なのでカテゴリにカスタムフィールドを設定したい場合だけ『Advanced Custom Fields』を『Custom Field Template』と平行して使用します。

できれば、WP標準関数で戦いたいけど、やっぱ無理なときはプラグインの独自関数に頼らざる得ないって感じなのかな。今度アフィリエイトサイト作るときに参考になりそうなのでメモ。

WordPressのサブループで$posts = get_posts($args)とするとハマる

<?php $posts = get_posts( $args ); ?>
<?php foreach($posts as $post) : setup_postdata($post); ?>
    <p><?php the_title(); ?></p>
<?php endforeach; ?>

と書いてサブループを作ってしまうと、のちに続くメインループが上書きされてしまいます。ハマります。なので、$postsは$my_postsとかにしておく必要があるそうです。

$posts = と書かないのは、$posts を復元する関数が用意されていないからです。

WordPress ループ&クエリーのモヤモヤを解消しよう!  |  wpxtreme

勉強ばっかりで開発が進まねぇ。

Sassの配列とループを使って複数パターンのデザイン試す

nth(配列名, インデックスキー);

で呼ぶのがポイントですね。作業中のものをコピペすると次ようなイメージ。

/* pl-test */
$pl-width: 670px, 300px, null ,null;
$pl-float: null, left, null, null;
$pl-margin: 10px 20px , 10px 20px, 5px 5px, 5px 5px;
$pl-padding: null, null, null, null;

// eyecatch
$pl-eyecatch-width: 170px , 300px, 140px, null;
$pl-eyecatch-img-width: null, null, 100px, null;
$pl-eyecatch-img-padding: 15px 15px 0 15px, 20px 15px 5px 15px, 15px 5px 5px 5px, 15px 10px 5px 10px;


// each
@each $pl-num in 1, 2, 3, 4 {

    .pl-#{$pl-num} {

        @include clearfix;
        margin: nth($pl-margin,$pl-num);
        padding: nth($pl-padding,$pl-num);
        width: nth($pl-width,$pl-num) ;
        float: nth($pl-float,$pl-num) ;

        .date {
            color: darken($dh-gray,50%);
            border: solid 1px lighten($dh-gray,5%);
            font-size: 0.8rem;
            padding: 5px 5px;
            margin: 10px 15px 5px 15px;
            @include border-radius(2px);
        }
        
        .main-eyecatch {
            @include col;
            width: nth($pl-eyecatch-width,$pl-num);
            img {
                @include align-center;
                width: nth($pl-eyecatch-img-width,$pl-num);
                padding: nth($pl-eyecatch-img-padding,$pl-num);
            }
        }
    }
}

あ、ちなみにこれを試した理由としては、「コード量減って可読性が上がるかな」と思ったんですが、結局値が離れた位置に書いてあるし、あまり普通にCSS何個も書くのと変わらないなと思いました。残念。

ひとりChatworkで仕事が捗る。

ご存知の通り、chatworkっていうブラウザベースのチャットサービスがあって、「メールの時代は終わりました」とキャッチーなコピーが売りらしいです。

社内のコミュニケーションが円滑になるということで、いくつか有名なスタートアップも導入していて、イケイケの様子。

ただ、今回は一人で使う方法を紹介しますね。

  • コード
  • ファイルパス、ディレクトリ
  • 作業ログ
こんなのものを時系列でガンガン書いておくと、必要な情報が溜まるので、再利用できることも多いですよ。毎度使うなら、古い投稿をコピペしてサルベージしたり。

UIはカッコ良くないのだけれどおすすめ。


新千歳空港からニセコひらふまでの高速バス

こうやって二つを比較してしまうと、少し高いけど、ひらふまでが速いホワイトライナーがいいんだよなー。

比較 ホワイトライナー 北海道中央バス
価格 往復4,600円 往復3,850円
ひらふまでの所要時間 約2時間半 約3時間半