( Capabilities に基づいて)ユーザーが公開期間を編集できないようにするにはどうすればよいですか。
例えば、publish_posts
(作者)ができるユーザーは投稿が3日以上経過している場合はnotは編集できますが、moderate_comments
ができるユーザー(編集者)はできません20日以上前の投稿を編集します。明らかに、管理者はいつでも編集できます。
そのようなことはどのように可能ですか。
Wordpress のuser_has_capフィルタcodexページ からサンプルコードを取り出して、それを修正しました。あなたのテーマのfunctions.phpにこのコードを追加してください:
function restrict_editing_old_posts( $allcaps, $cap, $args ) {
// Bail out if we're not asking to edit or delete a post ...
if( ( 'edit_post' != $args[0] && 'delete_post' != $args[0] )
// ... or user is admin
|| ! empty( $allcaps['manage_options'] )
// ... or user already cannot edit the post
|| empty( $allcaps['edit_posts'] ) )
return $allcaps;
// Load the post data:
$post = get_post( $args[2] );
// Bail out if the post isn't published:
if( 'publish' != $post->post_status )
return $allcaps;
$post_date = strtotime( $post->post_date );
//if post is older than 30 days ...
if( $post_date < strtotime( '-30 days' )
// ... or if older than 4 days and user is not Editor
|| ( empty($allcaps['moderate_comments']) && $post_date < strtotime('-4 days') ) ) {
$allcaps[$cap[0]] = FALSE;
}
return $allcaps;
}
add_filter( 'user_has_cap', 'restrict_editing_old_posts', 10, 3 );