「buddypress」タグアーカイブ

cssで投稿画面の不要なスタイル、文字修飾(インデント、キーボードショートカットなど)オプションを非表示に WordPress BuddyPressカスタマイズメモ

投稿画面の不要なエディタボタンを非表示にする

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

WordPressで独特の文字修飾エディタがあるので、消しておこう。

インデントとかいらんね。
 

functions.php へ記述

エディタ周りは簡単にCSSで非表示にしておく。

//cssで不要物を消去

if (!current_user_can('administrator')) {
function my_admin_print_styles(){
 echo '<style type="text/css">'; //投稿のエディタボタン関連
  echo '#qt_content_em,';
  echo '#qt_content_block,';
  //echo '#qt_content_del,';
  echo '#qt_content_ins,';
  echo '#qt_content_img,';
  echo '#qt_content_ul,';
  echo '#qt_content_ol,';
  echo '#qt_content_li,';
  echo '#qt_content_code,';
  echo '#qt_content_more,';
  echo '#qt_content_close,';
  echo 'qt_content_fullscreen';
  echo '{display:none !important;}';
  echo '</style>';
}
add_action('admin_print_styles', 'my_admin_print_styles', 21);
}

「//」を頭につけると、コメントアウトなので、メニューからは削除されない。

上の例でいくと、例えば、「打消し線」も非表示にしたいなら、

//echo '#qt_content_del,';

  ↓

echo '#qt_content_del,';

“管理者”でメニューを削除したくない場合は、一番上と一番下の

if (!current_user_can('administrator')) {

}

を削除すればいい。
 

「スタイル」のプルダウンで出る文字修飾エディタ「Tiny MCE」の中身を変えるには別の記述が必要

TinyMCEの編集は下記参照。

・sango のビジュアルエディターのバグ修正(スマホでTinyMCEの文字修飾がおかしい)

投稿一覧の投稿数は、自分のもののみ表示にして、自分の投稿数を取得して表示する WordPress BuddyPressカスタマイズメモ

投稿一覧画面で、自分の投稿数のみカウントして表示する

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

管理者ではなく、参加するメンバーが記事を投稿した場合、誰でも全員の投稿を見れるようになっているのをカスタマイズして、自分の投稿のみ表示するようにした。

投稿者の「投稿画面」では、自分の投稿のみ表示させる方法で紹介した。

でも、そのままでは、投稿数が変になるので、そこを修正。


 ↓↓↓

 

functions.php へ記述

wp_count_postsで、投稿一覧のページで表示される記事数

//自分の投稿のみの投稿数を取得してその数に代入して表示

function count_author_posts( $counts, $type = 'post', $perm = '' ) {
 if ( !is_admin() || current_user_can('administrator') ) {
  return $counts; //管理者や管理画面じゃない場合はそのまま出力
 }
 global $wpdb;
 if ( ! post_type_exists( $type ) )
  return new stdClass;
 $cache_key = _count_posts_cache_key( $type, $perm ) . '_author';
 $counts = wp_cache_get( $cache_key, 'counts' );
 if ( false !== $counts ) {
  return $counts;
 }
 $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
 $query .= $wpdb->prepare( " AND ( post_author = %d )", get_current_user_id() );
 $query .= ' GROUP BY post_status';
 $results = (array) $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
 $counts = array_fill_keys( get_post_stati(), 0 );
 foreach ( $results as $row ) {
  $counts[ $row['post_status'] ] = $row['num_posts'];
 }
 $counts = (object) $counts;
 wp_cache_set( $cache_key, $counts, 'counts' );
 return $counts;
}
add_filter( 'wp_count_posts', 'count_author_posts', 10, 3 );

これで投稿数を、自分の投稿のみをカウントして出力できる。
 

合わせて変更が必要なカスタマイズ案

投稿者の「投稿画面」では、自分の投稿のみ表示させる方法

・upした画像は投稿者本人しか見えないようにする

こちらも参照。

投稿者の「投稿画面」では、自分の投稿のみ表示させる方法 WordPress BuddyPressカスタマイズメモ

投稿者の「投稿」では、自分の投稿のみ表示させる(他ユーザーの投稿は管理画面の投稿一覧では見えない)

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

管理者ではなく、参加するメンバーが記事を投稿した場合、誰でも全員の投稿を見れるようになっているし、誰でも編集ができる。


 ↓↓↓

 

functions.php へ記述

pre_get_postで、投稿一覧を取得する時に、今ログインしている、ユーザーの投稿だけを格納するように変更する。

//投稿一覧に自分の投稿のみ表示させる

function pre_get_author_posts( $query ) {
 if ( is_admin() && !current_user_can('administrator') && $query->is_main_query() //管理画面で、管理者ではない場合
  && ( !isset($_GET['author']) || $_GET['author'] == get_current_user_id() ) ) {
  $query->set( 'author', get_current_user_id() ); //今の著者のものだけを格納する
  unset($_GET['author']);
 }
}
add_action( 'pre_get_posts', 'pre_get_author_posts' );

上記の例だと、administrator は除外していて、全員の投稿を見ることができる。

編集者の場合だと、 editor など、適宜変更可能。
 

合わせて変更が必要なカスタマイズ案

自分のもののみの投稿数を取得して、記事数に代入

・upした画像は投稿者本人しか見えないようにする

こちらも参照。