Menu
テーマ切り替え

投稿のカスタム分類を簡単に!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 を使うことで、ダッシュボード内の「投稿」メニューの下にカスタム分類用のリンクを追加し、管理画面がわかりやすく整理されます。
  • 柔軟なカスタマイズが可能 コードを調整することで、複数の条件を追加したり、サブメニューのデザインや機能を変更することができます。
  • メンテナンス性と効率性の向上投稿を自動的に分類・表示する仕組みを作ることで、手作業の手間を省き、管理効率を大幅に向上させます。

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

RU DESIGN
AUTHOR

RU DESIGN

個人開発者として、Webサイト制作やAIを活かした開発に取り組んでいます。このブログでは、私が実際に試して「これは使える!」と思った技術や、自作の便利ツールをシェアしています。一緒に技術を楽しんでいきましょう!

この記事をシェア:

関連記事