WordPressのタグに設定されたACF項目にデータを一括登録する方法。
タグの重み付けが必要な背景
WordPressのタグは、single.phpで全件表示するにはOKでも、一覧画面で表示するには多すぎる。一覧画面でタグの件数が多いとレイアウトが崩れたり、スパムっぽくなる。ここではタグにACF項目positionを設け、sortやlimitに活用する。
方法1: CSVファイルを使ったインポート
- タグとACF項目 ‘position’ の値を含むCSVファイルを作成します。CSVファイルは次のような形式にします
tag_name, slug, position
tag1, slug2, position1
tag2, slug2, position2
...
- WordPressに「WP All Import」プラグインをインストールして有効化します。
- 「WP All Import」の設定で、作成したCSVファイルをインポートします。タグ名とACF項目 ‘position’ をマッピングします。
- インポート処理を実行し、WordPressにタグとACF項目 ‘position’ の値が一括登録されます。
方法2: PHPコードを使った一括登録
タグ名、slug、ACF項目 ‘position’ の値を含む配列を用意する。
$tags_data = array(
array('name' => 'tag1', 'slug' => 'slug1', 'position' => 'position1'),
array('name' => 'tag2', 'slug' => 'slug2', 'position' => 'position2'),
...
);
functions.phpファイルに以下のコードを追加し、タグ、slug、ACF項目 ‘position’ の値を一括登録する関数を作成する
function import_tags_with_acf_position_and_slug($tags_data) {
foreach ($tags_data as $tag_data) {
$tag_name = $tag_data['name'];
$tag_slug = $tag_data['slug'];
$tag_position = $tag_data['position'];
// タグを作成・更新
$term = wp_insert_term($tag_name, 'post_tag', array('slug' => $tag_slug));
if (!is_wp_error($term)) {
$term_id = $term['term_id'];
// ACF項目 'position' の値を設定
update_field('position', $tag_position, 'term_' . $term_id);
}
}
}
作成した関数を呼び出してタグ、slug、ACF項目 ‘position’ の値を一括登録する
import_tags_with_acf_position_and_slug($tags_data);