WPで会員サイトのように投稿または更新してもらう方法

WPで会員サイトのように投稿または更新してもらう方法
プラグインは使用しない。下記のコードをfunctions.php下行に追加するだけ。

※注意点:テーマの更新後には再度コードの追加が必要

管理者、編集者、寄稿者で見られる画面等制限かけられる。
流れ的には寄稿者が投稿(カテゴリ選択、タグの挿入はできない)するとレビュー待ちになるので、編集者(または管理者)がレビューしカテゴリ選択、タグ挿入して公開という感じ。

/*
* メディアの抽出条件にログインユーザーの絞り込み条件を追加する
 */
function display_only_self_uploaded_medias( $wp_query ) {
if ( is_admin() && ( $wp_query->is_main_query() || ( defined( 'DOING_QUERY_ATTACHMENT' ) && DOING_QUERY_ATTACHMENT ) ) && $wp_query->get( 'post_type' ) == 'attachment' ) {
$user = wp_get_current_user();
$wp_query->set( 'author', $user->ID );
}
}
function define_doing_query_attachment_const() {
if ( ! defined( 'DOING_QUERY_ATTACHMENT' ) ) {
define( 'DOING_QUERY_ATTACHMENT', true );
}
}
get_currentuserinfo();
if($current_user->user_level < 10){
add_action( 'pre_get_posts', 'display_only_self_uploaded_medias' );
add_action( 'wp_ajax_query-attachments', 'define_doing_query_attachment_const', 0 );
}
//他の人の投稿を見れないようにする
function exclude_other_posts( $wp_query ) {
if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) {
$post_type = get_post_type_object( $_REQUEST['post_type'] );
$cap_type = $post_type->cap->edit_other_posts;
} else {
$cap_type = 'edit_others_posts';
}
if ( is_admin() && $wp_query->is_main_query() && ! $wp_query->get( 'author' ) && ! current_user_can( $cap_type ) ) {
$user = wp_get_current_user();
$wp_query->set( 'author', $user->ID );
}
}
add_action( 'pre_get_posts', 'exclude_other_posts' );
// 管理バーのヘルプメニューを非表示にする
function my_admin_head(){
echo '';
}
add_action('admin_head', 'my_admin_head');
// メニューを非表示にする
function remove_menus () {
if (!current_user_can('level_10')) { //level10以下のユーザーの場合メニューをunsetする
remove_menu_page('wpcf7'); //Contact Form 7
global $menu;
//unset($menu[2]); // ダッシュボード
//unset($menu[4]); // メニューの線1
//unset($menu[5]); // 投稿
//unset($menu[10]); // メディア
unset($menu[15]); // リンク
unset($menu[20]); // ページ
unset($menu[25]); // コメント
//unset($menu[59]); // メニューの線2
unset($menu[60]); // テーマ
unset($menu[65]); // プラグイン
unset($menu[70]); // プロフィール
unset($menu[75]); // ツール
unset($menu[80]); // 設定
unset($menu[90]); // メニューの線3
}
}
add_action('admin_menu', 'remove_menus');
//入力画面のカテゴリとタグの設定を非表示に
/* 管理者=10 編集者=7 投稿者=2 寄稿者=1 購読者=0 */
if (!current_user_can('level_7')) {
function remove_extra_meta_boxes() {
remove_meta_box( 'categorydiv','post','side'); /* 投稿のカテゴリーフィールド */
//remove_meta_box( 'postcustom' , 'post' , 'normal' ); /* 投稿のカスタムフィールド */
//remove_meta_box( 'postcustom' , 'page' , 'normal' ); /* 固定ページのカスタムフィールド */
//remove_meta_box( 'postexcerpt' , 'post' , 'normal' ); /* 投稿の抜粋 */
//remove_meta_box( 'postexcerpt' , 'page' , 'normal' ); /* 固定ページの抜粋 */
//remove_meta_box( 'commentsdiv' , 'post' , 'normal' ); /* 投稿のコメント */
//remove_meta_box( 'commentsdiv' , 'page' , 'normal' ); /* 固定ページのコメント */
remove_meta_box( 'tagsdiv-post_tag' , 'post' , 'side' ); /* 投稿のタグ */
//remove_meta_box( 'tagsdiv-post_tag' , 'page' , 'side' ); /* 固定ページのタグ */
//remove_meta_box( 'trackbacksdiv' , 'post' , 'normal' ); /* 投稿のトラックバック */
//remove_meta_box( 'trackbacksdiv' , 'page' , 'normal' ); /* 固定ページのトラックバック */
//remove_meta_box( 'commentstatusdiv' , 'post' , 'normal' ); /* 投稿のディスカッション */
//remove_meta_box( 'commentstatusdiv' , 'page' , 'normal' ); /* ページのディスカッション */
//remove_meta_box( 'slugdiv','post','normal'); /* 投稿のスラッグ */
//remove_meta_box( 'slugdiv','page','normal'); /* 固定ページのスラッグ */
//remove_meta_box( 'authordiv','post','normal' ); /* 投稿の作成者 */
//remove_meta_box( 'authordiv','page','normal' ); /* 固定ページの作成者 */
//remove_meta_box( 'revisionsdiv','post','normal' ); /* 投稿のリビジョン */
//remove_meta_box( 'revisionsdiv','page','normal' ); /* 固定ページのリビジョン */
//remove_meta_box( 'pageparentdiv','page','side'); /* 固定ページのページ属性 */
}
add_action( 'admin_menu' , 'remove_extra_meta_boxes' );
}
// バージョン更新を非表示にする
add_filter('pre_site_transient_update_core', '__return_zero');
// APIによるバージョンチェックの通信をさせない
remove_action('wp_version_check', 'wp_version_check');
remove_action('admin_init', '_maybe_update_core');
// 管理バーにログアウトを追加
function add_new_item_in_admin_bar() {
global $wp_admin_bar;
$wp_admin_bar->add_menu(array(
'id' => 'new_item_in_admin_bar',
'title' => __('ログアウト'),
'href' => wp_logout_url()
));
}
add_action('wp_before_admin_bar_render', 'add_new_item_in_admin_bar');
function my_custom_login_logo() {
echo '';
}
add_action('login_head', 'my_custom_login_logo');
//投稿リストから「すべて」などを消す
function custom_columns($columns) {
if (!current_user_can('level_10')) {
echo '';
}
return $columns;
}
add_filter( 'manage_posts_columns', 'custom_columns' );
// 管理バーの項目を非表示
function remove_admin_bar_menu( $wp_admin_bar ) {
$wp_admin_bar->remove_menu( 'wp-logo' ); // WordPressシンボルマーク
//$wp_admin_bar->remove_menu('my-account'); // マイアカウント
}
add_action( 'admin_bar_menu', 'remove_admin_bar_menu', 70 );
//入力画面 現在の状況 のWordPress表示を消す
function my_admin_print_styles(){
if (!current_user_can('level_10')) {
echo '';
}
}
add_action('admin_print_styles', 'my_admin_print_styles', 21);
// フッターWordPressリンクを非表示に
function custom_admin_footer() {
echo 'お問い合わせ';
}
add_filter('admin_footer_text', 'custom_admin_footer');
function disable_drag_metabox() {
wp_deregister_script('postbox');
}
add_action( 'admin_init', 'disable_drag_metabox' );

編集者がカテゴリー、タグを追加できるように変更。73行目をlevel_10からlevel_7に変更。(管理者=10 編集者=7 投稿者=2 寄稿者=1 購読者=0)
参考サイト:WordPressで会員に更新してもらうサイトを作る方法
参考サイト:覚えておきたいWordPressのユーザー権限の種類と登録・管理方法
functions.phpを更新しようとすると403エラーが出た場合の対処
参考サイト: ロリポップ WordPressでphpファイルの更新をすると403エラーとなる時の対処
WPWAF

スポンサーリンク

シェアする

フォローする

スポンサーリンク