コンテンツの読み込みに時間がかかっています

a-blog cms のカスタムフィールドの値を一括置換してみた

SUPER GT のサイトがリニューアルされていて、過去のリザルト https://chiyo-katsumasa.com/race/2024/ の リンク先の URL が変わってしまっていた。


サイトのリニューアルする際には、外部から参照されることが多いサイトの場合には、しっかりリダイレクトをするなどを考えてもらいたいところですが、残念ながら対応できてないので、こちら側の修正で対応することを考えてみます。

元の URL

予選 : https://supergt.net/results/index/2024/Round1/4/gt500
決勝 : https://supergt.net/results/index/2024/Round1/5/gt500
ランキング : https://supergt.net/results/driver_ranking/2024/gt500

新しい URL

予選 : https://supergt.net/result?series=2024&gt_class=gt500&race_num=4&round=Round1
決勝 : https://supergt.net/result?series=2024&gt_class=gt500&race_num=5&round=Round1
ランキング : https://supergt.net/driver_ranking?series=2024&gt_class=gt500

予選と決勝部分は、以下のような SQL を実行することで、一括で変更できました。 *カスタムフィールド名* の部分は一応、非公開にしておきます。

UPDATE acms_field
SET field_value = CONCAT(
    'https://supergt.net/result?',
    'series=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -4), '/', 1),
    '&round=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -3), '/', 1),
    '&race_num=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -2), '/', 1),
    '>_class=', SUBSTRING_INDEX(field_value, '/', -1)
)
WHERE field_key = '*カスタムフィールド名*'
  AND field_value LIKE 'https://supergt.net/results/index/%/%/%/gt500';

アップデート前に、まずは対象を検索して確認するのも大事です。

SELECT
  field_value AS old_url,
  CONCAT(
    'https://supergt.net/result?',
    'series=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -4), '/', 1),
    '&round=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -3), '/', 1),
    '&race_num=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -2), '/', 1),
    '>_class=', SUBSTRING_INDEX(field_value, '/', -1)
  ) AS new_url
FROM acms_field
WHERE field_key = '*カスタムフィールド名*'
  AND field_value LIKE 'https://supergt.net/results/index/%/%/%/gt500';

ランキングのデータも更新します。

UPDATE acms_field
SET field_value = CONCAT(
  'https://supergt.net/driver_ranking?',
  'series=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -2), '/', 1),
  '>_class=', SUBSTRING_INDEX(field_value, '/', -1)
)
WHERE field_key = '*カスタムフィールド名*'
  AND field_value LIKE 'https://supergt.net/results/driver_ranking/%/%';

確認用。

SELECT
  field_value AS old_url,
  CONCAT(
    'https://supergt.net/driver_ranking?',
    'series=', SUBSTRING_INDEX(SUBSTRING_INDEX(field_value, '/', -2), '/', 1),
    '>_class=', SUBSTRING_INDEX(field_value, '/', -1)
  ) AS new_url
FROM acms_field
WHERE field_key = '*カスタムフィールド名*'
  AND field_value LIKE 'https://supergt.net/results/driver_ranking/%/%';

a-blog cms で特定のカスタムフィールドを置き換える

acms_field というテーブルがあり、カスタムフィールド1項目につき1レコードが作られる仕様になっている。そこには field_key 、field_value のような項目に値が入っています。今回の SQL を作る際には ChatGPT に以下のような感じでお願いしてみます。便利な世の中になりましたね。

MySQL の SQL を書くのを手伝ってください。

acms_field テーブルを field_key = '*カスタムフィールド名*' と field_value に https://supergt.net/results/index/ で始まり /gt500 で終わるデータを検索し、その結果について、 field_value に https://supergt.net/results/index/2023/Round1/3/gt500 のような値が入っているところを https://supergt.net/result?series=2023&gt_class=gt500&race_num=3&round=Round1 に置き換えたい。

実行する前に確認するための SQL も合わせて生成をお願いします。

これで出てきた SQL の SELECT 側のものを一度実行してみて、対象のものが表示されるか、置き換えた後の URL が合ってるかなどを確認しましょう。

https://chiyo-katsumasa.com/ については 2014年から弊社でお手伝いしていますが、今は REPORT というコンテンツになっている以前の BLOG は 2006年からの情報を、PHOTO も 2005年からと長い歴史を記録しています。その中でも大事な RACE の結果部分を無事に修正できてよかったです。


関連記事

この記事のハッシュタグ から関連する記事を表示しています。

Chat GPT が書く a-blog cms の紹介ブログ記事

mysql のデータをインポートしたら繋がらなくなった時の対応メモ

a-blog cmsをxampp for macos xに入れてみるには

a-blog 1.7用のインストーラーをメンテ