プラカンブログSTAFF BLOG

2015.06.05

WordPress 他の人が作成した記事を公開前にプレビューする方法

sugiyama_0417

こんにちは(杉)と申します。

会社内のブログを立ち上げたので、月一の頻度で情報を配信していきますので宜しくお願いします!

記念すべき第一回目の内容ですが、
「他の人が作成した記事を公開前にプレビューする方法」です。

WordPressで各ユーザーに権限を与えて、役割を分けたりできます。
たとえば公開の権限をもっている編集者が一人いて、記事を作成するだけの寄稿者が複数いる場合、『他の人が書いた公開前の記事の見たい!』と思っても、寄稿者は他の人の公開前の記事の内容を見ることができません…orz。

記事の内容がかぶってないかないかと前もって知りたい場合もありますよね?(…ない?)
そこで以下の方法で、他の寄稿者の記事をプレビューできるように変更してしまいましょう!

必要なプラグイン

1.User Role Editorをインストール・設定

User Role Editorは各ユーザーの権限をより細かく設定できるプラグインです。インスールして有効化にしてください。

有効化したらサイドメニューの「ユーザー>User Role Editor」を選択し、設定画面に移動します。いろいろな設定がありますね。(それに関してはまた別の機会にでもご紹介します。)
様々の設定がありますが、今回行いたい機能はやっぱりないので、新しく機能を追加します!

「Add Capability」をクリックし、新しく作成するID名を入力します。
作成後「Custom capabilities」の項目に先ほど作成したIDが一覧に表示されるので、そちらにチェックを入れて、Update!

これでUser Role Editorの設定は完了です。

 

2.query.phpを編集

次に、User Role Editorで作成したIDを機能させるため、WordPressのコアのソースを編集します。

まず、FTPから「wp-includes/query.php」をダウンロードします。
※誤って編集すると壊れる可能性があるので、必ずバックアップはとりましょう!

ダウンロードしてテキストエディタなどで開き、下記の個所を変更します。

変更前(約3500行目前後)

						// User must have edit permissions on the draft to preview.
						if ( ! current_user_can($edit_cap, $this->posts[0]->ID) ) {
							$this->posts = array();
						} else {
							$this->is_preview = true;

↓に変更

						// User must have edit permissions on the draft to preview.
						if ( ! current_user_can($edit_cap, $this->posts[0]->ID) && !current_user_can('作成したID') ) {
							$this->posts = array();
						} else {
							$this->is_preview = true;

さきほど作成したIDに書き換えて保存し、データをアップロード。

 

3.function.phpに以下のコードを追加

最後に現在使用しているテーマのfunctions.phpに以下のコードを追加します。

function add_preview_post_row_actions($actions) {
    global $post;
 
  $post_type_object = get_post_type_object( $post->post_type );
  $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID );
 
  if (!$can_edit_post && $post->post_status=='pending' || $post->post_status=='draft') {
    $title = _draft_or_post_title();
    $actions['view'] = '' . __( 'Preview' ) . '';
  }
 
  return $actions;
 
  }
 
if (current_user_can('作成したID')) {
  add_filter('post_row_actions', 'add_preview_post_row_actions');
}

これで作業は完了です!

早速他の寄稿者が作成した記事をみてみましょう!

タイトルの下にプレビューという項目が出ていますね!これでプレビューをぽちっと。。。OHHH!見れましたね!

これで他の寄稿者がどんな記事を書いていて、自分の記事とかぶらなってないか公開前に確認することができますね。(ง ´͈౪`͈)ว

 

最後に

今回は「寄稿者」で説明しましたが「投稿者」でも同様の設定は可能です。
特殊な事例かもしれませんが、複数の方でブログを運営する場合、ちょっとだけ親切な設定かと思います。ただし、コアな部分を編集するので、行う際は必ずバックアップを取って作業してください!壊れても責任もてません…<(_ _)>

参考にしたサイト:
http://shinephp.com/preview-others-posts-without-edit/

 

この記事は、SUGIYAMA が書きました。