1. TOP
  2. 技術メモ
  3. 投稿のカスタム分類を簡単に!WordPressメニューをカスタムフィールドで仕分ける方法

投稿のカスタム分類を簡単に!WordPressメニューをカスタムフィールドで仕分ける方法

投稿のカスタム分類を簡単に!WordPressメニューをカスタムフィールドで仕分ける方法

WordPressのダッシュボードを、もっと効率よく使いたいと思いませんか?この記事では、カスタムフィールドを利用して投稿を分類し、それをダッシュボードのメニューに表示する方法を紹介します。、具体的なコード例を交えながら簡潔に解説します。管理をスマートにしたい方はぜひお試しください!

 

WordPressの投稿をカスタムフィールドの値に基づいて分類し、ダッシュボードのメニューに分けて表示

  1. カスタム管理ページの作成:
    • WordPressのadd_menu_page関数を使って、新しい管理画面メニューを作成します。
  2. カスタムクエリを使用して投稿を取得:
    • WP_Queryを利用して、カスタムフィールドの値を条件に投稿をフィルタリングします。
    • たとえば、カスタムフィールド「ステータス」が特定の値(例:「承認済み」)の場合、その投稿だけを取得するクエリを設定します。
  3. 管理画面の表示処理:
    • 取得した投稿をカスタム管理ページで表示します。
    • admin_menuアクションフックを使って、メニューを作成し、画面をレンダリングします。

以下は、簡単なコード例です

functions.php

function custom_menu_page() {
    add_menu_page(
        'カスタム投稿一覧', // ページタイトル
        'カスタム投稿',    // メニュータイトル
        'manage_options',  // 権限
        'custom_post_menu', // メニューのスラッグ
        'custom_menu_page_content' // 表示する内容
    );
}

add_action('admin_menu', 'custom_menu_page');

function custom_menu_page_content() {
    // カスタムフィールド「status」の値が「approved」の投稿を取得する
    $query_args = array(
        'post_type'  => 'post',
        'meta_key'   => 'status',
        'meta_value' => 'approved',
    );

    $query = new WP_Query($query_args);

    if ($query->have_posts()) {
        echo '<ul>';
        while ($query->have_posts()) {
            $query->the_post();
            echo '<li><a href="' . get_edit_post_link() . '">' . get_the_title() . '</a></li>';
        }
        echo '</ul>';
    } else {
        echo '該当する投稿がありません。';
    }

    wp_reset_postdata();
}
  • カスタムフィールドのキー名(例: status)と値を正確に指定してください。
  • 権限 (manage_options) を適切に設定することで、表示できるユーザーを制御できます。
  • メニューページのデザインや表示内容は、必要に応じてカスタマイズ可能です。

 

チェックボックスを使った例

function custom_menu_page() {
    add_menu_page(
        'カスタム投稿一覧', // ページタイトル
        'カスタム投稿',    // メニュータイトル
        'manage_options',  // 権限
        'custom_post_menu', // メニューのスラッグ
        'custom_menu_page_content' // 表示する内容
    );
}

add_action('admin_menu', 'custom_menu_page');

function custom_menu_page_content() {
    // カスタムフィールド「status」の値が「approved」の投稿を取得する
    $query_args = array(
        'post_type'  => 'post',
        'meta_key'   => 'status',
        'meta_value' => 'approved',
    );

    $query = new WP_Query($query_args);

    if ($query->have_posts()) {
        echo '<ul>';
        while ($query->have_posts()) {
            $query->the_post();
            echo '<li><a href="' . get_edit_post_link() . '">' . get_the_title() . '</a></li>';
        }
        echo '</ul>';
    } else {
        echo '該当する投稿がありません。';
    }

    wp_reset_postdata();
}と

 

投稿のサブメニュー内に追加する場合

function custom_menu_page() {
    add_menu_page(
        'チェックボックス投稿一覧', // ページタイトル
        'チェック投稿',            // メニュータイトル
        'manage_options',         // 権限
        'checkbox_post_menu',     // メニューのスラッグ
        'custom_menu_page_content' // 表示する内容
    );
}

