私は、クライアントのサイトにある約600の投稿の正規のURL(rel = "canonical")を編集するよう割り当てられています。すべての投稿が同じ標準URLを使用するわけではありません。これらの301や302でもありません。各投稿を一度に1つずつ編集する必要があるため、プラグインを使用しないように言われました。これらは私がとろうと計画している一般的なステップです:
これは私がこれらのステップのためにフォローしているチュートリアルです 。
私の質問は次のとおりです。phpMyAdminを使用して、現在これらのURLを格納するためにどのテーブルが使用されていますか。正確には何と呼ばれますかそして、誰かが以前にこの種の編集をしたことがありますか?
このサイトは現在WordPress 3.9.x上にあります(彼らのサイトを新しいバージョンに更新することは私たちの仕事の範囲外です)。
助けてください!
CSVをダウンロードしてアップロードすることは、人手によるミス(およびタイプミス)が発生しやすい、手動でたくさんのステップを作成することを強いるものです。私の提案はあなたのDBのローカルコピーであなたがローカルでバトルテストできる何かをすることでしょう。従うべきステップ:
mysqldump
ツールを使用し、scp
を使用して ローカルにコピーしますwp post update
を実行します。誰もデータベースに煩わされない時間があることを確認してください(サイトをメンテナンスモードにしてください)。
注:
A)MySQLサーバーのIPとポートを知っている場合は、直接SSHサーバーに接続してリモートにSSH接続することなくダンプを自分のマシンに引き下げることができます。
mysqldump -P3306 -h127.0.0.1 -uroot -pYourPassWord databasename > ./dbdumps
上記は現在のディレクトリ(pwd
)のdbdumps
というサブフォルダにそれをダンプします。あなたはそれを前もって作成するべきです。
B)使用可能な Bash があると仮定すると(コマンドラインの-shで十分であれば)、次のようなスクリプトを使用できます。それをconvert.sh
という名前のファイルに追加します。また、 WP CLI がローカルにインストールされている(またはVagrantマシン、Dockerコンテナなど、ローカルで使用している開発環境に関係なく)と仮定します。
#!/usr/bin/env bash
for id in $(wp post list --field=ID);
do
wp post update $id --post_name=foobar
done
あなたの投稿のためのその変換スラグについてその詳細を述べなかったので、あなたは上記の例でfoobar
を調整する方法を見つける必要があるでしょう。 tag:bash トピックには、たくさんのStackoverflow回答があります。いつものように sed
は救済のために - Shellスクリプトのawk
とsed
で修正できないものは世界にはありません。
あなたの端末から以下のようなシェルスクリプトを実行することができます。
sh convert.sh
試してみて失敗し、 すすぎ、 を繰り返してください。
私はほとんど私の頭の外でそれを書いたので、あなたはそれをテストしなければならないでしょう。あなたがそれを再びゴミ箱に入れることができるようにあなたのローカルDBのコピーを作っておいたほうがよい。