WordPress:「WordPress Popular Posts」にオリジナルのコンテンツタグを追加する方法

WordPress:「WordPress Popular Posts」にオリジナルのコンテンツタグを追加する方法

「WordPress Popular Posts」には{text_title}{url}のように記述することで特定の情報を容易に出力できるコンテンツタグが用意されているのですが、同じようにこの形式で記述することで任意の内容を出力できるようにオリジナルのコンテンツタグを追加する方法です。

※紹介している内容は、WordPress Popular Posts Ver 4.2.2を使用した際のものになります。
プラグインの概要や使用方法などについては「WordPress Popular Posts」で確認してください。

コンテンツタグについて

「WordPress Popular Posts」には情報を容易に出力できるコンテンツタグが用意されており、主にプラグインが出力するHTMLをカスタマイズする際に利用するpost_htmlオプションで使用します。
使用する際は{}とパラメータを組み合わせて{xxx}のように記述し、パラメータ部分ではtitleurlなどあらかじめ用意されているものを記述することでその情報を出力することができます。
例えば<li>{thumb}{title}</li>と記述すれば、リンク付きサムネイルイメージとリンク付きタイトルがli要素で括られて出力されます。

どのようなパラメータが用意されているかはプラグイン有効化後に追加されるページの「パラメーター」最下部にある「post_html」で確認でき、一部紹介すると以下のようなものがあります。

{thumb_img} リンクなしでサムネイルイメージを表示。
{pid} ページIDを表示。
{text_title} リンクなしでページタイトルを表示。
{url} ページURLを表示。
{summary} 本文の抜粋を表示。
{views} 閲覧数を表示。
{date} 投稿時間を表示。(stats_date = 1にする必要あり)

このように頻繁に利用しそうなものはある程度用意されてはいますが、デフォルトでは用意されていないコンテンツタグがほしい場合は、以下で紹介する方法でオリジナルのコンテンツタグを追加することができます。

タグ情報を表示するコンテンツタグを作成

記事に設定されているタグ情報を出力するコンテンツタグを作成してみます。
オリジナルのコンテンツタグを作成する際はwpp_parse_custom_content_tagsというフックを利用して、functions.phpへ下記のように記述します。

functions.php

add_filter( 'wpp_parse_custom_content_tags', 'add_wpp_content_tags', 10, 2 );
function add_wpp_content_tags( $html, $post_id ) {
  if ( false !== strpos( $html, '{tags}' ) ) {
    $tags_html = '';
    $terms = get_the_terms( $post_id, 'post_tag' );
    if ( $terms ) {
      $tags_html = '<span class="post-tags">';
      foreach ( $terms as $term ) {
        $tags_html .= $term->name . ', ';
      }
      $tags_html = rtrim( $tags_html, ', ');
      $tags_html .= '</span>';
    }
    $html = str_replace( '{tags}', $tags_html, $html );
  }
  return $html;
}

上記を記述することで{tags}というオリジナルのコンテンツタグが利用可能になり、これを「WordPress Popular Posts」を呼び出している箇所に記述すれば、各記事のタグ情報が出力されるようになります。
複数のタグが設定されている場合は「タグ1, タグ2, タグ3」という感じでカンマ区切りで出力されるようになっているので、他の区切り文字にしたい場合は該当箇所を任意のものに差し替えてください。
また、ここではget_the_terms()を利用した方法で紹介しましたが、普通にget_the_tags()を利用してget_the_tags( $post_id )とするのでも実装できます。

カスタムフィールドの情報を表示するコンテンツタグを作成

記事に設定されているカスタムフィールドの情報を出力するコンテンツタグを作成する場合は、functions.phpへ下記のように記述します。

functions.php

add_filter( 'wpp_parse_custom_content_tags', 'add_wpp_content_tags', 10, 2 );
function add_wpp_content_tags( $html, $post_id ) {
  if ( false !== strpos( $html, '{cf}' ) ) {
    $cf_html = '';
    $cf = get_post_meta( $post_id, 'example', true );
    if ( $cf ) {
      $cf_html = 'Example Value: ' . $cf;
    }
    $html = str_replace( '{cf}', $cf_html, $html );
  }
  return $html;
}

上記を記述することで{cf}というオリジナルのコンテンツタグが利用可能になり、これを「WordPress Popular Posts」を呼び出している箇所に記述すれば、「example」というカスタムフィールドに登録された情報が出力されるようになります。


単純に呼び出し部分のpost_htmlオプションで指定したりwpp_postのフックで出力内容をカスタマイズするとかで事足りることも多いですが、複数箇所に設置していて且つ異なる内容を出力させるとかコード書くのが苦手なクライアントでも出力内容を変更しやすいようにといったときには、上手く利用することで便利に感じる機能だと思います。

Close the search window,
please press close button or esc key.