it-swarm.com.de

Fügen Sie dem ausgewählten Bild Optionen hinzu

Ich möchte der Metabox für das vorgestellte Bild eine Option hinzufügen.

Ich habe einen Weg gefunden, dies zu tun hier

Das Problem, das ich habe, speichert den Wert zur Datenbank.

Folgendes habe ich versucht:

add_filter( 'admin_post_thumbnail_html', 'featured_image_opacity');
function featured_image_opacity( $myhtml ) {
    //$selected_option = GET META OPACITY HERE
    return $myhtml .= 'Opacity: 
    <form>
        <select>
            <option'. ($selected_option == "0.1" ? "selected" : "" ).' value="0.1">0.1</option>
        </select>
    </form>';
}
function meta_save( $post_id ) {
        if( isset( $_POST[ 'opacity' ] ) ) {update_post_meta( $post_id, 'opacity', sanitize_text_field( $_POST[ 'opacity' ] ) );}   
    }   
add_action( 'save_post', 'meta_save' );

Ich sehe das Optionsformular und kann eine Option auswählen, aber die Daten werden nicht gespeichert.
(Ich habe auch versucht, die Funktion innerhalb der Funktion zu platzieren, aber das funktioniert auch nicht)

Ich hoffe, jemand sieht, was ich falsch mache.

3
Interactive

Du hast es ganz richtig verstanden, aber mit ein paar kleinen Problemen.

Verwenden Sie zunächst ein eindeutiges Präfix für Ihre Funktionen und Werte - opacity oder meta_save sind recht allgemein und können von anderen Autoren verwendet werden.

Zweitens, der Teil, in dem Sie die Meta-Opazität erhalten, fehlte, habe ich für Sie hinzugefügt - rufen Sie einfach den Meta-Wert aus dem aktuellen Beitrag ab.

Drittens habe ich dann eine Funktion erstellt, um die verschiedenen Opazitäten zu durchlaufen. Ich habe auch die Funktion selected() verwendet, aber der dritte Parameter (echo) ist auf false gesetzt. Deshalb gibt selected meinen Wert zurück, anstatt ihn wiederzugeben. Dies ist eine praktische WordPress-Funktion, um solche Optionen und ähnliches zu erstellen.

Das ist es.

Passen Sie einfach Ihren Code an, wenn Sie das Post-Thumbnail verwenden, und stellen Sie sicher, dass der f711_opacity-Metawert vom $post-Objekt abgerufen wird, nicht vom Thumbnail selbst, da es im Post gespeichert wird.

add_filter( 'admin_post_thumbnail_html', 'f711_add_something_to_feature_thumb_box', 10, 2 ); //same as before
function f711_add_something_to_feature_thumb_box( $myhtml, $post_id ) {

    $selected_option = get_post_meta( $post_id, 'f711_opacity', true ); // get the current value
    for ( $i = 0; $i <= 1; $i = $i + 0.1 ) { //loop from 0 to 1 in 0.1 increments
        $selects .= '<option value="' . $i . '" ' . selected( $selected_option, $i, false ) . '>' . $i . '</option>'; //add a option field, and select it if it is the one saved before
    }
    //create the return html, with the selects created before
    return $myhtml .= 'Opacity: 
        <form>
            <select name="f711_opacity">
                ' . $selects . '
            </select>
        </form>';
}

// function and action to save the new value to the post
function f711_meta_save( $post_id ) {
    if( isset( $_POST[ 'f711_opacity' ] ) ) {
        update_post_meta( $post_id, 'f711_opacity', sanitize_text_field( $_POST[ 'f711_opacity' ] ) );
    }   
}
add_action( 'save_post', 'f711_meta_save' );    
4
fischi