この記事は 2019年2月5日 に投稿されました。
内容が古いかもしれません。ご注意ください。
※最後に更新されたのは 2019年2月5日 です。
内容が古いかもしれません。ご注意ください。
※最後に更新されたのは 2019年2月5日 です。
wp_termmetaテーブルを使って、カテゴリ・タグ・タクソノミーのタームにカスタムフィールド(メタ情報)を追加する方法
WEMO.tech
WordPress:管理画面のカテゴリーやタクソノミー一覧ページにID(タームID)項目を追加する方法
NxWorld
英語版つきのサイト作成時にターム一覧の英訳版を出力する必要があり、Descriptionの欄使ったろ!と思ったらそれはもう順番ソートに使用していたため詰みかけたが……タームにメタ情報が足せるんだな……
上記のサイトを参考にカスタム。
なお、get_termsをforeachでループで呼び出しているときのIDが$変数->term_id だと気づかないでちょっと詰まりました。これもメモ。暗記しよ…
関数リファレンス/get terms
以下、1〜3はほぼ参考サイト1のママ
4は管理画面へそれを表示する形で参考サイト2を応用しています
// 1.新規追加画面 ============================================================
function add_term_fields() {
echo '<div class="form-field">
<label for="term_eng">英語表記</label>
<input type="text" name="term_eng" id="term_eng" value="" size="40">
<p>カテゴリー名の英語表記を入力してください。</p>
</div>';
}
add_action('TAXONOMY-SLUG_add_form_fields', 'add_term_fields');
// 2.編集画面に追加
function edit_term_fields( $tag ) {
// すでにtermmetaに値があれば取得 ============================================================
$value = get_term_meta($tag->term_id, 'term_eng', 1);
//htmlソース
echo '<tr class="form-field">
<th><label for="term_eng">英語表記</label></th>
<td>
<input type="text" name="term_eng" id="term_eng" size="40" value="'.$value.'">
<p class="description">カテゴリー名の英語表記を入力してください。</p>
</td>
</tr>';
}
add_action('TAXONOMY-SLUG_edit_form_fields', 'edit_term_fields');
// 3.値を保存 ============================================================
function save_terms( $term_id ) {
if (array_key_exists('term_eng', $_POST)) {
update_term_meta( $term_id, 'term_eng', $_POST['term_eng']);
}
}
add_action( 'create_term', 'save_terms' ); //新規追加用フック
add_action( 'edit_terms', 'save_terms' ); //編集ページ用フック
// 4.一覧に列を追加 ============================================================
function add_taxonomy_columns( $columns ) {
$columns['term_eng'] = '英語表記';
return $columns;
}
function add_taxonomy_sortable_columns( $columns ) {
$columns['term_eng'] = '英語表記';
return $columns;
}
function custom_taxonomy_column( $content, $column_name, $term_id ) {
if ( $column_name == 'term_eng' ) {
echo get_term_meta( $term_id, 'term_eng', true );
}
}
add_filter( 'manage_edit-TAXONOMY-SLUG_columns', 'add_taxonomy_columns' );
add_filter( 'manage_edit-TAXONOMY-SLUG_sortable_columns', 'add_taxonomy_sortable_columns' );
add_action( 'manage_TAXONOMY-SLUG_custom_column', 'custom_taxonomy_column', 10, 3 );