web-dev-qa-db-ja.com

制限された登録、またはパスワード/ Eメールを編集する機能の削除

私はWPサイトを開発していて、そこでは高価な物件(別荘、ペントハウスなど)を借りることができます。私のクライアントは特定の学校と彼らの学生のためだけにいくつかの安い不動産をリストすることに同意しています、そして彼は以前に(彼のハードコード化のhtmlサイトで)彼が学校に与えるセットユーザー名+パスワードを持っていました彼らの学生へ(学生レンタルセクションはhtaccessでアクセス制御されています)。

安価なホテルは特定の学校の生徒向けであり、一般向けではないため、彼らの気の利いた新しいWPサイトでは、オープン/パブリック登録を望んでいません。しかし、どちらも彼らがそれぞれの登録を管理することを望みません。さらに、多くの学生が自分のプライベートメールアカウント(例:gmail)を使用するので、ドメイン名による登録を制限することはできません。

ユーザーにやさしいことは、単一のユーザー(あなたが好きなら "デモユーザー")を作成し、このユーザー名+パスワードを彼らの生徒の学校に与えることです - 全ての生徒はこの一人のユーザーでログインするでしょうプロフィール。

ただし、悪意のあるユーザー1人がプロフィールのパスワードと電子メールアドレスを変更して、全員のために作成するだけです。

一言で言えば、私は購読者のサブカテゴリを作成する方法を必要としています。そこでは彼らは私用投稿を読むことはできますが自分のプロフィールを編集することはできません。 「投稿を読む」と「自分のプロフィールを編集する」の両方を含める。

今、私はWPでこれを行うことができると考えることができるいくつかの方法があります、しかし私はそれらがうまくいく(あるいは可能でさえある)かどうか、そして「ベストプラクティス」になるかどうかわかりません。

1)Capability managerプラグインを使用する - 私は "Edit Your Profile"を無効にするオプションを与えるものを見つけていない。提案を開きます。

2)User SubPanel管理メニューを削除し、ログイン後にフロントエンドにリダイレクトします。

3)ある種の "Demo User"プラグイン?

4)もう1つの方法は、登録を制限するかパスワードで保護することですが、モデレーター/管理者側で面倒な操作をしなくても、エンドユーザー側での使い勝手を損なわずにこれを効果的に行う方法は?

私は当初、「パブリック登録」を有効にすることを考えていましたが、発行するサイト全体のユーザー名+パスワードを使って登録/ログインページをアクセス制御するだけでした。 (b)私はAskApacheのPassword Protectorプラグインでhtaccessを使ってみましたが、例に従ってErrorDocumentをhtaccessに入れたにもかかわらず、permalink/404の問題を回避することはできませんでした。ファイルと私のルートに空のerror.htmlファイル。

だからあなたはそれを持っている...私のl33t g00gl3 sk1llzは私を失敗させた。私のwordpress-fuは強くありません。

1
Amanda

このソリューションは、jQueryを介してユーザープロファイルページのフィールドを非表示にするだけなので、純粋に表面的ですが、ユーザーがパスワードを変更する機能は事実上削除されます(管理者はフィールドを参照でき、いつでも変更できます)。これをあなたのテーマのfunctions.phpファイルに追加すれば完了です。

add_action( 'edit_user_profile', 'hide_profile_options');
add_action( 'show_user_profile', 'hide_profile_options');

function hide_profile_options() {
    if( !current_user_can('install_themes') ) : ?>
    <script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery("#your-profile h3:contains('Personal Options') + table").remove();
        jQuery("#your-profile h3:contains('Personal Options')").remove();
        jQuery("#your-profile h3:contains('About Yourself') + table").remove();
        jQuery("#your-profile h3:contains('About Yourself')").remove();
    });
    </script>
<?php
    endif;
}

必要に応じて、他のブロックも隠すことができます。単に行を複製してh3の内容を変更するだけです。

説明していることのために、User Profile管理サブパネル全体を非表示にすることもできますが、これはもう少し正確です。

1
somatic

これはjQueryの興味深い機能で、うまくいきました...しかし問題は、コードブロックがまだ存在しているので、すべてのbioテーブルが「ソースを表示」しているときに残っているということです。 FirebugのようなDOMエディタで、ページビューのソースに表示されているフィールドをまだ操作できる可能性があります。

1
user3858

あなたがユーザーに自分のプロフィールを編集させたくない場合は - それらを作成してmysqlユーザーテーブルのパーミッションを変更してください。

このように、あなたはユーザーを作成してプロフィールを更新することができる唯一のものになるでしょう。

これは非常に簡単で、プラグインは不要です

私はあなたの質問に答えていると思います

0
mireille raad

結局のところ、最後の最も簡単な解決策は、「招待コード」プラグインの1つを使用することでした。その結果、指定された招待コードを持つ人々だけが登録できるようになりました。私はPie Registerを使いました。

0
Amanda