私はクライアントのためのサイトを構築しています、そして我々はWordPressのネイティブパスワード保護機能を使用しています。
管理パネルで取得した投稿をフィルタリングするためのフィルタまたは何らかのアクションがありますか。パスワードで保護されたすべての投稿が管理者パネルに表示されないようにするには、管理者ではないとします。
has_password
の WP_Query
パラメーターを使用できます。
これは管理者以外のユーザーが投稿投稿タイプのedit.php
画面で非表示にする方法の例です。
/**
* Hide password protected posts, for non-admins, in the case of 'edit-post' screen id
*
* @link http://wordpress.stackexchange.com/a/200426/26350
*/
add_action( 'pre_get_posts', function( \WP_Query $q )
{
$screen = get_current_screen();
if( is_admin()
&& ! current_user_can( 'manage_options' )
&& is_a( $screen, '\WP_Screen' )
&& 'edit-post' === $screen->id
)
$q->set( 'has_password', false );
} );
うまくいけばあなたはあなたのニーズに合わせてこれを調整することができます。
PS:get_current_screen_id()
関数に似たget_current_user_id()
関数があると便利でしょう;-)
/**
* Hide password protected posts, for non-admins, in the case of 'edit-post' screen id.
* Here we don't restrict this to the current user.
*
* @link http://wordpress.stackexchange.com/a/200426/26350
*/
is_admin() && add_action( 'posts_where', function( $where, \WP_Query $q )
{
$screen = get_current_screen();
if(
! current_user_can( 'manage_options' )
&& is_a( $screen, '\WP_Screen' )
&& 'edit-post' === $screen->id
){
global $wpdb;
$uid = get_current_user_id();
$where .= $wpdb->prepare(
" AND ( ( {$wpdb->posts}.post_password = '' AND {$wpdb->posts}.post_author != %d )
OR ( {$wpdb->posts}.post_author = %d ) ) ",
$uid,
$uid
);
}
return $where;
}, 10, 2 );
WP_Query
がfield_query
をサポートするならば:投稿フィールドでの作業を簡単にするために、WP_Query
がfield_query
入力引数をサポートすると便利です。
これが例です:
add_action( 'pre_get_posts', function( \WP_Query $q )
{
$screen = get_current_screen();
if( is_admin()
&& ! current_user_can( 'manage_options' )
&& is_a( $screen, '\WP_Screen' )
&& 'edit-post' === $screen->id
)
$q->set( 'field_query',
[
'outer_relation' => 'AND',
'relation' => 'OR',
[
'field' => 'author',
'value' => get_current_user_id(),
'compare' => '=',
],
[
'relation' => 'AND',
[
'field' => 'author',
'value' => get_current_user_id(),
'compare' => '!=',
],
[
'field' => 'password',
'value' => '',
'compare' => '=',
],
]
]
);
} );
私はそのようなプラグインのためのドラフトを持っているので、多分私はそれがアルファ段階に達したときにここにそれを投稿するでしょう; - )