[Pz-HBC]内部リンクのシェア数をトータルに置き換えてみる方法

この記事は約6分で読めます。

WordPressで外部リンクを「はてなブログカード」のWebAPIのURLに置き換えるプラグイン「Pz-HatenaBlogCard」を公開しています。

シェア数のトータル数を表示したいというリクエストがあったので、修正のポイントを紹介します。

Pz-HatenaBlogCardについて

リンク先のURLを「はてなブログカード」のWebAPIにするブックマークレットが便利だったので、それをWordPressのショートコードで設定できるようにしたものです。

URLをパラメータに指定することで、「はてなブログカード」のWebAPIを使うように置き換えてくれるので、ブログカード形式で表示してくれます。

なお、内部リンクについては「はてブカード」に似た形式で表示を行っています。

現在は「はてなブログカード」のWebAPIを使わない「Pz-LinkCard」をお勧めしているところです。

シェア数をトータルにする

 

さて、「Pz-HatenaBlogCard」は「安定版」としていて、バグ修正等は行う予定ですが、機能を追加する予定はありません。

コメントにて

一点ご質問がありましてご連絡をさせて頂きました。
カードに総シェア数のみを表示させるにはどうしたら良いでしょうか?

という質問がありました。

Twitterのツイート数APIが提供されなくなってから、個別のシェア数ではなく、フェイスブックやはてなブックマークのシェア数の合計を表示するのが流行っているようです。

この機能を追加する予定は無いものの、せめて修正のポイントを書こうと思います。

なお、「SNS Count Cache」を使う前提で、内部リンクにのみ適用されます。

修正するところ

「pz-hatenablogcard.php」に、トータルのカウントを表示する部分を追加します。

Ver1.2.8のソースを見ると、423行目からソーシャルカウントの取得と編集を行っています。

455行目~467行目でTwitterのツイート数を取得しています。

468行目~473行目で表示のための編集を行っています。

                }
                $sns .= '';
                if ($this->options'sns-position' == '1') {
                    $sns_title = $sns;
                } else {
                    $sns_info = $sns;
                }
            }

この、468行目~473行目の手前に、「トータルカウント」を表示させるコードを挿入します。

                }
                if (function_exists('scc_get_share_total')) {
                    if ($link_type == '1' or $link_type == '2') {
                        $sns = '<span class="linkcard-share">';
                        $count = scc_get_share_total( array( 'post_id' => $id ) );
                        if ($count > 0 ) {
                            $sns .= '<span class="linkcard-sns-twitter no_icon">'.$count.'&nbsp;Share'.(($count > 1) ? 's' : '').'</span>';
                        }
                    }
                }
                $sns .= '</span>';

とりあえずこれで表示されると思います。

表示される条件は、

  • 「内部リンク」のみ
  • プラグイン「SNS Count Cache」を有効化する
  • 上の2つを満たす場合、設定画面の設定に関わらず「シェアのトータル数」を表示する

という感じです。

要望者におこたえして…

コメントをいただいたフジタタロウさんのサイトは「赤基調」なので「合わせたい」というご希望もあるようです。

実は「Pocketを取得したとき用のスタイル」を用意してあって、それが近いので、適用してみます。

                }
                if (function_exists('scc_get_share_total')) {
                    if ($link_type == '1' or $link_type == '2') {
                        $sns = '<span class="linkcard-share">';
                        $count = scc_get_share_total( array( 'post_id' => $id ) );
                        if ($count > 0 ) {
                            $sns .= '<span class="linkcard-sns-pocket no_icon"><i class="fa fa-share"></i>&nbsp;'.$count.'&nbsp;Share'.(($count > 1) ? 's' : '').'</span>';
                        }
                    }
                }
                $sns .= '</span>';

FontAwesomeを使った矢印を付けて、「○○ Shares」の背景色が赤になります。

テスト環境だとシェア数が無くて試験が不十分です(^-^;

何かお気づきの点があれば修正します。

では、この辺で。(^-^)o

コメント

  1. ぽぽろんさん

    早速のご対応ありがとうございました!
    無事に変更することが出来ました。

    linkcard-sns-pocket no_iconのcssだけ
    少しいじらせて頂きましたが、
    希望の通りとなりました。

    機能追加をしない「Pz-HatenaBlogCard」ですが、
    今回わざわざ対応いただいたことに感謝いたします。

    本当にありがとうございました。

    • ぽぽろんさん

      追記です。
      よく見たらファビコンが表示されなくなってしまいました、、、

      何か原因はありますでしょうか??

      • フジタタロウさん、コメントありがとうございます。

        ちゃんと表示できていたようで良かったです。

        さて、「国旗」と「赤い丸」のアイコンを用意されているようですが、フジタタロウさんのサイトでは赤い丸のアイコン、当サイトでは国旗のアイコンが表示されています。
        Pz-HatenaBlogCardではファビコンの取得に「Hatena::favicon」を使用していて、Pz-LinkCardではGoogleのAPIを使用しているため、それぞれ違うアイコンが表示されているようです。
        表示されたいアイコンと違うアイコンが表示されているという状態でしょうか?

        WordPress管理画面の「外観」→「カスタマイズ」→「サイト基本情報」から「サイトアイコン」を設定しなおすと良いかも知れません。
        解決しないようであればまたどうぞ(^-^)o

        • ぽぽろんさん

          ありがとうございます。無事に解決しました。
          いつも迅速な対応ありがとうございます。

          • フジタタロウさん、返信ありがとうございます。

            WordPressは4.3から正式にサイトアイコンに対応したので、テーマやプラグインでサイトアイコンを設定していた場合、ブラウザやファビコン取得APIによって違う物が取得されることが多いようです。

            解決したようで良かったです。またどうぞ♪

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