Speichern von Checkbox-Werten als Arrays mit Post-Submissionen

Einführung

Möchten Sie Checkbox-Werte als Arrays für Ihr Post Submissions-Formular in einem benutzerdefinierten Meta-Feld speichern, das mit dem Advanced Custom Fields Plugin erstellt wurde? Mit einem kleinen PHP-Snippet können Sie diese Werte in einem Array für Ihre benutzerdefinierten Felder speichern.

Standardmäßig, wenn benutzerdefinierte Felder in der Post Submission Addon zugeordnet sind, speichert WPForms die Daten in das benutzerdefinierte Feld in das gleiche Format WPForms speichert die Daten in allen Formen.

Ein Beispiel ist für Checkbox Formularfelder (und alles mit mehreren Werten), WPForms speichern die Werte als eine einzige Zeichenfolge, mit jedem Wert auf eine neue Zeile.

Red
Green
Blue

Mit einem kleinen PHP-Snippet können Sie dies jedoch leicht ändern, so dass es als Array gespeichert wird.

array( 'Red', 'Green', 'Blue')

Erstellen Ihrer benutzerdefinierten Felder

Zunächst erstellen wir ein benutzerdefiniertes Feld für unsere Beiträge mit dem Plugin Advanced Custom Fields.

Wenn Sie weitere Informationen über die Einrichtung von benutzerdefinierten Feldern benötigen, lesen Sie bitte diesen Artikel.

Denken Sie beim Einrichten Ihrer ACF-Felder daran, dass sie gleich sein sollten. Wenn Sie ein benutzerdefiniertes Feld für ein Kontrollkästchen erstellen, stellen Sie sicher, dass das Formularfeld auch ein Kontrollkästchen ist.

Erstellen Sie Ihre benutzerdefinierten Felder in Ihrem Beitrag

Erstellen des Formulars

Nun ist es an der Zeit, ein Formular für die Übermittlung von Beiträgen zu erstellen und ein Kontrollkästchen in das Formular einzufügen.

ein Kontrollkästchen in Ihr Formular einfügen

Wenn Sie Hilfe bei der Einrichtung eines Formulars zur Einreichung von Beiträgen benötigen, lesen Sie bitte diese Dokumentation.

Sobald Sie die restlichen Felder zu Ihrem Formular hinzugefügt haben, gehen Sie zur Registerkarte Einstellungen und klicken Sie auf Post Submissions, um sicherzustellen, dass Ihr benutzerdefiniertes Feld korrekt zugeordnet ist.

Stellen Sie sicher, dass Sie alle benutzerdefinierten Felder auf der Registerkarte "Post Submissions" Ihres Form Builders zuordnen.

Hinzufügen des Snippets zum Speichern von Werten als Arrays

Um die Werte als Array zu speichern, müssen Sie nur dieses Snippet auf Ihre Website kopieren.

Wenn Sie Hilfe beim Hinzufügen von Snippets zu Ihrer Website benötigen, lesen Sie bitte diese Anleitung.

/**
 * Turn checkbox values into an array.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
 
function wpf_dev_post_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {

    // Only run on my form with ID = 443
    if ( absint( $form_data[ 'id' ] ) !== 443 ) {
            return;
    } 
     
    // The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields
    if ( $meta_key === 'have_visited' ) {

            $field_value = explode( "\n", $field_value );

        }
 
    return $field_value;
}
add_filter( 'wpforms_post_submissions_process_meta', 'wpf_dev_post_submission_process_meta', 10, 5 );

Es ist wichtig, hier zu beachten, dass in der Eingabemaske von WPForms und im Meta-Feld beim Bearbeiten des Beitrags immer noch ein Kontrollkästchen angezeigt wird. Nur wenn Sie die Werte per Echo ausgeben, werden sie als Array (in einer einzigen Zeile) angezeigt. Das werden wir Ihnen im nächsten Schritt zeigen. Denken Sie auch daran, die Formular-ID von 443 um Ihre eigene Formular-ID zu finden. Wenn Sie Hilfe benötigen, um Ihre Formular-ID zu finden, sehen Sie sich bitte diese hilfreiche Dokumentation an.

Anzeige der Werte

Jetzt ist es an der Zeit, diese Werte auf Ihrem Single Post Template anzuzeigen. WPForms nie empfiehlt, Live-Änderungen an Ihrem Thema, so ist es am besten, ein Kind Thema oder eine benutzerdefinierte Funktion zu verwenden, um dieses Echo auf Ihre Vorlage aus.

Weitere Informationen über die Erstellung eines Child-Themes finden Sie in diesem ausgezeichneten Artikel von unseren Freunden bei WPBeginner.

die Werte als Arrays in der Vorlage für den einzelnen Beitrag anzeigen

Für dieses Tutorial haben wir unser Child-Theme erstellt und in der Datei single.php diese Codezeile eingefügt, um sicherzustellen, dass die Werte vorhanden sind und wenn ja, sie anzuzeigen.

			<div class="states_wrapper">
				<?php if( get_field('have_visited') ): ?> 
					<p>I've already visited these states in the last 5 years: <?php the_field('have_visited'); ?></p> 
				<?php endif; ?>
			</div>

Wenn Ihr Beitrag angezeigt wird, sehen Sie, dass die Zustände in einem Absatzformat statt in einer zeilenweisen Anzeige aufgelistet sind.

jetzt werden die Werte der Kontrollkästchen in einer einzigen Zeile angezeigt

Und das war's! Sie haben erfolgreich geändert, wie diese Werte in Ihrer WordPress-Datenbank gespeichert werden. Möchten Sie statt Text auch Bilder für die Beschriftung Ihrer Checkbox-Formularfelder verwenden? Schauen Sie sich unseren Artikel über die Anwendung von Bildern auf Checkbox-Beschriftungen mit CSS an.

Filter-Referenz: wpforms_post_submissions_process_meta

FAQ

A: Kann ich dies auch in anderen Addons verwenden?

A: Auf jeden Fall! Wenn Sie zum Beispiel das gleiche Szenario wie in diesem Tutorial nehmen, könnten Sie dies zum Addon Benutzerregistrierung hinzufügen, damit es automatisch auf der Benutzerprofilseite gespeichert wird, während Sie ACF verwenden, um weitere Informationen zum WordPress-Benutzerprofil hinzuzufügen.

/**
 * Turn checkbox values into an array with the User Registration addon.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */

function wpf_dev_user_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {
      
        // The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields
        if ( $meta_key === 'have_visited' ) {
                $field_value = explode( "\n", $field_value );
            }
      
        return $field_value;
    }
    add_filter( 'wpforms_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

Beachten Sie, dass der Name des Filters jetzt lautet wpforms_user_registration_process_registration_custom_meta_value Das bedeutet, dass Sie beim Erstellen eines Registrierungsformulars mit dem Benutzer-Registrierung Addon, werden diese Informationen im Profil des Benutzers gespeichert.