这看起来应该相当简单,但我对此一无所知:
在媒体上传器和媒体管理器中有一个复选框,选中该复选框后,会将CSS类名添加到图像中。应该保持检查。
关键是我不能使用post meta来存储选中或未选中的状态。说来话长,但基本上我正在从事的项目的要求是,在图像上设置全局元键/值是不合适的。
我想出了如何添加复选框并使用它设置/取消设置post meta:
/**
* Add a checkbox to media uploader & manager to mark an image as a Profile Image
*
*/
function my_select_profile_image( $form_fields, $post ) {
$is_profile_image = (bool) get_post_meta($post->ID, \'_is_profile_image\', true);
$checked = ($is_profile_image) ? \'checked\' : \'\';
$form_fields[\'is_profile_image\'] = array(
\'label\' => \'Profile Image?\',
\'input\' => \'html\',
\'html\' => "<input type=\'checkbox\' name=\'attachments[{$post->ID}][is_profile_image]\' id=\'attachments[{$post->ID}][is_profile_image]\' {$checked} />",
\'value\' => $is_profile_image,
\'helps\' => \'Checking this box will add profile image styling to the image & caption.\'
);
return $form_fields;
}
add_filter( \'attachment_fields_to_edit\', \'my_select_profile_image\', null, 2 );
/**
* Update image meta based on Profile Image checkbox status
*
*
*/
function my_save_profile_image($post, $attachment) {
if( isset( $attachment[\'is_profile_image\'] ) )
update_post_meta( $post[\'ID\'], \'_is_profile_image\', true );
if( !isset( $attachment[\'is_profile_image\'] ) )
update_post_meta( $post[\'ID\'], \'_is_profile_image\', false );
return $post;
}
add_filter( \'attachment_fields_to_save\', \'my_save_profile_image\', null, 2 )
但随着post meta的退出,我对如何做到这一点感到困惑。
SO网友:brasofilo
鉴于此
我不能使用post meta
我想这是一个拼写错误(我的重点)
setting a global 图像上的元键/值is not OK
它要么是一个帖子元,要么是一个站点选项
要将其用作站点选项,请在中使用此选项attachments_fields_to_edit
:
$is_profile_image = get_option( \'_is_profile_image\' );
$checked = isset( $is_profile_image[ $post->ID ] ) ? \'checked\' : \'\';
还有这个
attachment_fields_to_save
:
function my_save_profile_image($post, $attachment)
{
$is_profile_image = get_option( \'_is_profile_image\' );
if( isset( $attachment[\'is_profile_image\'] ) )
$is_profile_image[ $post[\'ID\'] ] = true;
else
unset( $is_profile_image[ $post[\'ID\'] ] );
update_option( \'_is_profile_image\', $is_profile_image );
return $post;
}
站点选项
_is_profile_image
将是如下所示的数组:
array (size=2)
96 => boolean true
97 => boolean true