我想在个人帖子附件和用户之间建立关系
到目前为止,我的用户列表很好,但没有保存/更新。
add_filter("attachment_fields_to_edit", "my_image_attachment_fields_to_edit", null, 2);
function my_image_attachment_fields_to_edit($form_fields, $post) {
$form_fields["belongs_to"]["label"] = \'Belongs to\';
$form_fields["belongs_to"]["input"] = "html";
$form_fields["belongs_to"]["html"] = \'\';
$wp_user_query = new WP_User_Query( array( \'orderby\' => \'display_name\' ) );
$authors = $wp_user_query->get_results();
if (!empty($authors)) {
foreach ($authors as $author) {
$author_info = get_userdata($author->ID);
$form_fields["belongs_to"]["html"] .= "
<div style=\'float:left;width:50%\'>
<input type=\'checkbox\' value=\'$author_info->ID\' name=\'attachments[{$post->ID}][belongs_to][]\' id=\'belongs_to_user-$author_info->ID\' />
<label for=\'belongs_to_user-$author_info->ID\'>$author_info->first_name $author_info->last_name</label>
</div>";
}
}
return $form_fields;
}
add_filter("attachment_fields_to_save", "my_image_attachment_fields_to_save", null, 2);
function my_image_attachment_fields_to_save($post, $attachment) {
if( isset($attachment[\'my_field\']) ){
// update_post_meta(postID, meta_key, meta_value);
update_post_meta($post[\'ID\'], \'belongs_to\', $attachment[\'belongs_to\']);
}
return $post;
}
我试图用用户ID填充数组,但这可能不是最好的处理方法。有什么想法吗?提前感谢!
最合适的回答,由SO网友:thv20 整理而成
Got it:
add_filter("attachment_fields_to_edit", "my_image_attachment_fields_to_edit", null, 2);
function my_image_attachment_fields_to_edit($form_fields, $post) {
$form_fields["OwnersHeading"]["tr"] = "
<tr>
<td colspan=\'2\' style=\'font-size:16px;padding-left:15px\'>Tag Users:</td>
</tr>";
// get list of users
$wp_user_query = new WP_User_Query( array( \'orderby\' => \'display_name\' ) );
$authors = $wp_user_query->get_results();
if (!empty($authors)) {
foreach ($authors as $author) {
$belongs_to_value = (bool)get_post_meta( $post->ID, "_owner_$author->ID", true );
// create the field
$form_fields["owner_$author->ID"] = array(
\'input\' => \'html\',
\'html\' => \'
<input type="checkbox" id="attachments-\' . $post->ID . \'-owner\'.$author->ID.\'" name="attachments[\' . $post->ID . \'][owner_\'.$author->ID.\']" value="1"\' . ( $belongs_to_value ? \' checked="checked"\' : \'\' ) . \' />
<label for="attachments-\' . $post->ID . \'-owner\'.$author->ID.\'">\'.$author_info->first_name.\' \'.$author_info->last_name.\'</label>\',
);
}
}
return $form_fields;
}
add_filter("attachment_fields_to_save", "my_image_attachment_fields_to_save", null, 2);
function my_image_attachment_fields_to_save($post, $attachment) {
// get list of users
$wp_user_query = new WP_User_Query( array( \'orderby\' => \'display_name\' ) );
$authors = $wp_user_query->get_results();
if (!empty($authors)) {
foreach ($authors as $author) {
update_post_meta($post[\'ID\'], \'_owner_\'.$author->ID.\'\', $attachment[\'owner_\'.$author->ID.\'\']);
}
}
return $post;
}