回答編集履歴

2

補足。

2016/04/17 09:12

投稿

kei344
kei344

スコア69400

test CHANGED
@@ -111,3 +111,51 @@
111
111
  ```
112
112
 
113
113
  と書いたほうがより汎用性が高いので追記。
114
+
115
+
116
+
117
+ ---
118
+
119
+
120
+
121
+ **追記:**
122
+
123
+
124
+
125
+ コメントにflatさんが書かれていた通り、`is_admin()` を使えば管理画面に絞れますよね、気付きませんでした。コメント周りのコードを追っていて更新時のみにする方法を思いついたので追記しておきます。`'preprocess_comment'` は新規コメントにのみ使われるフックでかつ `wp_filter_comment()` の前に実行されるので、そこで `pre_comment_author_name` `pre_user_id` のフィルターを外してしまう戦略です。
126
+
127
+ テストしていないので、きちんと動いた方のコードを優先して使ってください。(すいません、自己満足です)
128
+
129
+
130
+
131
+ ```PHP
132
+
133
+ function my_preprocess_comment( $commentdata ) {
134
+
135
+ if ( is_admin()
136
+
137
+ && is_user_logged_in()
138
+
139
+ && current_user_can( 'administrator' )
140
+
141
+ && isset( $commentdata[ 'comment_ID' ] ) // 確実に新規コメント時にしか実行されないはずだが 'comment_ID' が入っていないことを確認(問題無ければ削除してもよい)
142
+
143
+ && $commentdata[ 'comment_ID' ] > 0 // 〃
144
+
145
+ ) { // 新規投稿のみフックを無効化
146
+
147
+ remove_filter( 'pre_user_id' , 'my_pre_user_id' );
148
+
149
+ remove_filter( 'pre_comment_author_name', 'my_pre_comment_author_name' );
150
+
151
+ }
152
+
153
+ return $commentdata;
154
+
155
+ }
156
+
157
+ add_filter( 'preprocess_comment' , 'my_preprocess_comment' );
158
+
159
+ ```
160
+
161
+

1

補足の追加。

2016/04/17 09:12

投稿

kei344
kei344

スコア69400

test CHANGED
@@ -81,3 +81,33 @@
81
81
  【comment.php in tags/4.5/src/wp-includes - WordPress Trac】
82
82
 
83
83
  [https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/comment.php#wp_filter_comment](https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/comment.php#L1631)
84
+
85
+
86
+
87
+ ---
88
+
89
+
90
+
91
+ 管理者のみに絞り込んでいるこの箇所
92
+
93
+
94
+
95
+ ```PHP
96
+
97
+ if ( $user->ID && $user->ID === 1 ) {}
98
+
99
+ ```
100
+
101
+
102
+
103
+ ```PHP
104
+
105
+ if ( $user->ID && $user->has_cap( 'install_plugins' ) ) {}
106
+
107
+ /* OR */
108
+
109
+ if ( $user->ID && in_array( 'administrator', (array) $user->roles ) ) {}
110
+
111
+ ```
112
+
113
+ と書いたほうがより汎用性が高いので追記。