add_action('admin_menu', 'custom_menu_page');

function custom_menu_page_content() {
    // チェックボックスフィールド「features」に「option1」が含まれる投稿を取得する
    $query_args = array(
        'post_type'  => 'post',
        'meta_query' => array(
            array(
                'key'     => 'features',  // カスタムフィールドの名前
                'value'   => 'option1',  // 検索する値
                'compare' => 'LIKE',     // 部分一致検索
            ),
        ),
    );

    $query = new WP_Query($query_args);

    if ($query->have_posts()) {
        echo '<ul>';
        while ($query->have_posts()) {
            $query->the_post();
            echo '<li><a href="' . get_edit_post_link() . '">' . get_the_title() . '</a></li>';
        }
        echo '</ul>';
    } else {
        echo '該当する投稿がありません。';
    }

    wp_reset_postdata();
}

 

 

このコードは、WordPressのカスタムフィールドを活用して投稿を分類し、その分類結果をダッシュボードの投稿メニュー下にサブメニューとして表示する方法を実現しています。以下が主なポイントのまとめです。

 

  • カスタムフィールドを利用した投稿のフィルタリング
    特定のチェックボックスの値(例: option1)を基準に投稿を取得します。meta_queryを使用することで、カスタムフィールドの条件を簡単に指定できます。
  • ダッシュボードのメニューに統合
    add_submenu_pageを使うことで、ダッシュボード内の「投稿」メニューの下にカスタム分類用のリンクを追加し、管理画面がわかりやすく整理されます。
  • 柔軟なカスタマイズが可能
    コードを調整することで、複数の条件を追加したり、サブメニューのデザインや機能を変更することができます。
  • メンテナンス性と効率性の向上
    投稿を自動的に分類・表示する仕組みを作ることで、手作業の手間を省き、管理効率を大幅に向上させます。

 

この仕組みを導入することで、管理画面の操作性が向上し、投稿管理が一段と便利になります。特に、カスタムフィールドを頻繁に活用するプロジェクトや特定の条件で投稿を分類したい場合に有用です。

 

 

 

PR

ニッチなテーマのイラスト素材を投稿中!ぜひご利用ください。

ナマケモノなど可愛いイラストをイラストACで無料配布中!

オリジナル絵本をKindleで出版!

ナマケモノのふにゃまるちゃんを読む

困ったときは格安で依頼!RU DESIGNも出品中

格安レンタルサーバーでサイト運営を始めよう

ドメイン取得は一括管理が便利!

応援・支援よろしくお願いします!サイト運営に活用させていただきます。

Braveクリエイターサポート
ホームページ制作ならRU DESIGN

関連記事

【WordPress初心者さん必見!】「これ、どうすればいいの?」検索しても意外と見つからない疑問を解決!
2025/04/19
WordPressでのサイト運営、始めてみましたか?✨ 最初は設定や記事の書き方など、覚えることがたくさんで大変ですよね!基本的な操作は色々なサイトで解説されて...
WordPressで「Missing a temporary folder」エラーを解決!ファイルがアップロードできない時の簡単な対処法
2025/04/19
WordPressで画像やプラグインをアップロードしようとしたら、「Missing a temporary folder」というエラーが出て、うまくアップロード...
WPFormsで「JavaScriptの問題を検出しました」メッセージが表示された時の原因と対処法
2025/04/19
WordPressサイトで人気の高いお問い合わせフォームプラグインの一つであるWPFormsを利用していると、サイトの管理画面や、実際にフォームが表示されている...
WordPressサイトの処理が止まる?「Maximum execution time exceeded」エラーの原因と対策
2025/04/18
WordPressサイトを運営していると、時々「Fatal error: Maximum execution time of XX seconds exceed...
WordPressで遭遇しやすい「原因が分かりにくい」エラーと解決策
2025/04/18
WordPressでウェブサイトを運用していると、予期しないエラーメッセージに遭遇することがあります。有名なエラー(例えば、白い画面だけが表示される「真っ白画面...