【WordPress】投稿画面でタグをチェックボックスで選択する方法

WordPressを使っていると、投稿画面でタグをもっと簡単に選択できる方法が欲しいと感じることがあるかもしれません。デフォルトでは、タグはテキストボックスに入力して選択しますが、多くのタグを使う場合、チェックボックス形式で表示できると非常に便利です。この記事では、デフォルトのタグ機能を活用しつつ、タグをチェックボックス形式で選択できるようにする方法を紹介します。

タグをチェックボックスで選択するメリット

デフォルトのタグ入力は柔軟ですが、たくさんのタグを使っている場合には、探して入力するのが手間になることもあります。チェックボックス形式にすることで、既存のタグを簡単に見つけ、選択することができます。また、誤字を防ぐためにも役立ちます。

カスタマイズ方法の概要

このカスタマイズでは、WordPressの管理画面の投稿編集ページにおいて、タグをチェックボックス形式で表示するように変更します。この実装は、テーマのfunctions.phpファイルにコードを追加するだけで簡単に行えます。

実装手順

functions.phpにカスタムコードを追加する

まず、functions.phpファイルを開き、以下のコードを追加します。このコードは、デフォルトのタグメタボックスを削除し、チェックボックス形式の新しいメタボックスを追加します。

function custom_tags_meta_box() {
    remove_meta_box('tagsdiv-post_tag', 'post', 'side'); // デフォルトのタグメタボックスを削除
    add_meta_box('post_tagcheckbox', 'タグ', 'custom_tags_checkbox', 'post', 'side', 'default');
}

function custom_tags_checkbox($post) {
    $taxonomy = 'post_tag';
    $terms = get_terms($taxonomy, array('hide_empty' => 0)); // すべてのタグを取得
    $postterms = get_the_terms($post->ID, $taxonomy);
    $current = ($postterms ? array_map(function($term) { return $term->term_id; }, $postterms) : array()); // 現在の投稿に紐付いているタグIDを取得
    $name = 'tax_input[' . $taxonomy . '][]';

    echo '<div id="taxonomy-' . $taxonomy . '" class="categorydiv">';
    echo '<ul id="' . $taxonomy . 'checklist" class="categorychecklist form-no-clear">';
    foreach ($terms as $term) {
        $id = 'post_tag-' . $term->term_id;
        $checked = in_array($term->term_id, $current) ? 'checked="checked"' : ''; // 選択されたタグにチェックを入れる
        echo '<li id="' . $id . '">';
        echo '<label class="selectit"><input type="checkbox" id="in-' . $id . '" name="' . $name . '" value="' . $term->term_id . '" ' . $checked . ' /> ' . $term->name . '</label>';
        echo '</li>';
    }
    echo '</ul></div>';
}

add_action('admin_menu', 'custom_tags_meta_box');

カスタマイズの動作を確認する

コードを追加したら、管理画面の投稿編集ページを開き、タグ選択がチェックボックス形式で表示されているかを確認してください。これにより、デフォルトのタグ機能をそのままに、より直感的な操作が可能になります。