デフォルトで、私は人々が彼らに特定の行動を許す私のサイトへの貢献者として購読することを許可しています。
私がしたいのは、投稿、コメント、連絡先(ContactForm7)、およびツールを削除し、新しいイベントを追加するオプション(events plugin)だけを残すことです。
また、これらのボタンが非表示になっていても、方法がわかっていれば、人々はこれらのPostTypeに送信できないことを確認したいと思います。
私は現時点ではProfessional WordPressプラグイン開発の本を読んでいます。取り込むのはたくさんあるので、今のところ私のテーマの機能ページでこれを行いたいと思います。
これは私がコーデックスに従って試しているものです:
add_action( 'admin_menu', 'jh_remove_menu_pages' );
function jh_remove_menu_pages() {
remove_menu_page('edit-comments.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('wp-contact-form-7.php');
}
隠す必要があるすべてのphpファイルを見つけるためにこのページでfind を実行することに成功しました が、ContactForm7ファイルについてはよくわかりません。編集:管理メニューからContact Form 7を削除するためにここに解決策 を見つけることができました
しかしコーデックスによれば、上記のコードはスクリーン(投稿、ツールなど)に直接アクセスするためのパーミッションを削除せず、方法を知っていればまだ送信します: "ユーザーがこれらの画面に直接アクセスすることを防ぎます。メニューを削除しても、必要に応じてユーザーのアクセス許可をフィルタする必要がなくなるわけではありません。」
EventsとProfile以外のすべての機能を削除するにはどうすればいいですか?コーデックスのremove_capを読んでいますが、Posts機能を削除した場合に誤ってPost Eventsのスイッチをオフにしてしまう可能性があることを心配していますか?
最後に、その時点でログインしているユーザーの関連イベントのみを表示する方法を教えてください。
どうもありがとう。
あなたの場合の最善の解決策はあなた自身のカスタマーロールを作成し、それらにあなたがユーザが必要とする能力だけを割り当てることです。ワードプレスに関しては、私があなたの質問から理解できるのはあなたがそれらに与えるべき唯一の可能性はread
です。
このようにして、彼らはプロフィールだけを見るでしょう。問題はプラグインから始まります。あなたが使用しているプラグインがどれなのかわかりません(または私は理解できません)。
多くがプラグインのコーディング方法に依存することを考慮してください。あなたはコードの中で何かを見つけます
if ( currrent_user_can('edit_posts') ) { // do stuff
それがうまくいくためには、あなたの役割にedit_posts
キャップを割り当てる必要があります。しかし、これは問題です。その機能を割り当てると、adminのPost
メニューが表示されます。もちろんあなたはremove_menu_page
を使ってそれを削除することができます、しかしあなたが問題で言ったように、これは彼らがする方法を知っていればその管理画面への直接ユーザーアクセスを妨げません。
だから私はあなたに提案するものです:
read
キャップだけを割り当てることから始めましょうremove_menu_page
を使ってそれらを削除します。load-{$page}
アクションにフックするのを防ぎ、カスタムロールへのアクセスを防ぐことができます。Settings -> General
に行き、のような 'カスタムロール'を新しいユーザデフォルトロールにします$subscriber = get_role( 'subscriber');
$plugin_caps = array('edit_posts', 'cap_required_by_event_plugin');
$all_caps = array_merge($subscriber->capabilities, $plugin_caps);
add_role('custom_role', 'Custom Role', $all_caps );
プラグインのドキュメントを見てください。 pluginsフォルダを複数ファイル検索し、'current_user_can'
、'user_can'
、'has_cap'
のようなキーワードを検索します。もし問題がある場合は(もしあれば)プラグインサポートフォーラムで質問してみてください。開発者は頑張っています! ;)
最も簡単な方法は、1)で定義した$plugin_caps
配列に必要な上限を追加することです。
イベントプラグインを機能させるためにあなたのロールにedit_posts
キャップを追加しなければならないと仮定します。まず最初にメニューを削除してください。
add_action( 'admin_menu', 'custom_remove_menu_pages' );
function custom_remove_menu_pages() {
$user = wp_get_current_user();
if ( in_array('custom_role', $user->roles) ) {
remove_menu_page('edit-comments.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
}
}
その後アクセスを防止します。
add_action( 'load-edit.php', 'custom_prevent_admin_access' );
add_action( 'load-tools.php', 'custom_prevent_admin_access' );
add_action( 'load-post.php', 'custom_prevent_admin_access' );
add_action( 'load-post-new.php', 'custom_prevent_admin_access' );
function custom_prevent_admin_access() {
$user = wp_get_current_user();
if ( in_array('custom_role', $user->roles) ) {
wp_die("Sorry, you can't stay here.");
exit();
}
}
それがすべてです、それが役立つことを願っています。