web-dev-qa-db-ja.com

カスタム添付ファイルのメタを保存および取得する方法

メディアアップローダのポップアップ内のチェックボックスがチェックされている場合は保存しようとしているので、フロントエンドから取得できます。

私はこのコードを使っています:

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);
1
Bainternet