web-dev-qa-db-ja.com

カテゴリをphpMyAdminとマージする方法

私のカテゴリ112747を自分のカテゴリ112748にマージするために、次のphpMyAdminクエリを試しました。

UPDATE `wp_term_relationships`
SET `term_taxonomy_id` = 112747
WHERE `term_taxonomy_id` = 112748;

うまく行かなかった。クエリにはどのようなエラーが含まれていますか?

ワードプレス3.8.2

phpMyAdmin 4.18

MySQL 5.5.34-cll-lve

私のワードプレスのウェブサイトには、ほぼ300,000の投稿があり、ほとんどのカテゴリには少なくとも5000の投稿があります。私は、とりわけ、Webサイトの速度とパフォーマンスを向上させるために、多くのカテゴリをマージすることを望んでいます。

私はワードプレスダッシュボード内からカテゴリをマージするためにいくつかの異なるプラグインを使用しようとしましたが、プラグインをうまく使用する能力は共有ホスティング環境(cloudlinux)のさまざまなmysql、cpu、php自動殺害/制限機能によって悪影響を受けているようです私のウェブサイトがある場所言い換えれば、タスクは完了する前に「強制終了」され、時にはWebサイト全体を「クラッシュ」させます。

Wordpressのダッシュボードを使用してカテゴリを削除すると、そのカテゴリの投稿がデフォルトのカテゴリに移動することを認識しています。そのため、デフォルトのカテゴリを「別の」カテゴリをマージしたいカテゴリに変更して「別の」カテゴリを削除することを試みましたが、明らかに、タスクはやがて「強制終了」または「タイムアウト」します。 。

Wordpressのダッシュボードから、プラグインを使用して、またはカテゴリを削除してカテゴリをマージしようとしたときに、通常発生していたことは、「マージ」が部分的にしか完了しないことです。たとえば、1つのカテゴリからの30または400の投稿がマージされたとしても、そのタスクは「強制終了」または「タイムアウト」し、ワードプレスダッシュボードでエラーが発生したり、Webサイトが「クラッシュ」したり両方。

通常、すべての投稿がマージされない場合は、ワードプレスダッシュボードを使用して段階的にタスクを繰り返すことができますが、15,000件の投稿のカテゴリを別のカテゴリにマージするには、何度もタスクを繰り返す必要があります。さらに、特定の「繰り返し」でWebサイトが「クラッシュ」した場合、そのWebサイトがクラッシュから「回復」するのを待つ必要があります。

だから、私が遭遇した前述の問題を考慮して、ワードプレスダッシュボードの中からカテゴリをマージしようとしている間、カテゴリをマージするためにphpMyAdminを使うことがはるかに効率的で簡単であると思う。

しかし、ワードプレスのデータベース構造がはるかに複雑になっているように見えます。私はphpMyAdminを使って5年前にこのようなことをすることができると思いました。

この特定の例では、実際のクエリを試みる前に、「term taxonomy id」などを複数回確認します。不必要な間違いを避けるために。ただし、私のフォーラム投稿の中には、誤った用語分類IDが表示される場合があります。これは、この例では、失敗した試行をすべてリストしたテキストファイルからコピー/貼り付けした方法によるものです。ただし、実際にクエリを実行しようとしているときにも、クエリを続行する前に、「term taxonomy id」などのことを複数回チェックします。

2
q305noonce

各投稿が関連付けられているカテゴリを変更する必要があるだけで、カテゴリをマージすることはできません。テーブルWP_TERM_RELATIONSHIPSは投稿をカテゴリにリンクします。あなたはこのようなことを試すことができます:

UPDATE wp_term_relationships 
SET term_taxonomy_id = 
   (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = 112748)
WHERE term_taxonomy_id =
   (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = 112747)

このプラグインを試してみることもできます。 http://wordpress.org/plugins/batchmove/

1
unifiedac