创建一个列出所有博客用户的页面Meta Box

时间:2011-11-14 作者:Beto Frega

我有一个自定义的帖子类型,每个帖子只能由一个特定的用户在前端看到。

我已经想出了如何制作一个归档模板,其中只查询带有meta \\u allowed\\u user=user\\u ID的帖子。

但现在我必须创建一个元框,列出所有用户(非常像作者框),以便出版商可以选择允许谁查看帖子。。。

1 个回复
最合适的回答,由SO网友:5t3ph 整理而成

如果有人想清理这一切,那就更好了,但它完成了任务:)

如果我理解正确,您需要用户的ID,是吗?

有关的详细信息$wp_user_query 查看这篇文章,它是我编写此代码的部分资源:http://www.mattvarone.com/wordpress/list-users-with-wp_user_query/

// List Users
add_action("admin_init", "users_meta_init");

function users_meta_init(){
  add_meta_box("users-meta", "User Select", "users", "post", "normal", "high");
}

function users(){
  global $post;
  $custom = get_post_custom($post->ID);
  $users = $custom["users"][0];

    // prepare arguments
$user_args  = array(
// search only for Authors role
\'role\' => \'Author\',
// order results by display_name
\'orderby\' => \'display_name\'
);
// Create the WP_User_Query object
$wp_user_query = new WP_User_Query($user_args);
// Get the results
$authors = $wp_user_query->get_results();
// Check for results
if (!empty($authors))
{
    // Name is your custom field key
    echo "<select name=\'users\'>";
    // loop trough each author
    foreach ($authors as $author)
    {
        // get all the user\'s data
        $author_info = get_userdata($author->ID);
        $author_id = get_post_meta($post->ID, \'users\', true);
        if($author_id == $author_info->ID) { $author_selected = \'selected="selected"\'; } else { $author_selected = \'\'; }
        echo \'<option value=\'.$author_info->ID.\' \'.$author_selected.\'>\'.$author_info->first_name.\' \'.$author_info->last_name.\'</option>\';
    }
    echo "</select>";
} else {
    echo \'No authors found\';
}

}

// Save Meta Details
add_action(\'save_post\', \'save_userlist\');

function save_userlist(){
  global $post;

if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
    return $post->ID;
}

  update_post_meta($post->ID, "users", $_POST["users"]);
}

结束

相关推荐

从Metabox保存数据不起作用

我已经使用了添加metabox的教程。但我的数据不会保存在框中。我在编辑链接页面中有元框,但当我将任何数据放入框中并按下更新按钮时,它不会保存数据。那么实际上,我想知道我什么时候把数据放进框中,我可以使用$\\u POST[]获取数据吗?如果是,请帮助我,使我的代码部分出错。。// backwards compatible add_action( \'admin_init\', \'blc_add_custom_link_box\', 1 ); /*