「wordpress」タグアーカイブ

投稿者の「投稿画面」では、自分の投稿のみ表示させる方法 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した画像は投稿者本人しか見えないようにする

こちらも参照。

WordPressの記事投稿画面で、新規投稿時にタイトルの入力を必須にする WordPress BuddyPressカスタマイズメモ

WordPressログイン画面の「W」のロゴを他の画像に変え、リンク先、マウスホバーの文言変更

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

WordPressに慣れていない人が使うことも想定できるので、タイトルなしのまま新規投稿すると「タイトルなし」となり、ダサいので、タイトル入力を必須にしておこう。


 

functions.php へ記述

WordPressにはタイトルを必須にするような設定はない。

functions.phpに記述して、記事投稿画面にjavascriptで、タイトルが記入されてない時にアラートを出すようにする。

//記事投稿タイトル必須

function required_title() {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
if('post' == $('#post_type').val()){
$("#post").submit(function(e){
  if('' == $('#title').val()) {
  alert('タイトルを入力してください');
  $('#ajax-loading').css('visibility', 'hidden');
  $('#publish').removeClass('button-primary-disabled');
  $('#title').focus();
  return false;
  }
});}});
</script>
<?php
}
add_action('admin_head-post-new.php', 'required_title');
add_action('admin_head-post.php', 'required_title');

この例では、新規投稿、投稿の編集でタイトルの入力を必須にしている。

同様に、固定ページ用でもタイトル入力が必須になる。

管理画面のユーザー/プロフィールの項目でいらない部分を消す WordPress BuddyPressカスタマイズメモ

管理画面のユーザー/プロフィールの項目で「姓」「名」などのいらない部分を非表示にしたり、変更したりする

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

できるだけシンプルにしたい。

Sangoテンプレートを使っていると、 TwitterのURL、FacebookのURL、InstagramのURL、肩書
なども追加されるので、それを一旦削除して上書きしたりする。
 

functions.php へ記述

普通に子テーマの functions.php に書いても、親テーマの functions.php で上書きされてしまう。

add_action の after_setup_thmem で、親テーマの functions.php の sango の追加項目の、TwitterのURL、FacebookのURL、InstagramのURL、肩書あたりを一旦削除しておく。

Sangoで追加されるプロフィールを変更したり、削除したりしなくていい場合はこれは不要。

//管理画面のプロフィールのsangoの追加項目を一旦削除

function remove_sango_add_user_contactmethods()
{
 remove_filter('user_contactmethods', 'add_user_contactmethods');
}
add_action( 'after_setup_theme', 'remove_sango_add_user_contactmethods' );

 

「ユーザー」→「あなたのプロフィール」で表示されている項目は、そのままremoveできないので、CSSで非表示にするしかない。

//管理画面のプロフィールでいらない部分を消す

function user_profile_hide_style() {
  echo '<style>
  #your-profile .user-rich-editing-wrap, /* ビジュアルエディター */
  #your-profile .user-comment-shortcuts-wrap, /* キーボードショートカット */
  #your-profile .show-admin-bar, /* ツールバー */
  #your-profile .user-first-name-wrap, /* 名 */
  #your-profile .user-last-name-wrap, /* 姓 */
  #your-profile .user-profile-picture, /* プロフィール写真 */
  #your-profile .user-sessions-wrap /* セッション */ {
    display: none;
  }
  </style>'.PHP_EOL;
}
add_action('admin_print_styles', 'user_profile_hide_style');

 

続いて、Sango で追加されるプロフィールを再度追加。

不要なモノがあればコメントアウトする。

ここでは、FeedlyのURL が不要なので // でコメントアウトしている。

yourtitle は Sango では「肩書」だが、「出身地」に変更している。

//プロフィールの肩書の部分を「出身地」に変更

function yuya_add_profile($user_contactmethods)
{
 return array(
 'yourtitle' => '出身地',
 'twitter' => 'TwitterのURL',
 'facebook' => 'FacebookのURL',
 'instagram' => 'InstagramのURL',
 //'feedly' => 'FeedlyのURL',
 'youtube' => 'YouTubeのURL',
 'line' => 'LINEのURL',
 );
}
add_filter('user_contactmethods', 'yuya_add_profile');