a-blog cms のカスタムフィールドの値を一括置換してみた
NEW
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 の結果部分を無事に修正できてよかったです。