ユーザーを、投稿者として関連づけるのではなく、
カスタムフィールドを使って関連づけしたい、そんな場合の対処法です。
[adsense]
fanction.phpを編集する
function.php に以下の内容を記述します。
add_action('admin_menu', 'basic_menu');
function basic_menu() {
//管理画面で実行する関数
add_userfealds();
}
//投稿画面(カスタム投稿タイプの場合、postを変更)にメタボックスを追加
function add_userfealds() {
add_meta_box('userfealds', 'ユーザーを選択', 'insert_userfealds', 'post', 'normal', 'low');
}
//ユーザーのセレクトボックスを用意
function insert_userfealds(){
global $post;
$selectuserid = get_post_meta($post->ID, 'selectuserid', true);
$users = get_users(array('orderby'=>'ID','order'=>'ASC'));
wp_nonce_field(wp_create_nonce(__FILE__), 'my_nonce');
echo '<p>ユーザーを選択してください</p><select name="selectuserid">';
echo '<option value="0" selected>選択してください</option>';
foreach($users as $user) :
$uid = $user->ID;
$uname = $user->display_name;
echo '<option value="'.$uid.'" ';
if($uid==$selectuserid)echo 'selected ';
echo ' >'.$uname.'</option>';
endforeach;
echo '</select>';
}
//保存時にセレクトボックスの内容を保存
add_action('save_post', 'save_userfealds');
function save_userfealds($post_id){
$my_nonce = isset($_POST['my_nonce']) ? $_POST['my_nonce'] : null;
if(!wp_verify_nonce($my_nonce, wp_create_nonce(__FILE__))) {
return $post_id;
}
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post_id; }
if(!current_user_can('edit_post', $post_id)) { return $post_id; }
$data = $_POST['selectuserid'];
if(get_post_meta($post_id, 'selectuserid') == ""){
add_post_meta($post_id, 'selectuserid', $data, true);
}elseif($data != get_post_meta($post_id, 'selectuserid', true)){
update_post_meta($post_id, 'selectuserid', $data);
}elseif($data == ""){
delete_post_meta($post_id, 'selectuserid', get_post_meta($post_id, 'selectuserid', true));
}
}
あとは、カスタムフィールドを引っ張るだけ。