フィルターフックで記事タイトルを加工する方法

細かい説明をするのが苦手なのでかなり大雑把なフィルターフックの使い方の説明になります。

フィルターフックという機能を使うことで、テンプレートで使用するthe_title()やthe_content()などサイトの文章など出力する際に使われるタグにフィルターというものを通して、通常の結果と違う形の結果にすることができる機能があります。

the_title()をテンプレート(content.phpなど)で使うと記事タイトルをブラウザに出力してくれます。このthe_title()を使って、記事タイトルを出力する際にデフォルトの結果と違う、加工した(違う)結果を表示しい場合にフィルターフックという機能を使います。

フィルターにフックする関数の登録

仮に記事タイトルを特定のページでは、全て表示しないで一部だけ表示するとした場合、フィルターフックを使うことで実現できます。

フィルター(the_title())にフックする関数(the_title_leng())を設定するには、add_filter()を使い設定します。

add_filter('フィルター(されるフィルター)名', '(フックする)関数名')
add_filter('the_title', 'the_title_leng');

関数の作成

the_titleフィルターを加工するための関数(the_title_leng)を作成します。関数にパラメータを渡すためthe_title_lengに($content)と引数を設定して、このパラメータを使用して記事タイトルを加工していきます。

関数の内容は、文字の長さをmb_strlenで得た結果を数字(文字数)と比較して、大きければ記事タイトルの文字数を設定した範囲の文字数にしています。

function the_title_leng( $content ) {
  if ( mb_strlen( $content ) > 20 ) { 
    return mb_substr( $content, 0, 20 );
  } else {
    return $content;
  }
}

記事タイトルの文字が一定範囲を超えた場合、記事タイトルの最後に「…」を付加して表示するなど、フィルターフックを使うことで出力結果を色々と加工できます。

function the_title_leng( $content ) {
  if ( mb_strlen( $content ) > 20 ) { 
    $substr = mb_substr( $content, 0, 20 );
    return $substr . '...';
  } else {
    return $content;
  }
}
add_filter('the_title', 'the_title_leng');

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です