具有“作者”角色的WP用户可以发布文章。在相关博客上,我有要求,这些用户的文章必须立即直播,但不公开(即,对于匿名访问者或订阅者)。我们使用WP 3.0.5。
我们已经有一个插件正在运行,允许匿名和订阅者隐藏类别。所以我到目前为止提出的最直接的方法是:作者的新博客文章应该自动放入一个类别中。然后我从匿名用户隐藏该类别。
有谁知道:
a)如何通过“作者”用户自动将文章放在某个类别中,或
b)如何为这些职位更优雅地实现“生活但不公开”的要求?
(也欢迎插件建议。)
答案 0 :(得分:1)
您可能想要做的是在主题的functions.php
文件中编写函数来执行此操作,然后在保存帖子时使用add_action
来触发该函数。
例如:
function update_category_on_save($post_id) {
// Get post
$post = wp_get_single_post($post_id)
// Map author IDs to category IDs
$mapping = array(
1 => array(123),
2 => array(234),
);
// Update the post
$new_category = $mapping[$post->post_author];
$u_post = array();
$u_post['ID'] = $post_id;
$u_post['post_category'] = $new_category;
// Only update if category changed
if($post->post_category != $new_category[0]) {
wp_update_post($u_post);
}
}
add_action('category_save_pre', 'update_category_on_save');
希望这是有道理的,并给你一个关于如何做到这一点的暗示 - 我担心我无法测试它。
答案 1 :(得分:0)
以下代码会自动将作者发布的帖子更改为私人。
function change_author_posts_to_private( $post_status ) {
// if the user is just saving a draft, we want to keep it a draft
if ( $post_status == 'draft' )
return $post_status;
$this_user = new WP_User( $_POST[ 'post_author' ] );
// this is assuming the user has just one role, which is standard
if ( $this_user->roles[0] == 'author' )
return 'private';
else
return $post_status;
}
add_filter( 'status_save_pre', 'change_author_posts_to_private' );
它过滤保存后的状态,查看作者是谁来自post变量,获取他们的第一个角色并查看它是否是作者,如果是,则返回'private',否则返回自然状态。当你可以在这里直接进行时,无需使用类别。