WordPress非公開記事に特別ラベルを自動追加して強調表示

WordPressで、非公開記事を表示する際にPRIVATE:のマークを自動的にタイトルに追加し、特定のスタイルを適用する方法を紹介します。この記事では、簡単なPHP関数を使って再利用可能なコードを作成し、スタイルをカスタマイズする方法について説明します

目次

非公開記事であることの視認性を向上させる

完成イメージはこんな感じ
個別記事のタイトルもこんな感じ

1. 関数の作成

まず、非公開記事のタイトルに「PRIVATE:」を追加するため、テーマファイル内のfunctions.phpに関数を作成します。以下のコードをfunctions.phpに追加してください:

function display_private_post_title($title, $post_id) {
    // 投稿が非公開かどうかをチェック
    if (get_post_status($post_id) === 'private') {
        $title = '<span class="private-post">PRIVATE: </span>' . $title;
    }
    return $title;
}

2. フィルターフックの追加

次に、the_titleフィルターを使って、タイトルを表示する前に上記の関数を適用します。functions.phpに次のフィルターフックを追加してください

add_filter('the_title', 'display_private_post_title', 10, 2);

これにより、WordPressがタイトルを表示する際に、自動的に非公開記事には「PRIVATE:」が追加されるようになります。

3. CSSスタイルの追加

最後に、非公開記事の「PRIVATE:」部分にスタイルを適用するためのCSSを追加します。今回は、背景色をピンクにし、文字色を赤にして目立たせるようにします。

WordPressのテーマのスタイルシート(style.css)に以下のCSSを追加してください:

/* 非公開記事のタイトルに「PRIVATE」をピンク背景で囲むスタイル */
.private-post {
    color: red;
    background-color: pink;
    padding: 2px 4px;
    border: 1px solid red;
    font-weight: bold;
}

フィルターフックは、WordPressの重要な仕組みの一つで、特定のタイミングでデータや出力を変更するために使用されます。フィルターフックを使用すると、テーマやプラグインのコードを直接変更せずに、出力内容をカスタマイズできるのが特徴です。

まとめ

  • functions.phpに関数を追加し、非公開記事のタイトルに自動的に「PRIVATE:」を追加
  • フィルターフックを使用して、WordPressがタイトルを表示する際にカスタマイズされたタイトルを適用
  • CSSでスタイルを適用し、タイトルを視覚的に強調

この方法を使うことで、非公開記事がすぐに識別できるようになり、再利用性の高いコードで他のWordPressプロジェクトでも簡単に適用可能です。ぜひお試しください!

add_filter('the_title', 'display_private_post_title', 10, 2); の詳しい説明

  1. フィルターフック the_title について
  • the_titleは、WordPressの投稿やページのタイトルを出力する直前に実行されるフィルターフックです。これは、投稿やページのタイトルを画面に表示する前に、そのタイトルを変更できるポイントを提供しています。
  • つまり、このフックを使用することで、タイトルの前に「PRIVATE:」を追加したり、タイトル全体の形式や内容を変更することが可能です。
  1. display_private_post_title 関数の適用
  • add_filterは、特定のフィルターフック(この場合はthe_title)に対して関数を登録するWordPressの関数です。display_private_post_title関数が、投稿やページのタイトルが表示される直前に呼び出され、タイトルをカスタマイズします。
  • 具体的には、display_private_post_titleは、投稿が「非公開」ステータスである場合、タイトルの前に「PRIVATE:」を追加する処理を行います。
  1. 10 の意味
  • フィルターフックには「優先順位」という概念があります。add_filterの第3引数として渡される数字(この場合は10)がそれを表します。この値が低いほど、他のフィルターよりも先に実行され、高いほど後に実行されます。
  • 通常の優先順位は10です。特別な理由がない限り、この値を変更する必要はありませんが、もし同じフィルターに複数の関数を登録していて、順番を制御したい場合には、この数字を変更することができます。
  1. 2 の意味
  • 第4引数は、このフィルターフックに渡される引数の数を指定します。この場合、the_titleフィルターフックは2つの引数($title$post_id)を取ります。$titleは投稿のタイトルであり、$post_idは投稿IDです。
  • add_filter('the_title', 'display_private_post_title', 10, 2); の場合、display_private_post_title関数は、2つの引数を受け取る必要があります。

フィルターフックの仕組み

フィルターフックは、WordPressがタイトルや他のコンテンツを出力する前に呼び出され、指定された関数でそのデータを変更します。以下の流れで処理が行われます:

  1. 投稿のタイトルを取得する際に the_title フィルターフックが呼ばれる
  • WordPressがタイトルを取得しようとするとき、the_titleフィルターが動作します。
  1. display_private_post_title 関数が実行される
  • the_titleフィルターフックによって、display_private_post_title関数が呼ばれます。この関数内で、投稿が非公開かどうかを確認し、非公開の場合は「PRIVATE:」をタイトルの前に追加します。
  1. 変更されたタイトルが画面に出力される
  • フィルターで変更されたタイトルは、画面に表示されます。この時点で「PRIVATE:」が追加されたタイトルが出力されます。

the_titleについて

フィルターフックを使うことで、WordPressがデフォルトで行う処理を柔軟にカスタマイズすることができます。the_title フィルターフックを使用して投稿タイトルを変更する場合、タイトルが表示される直前に関数を適用して、投稿が非公開であれば「PRIVATE:」をタイトルに追加するというカスタマイズが可能です。

このフィルターフックの利用によって、テーマやプラグインのコードを直接書き換えることなく、必要なカスタマイズを柔軟に実装できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次