Hinzufügen eines Kontrollkästchenelements zum Anhangseditor mit Beispiel

7

Der folgende Code fügt dem Anhangseditor ein benutzerdefiniertes Eingabefeld hinzu. Wie kann ich die Texteingabe in ein Kontrollkästchen konvertieren und den Wert des Kontrollkästchens beim Laden und Speichern abrufen / festlegen?

Hinweis: "input" => "checkbox"funktioniert nicht :(

function image_attachment_fields_to_edit($form_fields, $post) {  
        $form_fields["imageLinksTo"] = array(  
            "label" => __("Image Links To"),  
            "input" => "text",
            "value" => get_post_meta($post->ID, "_imageLinksTo", true)  
        );    
        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); 
Scott B.
quelle

Antworten:

9

Setzen Sie die 'Eingabe' auf 'HTML' und schreiben Sie die HTML-Datei für die Eingabe aus:

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;
}

Das Speichern funktioniert genauso wie oben, Sie überprüfen jedoch stattdessen einen Kontrollkästchenwert. Daher müssen Sie bei isset () auf true aktualisieren, wenn nicht, auf false aktualisieren.

Prettyboymp
quelle
Können Sie bitte ein funktionierendes Beispiel für den Code hinzufügen, der diese Informationen speichert? Wäre echt toll! :)
Ole Henrik Skogstrøm
5

Unten finden Sie einen vollständigen Block zum Hinzufügen eines IsLogo-Kontrollkästchens, einschließlich des Speicherns:

function attachment_fields_to_edit_islogoimage( $form_fields, $post ) {
    $islogo = (bool) get_post_meta($post->ID, '_islogo', true);
    $checked = ($islogo) ? 'checked' : '';

    $form_fields['islogo'] = array(
        'label' => 'Logo Image ?',
        'input' => 'html',
        'html' => "<input type='checkbox' {$checked} name='attachments[{$post->ID}][islogo]' id='attachments[{$post->ID}][islogo]' />",
        'value' => $islogo,
        'helps' => 'Should this image appear as a proposal Logo ?'
    );
    return $form_fields;

}
add_filter( 'attachment_fields_to_edit', 'attachment_fields_to_edit_islogoimage', null, 2 );

function attachment_fields_to_save_islogoimage($post, $attachment) {
    $islogo = ($attachment['islogo'] == 'on') ? '1' : '0';
    update_post_meta($post['ID'], '_islogo', $islogo);  
    return $post;  
}
add_filter( 'attachment_fields_to_save', 'attachment_fields_to_save_islogoimage', null, 2 );

meine 2 Cent.

Mathieu Clerte
quelle