web-dev-qa-db-ja.com

加入者はアップグレードの後で著者になりますか?/ユーザーの一括更新

私は〜3万人のユーザーがいるサイトを持っています、そして大多数はメインブログで役割'subscriber'を持っています。 WPMU 2.9.2からWordPress 3.0.1にアップグレードした後、post-new.phpのメインブログの "著者"ドロップダウンに30,0000人のユーザー全員が表示されることに気付きました。 。 (さて、それはブラウザをクラッシュさせずに読み込むことができれば...)

明確にするために:すべてのユーザはまだ購読者レベルのアクセス権を持っていますが、 "著者"のドロップダウンに含まれています。

私が/wp-admin/の奥に飛び込む前に、他の誰かがこれを見たことがありますか?この動作がWordPressの意図的な変更であるかどうかを知っている人はいますか?

ありがとう、ベサニー

1
Bee

こんにちは@ Bee

私はなぜこれが起こったのかわかりません。しかし、私があなたの問題を正しく理解していれば、これらのユーザレコードを'subscriber'ではなく'author'に戻す必要がありますね。

通常、私はこのように直接SQLを更新することはお勧めしませんが、問題の性質を考えるとそれは1回限りのものであることを私はそれが大丈夫だろうと思います。

しかし、最初にデータベースをバックアップしてください これを試す前に。

これは、私がWordPressの内部について知っていること、および このサポートの質問に基づいて実行するSQLです(これはメインテーブルのプレフィックスが'wp'であり、設定しても問題ないと仮定する) 'author'で割り当てられたすべてのユーザーは購読者に戻って、WordPress管理コンソールを使用して手動で修正します。)したがって、SQLクエリツールからこのSQLを実行する方法がわかっている場合

UPDATE 
  wp_usermeta 
SET 
  meta_value='a:1:{s:10:"subscriber";s:1:"1";}'
WHERE 1=1
  AND meta_key='wp_capabilities' 
  AND meta_value LIKE '%author%'

クエリツールからSQLを実行するのに慣れていない場合は、これをWebサイトのrootにドロップして(/update-users.phpなどと呼ぶ)、URLからhttp://example.com/update-users.phpを呼び出して実行します。 browser(もちろんhttp://example.comをあなたの実際のサイトドメインに置き換えます):

<?php
include "wp-load.php";
global $wpdb;
$sql =<<<SQL
UDPATE
  wp_usermeta
SET
  meta_value='a:1:{s:10:"subscriber";s:1:"1";}'
WHERE 1=1
  AND meta_key='wp_capabilities'
  AND meta_value LIKE '%author%'
SQL;
$wpdb->query($sql);
echo 'Done!';

P.Sあなたの成功について、あるいはもっと助けが必要な場合は私たちに報告してください。

2
MikeSchinkel