WP 3.5を実行しているマルチサイトインストールがあります。私のメインサイトとネットワーク上の他のいくつかのブログはうまく働きます。ただし、新しいユーザーとサイトを登録すると、そのユーザーには「このページにアクセスするための十分な権限がありません」というメッセージが表示されます。彼らはサイトの管理者パネルにアクセスしようとするたびにエラーが発生しました。サイトのフロントエンドは正しく機能しています。
ネットワーク管理インターフェースでユーザーを見ると、それらはそのサイトの管理者であることがわかります。ネットワーク管理者をサイトに追加すると、管理領域を表示できます。
私はすべてのプラグインを無効にして削除する、Twenty Twelveテーマを有効にする、そしてWPコアを再インストールするという通常の提案を試してみました。これらのどれも動作しません。どうすればこれを修正できますか?
私はこのエラーを探すために土曜日の数時間を過ごしました。最終的な解決策を説明したガイドがネット上のどこにも見つかりませんでした。これが私の解決策です。
WPコアで、「あなたはこのページにアクセスするための十分な権限を持っていません。」 /wp-admin/includes/menu.php
の最後にエラーが発生します。私のプラグインディレクトリのgrep
も、いくつかのプラグインもこのエラーを生成する可能性があることを示しました。
menu.php
のバックアップを作成し、224-227行目のif
ブロック内のコードを次のように置き換えます。
if ( !user_can_access_admin_page() ) {
$a = array(
'Pages No Access' => $_wp_menu_nopriv,
'User Info' => $current_user,
'Roles' => $wp_roles->get_names(),
);
$s = sprintf("\n<br /><pre>%s</pre>", print_r($a, true));
do_action('admin_page_access_denied');
wp_die( __('You do not have sufficient permissions to access this page.'.$s) );
}
あなたが積極的にデバッグしているのでなければ、このコードをあなたのサイトに公開したままにしないでください。 しばらく立ち去る必要がある場合は、これをバックアップのmenu.php
に置き換えてください。
管理者側に再度アクセスしてみてください。このエラーページでは、いくつかのことを説明しています。
Pages No Access
に設定されている1
配列内のページには、ユーザーはアクセスできません。私の場合は、すべてのページが1
に設定されていました。User Info
で、ユーザーに正しい ロールと機能 があるかどうかを確認します。私の場合、ユーザーは10
の役割と管理者として持つべき機能を持っていました。Roles
には、サイトに定義されているロールのリストが表示されます。私の場合、定義された役割はありませんでした。これが私の問題でした。私の場合は、phpMyAdminでデータベースをブラウズし、[WPDB_PREFIX]_[SITENO]_user_roles
テーブルで[WPDB_PREFIX]_[SITENO]_options
エントリを探すことができました。私は私のWPDB_PREFIX
を変更しました、しかし、いくつかのプラグインはカスタムユーザロールを作成して、そしてデフォルトのwp_
接頭辞でこれを書きました。エントリを作業サイトから非作業サイトにコピーすることができました。私がやったようにすぐに管理者はすぐにサイトにアクセスすることができました。
新しいブログテンプレート pluginを使用していたため、インストールがさらに複雑になりました。また、テンプレートサイトでも同じようにデータベースが破損していました。
これが役に立つことを願っています。
私がマルチサイトインストールから移行していたとき、問題は役割がテーブル名に基づいて命名されているという事実に起因していました。そのため、オプションwp_7_user_rolesをwp_user_rolesに指定すると、問題が解決しました。
これにも問題がありました。
私が欲しかったのは、1人のユーザーにAdminを与え、バックエンドの管理サイドバーから特定のメニューを削除することでした。
AAMを削除したのは、アクセス権の問題があるためです。代わりにMenu Editor Proを使用しました。すべてが完璧に機能します。
もちろん、これは最も安全な方法ではありません。それでも、手動でURLを入力して非表示の管理ページにアクセスすることはできますが、クライアントはどうやってアクセスするかわからないので、これでうまくいきます。
機能を含むいくつかの解決策を通過した後、何も機能していないようでした。私はついにライブのwp_usermeta対localhostのwp_usermetaのサイズを再確認しました、そしてアップロードが切り刻まれて、いくつかの値が抜けていたことがわかりました。テーブルを空にして、usermeta全体を再アップロードしました。 Wordpressはアップロード後すぐに機能しました。 - これが誰かの時間を節約することを願っています。