根据帖子的年龄限制用户编辑帖子

时间:2012-10-17 作者:Amanda Duke

如何限制用户(基于Capabilities) 在自定义时间后编辑其发布的帖子。

例如,用户可以publish_posts (作者)可以not 如果帖子超过3天,请编辑帖子,用户可以moderate_comments (编辑)无法编辑任何超过20天的帖子。显然,管理员可以随时进行编辑。

这怎么可能?

1 个回复
最合适的回答,由SO网友:Stephen M. Harris 整理而成

我从Wordpress中获取了示例代码user_has_cap filter codex page 并对其进行了修改。将此代码添加到主题函数中。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 );

结束

相关推荐

Filter posts by meta query?

我自定义了帖子类型并使用了元查询…对于此链接:wp-admin/edit.php?s&post_status=all&post_type=itinerary&action=-1&m=0&ipt_country=0&ipt_city=0&paged=1&mode=list&action2 …我希望应用此元查询:\'meta_query\' => array( array(