「WordPress Popular Posts」で自分好みに順位を表示できるようにCSSを設定

たまには技術的なことも書きましょう。
当ブログでもお世話になっているプラグイン『WordPress Popular Posts』。
ときどき何かが起こったりしたものの、最近が問題なく、投稿の順位を集計してくれてます。
フッターにTOP5を表示して、右のスライダーには直近公開の人気投稿を表示してます。

要は、重宝しとるわけです。

ここで要望が出るわけ。
『順位を表示させたい!』
『他のサイトみたいにカッコよくアレンジしたい!』

カウンターがない

順位表示がない。Top 5程度なら、まだ大丈夫かもだけど。

で、ネットで調べて、CSS書いてみたんだけどうまくいかず。。

ちゃんと技術から調べたよ。
今回書いたCSSも載せとくよ。
備忘録ね。

こうしたい!

こうしたい!
画像の左上に順位の番号を付けたいのです。

WordPress Plpular Posts

人気の投稿を集計して、表示してくれるプラグイン。
当ブログでも実装済み。

WordPress Popular Posts
高度にカスタマイズ可能で、使いやすい投稿ウィジェットです。

フッターの表示を見ると分かるんだけど、順位の番号が表示できないんだ。
ウチの場合は、表示用のCSSを別のものにしちゃってるからなおさら話がややこしくて。。

別のページにショートコードで埋め込んだときに、やっぱり順位の番号はあった方が分かりやすいよね、って話になった。
ショートコードも別途書いときます。

[PS-Ad-AMP]

今回書いたCSS

「WordPress Plpular Posts」じゃなくても使える。
普通にイメージ付きのリストをHTMLで書く時にも大丈夫なように実験済み。
パラメーターは好みで調整してください。

ol.wnkhsCount {
    counter-reset: item;
    list-style-type: none!important;
}

ol.wnkhsCount li {
    position: relative;
    counter-increment: item;
    max-width: 400px;
    clear: both;
}

ol.wnkhsCount li:before {
    content: counter(item);
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    /* ↓ 装飾 ↓ */
    width: 1.5em;
    height: 1.5em;
    color: #ffffff;
    background-color: #6897e5;
    text-align: center;
    font-weight: bold;
}

ol.wnkhsCount li img {
    vertical-align: top;
    margin-bottom: 1.5em;
    margin-right: 0.5em;
    float: left;
}

あちこちのサイトから拾ってきて、貼り合わせて、自分でアレンジ加えた結果、こうなった。

今回書いたショートコード

リファレンスから例を拾って書いた。
日本語はお好みで。サムネ幅とかクラス名も、状況に合わせて調整。

コードを実装してるページ(新しく開きます)

今回勉強した技術

お勉強したのは以下。

  1. CSSでのカウンター
  2. 「:before」という書き方
  3. ポジション
  4. ブロック表示

1. カウンター

上記のリストは<ol>~</ol>で、オプション指定なしで、デフォルトのカウントアップしてる。
けど、今回みたいに見出し数字だけ装飾するオプションはCSSにない。

だから、カウンターを使って値を書いて、それを装飾しようというわけ。

ulでもolでもいいんだけど、styleで見出し文字は消しとく必要あり。

基本の書き方は以下。

ol.wnkhsCount {
    counter-reset: item;
    list-style-type: none;
}

ol.wnkhsCount li {
    counter-increment: item;
}

ol.wnkhsCount li:before {
    content: counter(item);
    /* ↓ 装飾 ↓ */


}

『装飾』てとこに背景色とか文字色とか書けば、見出し文字列を自由にできる。
幅とかマージンとか指定しないと、単体要素ではまあまあ残念な感じw

見出し数字が消えないかも。「!important」を試してみて、だめならこれだけ直書きかな。

2. 「:before」という書き方

疑似的に、要素の前にCSSを書いたようなかたちにできる。
後ろに書くには「:after」。
クラス名などの要素をたくさん書く必要がないので、コードがすっきりするよね、という話。

今回も明示的に書けて分かりやすい!

3. ポジション

見出し文字を「position: absolute;」で書いてるんだけど、親要素を明示してあげないと大変なことになる。
今回ここでもけっこうハマった。。

「li」の方に『position: relative;』を書いておかなきゃいけなかったのね。
パクりコードにこれがなかったせいで、見出し文字がページの左上に集まっちゃったw
いや~、まいったまいったw

static以外の親要素に対するabsoluteなんだって。

4. ブロック表示

これまであんまり気にしてなかったんだけど、要素内にするか要素外にするか、みたいな感覚。
厳密には違うんだけど。

block指定すると、そこだけ切り出される。

今回はこの機能を使って、見出し数字部分をブロック化してる。
おかげで背景色とかとかの装飾が限定的に効く、と。

[PS-Ad-AMP]

実験状態

例の「:before」という書き方は、CSSをあらかじめ書いとく必要があって。
だからって、style.cssをいきなり編集するのはちょっと。。
いくら適当でも、他への影響が大きそうなことには慎重になるんだよ。

で、実験のために、HTML非推奨だけど、<body>~</body>部分に<style>~</style>を書いて、そこにCSSを書いた。

適用の優先順位が微妙に異なるとか、まあいろいろあるにしても、まずは実験!

別途調査の上、style.cssにも反映できるかな。
そんときはステージング環境で確認するのかな。

さいごに

まだまだやってみたいことはあるから、ちょっとずつ勉強して実装していこう!!

急がば回れなんだよ。
結局、ちゃんとお勉強したほうが早く実装できるってもんよ。

最後まで読んでくださりありがとうございます!
よろしければ、ライターのTwitter(@SubShine_wnkhs)をフォローしてやってください。

最新情報をお届けします!!

ご意見やご感想などお聞かせください! コメント機能です。

タイトルとURLをコピーしました