WEB制作、マーケティングに関する情報をお届けします。ホームページ制作会社、テラのブログ

ワードプレスの投稿一覧画面に表示される項目を削除する方法

タグ:

ワードプレスでの使いやすい環境を構築する上では使用しない不要な項目は削除できるといいですよね。
今回は投稿、カスタム投稿の一覧ページに表示される項目を削除する方法を紹介します。

コードの紹介

デフォルトの投稿に加え、カスタム投稿タイプ、review、products_listを作成していることを想定しています。
表示項目の設定にもよりますが以下をfunctions.phpに適用すると、投稿、カスタム投稿タイプ(review)、カスタム投稿タイプ(products_list)の一覧画面には何も表示されなくなるかと思います。
次の章で解説します。

// 投稿一覧画面でカラムをカスタマイズするための関数
function customize_post_columns($columns) {
    global $typenow; // 現在の投稿タイプをグローバル変数で取得

    // カスタマイズ対象の投稿タイプと削除するカラムの設定(多次元配列)
    // ここでは 'post'(通常の投稿)と 'review'(カスタム投稿タイプ)に対して
    // 削除したいカラムを設定
    $type = array(
        'post' => array(
            'cb',//チェックボックス
            'title',//タイトルの列を消す
            'author',//投稿者の列を消す
            'categories', //カテゴリーの列を消す
            'tags', //タグの列を消す
            'date', //日付を消す
            'comments', //コメントを消す
            'wps_post_id' //投稿IDを消す
        ),
        // 'review' カスタム投稿タイプに対して削除項目を指定
        'review' => array(
            'cb',//チェックボックス
            'title',//タイトルの列を消す
            'author', //投稿者の列を消す
            'categories', //カテゴリーの列を消す
            'tags', //タグの列を消す
            'date', //日付を消す
            'comments', //コメントを消す
            'wps_post_id' //投稿IDを消す
        ),
        // 'products_list' カスタム投稿タイプに対して削除項目を指定
        'products_list' => array(
            'cb',//チェックボックス
            'title',//タイトルの列を消す
            'author', //投稿者の列を消す
            'categories', //カテゴリーの列を消す
            'tags', //タグの列を消す
            'date', //日付を消す
            'comments', //コメントを消す
            'wps_post_id' //投稿IDを消す
        ),
    );
    // 現在の投稿タイプがカスタマイズ対象に含まれるか確認
    if (array_key_exists($typenow, $type)) {
        // 該当する投稿タイプに対して、削除対象のカラムをループで処理
        foreach ($type[$typenow] as $column) {
            if (isset($columns[$column])) {
                // 指定したカラムが存在する場合は、投稿一覧画面から削除
                unset($columns[$column]);
            }
        }
    }
    return $columns; // カスタマイズされたカラムを返す
}

// 投稿タイプごとにカラム管理を適用する関数
function apply_custom_columns_filter() {
    global $typenow; // 現在の投稿タイプを取得
    if (($typenow == null)) {
        // デフォルトの投稿タイプ 'post' に対して、カラムカスタマイズを適用
        add_filter('manage_posts_columns', 'customize_post_columns');
    }else{
        // 現在の投稿を取得しているため『manage_投稿タイプ名の変数_posts_columns』でその投稿タイプに対して処理を行います。
        add_filter("manage_".$typenow."_posts_columns", 'customize_post_columns');
    }
}
add_action('admin_init', 'apply_custom_columns_filter'); // 'admin_init' アクションフックで関数を実行

コードの解説

まずは投稿一覧画面でカラムをカスタマイズするための関数を作成します。

function customize_post_columns($columns) {}

この中に処理を書いていきます。
まず最初に現在の投稿タイプをグローバル変数で取得します。
多次元配列で条件を入れていきます。
最初の『post』はワードプレスが用意しているデフォルトの投稿のことです。
以降はカスタム投稿タイプですが、それぞれのスラッグを入れていきます。
配列の中に投稿画面から消したい項目を入れていきます。

