メディアアップローダのポップアップ内のチェックボックスがチェックされている場合は保存しようとしているので、フロントエンドから取得できます。
私はこのコードを使っています:
function filter_attachment_fields_to_edit( $form_fields, $post ) {
$foo = (bool) get_post_meta($post->ID, 'foo', true);
$form_fields['foo'] = array(
'label' => 'Is Foo',
'input' => 'html',
'html' => '<label for="attachments-'.$post->ID.'-foo"> ' . '<input type="checkbox" id="attachments-'.$post->ID.'-foo" name="attachments['.$post->ID.'][foo]" value="1"'.($foo ? ' checked="checked"' : '').' /> Yes</label> ',
'value' => $foo,
'helps' => 'Check for yes'
);
return $form_fields;
}
この質問から: 添付ファイルエディタにチェックボックス要素を追加する方法の例
このコードがどのようにまとめられているのか完全には理解できていないことを認めなければなりません。私は保存するためにこの関数を使ってみました:
function image_attachment_fields_to_save($post, $attachment) {
if( isset($attachment['imageLinksTo']) ){
update_post_meta($post['ID'], '_imageLinksTo', $attachment['imageLinksTo']);
}
return $post;
}
add_filter("attachment_fields_to_edit", "image_attachment_fields_to_edit", null, 2);
add_filter("attachment_fields_to_save", "image_attachment_fields_to_save", null, 2);
フィールドIDは両方の関数で一致する必要があります。そのため、フィールドIDがfoo
の場合はそのIDを探す必要があり、チェックボックスフィールドを保存する場合はそのように設定されていなければ削除します
function image_attachment_fields_to_save($post, $attachment) {
if( isset($attachment['foo']) ){
update_post_meta($post['ID'], 'foo', $attachment['foo']);
}else{
delete_post_meta($post['ID'], 'foo' );
}
return $post;
}
add_filter("attachment_fields_to_save", "image_attachment_fields_to_save", null, 2);