it-swarm.com.de

So fügen Sie dem Anlageneditor ein Kontrollkästchenelement mit Beispiel hinzu

Der folgende Code fügt dem Anlageneditor 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); 
7
Scott B

Setzen Sie die 'Eingabe' auf 'html' und schreiben Sie die HTML 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, aber Sie überprüfen stattdessen einen Kontrollkästchenwert, sodass Sie auf true aktualisieren müssen, wenn isset () und auf false aktualisieren müssen, wenn dies nicht der Fall ist.

9
prettyboymp

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.

5
Mathieu Clerte