cb チェックボックス
title 記事のタイトル
author 投稿者情報
categories カテゴリー情報
tags タグ情報
date 投稿日
comments コメント
wps_post_id 記事のID
global $typenow;
$type = array(
    'post' => array(
        'cb',//チェックボックス
        'title',//タイトルの列を消す
        'author',//投稿者の列を消す
        'categories', //カテゴリーの列を消す
        'tags', //タグの列を消す
        'date', //日付を消す
        'comments', //コメントを消す
        'wps_post_id' //投稿IDを消す
    ),
    // 'review' カスタム投稿タイプに対して削除項目を指定
    'review' => array(
        'cb',//チェックボックス
        'title',//タイトルの列を消す
        'author', //投稿者の列を消す
        'categories', //カテゴリーの列を消す
        'tags', //タグの列を消す
        'date', //日付を消す
        'comments', //コメントを消す
        'wps_post_id' //投稿IDを消す
    ),
    // 'products_list' カスタム投稿タイプに対して削除項目を指定
    'products_list' => array(
        'cb',//チェックボックス
        'title',//タイトルの列を消す
        'author', //投稿者の列を消す
        'categories', //カテゴリーの列を消す
        'tags', //タグの列を消す
        'date', //日付を消す
        'comments', //コメントを消す
        'wps_post_id' //投稿IDを消す
    ),
);

以下では現在の投稿タイプがカスタマイズ対象に含まれるか確認をして項目に該当する場合は一覧画面から削除するようにしています。最後にreturnでカラムを返します。

// 現在の投稿タイプがカスタマイズ対象に含まれるか確認
if (array_key_exists($typenow, $type)) {
    // 該当する投稿タイプに対して、削除対象のカラムをループで処理
    foreach ($type[$typenow] as $column) {
        if (isset($columns[$column])) {
            // 指定したカラムが存在する場合は、投稿一覧画面から削除
            unset($columns[$column]);
        }
    }
}
return $columns; // カスタマイズされたカラムを返す

上記で作成したものを呼び出す場合に使用する関数を紹介していきます。
現在の投稿タイプをグローバル変数で取得します。
デフォルトの投稿タイプの場合は『null』になりますので、それを利用してカスタム投稿と使い分けています。
『add_filter(‘manage_posts_columns’, ‘customize_post_columns’);』でデフォルトの投稿タイプに対して処理を行います。
カスタム投稿タイプについては『$typenow』の中にスラッグが入っていますので『add_filter(“manage_”.$typenow.”_posts_columns”, ‘customize_post_columns’);』でカスタムスラッグ名をセットして関数を呼び出します。
最後にアクションフックを設定して関数を実行させます。

// 投稿タイプごとにカラム管理を適用する関数
function apply_custom_columns_filter() {
    global $typenow; // 現在の投稿タイプを取得
    if (($typenow == null)) {
        // デフォルトの投稿タイプ 'post' に対して、カラムカスタマイズを適用
        add_filter('manage_posts_columns', 'customize_post_columns');
    }else{
        // 現在の投稿を取得しているため『manage_投稿タイプ名の変数_posts_columns』でその投稿タイプに対して処理を行います。
        add_filter("manage_".$typenow."_posts_columns", 'customize_post_columns');
    }
}
add_action('admin_init', 'apply_custom_columns_filter'); // 'admin_init' アクションフックで関数を実行

まとめ

以上、ワードプレスの投稿一覧画面に表示される項目を削除する方法でした。
ワードプレスに慣れていない人が更新を担当する場合などは使わないものは非表示しておくのがベストでしょう。
ぜひ、参考にしてみてください。

テラ合同会社(東京都)

テラは2014年に東京都でスタートアップしたホームページ制作会社です。ホームページ制作以外にも広告運用、マーケティング、ブランディング、印刷物など幅広い領域をサポートしています。
コーポレートサイトはこちらをご覧ください。