Achtung!

Dieser Artikel enthält PHP-Code und richtet sich an Entwickler. Wir stellen diesen Code als Service zur Verfügung, bieten jedoch keine Unterstützung für Codeanpassungen oder die Entwicklung durch Dritte.

Für zusätzliche Hilfe siehe das Tutorial von WPBeginner zum Hinzufügen von benutzerdefiniertem Code.

Schließen

So speichern Sie Checkbox-Werte als Arrays mit Post Submissions

Einleitung

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

Standardmäßig speichert WPForms die Daten im benutzerdefinierten Feld im selben Format, in dem WPForms die Daten in allen Formularen speichert, wenn benutzerdefinierte Felder im Post Submission Addon zugeordnet werden.

Ein Beispiel hierfür sind Checkbox-Formularfelder (und alles mit mehreren Werten). WPForms speichert die Werte als einzelne Zeichenkette, wobei jeder Wert in einer neuen Zeile steht.

Rot
Grün
Blau

Mit einem kleinen PHP-Snippet können Sie dies jedoch leicht ändern, um es als Array speichern zu lassen.

array( 'Rot', 'Grün', 'Blau')

Erstellen Ihrer benutzerdefinierten Felder

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

Wenn Sie weitere Informationen zum Einrichten benutzerdefinierter Felder benötigen, lesen Sie bitte diesen Artikel.

Denken Sie daran, dass Ihre ACF-Felder gleichwertig sein sollten. Wenn Sie ein benutzerdefiniertes Feld für eine Checkbox erstellen, stellen Sie sicher, dass das Formularfeld ebenfalls eine Checkbox ist.

Erstellen Sie Ihre benutzerdefinierten Felder in Ihrem Beitrag

Erstellen des Formulars

Jetzt ist es an der Zeit, Ihr Beitragsübermittlungsformular zu erstellen und dem Formular ein Checkbox-Feld hinzuzufügen.

Fügen Sie Ihrem Formular ein Checkbox-Feld hinzu

Wenn Sie Hilfe beim Einrichten eines Beitragsübermittlungsformulars 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 Beitragsübermittlung, um sicherzustellen, dass Ihr benutzerdefiniertes Feld korrekt zugeordnet ist.

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

Hinzufügen des Snippets zum Speichern von Werten als Arrays

Um die Werte als Array zu speichern, müssen Sie dieses Snippet nur 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 );

Hinweis: Es ist wichtig zu beachten, dass Sie im Einträge-Bildschirm von WPForms und im Metafeld beim Bearbeiten des Beitrags immer noch eine Checkbox sehen. Nur wenn Sie die Werte ausgeben, werden sie als Array (in einer Zeile) angezeigt, und das zeigen wir Ihnen im nächsten Schritt. Denken Sie auch daran, die Formular-ID von 443 zu aktualisieren, damit sie Ihrer eigenen Formular-ID entspricht. Wenn Sie Hilfe beim Auffinden Ihrer Formular-ID benötigen, lesen Sie bitte diese hilfreiche Dokumentation.

Anzeigen der Werte

Jetzt ist es an der Zeit, diese Werte in Ihrer einzelnen Beitrags-Vorlage anzuzeigen. WPForms empfiehlt niemals, Live-Änderungen an Ihrem Theme vorzunehmen. Daher ist es am besten, ein Child-Theme oder eine benutzerdefinierte Funktion zu verwenden, um diese in Ihrer Vorlage auszugeben.

Weitere Informationen zur Erstellung eines Child-Themes finden Sie in diesem ausgezeichneten Artikel unserer Freunde von WPBeginner.

Zeigen Sie die Werte als Arrays in Ihrer Single-Post-Vorlage an
<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>

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

Wenn Ihr Beitrag angezeigt wird, sehen Sie die Bundesstaaten in Absatzform und nicht zeilenweise aufgelistet.

Jetzt werden Ihre Checkbox-Werte in einer einzigen Zeile angezeigt

Und das ist alles! Sie haben erfolgreich geändert, wie diese Werte in Ihrer WordPress-Datenbank gespeichert werden. Möchten Sie auch Bilder anstelle von Text für die Beschriftungen Ihrer Checkbox-Formularfelder verwenden? Schauen Sie sich unseren Artikel an: So wenden Sie Bilder auf Checkbox-Beschriftungen mit CSS an.

Filterreferenz: wpforms_post_submissions_process_meta

FAQ

A: Kann ich das auch in anderen Add-ons verwenden?

A: Absolut! Wenn Sie zum Beispiel dasselbe Szenario wie in diesem Tutorial nehmen, könnten Sie dies zum User Registration Add-on hinzufügen, damit es automatisch auf der Benutzerprofilseite gespeichert wird, während Sie ACF verwenden, um weitere Informationen zum WordPress-Benutzerprofil hinzuzufügen.

In der User Registration Add-on-Version 2.8.0 und neuer lautet der Filter zum Speichern benutzerdefinierter Metawerte:

wpforms_user_registration_process_base_custom_meta_value

Hinweis: In älteren Versionen (vor User Registration 2.8.0) hieß dieser Filter:

wpforms_user_registration_process_registration_custom_meta_value

Wenn Sie eine ältere Website pflegen, können Sie beide Hooks für die Abwärtskompatibilität beibehalten.

/**
 * 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 = 0, $field = array(), $form_data = array() ) {

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

// User Registration addon 2.8.0+.
add_filter( 'wpforms_user_registration_process_base_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

// Backward compatibility for older versions (before 2.8.0).
add_filter( 'wpforms_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

Das ist alles! Jetzt werden Ihre übermittelten Checkbox-Werte als Array gespeichert, wenn WPForms sie Ihrem benutzerdefinierten Post-Meta-Feld zuordnet.

Möchten Sie mehr über die Einrichtung von Post Submissions erfahren, einschließlich der Zuordnung von benutzerdefinierten Post-Meta-Feldern, in unserem Post Submissions Add-on-Leitfaden.